From 982d0a795ecda6832b94bd891a61e1117095327f Mon Sep 17 00:00:00 2001 From: Shivam Sharma <91240327+shivamhwp@users.noreply.github.com> Date: Fri, 3 Apr 2026 13:54:17 +0530 Subject: [PATCH 01/23] Add knip config --- bun.lock | 137 +++++++++++++++++++++++++++++++++++++++++++++++++-- knip.json | 46 +++++++++++++++++ package.json | 2 + 3 files changed, 182 insertions(+), 3 deletions(-) create mode 100644 knip.json diff --git a/bun.lock b/bun.lock index af243cf4eb..4c507c33be 100644 --- a/bun.lock +++ b/bun.lock @@ -6,6 +6,7 @@ "name": "@t3tools/monorepo", "devDependencies": { "@types/node": "catalog:", + "knip": "^6.3.0", "oxfmt": "^0.40.0", "oxlint": "^1.55.0", "turbo": "^2.3.3", @@ -501,6 +502,12 @@ "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.1", "", { "dependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1", "@tybys/wasm-util": "^0.10.1" } }, "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A=="], + "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], + + "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], + + "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], + "@open-draft/deferred-promise": ["@open-draft/deferred-promise@2.2.0", "", {}, "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA=="], "@open-draft/logger": ["@open-draft/logger@0.3.0", "", { "dependencies": { "is-node-process": "^1.2.0", "outvariant": "^1.4.0" } }, "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ=="], @@ -509,9 +516,89 @@ "@oslojs/encoding": ["@oslojs/encoding@1.1.0", "", {}, "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ=="], + "@oxc-parser/binding-android-arm-eabi": ["@oxc-parser/binding-android-arm-eabi@0.121.0", "", { "os": "android", "cpu": "arm" }, "sha512-n07FQcySwOlzap424/PLMtOkbS7xOu8nsJduKL8P3COGHKgKoDYXwoAHCbChfgFpHnviehrLWIPX0lKGtbEk/A=="], + + "@oxc-parser/binding-android-arm64": ["@oxc-parser/binding-android-arm64@0.121.0", "", { "os": "android", "cpu": "arm64" }, "sha512-/Dd1xIXboYAicw+twT2utxPD7bL8qh7d3ej0qvaYIMj3/EgIrGR+tSnjCUkiCT6g6uTC0neSS4JY8LxhdSU/sA=="], + + "@oxc-parser/binding-darwin-arm64": ["@oxc-parser/binding-darwin-arm64@0.121.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-A0jNEvv7QMtCO1yk205t3DWU9sWUjQ2KNF0hSVO5W9R9r/R1BIvzG01UQAfmtC0dQm7sCrs5puixurKSfr2bRQ=="], + + "@oxc-parser/binding-darwin-x64": ["@oxc-parser/binding-darwin-x64@0.121.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-SsHzipdxTKUs3I9EOAPmnIimEeJOemqRlRDOp9LIj+96wtxZejF51gNibmoGq8KoqbT1ssAI5po/E3J+vEtXGA=="], + + "@oxc-parser/binding-freebsd-x64": ["@oxc-parser/binding-freebsd-x64@0.121.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-v1APOTkCp+RWOIDAHRoaeW/UoaHF15a60E8eUL6kUQXh+i4K7PBwq2Wi7jm8p0ymID5/m/oC1w3W31Z/+r7HQw=="], + + "@oxc-parser/binding-linux-arm-gnueabihf": ["@oxc-parser/binding-linux-arm-gnueabihf@0.121.0", "", { "os": "linux", "cpu": "arm" }, "sha512-PmqPQuqHZyFVWA4ycr0eu4VnTMmq9laOHZd+8R359w6kzuNZPvmmunmNJ8ybkm769A0nCoVp3TJ6dUz7B3FYIQ=="], + + "@oxc-parser/binding-linux-arm-musleabihf": ["@oxc-parser/binding-linux-arm-musleabihf@0.121.0", "", { "os": "linux", "cpu": "arm" }, "sha512-vF24htj+MOH+Q7y9A8NuC6pUZu8t/C2Fr/kDOi2OcNf28oogr2xadBPXAbml802E8wRAVfbta6YLDQTearz+jw=="], + + "@oxc-parser/binding-linux-arm64-gnu": ["@oxc-parser/binding-linux-arm64-gnu@0.121.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-wjH8cIG2Lu/3d64iZpbYr73hREMgKAfu7fqpXjgM2S16y2zhTfDIp8EQjxO8vlDtKP5Rc7waZW72lh8nZtWrpA=="], + + "@oxc-parser/binding-linux-arm64-musl": ["@oxc-parser/binding-linux-arm64-musl@0.121.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-qT663J/W8yQFw3dtscbEi9LKJevr20V7uWs2MPGTnvNZ3rm8anhhE16gXGpxDOHeg9raySaSHKhd4IGa3YZvuw=="], + + "@oxc-parser/binding-linux-ppc64-gnu": ["@oxc-parser/binding-linux-ppc64-gnu@0.121.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-mYNe4NhVvDBbPkAP8JaVS8lC1dsoJZWH5WCjpw5E+sjhk1R08wt3NnXYUzum7tIiWPfgQxbCMcoxgeemFASbRw=="], + + "@oxc-parser/binding-linux-riscv64-gnu": ["@oxc-parser/binding-linux-riscv64-gnu@0.121.0", "", { "os": "linux", "cpu": "none" }, "sha512-+QiFoGxhAbaI/amqX567784cDyyuZIpinBrJNxUzb+/L2aBRX67mN6Jv40pqduHf15yYByI+K5gUEygCuv0z9w=="], + + "@oxc-parser/binding-linux-riscv64-musl": ["@oxc-parser/binding-linux-riscv64-musl@0.121.0", "", { "os": "linux", "cpu": "none" }, "sha512-9ykEgyTa5JD/Uhv2sttbKnCfl2PieUfOjyxJC/oDL2UO0qtXOtjPLl7H8Kaj5G7p3hIvFgu3YWvAxvE0sqY+hQ=="], + + "@oxc-parser/binding-linux-s390x-gnu": ["@oxc-parser/binding-linux-s390x-gnu@0.121.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-DB1EW5VHZdc1lIRjOI3bW/wV6R6y0xlfvdVrqj6kKi7Ayu2U3UqUBdq9KviVkcUGd5Oq+dROqvUEEFRXGAM7EQ=="], + + "@oxc-parser/binding-linux-x64-gnu": ["@oxc-parser/binding-linux-x64-gnu@0.121.0", "", { "os": "linux", "cpu": "x64" }, "sha512-s4lfobX9p4kPTclvMiH3gcQUd88VlnkMTF6n2MTMDAyX5FPNRhhRSFZK05Ykhf8Zy5NibV4PbGR6DnK7FGNN6A=="], + + "@oxc-parser/binding-linux-x64-musl": ["@oxc-parser/binding-linux-x64-musl@0.121.0", "", { "os": "linux", "cpu": "x64" }, "sha512-P9KlyTpuBuMi3NRGpJO8MicuGZfOoqZVRP1WjOecwx8yk4L/+mrCRNc5egSi0byhuReblBF2oVoDSMgV9Bj4Hw=="], + + "@oxc-parser/binding-openharmony-arm64": ["@oxc-parser/binding-openharmony-arm64@0.121.0", "", { "os": "none", "cpu": "arm64" }, "sha512-R+4jrWOfF2OAPPhj3Eb3U5CaKNAH9/btMveMULIrcNW/hjfysFQlF8wE0GaVBr81dWz8JLgQlsxwctoL78JwXw=="], + + "@oxc-parser/binding-wasm32-wasi": ["@oxc-parser/binding-wasm32-wasi@0.121.0", "", { "dependencies": { "@napi-rs/wasm-runtime": "^1.1.1" }, "cpu": "none" }, "sha512-5TFISkPTymKvsmIlKasPVTPuWxzCcrT8pM+p77+mtQbIZDd1UC8zww4CJcRI46kolmgrEX6QpKO8AvWMVZ+ifw=="], + + "@oxc-parser/binding-win32-arm64-msvc": ["@oxc-parser/binding-win32-arm64-msvc@0.121.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-V0pxh4mql4XTt3aiEtRNUeBAUFOw5jzZNxPABLaOKAWrVzSr9+XUaB095lY7jqMf5t8vkfh8NManGB28zanYKw=="], + + "@oxc-parser/binding-win32-ia32-msvc": ["@oxc-parser/binding-win32-ia32-msvc@0.121.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-4Ob1qvYMPnlF2N9rdmKdkQFdrq16QVcQwBsO8yiPZXof0fHKFF+LmQV501XFbi7lHyrKm8rlJRfQ/M8bZZPVLw=="], + + "@oxc-parser/binding-win32-x64-msvc": ["@oxc-parser/binding-win32-x64-msvc@0.121.0", "", { "os": "win32", "cpu": "x64" }, "sha512-BOp1KCzdboB1tPqoCPXgntgFs0jjeSyOXHzgxVFR7B/qfr3F8r4YDacHkTOUNXtDgM8YwKnkf3rE5gwALYX7NA=="], + "@oxc-project/runtime": ["@oxc-project/runtime@0.115.0", "", {}, "sha512-Rg8Wlt5dCbXhQnsXPrkOjL1DTSvXLgb2R/KYfnf1/K+R0k6UMLEmbQXPM+kwrWqSmWA2t0B1EtHy2/3zikQpvQ=="], - "@oxc-project/types": ["@oxc-project/types@0.112.0", "", {}, "sha512-m6RebKHIRsax2iCwVpYW2ErQwa4ywHJrE4sCK3/8JK8ZZAWOKXaRJFl/uP51gaVyyXlaS4+chU1nSCdzYf6QqQ=="], + "@oxc-project/types": ["@oxc-project/types@0.121.0", "", {}, "sha512-CGtOARQb9tyv7ECgdAlFxi0Fv7lmzvmlm2rpD/RdijOO9rfk/JvB1CjT8EnoD+tjna/IYgKKw3IV7objRb+aYw=="], + + "@oxc-resolver/binding-android-arm-eabi": ["@oxc-resolver/binding-android-arm-eabi@11.19.1", "", { "os": "android", "cpu": "arm" }, "sha512-aUs47y+xyXHUKlbhqHUjBABjvycq6YSD7bpxSW7vplUmdzAlJ93yXY6ZR0c1o1x5A/QKbENCvs3+NlY8IpIVzg=="], + + "@oxc-resolver/binding-android-arm64": ["@oxc-resolver/binding-android-arm64@11.19.1", "", { "os": "android", "cpu": "arm64" }, "sha512-oolbkRX+m7Pq2LNjr/kKgYeC7bRDMVTWPgxBGMjSpZi/+UskVo4jsMU3MLheZV55jL6c3rNelPl4oD60ggYmqA=="], + + "@oxc-resolver/binding-darwin-arm64": ["@oxc-resolver/binding-darwin-arm64@11.19.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-nUC6d2i3R5B12sUW4O646qD5cnMXf2oBGPLIIeaRfU9doJRORAbE2SGv4eW6rMqhD+G7nf2Y8TTJTLiiO3Q/dQ=="], + + "@oxc-resolver/binding-darwin-x64": ["@oxc-resolver/binding-darwin-x64@11.19.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-cV50vE5+uAgNcFa3QY1JOeKDSkM/9ReIcc/9wn4TavhW/itkDGrXhw9jaKnkQnGbjJ198Yh5nbX/Gr2mr4Z5jQ=="], + + "@oxc-resolver/binding-freebsd-x64": ["@oxc-resolver/binding-freebsd-x64@11.19.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-xZOQiYGFxtk48PBKff+Zwoym7ScPAIVp4c14lfLxizO2LTTTJe5sx9vQNGrBymrf/vatSPNMD4FgsaaRigPkqw=="], + + "@oxc-resolver/binding-linux-arm-gnueabihf": ["@oxc-resolver/binding-linux-arm-gnueabihf@11.19.1", "", { "os": "linux", "cpu": "arm" }, "sha512-lXZYWAC6kaGe/ky2su94e9jN9t6M0/6c+GrSlCqL//XO1cxi5lpAhnJYdyrKfm0ZEr/c7RNyAx3P7FSBcBd5+A=="], + + "@oxc-resolver/binding-linux-arm-musleabihf": ["@oxc-resolver/binding-linux-arm-musleabihf@11.19.1", "", { "os": "linux", "cpu": "arm" }, "sha512-veG1kKsuK5+t2IsO9q0DErYVSw2azvCVvWHnfTOS73WE0STdLLB7Q1bB9WR+yHPQM76ASkFyRbogWo1GR1+WbQ=="], + + "@oxc-resolver/binding-linux-arm64-gnu": ["@oxc-resolver/binding-linux-arm64-gnu@11.19.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-heV2+jmXyYnUrpUXSPugqWDRpnsQcDm2AX4wzTuvgdlZfoNYO0O3W2AVpJYaDn9AG4JdM6Kxom8+foE7/BcSig=="], + + "@oxc-resolver/binding-linux-arm64-musl": ["@oxc-resolver/binding-linux-arm64-musl@11.19.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-jvo2Pjs1c9KPxMuMPIeQsgu0mOJF9rEb3y3TdpsrqwxRM+AN6/nDDwv45n5ZrUnQMsdBy5gIabioMKnQfWo9ew=="], + + "@oxc-resolver/binding-linux-ppc64-gnu": ["@oxc-resolver/binding-linux-ppc64-gnu@11.19.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-vLmdNxWCdN7Uo5suays6A/+ywBby2PWBBPXctWPg5V0+eVuzsJxgAn6MMB4mPlshskYbppjpN2Zg83ArHze9gQ=="], + + "@oxc-resolver/binding-linux-riscv64-gnu": ["@oxc-resolver/binding-linux-riscv64-gnu@11.19.1", "", { "os": "linux", "cpu": "none" }, "sha512-/b+WgR+VTSBxzgOhDO7TlMXC1ufPIMR6Vj1zN+/x+MnyXGW7prTLzU9eW85Aj7Th7CCEG9ArCbTeqxCzFWdg2w=="], + + "@oxc-resolver/binding-linux-riscv64-musl": ["@oxc-resolver/binding-linux-riscv64-musl@11.19.1", "", { "os": "linux", "cpu": "none" }, "sha512-YlRdeWb9j42p29ROh+h4eg/OQ3dTJlpHSa+84pUM9+p6i3djtPz1q55yLJhgW9XfDch7FN1pQ/Vd6YP+xfRIuw=="], + + "@oxc-resolver/binding-linux-s390x-gnu": ["@oxc-resolver/binding-linux-s390x-gnu@11.19.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-EDpafVOQWF8/MJynsjOGFThcqhRHy417sRyLfQmeiamJ8qVhSKAn2Dn2VVKUGCjVB9C46VGjhNo7nOPUi1x6uA=="], + + "@oxc-resolver/binding-linux-x64-gnu": ["@oxc-resolver/binding-linux-x64-gnu@11.19.1", "", { "os": "linux", "cpu": "x64" }, "sha512-NxjZe+rqWhr+RT8/Ik+5ptA3oz7tUw361Wa5RWQXKnfqwSSHdHyrw6IdcTfYuml9dM856AlKWZIUXDmA9kkiBQ=="], + + "@oxc-resolver/binding-linux-x64-musl": ["@oxc-resolver/binding-linux-x64-musl@11.19.1", "", { "os": "linux", "cpu": "x64" }, "sha512-cM/hQwsO3ReJg5kR+SpI69DMfvNCp+A/eVR4b4YClE5bVZwz8rh2Nh05InhwI5HR/9cArbEkzMjcKgTHS6UaNw=="], + + "@oxc-resolver/binding-openharmony-arm64": ["@oxc-resolver/binding-openharmony-arm64@11.19.1", "", { "os": "none", "cpu": "arm64" }, "sha512-QF080IowFB0+9Rh6RcD19bdgh49BpQHUW5TajG1qvWHvmrQznTZZjYlgE2ltLXyKY+qs4F/v5xuX1XS7Is+3qA=="], + + "@oxc-resolver/binding-wasm32-wasi": ["@oxc-resolver/binding-wasm32-wasi@11.19.1", "", { "dependencies": { "@napi-rs/wasm-runtime": "^1.1.1" }, "cpu": "none" }, "sha512-w8UCKhX826cP/ZLokXDS6+milN8y4X7zidsAttEdWlVoamTNf6lhBJldaWr3ukTDiye7s4HRcuPEPOXNC432Vg=="], + + "@oxc-resolver/binding-win32-arm64-msvc": ["@oxc-resolver/binding-win32-arm64-msvc@11.19.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-nJ4AsUVZrVKwnU/QRdzPCCrO0TrabBqgJ8pJhXITdZGYOV28TIYystV1VFLbQ7DtAcaBHpocT5/ZJnF78YJPtQ=="], + + "@oxc-resolver/binding-win32-ia32-msvc": ["@oxc-resolver/binding-win32-ia32-msvc@11.19.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-EW+ND5q2Tl+a3pH81l1QbfgbF3HmqgwLfDfVithRFheac8OTcnbXt/JxqD2GbDkb7xYEqy1zNaVFRr3oeG8npA=="], + + "@oxc-resolver/binding-win32-x64-msvc": ["@oxc-resolver/binding-win32-x64-msvc@11.19.1", "", { "os": "win32", "cpu": "x64" }, "sha512-6hIU3RQu45B+VNTY4Ru8ppFwjVS/S5qwYyGhBotmjxfEKk41I2DlGtRfGJndZ5+6lneE2pwloqunlOyZuX/XAw=="], "@oxfmt/binding-android-arm-eabi": ["@oxfmt/binding-android-arm-eabi@0.40.0", "", { "os": "android", "cpu": "arm" }, "sha512-S6zd5r1w/HmqR8t0CTnGjFTBLDq2QKORPwriCHxo4xFNuhmOTABGjPaNvCJJVnrKBLsohOeiDX3YqQfJPF+FXw=="], @@ -1055,8 +1142,14 @@ "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], + "fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="], + "fast-uri": ["fast-uri@3.1.0", "", {}, "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA=="], + "fastq": ["fastq@1.20.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw=="], + + "fd-package-json": ["fd-package-json@2.0.0", "", { "dependencies": { "walk-up-path": "^4.0.0" } }, "sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ=="], + "fd-slicer": ["fd-slicer@1.1.0", "", { "dependencies": { "pend": "~1.2.0" } }, "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g=="], "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], @@ -1071,6 +1164,8 @@ "fontkitten": ["fontkitten@1.0.3", "", { "dependencies": { "tiny-inflate": "^1.0.3" } }, "sha512-Wp1zXWPVUPBmfoa3Cqc9ctaKuzKAV6uLstRqlR56kSjplf5uAce+qeyYym7F+PHbGTk+tCEdkCW6RD7DX/gBZw=="], + "formatly": ["formatly@0.3.0", "", { "dependencies": { "fd-package-json": "^2.0.0" }, "bin": { "formatly": "bin/index.mjs" } }, "sha512-9XNj/o4wrRFyhSMJOvsuyMwy8aUfBaZ1VrqHVfohyXf0Sw0e+yfKG+xZaY3arGCOMdwFsqObtzVOc1gU9KiT9w=="], + "fs-extra": ["fs-extra@10.1.0", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ=="], "fsevents": ["fsevents@2.3.2", "", { "os": "darwin" }, "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA=="], @@ -1081,7 +1176,7 @@ "get-stream": ["get-stream@5.2.0", "", { "dependencies": { "pump": "^3.0.0" } }, "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA=="], - "get-tsconfig": ["get-tsconfig@4.13.6", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw=="], + "get-tsconfig": ["get-tsconfig@4.13.7", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-7tN6rFgBlMgpBML5j8typ92BKFi2sFQvIdpAqLA2beia5avZDrMs0FLZiM5etShWq5irVyGcGMEA1jcDaK7A/Q=="], "github-slugger": ["github-slugger@2.0.0", "", {}, "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw=="], @@ -1205,6 +1300,8 @@ "kleur": ["kleur@4.1.5", "", {}, "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ=="], + "knip": ["knip@6.3.0", "", { "dependencies": { "@nodelib/fs.walk": "^1.2.3", "fast-glob": "^3.3.3", "formatly": "^0.3.0", "get-tsconfig": "4.13.7", "jiti": "^2.6.0", "minimist": "^1.2.8", "oxc-parser": "^0.121.0", "oxc-resolver": "^11.19.1", "picocolors": "^1.1.1", "picomatch": "^4.0.1", "smol-toml": "^1.6.1", "strip-json-comments": "5.0.3", "unbash": "^2.2.0", "yaml": "^2.8.2", "zod": "^4.1.11" }, "bin": { "knip": "bin/knip.js", "knip-bun": "bin/knip-bun.js" } }, "sha512-g6dVPoTw6iNm3cubC5IWxVkVsd0r5hXhTBTbAGIEQN53GdA2ZM/slMTPJ7n5l8pBebNQPHpxjmKxuR4xVQ2/hQ=="], + "kubernetes-types": ["kubernetes-types@1.30.0", "", {}, "sha512-Dew1okvhM/SQcIa2rcgujNndZwU8VnSapDgdxlYoB84ZlpAD43U6KLAFqYo17ykSFGHNPrg0qry0bP+GJd9v7Q=="], "lazy-val": ["lazy-val@1.0.5", "", {}, "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q=="], @@ -1297,6 +1394,8 @@ "mdn-data": ["mdn-data@2.27.1", "", {}, "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ=="], + "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], + "micromark": ["micromark@4.0.2", "", { "dependencies": { "@types/debug": "^4.0.0", "debug": "^4.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA=="], "micromark-core-commonmark": ["micromark-core-commonmark@2.0.3", "", { "dependencies": { "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-destination": "^2.0.0", "micromark-factory-label": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-factory-title": "^2.0.0", "micromark-factory-whitespace": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-html-tag-name": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg=="], @@ -1353,10 +1452,14 @@ "micromark-util-types": ["micromark-util-types@2.0.2", "", {}, "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA=="], + "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], + "mime": ["mime@4.1.0", "", { "bin": { "mime": "bin/cli.js" } }, "sha512-X5ju04+cAzsojXKes0B/S4tcYtFAJ6tTMuSPBEn9CPGlrWr8Fiw7qYeLT0XyH80HSoAoqWCaz+MWKh22P7G1cw=="], "mimic-response": ["mimic-response@3.1.0", "", {}, "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ=="], + "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="], + "mrmime": ["mrmime@2.0.1", "", {}, "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ=="], "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], @@ -1415,6 +1518,10 @@ "outvariant": ["outvariant@1.4.3", "", {}, "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA=="], + "oxc-parser": ["oxc-parser@0.121.0", "", { "dependencies": { "@oxc-project/types": "^0.121.0" }, "optionalDependencies": { "@oxc-parser/binding-android-arm-eabi": "0.121.0", "@oxc-parser/binding-android-arm64": "0.121.0", "@oxc-parser/binding-darwin-arm64": "0.121.0", "@oxc-parser/binding-darwin-x64": "0.121.0", "@oxc-parser/binding-freebsd-x64": "0.121.0", "@oxc-parser/binding-linux-arm-gnueabihf": "0.121.0", "@oxc-parser/binding-linux-arm-musleabihf": "0.121.0", "@oxc-parser/binding-linux-arm64-gnu": "0.121.0", "@oxc-parser/binding-linux-arm64-musl": "0.121.0", "@oxc-parser/binding-linux-ppc64-gnu": "0.121.0", "@oxc-parser/binding-linux-riscv64-gnu": "0.121.0", "@oxc-parser/binding-linux-riscv64-musl": "0.121.0", "@oxc-parser/binding-linux-s390x-gnu": "0.121.0", "@oxc-parser/binding-linux-x64-gnu": "0.121.0", "@oxc-parser/binding-linux-x64-musl": "0.121.0", "@oxc-parser/binding-openharmony-arm64": "0.121.0", "@oxc-parser/binding-wasm32-wasi": "0.121.0", "@oxc-parser/binding-win32-arm64-msvc": "0.121.0", "@oxc-parser/binding-win32-ia32-msvc": "0.121.0", "@oxc-parser/binding-win32-x64-msvc": "0.121.0" } }, "sha512-ek9o58+SCv6AV7nchiAcUJy1DNE2CC5WRdBcO0mF+W4oRjNQfPO7b3pLjTHSFECpHkKGOZSQxx3hk8viIL5YCg=="], + + "oxc-resolver": ["oxc-resolver@11.19.1", "", { "optionalDependencies": { "@oxc-resolver/binding-android-arm-eabi": "11.19.1", "@oxc-resolver/binding-android-arm64": "11.19.1", "@oxc-resolver/binding-darwin-arm64": "11.19.1", "@oxc-resolver/binding-darwin-x64": "11.19.1", "@oxc-resolver/binding-freebsd-x64": "11.19.1", "@oxc-resolver/binding-linux-arm-gnueabihf": "11.19.1", "@oxc-resolver/binding-linux-arm-musleabihf": "11.19.1", "@oxc-resolver/binding-linux-arm64-gnu": "11.19.1", "@oxc-resolver/binding-linux-arm64-musl": "11.19.1", "@oxc-resolver/binding-linux-ppc64-gnu": "11.19.1", "@oxc-resolver/binding-linux-riscv64-gnu": "11.19.1", "@oxc-resolver/binding-linux-riscv64-musl": "11.19.1", "@oxc-resolver/binding-linux-s390x-gnu": "11.19.1", "@oxc-resolver/binding-linux-x64-gnu": "11.19.1", "@oxc-resolver/binding-linux-x64-musl": "11.19.1", "@oxc-resolver/binding-openharmony-arm64": "11.19.1", "@oxc-resolver/binding-wasm32-wasi": "11.19.1", "@oxc-resolver/binding-win32-arm64-msvc": "11.19.1", "@oxc-resolver/binding-win32-ia32-msvc": "11.19.1", "@oxc-resolver/binding-win32-x64-msvc": "11.19.1" } }, "sha512-qE/CIg/spwrTBFt5aKmwe3ifeDdLfA2NESN30E42X/lII5ClF8V7Wt6WIJhcGZjp0/Q+nQ+9vgxGk//xZNX2hg=="], + "oxfmt": ["oxfmt@0.40.0", "", { "dependencies": { "tinypool": "2.1.0" }, "optionalDependencies": { "@oxfmt/binding-android-arm-eabi": "0.40.0", "@oxfmt/binding-android-arm64": "0.40.0", "@oxfmt/binding-darwin-arm64": "0.40.0", "@oxfmt/binding-darwin-x64": "0.40.0", "@oxfmt/binding-freebsd-x64": "0.40.0", "@oxfmt/binding-linux-arm-gnueabihf": "0.40.0", "@oxfmt/binding-linux-arm-musleabihf": "0.40.0", "@oxfmt/binding-linux-arm64-gnu": "0.40.0", "@oxfmt/binding-linux-arm64-musl": "0.40.0", "@oxfmt/binding-linux-ppc64-gnu": "0.40.0", "@oxfmt/binding-linux-riscv64-gnu": "0.40.0", "@oxfmt/binding-linux-riscv64-musl": "0.40.0", "@oxfmt/binding-linux-s390x-gnu": "0.40.0", "@oxfmt/binding-linux-x64-gnu": "0.40.0", "@oxfmt/binding-linux-x64-musl": "0.40.0", "@oxfmt/binding-openharmony-arm64": "0.40.0", "@oxfmt/binding-win32-arm64-msvc": "0.40.0", "@oxfmt/binding-win32-ia32-msvc": "0.40.0", "@oxfmt/binding-win32-x64-msvc": "0.40.0" }, "bin": { "oxfmt": "bin/oxfmt" } }, "sha512-g0C3I7xUj4b4DcagevM9kgH6+pUHytikxUcn3/VUkvzTNaaXBeyZqb7IBsHwojeXm4mTBEC/aBjBTMVUkZwWUQ=="], "oxlint": ["oxlint@1.56.0", "", { "optionalDependencies": { "@oxlint/binding-android-arm-eabi": "1.56.0", "@oxlint/binding-android-arm64": "1.56.0", "@oxlint/binding-darwin-arm64": "1.56.0", "@oxlint/binding-darwin-x64": "1.56.0", "@oxlint/binding-freebsd-x64": "1.56.0", "@oxlint/binding-linux-arm-gnueabihf": "1.56.0", "@oxlint/binding-linux-arm-musleabihf": "1.56.0", "@oxlint/binding-linux-arm64-gnu": "1.56.0", "@oxlint/binding-linux-arm64-musl": "1.56.0", "@oxlint/binding-linux-ppc64-gnu": "1.56.0", "@oxlint/binding-linux-riscv64-gnu": "1.56.0", "@oxlint/binding-linux-riscv64-musl": "1.56.0", "@oxlint/binding-linux-s390x-gnu": "1.56.0", "@oxlint/binding-linux-x64-gnu": "1.56.0", "@oxlint/binding-linux-x64-musl": "1.56.0", "@oxlint/binding-openharmony-arm64": "1.56.0", "@oxlint/binding-win32-arm64-msvc": "1.56.0", "@oxlint/binding-win32-ia32-msvc": "1.56.0", "@oxlint/binding-win32-x64-msvc": "1.56.0" }, "peerDependencies": { "oxlint-tsgolint": ">=0.15.0" }, "optionalPeers": ["oxlint-tsgolint"], "bin": { "oxlint": "bin/oxlint" } }, "sha512-Q+5Mj5PVaH/R6/fhMMFzw4dT+KPB+kQW4kaL8FOIq7tfhlnEVp6+3lcWqFruuTNlUo9srZUW3qH7Id4pskeR6g=="], @@ -1471,6 +1578,8 @@ "quansync": ["quansync@1.0.0", "", {}, "sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA=="], + "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], + "quick-lru": ["quick-lru@5.1.1", "", {}, "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA=="], "radix3": ["radix3@1.1.2", "", {}, "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA=="], @@ -1539,6 +1648,8 @@ "rettime": ["rettime@0.10.1", "", {}, "sha512-uyDrIlUEH37cinabq0AX4QbgV4HbFZ/gqoiunWQ1UqBtRvTTytwhNYjE++pO/MjPTZL5KQCf2bEoJ/BJNVQ5Kw=="], + "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], + "roarr": ["roarr@2.15.4", "", { "dependencies": { "boolean": "^3.0.1", "detect-node": "^2.0.4", "globalthis": "^1.0.1", "json-stringify-safe": "^5.0.1", "semver-compare": "^1.0.0", "sprintf-js": "^1.1.2" } }, "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A=="], "rolldown": ["rolldown@1.0.0-rc.3", "", { "dependencies": { "@oxc-project/types": "=0.112.0", "@rolldown/pluginutils": "1.0.0-rc.3" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.0.0-rc.3", "@rolldown/binding-darwin-arm64": "1.0.0-rc.3", "@rolldown/binding-darwin-x64": "1.0.0-rc.3", "@rolldown/binding-freebsd-x64": "1.0.0-rc.3", "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.3", "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.3", "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.3", "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.3", "@rolldown/binding-linux-x64-musl": "1.0.0-rc.3", "@rolldown/binding-openharmony-arm64": "1.0.0-rc.3", "@rolldown/binding-wasm32-wasi": "1.0.0-rc.3", "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.3", "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.3" }, "bin": { "rolldown": "bin/cli.mjs" } }, "sha512-Po/YZECDOqVXjIXrtC5h++a5NLvKAQNrd9ggrIG3sbDfGO5BqTUsrI6l8zdniKRp3r5Tp/2JTrXqx4GIguFCMw=="], @@ -1547,6 +1658,8 @@ "run-applescript": ["run-applescript@7.1.0", "", {}, "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q=="], + "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], + "sax": ["sax@1.5.0", "", {}, "sha512-21IYA3Q5cQf089Z6tgaUTr7lDAyzoTPx5HRtbhsME8Udispad8dC/+sziTNugOEx54ilvatQ9YCzl4KQLPcRHA=="], "scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="], @@ -1573,7 +1686,7 @@ "sisteransi": ["sisteransi@1.0.5", "", {}, "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="], - "smol-toml": ["smol-toml@1.6.0", "", {}, "sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw=="], + "smol-toml": ["smol-toml@1.6.1", "", {}, "sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg=="], "source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], @@ -1599,6 +1712,8 @@ "strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "strip-json-comments": ["strip-json-comments@5.0.3", "", {}, "sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw=="], + "style-to-js": ["style-to-js@1.1.21", "", { "dependencies": { "style-to-object": "1.0.14" } }, "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ=="], "style-to-object": ["style-to-object@1.0.14", "", { "dependencies": { "inline-style-parser": "0.2.7" } }, "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw=="], @@ -1691,6 +1806,8 @@ "ultrahtml": ["ultrahtml@1.6.0", "", {}, "sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw=="], + "unbash": ["unbash@2.2.0", "", {}, "sha512-X2wH19RAPZE3+ldGicOkoj/SIA83OIxcJ6Cuaw23hf8Xc6fQpvZXY0SftE2JgS0QhYLUG4uwodSI3R53keyh7w=="], + "unconfig-core": ["unconfig-core@7.5.0", "", { "dependencies": { "@quansync/fs": "^1.0.0", "quansync": "^1.0.0" } }, "sha512-Su3FauozOGP44ZmKdHy2oE6LPjk51M/TRRjHv2HNCWiDvfvCoxC2lno6jevMA91MYAdCdwP05QnWdWpSbncX/w=="], "uncrypto": ["uncrypto@0.1.3", "", {}, "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q=="], @@ -1785,6 +1902,8 @@ "vscode-uri": ["vscode-uri@3.1.0", "", {}, "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ=="], + "walk-up-path": ["walk-up-path@4.0.0", "", {}, "sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A=="], + "web-namespaces": ["web-namespaces@2.0.1", "", {}, "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ=="], "webpack-virtual-modules": ["webpack-virtual-modules@0.6.2", "", {}, "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ=="], @@ -1831,6 +1950,8 @@ "@astrojs/language-server/@astrojs/compiler": ["@astrojs/compiler@2.13.1", "", {}, "sha512-f3FN83d2G/v32ipNClRKgYv30onQlMZX1vCeZMjPsMMPl1mDpmbl0+N5BYo4S/ofzqJyS5hvwacEo0CCVDn/Qg=="], + "@astrojs/markdown-remark/smol-toml": ["smol-toml@1.6.0", "", {}, "sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw=="], + "@babel/code-frame/@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="], "@babel/core/@babel/generator": ["@babel/generator@7.29.1", "", { "dependencies": { "@babel/parser": "^7.29.0", "@babel/types": "^7.29.0", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw=="], @@ -1899,6 +2020,8 @@ "ast-kit/@babel/parser": ["@babel/parser@8.0.0-rc.2", "", { "dependencies": { "@babel/types": "^8.0.0-rc.2" }, "bin": "./bin/babel-parser.js" }, "sha512-29AhEtcq4x8Dp3T72qvUMZHx0OMXCj4Jy/TEReQa+KWLln524Cj1fWb3QFi0l/xSpptQBR6y9RNEXuxpFvwiUQ=="], + "astro/smol-toml": ["smol-toml@1.6.0", "", {}, "sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw=="], + "clone-response/mimic-response": ["mimic-response@1.0.1", "", {}, "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="], "csso/css-tree": ["css-tree@2.2.1", "", { "dependencies": { "mdn-data": "2.0.28", "source-map-js": "^1.0.1" } }, "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA=="], @@ -1909,20 +2032,28 @@ "mdast-util-find-and-replace/escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], + "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "parse-entities/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], "recast/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], + "rolldown/@oxc-project/types": ["@oxc-project/types@0.112.0", "", {}, "sha512-m6RebKHIRsax2iCwVpYW2ErQwa4ywHJrE4sCK3/8JK8ZZAWOKXaRJFl/uP51gaVyyXlaS4+chU1nSCdzYf6QqQ=="], + "rolldown/@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-rc.3", "", {}, "sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q=="], "rolldown-plugin-dts/@babel/parser": ["@babel/parser@8.0.0-rc.2", "", { "dependencies": { "@babel/types": "^8.0.0-rc.2" }, "bin": "./bin/babel-parser.js" }, "sha512-29AhEtcq4x8Dp3T72qvUMZHx0OMXCj4Jy/TEReQa+KWLln524Cj1fWb3QFi0l/xSpptQBR6y9RNEXuxpFvwiUQ=="], "rolldown-plugin-dts/@babel/types": ["@babel/types@8.0.0-rc.2", "", { "dependencies": { "@babel/helper-string-parser": "^8.0.0-rc.2", "@babel/helper-validator-identifier": "^8.0.0-rc.2" } }, "sha512-91gAaWRznDwSX4E2tZ1YjBuIfnQVOFDCQ2r0Toby0gu4XEbyF623kXLMA8d4ZbCu+fINcrudkmEcwSUHgDDkNw=="], + "rolldown-plugin-dts/get-tsconfig": ["get-tsconfig@4.13.6", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw=="], + "serialize-error/type-fest": ["type-fest@0.13.1", "", {}, "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg=="], "tsx/fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], + "tsx/get-tsconfig": ["get-tsconfig@4.13.6", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw=="], + "unrun/rolldown": ["rolldown@1.0.0-rc.9", "", { "dependencies": { "@oxc-project/types": "=0.115.0", "@rolldown/pluginutils": "1.0.0-rc.9" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.0.0-rc.9", "@rolldown/binding-darwin-arm64": "1.0.0-rc.9", "@rolldown/binding-darwin-x64": "1.0.0-rc.9", "@rolldown/binding-freebsd-x64": "1.0.0-rc.9", "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.9", "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.9", "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.9", "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.9", "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.9", "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.9", "@rolldown/binding-linux-x64-musl": "1.0.0-rc.9", "@rolldown/binding-openharmony-arm64": "1.0.0-rc.9", "@rolldown/binding-wasm32-wasi": "1.0.0-rc.9", "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.9", "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.9" }, "bin": { "rolldown": "bin/cli.mjs" } }, "sha512-9EbgWge7ZH+yqb4d2EnELAntgPTWbfL8ajiTW+SyhJEC4qhBbkCKbqFV4Ge4zmu5ziQuVbWxb/XwLZ+RIO7E8Q=="], "unstorage/chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="], diff --git a/knip.json b/knip.json new file mode 100644 index 0000000000..7824175c19 --- /dev/null +++ b/knip.json @@ -0,0 +1,46 @@ +{ + "$schema": "https://unpkg.com/knip@6/schema.json", + "workspaces": { + "apps/desktop": { + "entry": ["src/**/*.test.ts", "scripts/**/*.mjs"], + "project": ["src/**/*.ts!", "!src/**/*.test.ts!", "scripts/**/*.mjs"] + }, + "apps/marketing": { + "entry": ["src/pages/**/*.{astro,mdx}!"], + "project": ["src/**/*.{astro,mdx,ts,tsx,js,jsx}!"] + }, + "apps/server": { + "entry": ["src/**/*.test.ts", "integration/**/*.integration.ts", "scripts/**/*.ts"], + "project": ["src/**/*.ts!", "!src/**/*.test.ts!", "integration/**/*.ts", "scripts/**/*.ts"] + }, + "apps/web": { + "entry": [ + "index.html!", + "src/**/*.test.{ts,tsx}", + "src/**/*.browser.tsx", + "public/mockServiceWorker.js" + ], + "project": [ + "src/**/*.{ts,tsx}!", + "!src/**/*.test.{ts,tsx}!", + "!src/**/*.testing.{ts,tsx}!", + "!src/**/*.browser.tsx!" + ] + }, + "packages/contracts": { + "entry": ["src/**/*.test.ts"], + "project": ["src/**/*.ts!", "!src/**/*.test.ts!"] + }, + "packages/shared": { + "entry": [ + "src/{model,git,logging,shell,Net,DrainableWorker,KeyedCoalescingWorker,schemaJson,Struct,String}.ts!", + "src/**/*.test.ts" + ], + "project": ["src/**/*.ts!", "!src/**/*.test.ts!"] + }, + "scripts": { + "entry": ["*.ts"], + "project": ["**/*.ts"] + } + } +} diff --git a/package.json b/package.json index a26a359c03..d77e79f593 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ "build:desktop": "turbo run build --filter=@t3tools/desktop --filter=t3", "typecheck": "turbo run typecheck", "lint": "oxlint --report-unused-disable-directives", + "knip": "knip", "test": "turbo run test", "test:desktop-smoke": "turbo run smoke-test --filter=@t3tools/desktop", "fmt": "oxfmt", @@ -55,6 +56,7 @@ }, "devDependencies": { "@types/node": "catalog:", + "knip": "^6.3.0", "oxfmt": "^0.40.0", "oxlint": "^1.55.0", "turbo": "^2.3.3", From 2c2ad40a0c960bda6803de4541d65fecc6510939 Mon Sep 17 00:00:00 2001 From: Shivam Sharma <91240327+shivamhwp@users.noreply.github.com> Date: Wed, 1 Apr 2026 01:23:17 +0530 Subject: [PATCH 02/23] Remove unused exports and dead code for knip cleanup - narrow module surface areas by making internal types and constants private - drop stale exports, helpers, and UI code no longer used - reduce unused dependencies and simplify server/web modules --- apps/marketing/src/lib/releases.ts | 2 +- apps/server/package.json | 1 - apps/server/src/checkpointing/Diffs.ts | 2 +- apps/server/src/checkpointing/Utils.ts | 2 +- apps/server/src/codexAppServerManager.ts | 6 +- apps/server/src/git/Prompts.ts | 8 +- .../server/src/git/Services/TextGeneration.ts | 10 - apps/server/src/imageMime.ts | 2 +- apps/server/src/keybindings.ts | 11 +- apps/server/src/orchestration/Errors.ts | 53 ---- apps/server/src/orchestration/Schemas.ts | 14 -- .../src/orchestration/commandInvariants.ts | 2 +- apps/server/src/os-jank.ts | 2 +- apps/server/src/persistence/Errors.ts | 45 ---- apps/server/src/persistence/Migrations.ts | 26 +- .../persistence/Services/ProjectionTurns.ts | 1 - apps/server/src/processRunner.ts | 2 +- .../project/Layers/ProjectFaviconResolver.ts | 2 +- .../src/provider/Layers/ClaudeAdapter.ts | 3 - .../src/provider/Layers/ClaudeProvider.ts | 2 +- .../src/provider/Layers/CodexAdapter.ts | 5 +- .../src/provider/Layers/EventNdjsonLogger.ts | 4 +- .../Layers/ProviderAdapterRegistry.ts | 2 +- .../src/provider/Layers/ProviderService.ts | 5 +- .../Layers/ProviderSessionDirectory.ts | 4 - apps/server/src/provider/codexAccount.ts | 4 +- apps/server/src/provider/codexCliVersion.ts | 4 +- apps/server/src/provider/providerSnapshot.ts | 8 +- .../src/workspace/Layers/WorkspaceEntries.ts | 2 +- .../workspace/Layers/WorkspaceFileSystem.ts | 2 +- .../src/workspace/Layers/WorkspacePaths.ts | 2 +- .../src/workspace/Services/WorkspacePaths.ts | 11 +- apps/web/src/branding.ts | 2 +- .../src/components/GitActionsControl.logic.ts | 2 +- apps/web/src/components/PlanSidebar.tsx | 1 - apps/web/src/components/Sidebar.logic.ts | 10 +- .../chat/ComposerPendingTerminalContexts.tsx | 22 -- .../components/chat/MessagesTimeline.logic.ts | 2 +- apps/web/src/components/chat/TraitsPicker.tsx | 2 +- .../chat/composerProviderRegistry.tsx | 4 +- apps/web/src/components/composerInlineChip.ts | 3 - .../web/src/components/desktopUpdate.logic.ts | 8 +- .../settings/SettingsSidebarNav.tsx | 4 +- apps/web/src/components/ui/alert-dialog.tsx | 15 -- apps/web/src/components/ui/autocomplete.tsx | 236 +----------------- apps/web/src/components/ui/badge.tsx | 2 +- apps/web/src/components/ui/card.tsx | 196 --------------- apps/web/src/components/ui/collapsible.tsx | 18 +- apps/web/src/components/ui/combobox.tsx | 155 ------------ apps/web/src/components/ui/command.tsx | 190 +------------- apps/web/src/components/ui/dialog.tsx | 20 -- apps/web/src/components/ui/empty.tsx | 16 +- apps/web/src/components/ui/field.tsx | 59 ----- apps/web/src/components/ui/fieldset.tsx | 26 -- apps/web/src/components/ui/form.tsx | 17 -- apps/web/src/components/ui/group.tsx | 28 +-- apps/web/src/components/ui/input-group.tsx | 95 ------- apps/web/src/components/ui/input.tsx | 2 +- apps/web/src/components/ui/kbd.tsx | 28 --- apps/web/src/components/ui/menu.tsx | 102 -------- apps/web/src/components/ui/popover.tsx | 38 +-- apps/web/src/components/ui/radio-group.tsx | 36 --- apps/web/src/components/ui/scroll-area.tsx | 2 +- apps/web/src/components/ui/select.tsx | 80 +----- apps/web/src/components/ui/sheet.tsx | 69 +---- apps/web/src/components/ui/sidebar.tsx | 122 --------- apps/web/src/components/ui/textarea.tsx | 2 +- apps/web/src/components/ui/toast.tsx | 8 +- apps/web/src/components/ui/toggle-group.tsx | 23 +- apps/web/src/components/ui/tooltip.tsx | 7 +- apps/web/src/composer-editor-mentions.ts | 2 +- apps/web/src/composer-logic.ts | 2 - apps/web/src/composerDraftStore.ts | 4 +- apps/web/src/historyBootstrap.ts | 2 +- apps/web/src/hooks/useMediaQuery.ts | 2 +- apps/web/src/hooks/useSettings.ts | 2 +- apps/web/src/keybindings.ts | 2 +- apps/web/src/lib/gitReactQuery.ts | 18 -- apps/web/src/lib/storage.ts | 6 +- apps/web/src/lib/terminalContext.ts | 11 +- apps/web/src/modelSelection.ts | 32 +-- apps/web/src/orchestrationEventEffects.ts | 2 +- apps/web/src/orchestrationRecovery.ts | 6 +- apps/web/src/pendingUserInput.ts | 2 +- apps/web/src/providerModels.ts | 2 +- apps/web/src/router.ts | 2 +- apps/web/src/session-logic.ts | 6 +- apps/web/src/store.ts | 7 +- apps/web/src/terminal-links.ts | 4 +- apps/web/src/threadSelectionStore.ts | 2 +- apps/web/src/uiStateStore.ts | 8 +- bun.lock | 3 - packages/contracts/src/orchestration.ts | 1 + packages/contracts/src/providerRuntime.ts | 6 +- packages/contracts/src/terminal.ts | 2 +- scripts/lib/brand-assets.ts | 2 +- scripts/package.json | 2 - 97 files changed, 112 insertions(+), 1929 deletions(-) delete mode 100644 apps/web/src/components/ui/card.tsx delete mode 100644 apps/web/src/components/ui/field.tsx delete mode 100644 apps/web/src/components/ui/fieldset.tsx delete mode 100644 apps/web/src/components/ui/form.tsx delete mode 100644 apps/web/src/components/ui/input-group.tsx delete mode 100644 apps/web/src/components/ui/kbd.tsx delete mode 100644 apps/web/src/components/ui/radio-group.tsx diff --git a/apps/marketing/src/lib/releases.ts b/apps/marketing/src/lib/releases.ts index 5f3209acf8..090e043536 100644 --- a/apps/marketing/src/lib/releases.ts +++ b/apps/marketing/src/lib/releases.ts @@ -10,7 +10,7 @@ export interface ReleaseAsset { browser_download_url: string; } -export interface Release { +interface Release { tag_name: string; html_url: string; assets: ReleaseAsset[]; diff --git a/apps/server/package.json b/apps/server/package.json index e59c7c208c..b8fc3f6dde 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -37,7 +37,6 @@ "@effect/vitest": "catalog:", "@t3tools/contracts": "workspace:*", "@t3tools/shared": "workspace:*", - "@t3tools/web": "workspace:*", "@types/bun": "catalog:", "@types/node": "catalog:", "tsdown": "catalog:", diff --git a/apps/server/src/checkpointing/Diffs.ts b/apps/server/src/checkpointing/Diffs.ts index c2f867b96e..7160fc453b 100644 --- a/apps/server/src/checkpointing/Diffs.ts +++ b/apps/server/src/checkpointing/Diffs.ts @@ -1,6 +1,6 @@ import { parsePatchFiles } from "@pierre/diffs"; -export interface TurnDiffFileSummary { +interface TurnDiffFileSummary { readonly path: string; readonly additions: number; readonly deletions: number; diff --git a/apps/server/src/checkpointing/Utils.ts b/apps/server/src/checkpointing/Utils.ts index 3cd92f8510..02169a182d 100644 --- a/apps/server/src/checkpointing/Utils.ts +++ b/apps/server/src/checkpointing/Utils.ts @@ -1,7 +1,7 @@ import { Encoding } from "effect"; import { CheckpointRef, ProjectId, type ThreadId } from "@t3tools/contracts"; -export const CHECKPOINT_REFS_PREFIX = "refs/t3/checkpoints"; +const CHECKPOINT_REFS_PREFIX = "refs/t3/checkpoints"; export function checkpointRefForThreadTurn(threadId: ThreadId, turnCount: number): CheckpointRef { return CheckpointRef.makeUnsafe( diff --git a/apps/server/src/codexAppServerManager.ts b/apps/server/src/codexAppServerManager.ts index 3145038647..d91feea731 100644 --- a/apps/server/src/codexAppServerManager.ts +++ b/apps/server/src/codexAppServerManager.ts @@ -127,12 +127,12 @@ export interface CodexAppServerStartSessionInput { readonly runtimeMode: RuntimeMode; } -export interface CodexThreadTurnSnapshot { +interface CodexThreadTurnSnapshot { id: TurnId; items: unknown[]; } -export interface CodexThreadSnapshot { +interface CodexThreadSnapshot { threadId: string; turns: CodexThreadTurnSnapshot[]; } @@ -425,7 +425,7 @@ export function isRecoverableThreadResumeError(error: unknown): boolean { return RECOVERABLE_THREAD_RESUME_ERROR_SNIPPETS.some((snippet) => message.includes(snippet)); } -export interface CodexAppServerManagerEvents { +interface CodexAppServerManagerEvents { event: [event: ProviderEvent]; } diff --git a/apps/server/src/git/Prompts.ts b/apps/server/src/git/Prompts.ts index 4092358825..e5557b9587 100644 --- a/apps/server/src/git/Prompts.ts +++ b/apps/server/src/git/Prompts.ts @@ -15,7 +15,7 @@ import { limitSection } from "./Utils.ts"; // Commit message // --------------------------------------------------------------------------- -export interface CommitMessagePromptInput { +interface CommitMessagePromptInput { branch: string | null; stagedSummary: string; stagedPatch: string; @@ -71,7 +71,7 @@ export function buildCommitMessagePrompt(input: CommitMessagePromptInput) { // PR content // --------------------------------------------------------------------------- -export interface PrContentPromptInput { +interface PrContentPromptInput { baseBranch: string; headBranch: string; commitSummary: string; @@ -114,7 +114,7 @@ export function buildPrContentPrompt(input: PrContentPromptInput) { // Branch name // --------------------------------------------------------------------------- -export interface BranchNamePromptInput { +interface BranchNamePromptInput { message: string; attachments?: ReadonlyArray | undefined; } @@ -176,7 +176,7 @@ export function buildBranchNamePrompt(input: BranchNamePromptInput) { // Thread title // --------------------------------------------------------------------------- -export interface ThreadTitlePromptInput { +interface ThreadTitlePromptInput { message: string; attachments?: ReadonlyArray | undefined; } diff --git a/apps/server/src/git/Services/TextGeneration.ts b/apps/server/src/git/Services/TextGeneration.ts index f4354c7a99..6a356a4c70 100644 --- a/apps/server/src/git/Services/TextGeneration.ts +++ b/apps/server/src/git/Services/TextGeneration.ts @@ -72,16 +72,6 @@ export interface ThreadTitleGenerationInput { export interface ThreadTitleGenerationResult { title: string; } - -export interface TextGenerationService { - generateCommitMessage( - input: CommitMessageGenerationInput, - ): Promise; - generatePrContent(input: PrContentGenerationInput): Promise; - generateBranchName(input: BranchNameGenerationInput): Promise; - generateThreadTitle(input: ThreadTitleGenerationInput): Promise; -} - /** * TextGenerationShape - Service API for commit/PR text generation. */ diff --git a/apps/server/src/imageMime.ts b/apps/server/src/imageMime.ts index 814abbb32c..3c8b0376dd 100644 --- a/apps/server/src/imageMime.ts +++ b/apps/server/src/imageMime.ts @@ -1,6 +1,6 @@ import Mime from "@effect/platform-node/Mime"; -export const IMAGE_EXTENSION_BY_MIME_TYPE: Record = { +const IMAGE_EXTENSION_BY_MIME_TYPE: Record = { "image/avif": ".avif", "image/bmp": ".bmp", "image/gif": ".gif", diff --git a/apps/server/src/keybindings.ts b/apps/server/src/keybindings.ts index 086d795c0c..80a130f78e 100644 --- a/apps/server/src/keybindings.ts +++ b/apps/server/src/keybindings.ts @@ -349,11 +349,6 @@ export const ResolvedKeybindingFromConfig = KeybindingRule.pipe( }), ), ); - -export const ResolvedKeybindingsFromConfig = Schema.Array(ResolvedKeybindingFromConfig).check( - Schema.isMaxLength(MAX_KEYBINDINGS_COUNT), -); - function isSameKeybindingRule(left: KeybindingRule, right: KeybindingRule): boolean { return ( left.command === right.command && @@ -417,12 +412,12 @@ const KeybindingsConfigPrettyJson = KeybindingsConfigJson.pipe( }), ); -export interface KeybindingsConfigState { +interface KeybindingsConfigState { readonly keybindings: ResolvedKeybindingsConfig; readonly issues: readonly ServerConfigIssue[]; } -export interface KeybindingsChangeEvent { +interface KeybindingsChangeEvent { readonly keybindings: ResolvedKeybindingsConfig; readonly issues: readonly ServerConfigIssue[]; } @@ -469,7 +464,7 @@ function mergeWithDefaultKeybindings(custom: ResolvedKeybindingsConfig): Resolve /** * KeybindingsShape - Service API for keybinding configuration operations. */ -export interface KeybindingsShape { +interface KeybindingsShape { /** * Start the keybindings runtime and attach file watching. * diff --git a/apps/server/src/orchestration/Errors.ts b/apps/server/src/orchestration/Errors.ts index 1ea038e1d1..3f5217e588 100644 --- a/apps/server/src/orchestration/Errors.ts +++ b/apps/server/src/orchestration/Errors.ts @@ -2,30 +2,6 @@ import { SchemaIssue, Schema } from "effect"; import type { ProjectionRepositoryError } from "../persistence/Errors.ts"; -export class OrchestrationCommandJsonParseError extends Schema.TaggedErrorClass()( - "OrchestrationCommandJsonParseError", - { - detail: Schema.String, - cause: Schema.optional(Schema.Defect), - }, -) { - override get message(): string { - return `Invalid orchestration command JSON: ${this.detail}`; - } -} - -export class OrchestrationCommandDecodeError extends Schema.TaggedErrorClass()( - "OrchestrationCommandDecodeError", - { - issue: Schema.String, - cause: Schema.optional(Schema.Defect), - }, -) { - override get message(): string { - return `Invalid orchestration command payload: ${this.issue}`; - } -} - export class OrchestrationCommandInvariantError extends Schema.TaggedErrorClass()( "OrchestrationCommandInvariantError", { @@ -84,19 +60,6 @@ export type OrchestrationDispatchError = | OrchestrationCommandPreviouslyRejectedError | OrchestrationProjectorDecodeError | OrchestrationListenerCallbackError; - -export type OrchestrationEngineError = - | OrchestrationDispatchError - | OrchestrationCommandJsonParseError - | OrchestrationCommandDecodeError; - -export function toOrchestrationCommandDecodeError(error: Schema.SchemaError) { - return new OrchestrationCommandDecodeError({ - issue: SchemaIssue.makeFormatterDefault()(error.issue), - cause: error, - }); -} - export function toProjectorDecodeError(eventType: string) { return (error: Schema.SchemaError): OrchestrationProjectorDecodeError => new OrchestrationProjectorDecodeError({ @@ -105,19 +68,3 @@ export function toProjectorDecodeError(eventType: string) { cause: error, }); } - -export function toOrchestrationJsonParseError(cause: unknown) { - return new OrchestrationCommandJsonParseError({ - detail: `Failed to parse orchestration command JSON`, - cause, - }); -} - -export function toListenerCallbackError(listener: "read-model" | "domain-event") { - return (cause: unknown): OrchestrationListenerCallbackError => - new OrchestrationListenerCallbackError({ - listener, - detail: `Failed to invoke orchestration ${listener} listener`, - cause, - }); -} diff --git a/apps/server/src/orchestration/Schemas.ts b/apps/server/src/orchestration/Schemas.ts index f7ebf69344..24d9625e39 100644 --- a/apps/server/src/orchestration/Schemas.ts +++ b/apps/server/src/orchestration/Schemas.ts @@ -15,11 +15,6 @@ import { ThreadTurnDiffCompletedPayload as ContractsThreadTurnDiffCompletedPayloadSchema, ThreadRevertedPayload as ContractsThreadRevertedPayloadSchema, ThreadActivityAppendedPayload as ContractsThreadActivityAppendedPayloadSchema, - ThreadTurnStartRequestedPayload as ContractsThreadTurnStartRequestedPayloadSchema, - ThreadTurnInterruptRequestedPayload as ContractsThreadTurnInterruptRequestedPayloadSchema, - ThreadApprovalResponseRequestedPayload as ContractsThreadApprovalResponseRequestedPayloadSchema, - ThreadCheckpointRevertRequestedPayload as ContractsThreadCheckpointRevertRequestedPayloadSchema, - ThreadSessionStopRequestedPayload as ContractsThreadSessionStopRequestedPayloadSchema, } from "@t3tools/contracts"; // Server-internal alias surface, backed by contract schemas as the source of truth. @@ -41,12 +36,3 @@ export const ThreadSessionSetPayload = ContractsThreadSessionSetPayloadSchema; export const ThreadTurnDiffCompletedPayload = ContractsThreadTurnDiffCompletedPayloadSchema; export const ThreadRevertedPayload = ContractsThreadRevertedPayloadSchema; export const ThreadActivityAppendedPayload = ContractsThreadActivityAppendedPayloadSchema; - -export const ThreadTurnStartRequestedPayload = ContractsThreadTurnStartRequestedPayloadSchema; -export const ThreadTurnInterruptRequestedPayload = - ContractsThreadTurnInterruptRequestedPayloadSchema; -export const ThreadApprovalResponseRequestedPayload = - ContractsThreadApprovalResponseRequestedPayloadSchema; -export const ThreadCheckpointRevertRequestedPayload = - ContractsThreadCheckpointRevertRequestedPayloadSchema; -export const ThreadSessionStopRequestedPayload = ContractsThreadSessionStopRequestedPayloadSchema; diff --git a/apps/server/src/orchestration/commandInvariants.ts b/apps/server/src/orchestration/commandInvariants.ts index 009fdb190e..9bff8db0de 100644 --- a/apps/server/src/orchestration/commandInvariants.ts +++ b/apps/server/src/orchestration/commandInvariants.ts @@ -24,7 +24,7 @@ export function findThreadById( return readModel.threads.find((thread) => thread.id === threadId); } -export function findProjectById( +function findProjectById( readModel: OrchestrationReadModel, projectId: ProjectId, ): OrchestrationProject | undefined { diff --git a/apps/server/src/os-jank.ts b/apps/server/src/os-jank.ts index c3629e8fde..99c59d5090 100644 --- a/apps/server/src/os-jank.ts +++ b/apps/server/src/os-jank.ts @@ -26,7 +26,7 @@ export function fixPath( } } -export const expandHomePath = Effect.fn(function* (input: string) { +const expandHomePath = Effect.fn(function* (input: string) { const { join } = yield* Path.Path; if (input === "~") { return OS.homedir(); diff --git a/apps/server/src/persistence/Errors.ts b/apps/server/src/persistence/Errors.ts index cb1cb2f3f8..884d79ffd8 100644 --- a/apps/server/src/persistence/Errors.ts +++ b/apps/server/src/persistence/Errors.ts @@ -47,55 +47,10 @@ export function toPersistenceDecodeError(operation: string) { cause: error, }); } - -export function toPersistenceDecodeCauseError(operation: string) { - return (cause: unknown): PersistenceDecodeError => - new PersistenceDecodeError({ - operation, - issue: `Failed to execute ${operation}`, - cause, - }); -} - export const isPersistenceError = (u: unknown) => Schema.is(PersistenceSqlError)(u) || Schema.is(PersistenceDecodeError)(u); -// =============================== -// Provider Session Repository Errors -// =============================== - -export class ProviderSessionRepositoryValidationError extends Schema.TaggedErrorClass()( - "ProviderSessionRepositoryValidationError", - { - operation: Schema.String, - issue: Schema.String, - cause: Schema.optional(Schema.Defect), - }, -) { - override get message(): string { - return `Provider session repository validation failed in ${this.operation}: ${this.issue}`; - } -} - -export class ProviderSessionRepositoryPersistenceError extends Schema.TaggedErrorClass()( - "ProviderSessionRepositoryPersistenceError", - { - operation: Schema.String, - detail: Schema.String, - cause: Schema.optional(Schema.Defect), - }, -) { - override get message(): string { - return `Provider session repository persistence error in ${this.operation}: ${this.detail}`; - } -} - export type OrchestrationEventStoreError = PersistenceSqlError | PersistenceDecodeError; - -export type ProviderSessionRepositoryError = - | ProviderSessionRepositoryValidationError - | ProviderSessionRepositoryPersistenceError; - export type OrchestrationCommandReceiptRepositoryError = | PersistenceSqlError | PersistenceDecodeError; diff --git a/apps/server/src/persistence/Migrations.ts b/apps/server/src/persistence/Migrations.ts index a03c3c2d18..631c766b46 100644 --- a/apps/server/src/persistence/Migrations.ts +++ b/apps/server/src/persistence/Migrations.ts @@ -9,7 +9,6 @@ */ import * as Migrator from "effect/unstable/sql/Migrator"; -import * as Layer from "effect/Layer"; import * as Effect from "effect/Effect"; // Import all migrations statically @@ -43,7 +42,7 @@ import Migration0019 from "./Migrations/019_ProjectionSnapshotLookupIndexes.ts"; * Uses Migrator.fromRecord which parses the key format and * returns migrations sorted by ID. */ -export const migrationEntries = [ +const migrationEntries = [ [1, "OrchestrationEvents", Migration0001], [2, "OrchestrationCommandReceipts", Migration0002], [3, "CheckpointDiffBlobs", Migration0003], @@ -65,7 +64,7 @@ export const migrationEntries = [ [19, "ProjectionSnapshotLookupIndexes", Migration0019], ] as const; -export const makeMigrationLoader = (throughId?: number) => +const makeMigrationLoader = (throughId?: number) => Migrator.fromRecord( Object.fromEntries( migrationEntries @@ -80,7 +79,7 @@ export const makeMigrationLoader = (throughId?: number) => */ const run = Migrator.make({}); -export interface RunMigrationsOptions { +interface RunMigrationsOptions { readonly toMigrationInclusive?: number | undefined; } @@ -108,22 +107,3 @@ export const runMigrations = Effect.fn("runMigrations")(function* ({ ); return executedMigrations; }); - -/** - * Layer that runs migrations when the layer is built. - * - * Use this to ensure migrations run before your application starts. - * Migrations are run automatically - no separate script is needed. - * - * @example - * ```typescript - * import { MigrationsLive } from "@acme/db/Migrations" - * import * as SqliteClient from "@acme/db/SqliteClient" - * - * // Migrations run automatically when SqliteClient is provided - * const AppLayer = MigrationsLive.pipe( - * Layer.provideMerge(SqliteClient.layer({ filename: "database.sqlite" })) - * ) - * ``` - */ -export const MigrationsLive = Layer.effectDiscard(runMigrations()); diff --git a/apps/server/src/persistence/Services/ProjectionTurns.ts b/apps/server/src/persistence/Services/ProjectionTurns.ts index 95dab450bf..17593c170a 100644 --- a/apps/server/src/persistence/Services/ProjectionTurns.ts +++ b/apps/server/src/persistence/Services/ProjectionTurns.ts @@ -21,7 +21,6 @@ import { Option, Schema, ServiceMap } from "effect"; import type { Effect } from "effect"; import type { ProjectionRepositoryError } from "../Errors.ts"; - export const ProjectionTurnState = Schema.Literals([ "pending", "running", diff --git a/apps/server/src/processRunner.ts b/apps/server/src/processRunner.ts index 5402612887..cd9e2a498c 100644 --- a/apps/server/src/processRunner.ts +++ b/apps/server/src/processRunner.ts @@ -1,6 +1,6 @@ import { type ChildProcess as ChildProcessHandle, spawn, spawnSync } from "node:child_process"; -export interface ProcessRunOptions { +interface ProcessRunOptions { cwd?: string | undefined; timeoutMs?: number | undefined; env?: NodeJS.ProcessEnv | undefined; diff --git a/apps/server/src/project/Layers/ProjectFaviconResolver.ts b/apps/server/src/project/Layers/ProjectFaviconResolver.ts index 3004a7a45c..991f1ea6fb 100644 --- a/apps/server/src/project/Layers/ProjectFaviconResolver.ts +++ b/apps/server/src/project/Layers/ProjectFaviconResolver.ts @@ -54,7 +54,7 @@ function extractIconHref(source: string): string | null { return null; } -export const makeProjectFaviconResolver = Effect.gen(function* () { +const makeProjectFaviconResolver = Effect.gen(function* () { const fileSystem = yield* FileSystem.FileSystem; const path = yield* Path.Path; diff --git a/apps/server/src/provider/Layers/ClaudeAdapter.ts b/apps/server/src/provider/Layers/ClaudeAdapter.ts index d99e2ad203..2904721120 100644 --- a/apps/server/src/provider/Layers/ClaudeAdapter.ts +++ b/apps/server/src/provider/Layers/ClaudeAdapter.ts @@ -3057,9 +3057,6 @@ const makeClaudeAdapter = Effect.fn("makeClaudeAdapter")(function* ( streamEvents: Stream.fromQueue(runtimeEventQueue), } satisfies ClaudeAdapterShape; }); - -export const ClaudeAdapterLive = Layer.effect(ClaudeAdapter, makeClaudeAdapter()); - export function makeClaudeAdapterLive(options?: ClaudeAdapterLiveOptions) { return Layer.effect(ClaudeAdapter, makeClaudeAdapter(options)); } diff --git a/apps/server/src/provider/Layers/ClaudeProvider.ts b/apps/server/src/provider/Layers/ClaudeProvider.ts index 761b795fe5..986273cc56 100644 --- a/apps/server/src/provider/Layers/ClaudeProvider.ts +++ b/apps/server/src/provider/Layers/ClaudeProvider.ts @@ -352,7 +352,7 @@ function claudeAuthMetadata(input: { * - Other tiers (Pro, free, unknown): 200k context stays the default; * 1M remains available as a manual option so users can still enable it. */ -export function adjustModelsForSubscription( +function adjustModelsForSubscription( baseModels: ReadonlyArray, subscriptionType: string | undefined, ): ReadonlyArray { diff --git a/apps/server/src/provider/Layers/CodexAdapter.ts b/apps/server/src/provider/Layers/CodexAdapter.ts index cee6bca6ed..d3ad35df88 100644 --- a/apps/server/src/provider/Layers/CodexAdapter.ts +++ b/apps/server/src/provider/Layers/CodexAdapter.ts @@ -44,7 +44,7 @@ import { type EventNdjsonLogger, makeEventNdjsonLogger } from "./EventNdjsonLogg const PROVIDER = "codex" as const; -export interface CodexAdapterLiveOptions { +interface CodexAdapterLiveOptions { readonly manager?: CodexAppServerManager; readonly makeManager?: (services?: ServiceMap.ServiceMap) => CodexAppServerManager; readonly nativeEventLogPath?: string; @@ -1634,9 +1634,6 @@ const makeCodexAdapter = Effect.fn("makeCodexAdapter")(function* ( streamEvents: Stream.fromQueue(runtimeEventQueue), } satisfies CodexAdapterShape; }); - -export const CodexAdapterLive = Layer.effect(CodexAdapter, makeCodexAdapter()); - export function makeCodexAdapterLive(options?: CodexAdapterLiveOptions) { return Layer.effect(CodexAdapter, makeCodexAdapter(options)); } diff --git a/apps/server/src/provider/Layers/EventNdjsonLogger.ts b/apps/server/src/provider/Layers/EventNdjsonLogger.ts index a4fd6f235d..831f9a63da 100644 --- a/apps/server/src/provider/Layers/EventNdjsonLogger.ts +++ b/apps/server/src/provider/Layers/EventNdjsonLogger.ts @@ -20,7 +20,7 @@ const DEFAULT_BATCH_WINDOW_MS = 200; const GLOBAL_THREAD_SEGMENT = "_global"; const LOG_SCOPE = "provider-observability"; -export type EventNdjsonStream = "native" | "canonical" | "orchestration"; +type EventNdjsonStream = "native" | "canonical" | "orchestration"; export interface EventNdjsonLogger { readonly filePath: string; @@ -28,7 +28,7 @@ export interface EventNdjsonLogger { close: () => Effect.Effect; } -export interface EventNdjsonLoggerOptions { +interface EventNdjsonLoggerOptions { readonly stream: EventNdjsonStream; readonly maxBytes?: number; readonly maxFiles?: number; diff --git a/apps/server/src/provider/Layers/ProviderAdapterRegistry.ts b/apps/server/src/provider/Layers/ProviderAdapterRegistry.ts index b6c987c64c..aff945fa9a 100644 --- a/apps/server/src/provider/Layers/ProviderAdapterRegistry.ts +++ b/apps/server/src/provider/Layers/ProviderAdapterRegistry.ts @@ -18,7 +18,7 @@ import { import { ClaudeAdapter } from "../Services/ClaudeAdapter.ts"; import { CodexAdapter } from "../Services/CodexAdapter.ts"; -export interface ProviderAdapterRegistryLiveOptions { +interface ProviderAdapterRegistryLiveOptions { readonly adapters?: ReadonlyArray>; } diff --git a/apps/server/src/provider/Layers/ProviderService.ts b/apps/server/src/provider/Layers/ProviderService.ts index da2c293fac..05be1a5bc2 100644 --- a/apps/server/src/provider/Layers/ProviderService.ts +++ b/apps/server/src/provider/Layers/ProviderService.ts @@ -45,7 +45,7 @@ import { type EventNdjsonLogger, makeEventNdjsonLogger } from "./EventNdjsonLogg import { AnalyticsService } from "../../telemetry/Services/AnalyticsService.ts"; import { ServerSettingsService } from "../../serverSettings.ts"; -export interface ProviderServiceLiveOptions { +interface ProviderServiceLiveOptions { readonly canonicalEventLogPath?: string; readonly canonicalEventLogger?: EventNdjsonLogger; } @@ -756,9 +756,6 @@ const makeProviderService = Effect.fn("makeProviderService")(function* ( }, } satisfies ProviderServiceShape; }); - -export const ProviderServiceLive = Layer.effect(ProviderService, makeProviderService()); - export function makeProviderServiceLive(options?: ProviderServiceLiveOptions) { return Layer.effect(ProviderService, makeProviderService(options)); } diff --git a/apps/server/src/provider/Layers/ProviderSessionDirectory.ts b/apps/server/src/provider/Layers/ProviderSessionDirectory.ts index 961c63d696..48db702a9a 100644 --- a/apps/server/src/provider/Layers/ProviderSessionDirectory.ts +++ b/apps/server/src/provider/Layers/ProviderSessionDirectory.ts @@ -158,7 +158,3 @@ export const ProviderSessionDirectoryLive = Layer.effect( ProviderSessionDirectory, makeProviderSessionDirectory, ); - -export function makeProviderSessionDirectoryLive() { - return Layer.effect(ProviderSessionDirectory, makeProviderSessionDirectory); -} diff --git a/apps/server/src/provider/codexAccount.ts b/apps/server/src/provider/codexAccount.ts index 1db00250f6..323c0be31a 100644 --- a/apps/server/src/provider/codexAccount.ts +++ b/apps/server/src/provider/codexAccount.ts @@ -17,8 +17,8 @@ export interface CodexAccountSnapshot { readonly sparkEnabled: boolean; } -export const CODEX_DEFAULT_MODEL = "gpt-5.3-codex"; -export const CODEX_SPARK_MODEL = "gpt-5.3-codex-spark"; +const CODEX_DEFAULT_MODEL = "gpt-5.3-codex"; +const CODEX_SPARK_MODEL = "gpt-5.3-codex-spark"; const CODEX_SPARK_ENABLED_PLAN_TYPES = new Set(["pro"]); function asObject(value: unknown): Record | undefined { diff --git a/apps/server/src/provider/codexCliVersion.ts b/apps/server/src/provider/codexCliVersion.ts index 544020016c..a3fb1b9e7e 100644 --- a/apps/server/src/provider/codexCliVersion.ts +++ b/apps/server/src/provider/codexCliVersion.ts @@ -1,6 +1,6 @@ const CODEX_VERSION_PATTERN = /\bv?(\d+\.\d+(?:\.\d+)?(?:-[0-9A-Za-z.-]+)?)\b/; -export const MINIMUM_CODEX_CLI_VERSION = "0.37.0"; +const MINIMUM_CODEX_CLI_VERSION = "0.37.0"; interface ParsedSemver { readonly major: number; @@ -71,7 +71,7 @@ function comparePrereleaseIdentifier(left: string, right: string): number { return left.localeCompare(right); } -export function compareCodexCliVersions(left: string, right: string): number { +function compareCodexCliVersions(left: string, right: string): number { const parsedLeft = parseSemver(left); const parsedRight = parseSemver(right); if (!parsedLeft || !parsedRight) { diff --git a/apps/server/src/provider/providerSnapshot.ts b/apps/server/src/provider/providerSnapshot.ts index e1243c4bd0..a65f6814e1 100644 --- a/apps/server/src/provider/providerSnapshot.ts +++ b/apps/server/src/provider/providerSnapshot.ts @@ -17,7 +17,7 @@ export interface CommandResult { readonly code: number; } -export interface ProviderProbeResult { +interface ProviderProbeResult { readonly installed: boolean; readonly version: string | null; readonly status: Exclude; @@ -25,7 +25,7 @@ export interface ProviderProbeResult { readonly message?: string; } -export function nonEmptyTrimmed(value: string | undefined): string | undefined { +function nonEmptyTrimmed(value: string | undefined): string | undefined { if (!value) return undefined; const trimmed = value.trim(); return trimmed.length > 0 ? trimmed : undefined; @@ -144,9 +144,7 @@ export function buildServerProvider(input: { }; } -export const collectStreamAsString = ( - stream: Stream.Stream, -): Effect.Effect => +const collectStreamAsString = (stream: Stream.Stream): Effect.Effect => stream.pipe( Stream.decodeText(), Stream.runFold( diff --git a/apps/server/src/workspace/Layers/WorkspaceEntries.ts b/apps/server/src/workspace/Layers/WorkspaceEntries.ts index 12af8601ca..0b23f32145 100644 --- a/apps/server/src/workspace/Layers/WorkspaceEntries.ts +++ b/apps/server/src/workspace/Layers/WorkspaceEntries.ts @@ -217,7 +217,7 @@ function directoryAncestorsOf(relativePath: string): string[] { const processErrorDetail = (cause: unknown): string => cause instanceof Error ? cause.message : String(cause); -export const makeWorkspaceEntries = Effect.gen(function* () { +const makeWorkspaceEntries = Effect.gen(function* () { const path = yield* Path.Path; const gitOption = yield* Effect.serviceOption(GitCore); const workspacePaths = yield* WorkspacePaths; diff --git a/apps/server/src/workspace/Layers/WorkspaceFileSystem.ts b/apps/server/src/workspace/Layers/WorkspaceFileSystem.ts index 84e5d9c6d1..d14c44f812 100644 --- a/apps/server/src/workspace/Layers/WorkspaceFileSystem.ts +++ b/apps/server/src/workspace/Layers/WorkspaceFileSystem.ts @@ -8,7 +8,7 @@ import { import { WorkspaceEntries } from "../Services/WorkspaceEntries.ts"; import { WorkspacePaths } from "../Services/WorkspacePaths.ts"; -export const makeWorkspaceFileSystem = Effect.gen(function* () { +const makeWorkspaceFileSystem = Effect.gen(function* () { const fileSystem = yield* FileSystem.FileSystem; const path = yield* Path.Path; const workspacePaths = yield* WorkspacePaths; diff --git a/apps/server/src/workspace/Layers/WorkspacePaths.ts b/apps/server/src/workspace/Layers/WorkspacePaths.ts index fa7a90cf07..14b77d0e03 100644 --- a/apps/server/src/workspace/Layers/WorkspacePaths.ts +++ b/apps/server/src/workspace/Layers/WorkspacePaths.ts @@ -23,7 +23,7 @@ function expandHomePath(input: string, path: Path.Path): string { return input; } -export const makeWorkspacePaths = Effect.gen(function* () { +const makeWorkspacePaths = Effect.gen(function* () { const fileSystem = yield* FileSystem.FileSystem; const path = yield* Path.Path; diff --git a/apps/server/src/workspace/Services/WorkspacePaths.ts b/apps/server/src/workspace/Services/WorkspacePaths.ts index ad6d9cd3e5..7b85ccc358 100644 --- a/apps/server/src/workspace/Services/WorkspacePaths.ts +++ b/apps/server/src/workspace/Services/WorkspacePaths.ts @@ -43,16 +43,7 @@ export class WorkspacePathOutsideRootError extends Schema.TaggedErrorClass & { messages?: Pick[]; }; -export type ThreadTraversalDirection = "previous" | "next"; +type ThreadTraversalDirection = "previous" | "next"; -export interface ThreadStatusPill { +interface ThreadStatusPill { label: | "Working" | "Connecting" @@ -54,7 +54,7 @@ type ThreadStatusInput = Pick< lastVisitedAt?: string | undefined; }; -export interface ThreadJumpHintVisibilityController { +interface ThreadJumpHintVisibilityController { sync: (shouldShow: boolean) => void; dispose: () => void; } diff --git a/apps/web/src/components/chat/ComposerPendingTerminalContexts.tsx b/apps/web/src/components/chat/ComposerPendingTerminalContexts.tsx index 37c05eab2d..e2b3109f17 100644 --- a/apps/web/src/components/chat/ComposerPendingTerminalContexts.tsx +++ b/apps/web/src/components/chat/ComposerPendingTerminalContexts.tsx @@ -1,4 +1,3 @@ -import { cn } from "~/lib/utils"; import { type TerminalContextDraft, formatTerminalContextLabel, @@ -6,11 +5,6 @@ import { } from "~/lib/terminalContext"; import { TerminalContextInlineChip } from "./TerminalContextInlineChip"; -interface ComposerPendingTerminalContextsProps { - contexts: ReadonlyArray; - className?: string; -} - interface ComposerPendingTerminalContextChipProps { context: TerminalContextDraft; } @@ -26,19 +20,3 @@ export function ComposerPendingTerminalContextChip({ return ; } - -export function ComposerPendingTerminalContexts(props: ComposerPendingTerminalContextsProps) { - const { contexts, className } = props; - - if (contexts.length === 0) { - return null; - } - - return ( -
- {contexts.map((context) => ( - - ))} -
- ); -} diff --git a/apps/web/src/components/chat/MessagesTimeline.logic.ts b/apps/web/src/components/chat/MessagesTimeline.logic.ts index 16b02ea9b7..f326701b52 100644 --- a/apps/web/src/components/chat/MessagesTimeline.logic.ts +++ b/apps/web/src/components/chat/MessagesTimeline.logic.ts @@ -6,7 +6,7 @@ import { estimateTimelineMessageHeight } from "../timelineHeight"; export const MAX_VISIBLE_WORK_LOG_ENTRIES = 6; -export interface TimelineDurationMessage { +interface TimelineDurationMessage { id: string; role: "user" | "assistant" | "system"; createdAt: string; diff --git a/apps/web/src/components/chat/TraitsPicker.tsx b/apps/web/src/components/chat/TraitsPicker.tsx index 061594ad53..dfcd2572db 100644 --- a/apps/web/src/components/chat/TraitsPicker.tsx +++ b/apps/web/src/components/chat/TraitsPicker.tsx @@ -138,7 +138,7 @@ function getSelectedTraits( }; } -export interface TraitsMenuContentProps { +interface TraitsMenuContentProps { provider: ProviderKind; models: ReadonlyArray; model: string | null | undefined; diff --git a/apps/web/src/components/chat/composerProviderRegistry.tsx b/apps/web/src/components/chat/composerProviderRegistry.tsx index 3307442db2..83e454fcdd 100644 --- a/apps/web/src/components/chat/composerProviderRegistry.tsx +++ b/apps/web/src/components/chat/composerProviderRegistry.tsx @@ -13,7 +13,7 @@ import { normalizeCodexModelOptionsWithCapabilities, } from "@t3tools/shared/model"; -export type ComposerProviderStateInput = { +type ComposerProviderStateInput = { provider: ProviderKind; model: string; models: ReadonlyArray; @@ -21,7 +21,7 @@ export type ComposerProviderStateInput = { modelOptions: ProviderModelOptions | null | undefined; }; -export type ComposerProviderState = { +type ComposerProviderState = { provider: ProviderKind; promptEffort: string | null; modelOptionsForDispatch: ProviderModelOptions[ProviderKind] | undefined; diff --git a/apps/web/src/components/composerInlineChip.ts b/apps/web/src/components/composerInlineChip.ts index 273f4204e6..1932cc4e20 100644 --- a/apps/web/src/components/composerInlineChip.ts +++ b/apps/web/src/components/composerInlineChip.ts @@ -4,6 +4,3 @@ export const COMPOSER_INLINE_CHIP_CLASS_NAME = export const COMPOSER_INLINE_CHIP_ICON_CLASS_NAME = "size-3.5 shrink-0 opacity-85"; export const COMPOSER_INLINE_CHIP_LABEL_CLASS_NAME = "truncate select-none leading-tight"; - -export const COMPOSER_INLINE_CHIP_DISMISS_BUTTON_CLASS_NAME = - "ml-0.5 inline-flex size-3.5 shrink-0 cursor-pointer items-center justify-center rounded-sm text-muted-foreground/72 transition-colors hover:bg-foreground/6 hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"; diff --git a/apps/web/src/components/desktopUpdate.logic.ts b/apps/web/src/components/desktopUpdate.logic.ts index 38983c810b..c8ea3b15a3 100644 --- a/apps/web/src/components/desktopUpdate.logic.ts +++ b/apps/web/src/components/desktopUpdate.logic.ts @@ -1,6 +1,6 @@ import type { DesktopUpdateActionResult, DesktopUpdateState } from "@t3tools/contracts"; -export type DesktopUpdateButtonAction = "download" | "install" | "none"; +type DesktopUpdateButtonAction = "download" | "install" | "none"; export function resolveDesktopUpdateButtonAction( state: DesktopUpdateState, @@ -93,12 +93,6 @@ export function getDesktopUpdateActionError(result: DesktopUpdateActionResult): export function shouldToastDesktopUpdateActionResult(result: DesktopUpdateActionResult): boolean { return getDesktopUpdateActionError(result) !== null; } - -export function shouldHighlightDesktopUpdateError(state: DesktopUpdateState | null): boolean { - if (!state || state.status !== "error") return false; - return state.errorContext === "download" || state.errorContext === "install"; -} - export function canCheckForUpdate(state: DesktopUpdateState | null): boolean { if (!state || !state.enabled) return false; return ( diff --git a/apps/web/src/components/settings/SettingsSidebarNav.tsx b/apps/web/src/components/settings/SettingsSidebarNav.tsx index 6ba698c91f..6a15e7f834 100644 --- a/apps/web/src/components/settings/SettingsSidebarNav.tsx +++ b/apps/web/src/components/settings/SettingsSidebarNav.tsx @@ -12,9 +12,9 @@ import { SidebarSeparator, } from "../ui/sidebar"; -export type SettingsSectionPath = "/settings/general" | "/settings/archived"; +type SettingsSectionPath = "/settings/general" | "/settings/archived"; -export const SETTINGS_NAV_ITEMS: ReadonlyArray<{ +const SETTINGS_NAV_ITEMS: ReadonlyArray<{ label: string; to: SettingsSectionPath; icon: ComponentType<{ className?: string }>; diff --git a/apps/web/src/components/ui/alert-dialog.tsx b/apps/web/src/components/ui/alert-dialog.tsx index 5c65f261f5..77db341488 100644 --- a/apps/web/src/components/ui/alert-dialog.tsx +++ b/apps/web/src/components/ui/alert-dialog.tsx @@ -3,17 +3,9 @@ import { AlertDialog as AlertDialogPrimitive } from "@base-ui/react/alert-dialog"; import { cn } from "~/lib/utils"; - -const AlertDialogCreateHandle = AlertDialogPrimitive.createHandle; - const AlertDialog = AlertDialogPrimitive.Root; const AlertDialogPortal = AlertDialogPrimitive.Portal; - -function AlertDialogTrigger(props: AlertDialogPrimitive.Trigger.Props) { - return ; -} - function AlertDialogBackdrop({ className, ...props }: AlertDialogPrimitive.Backdrop.Props) { return ( & { - showTrigger?: boolean; - showClear?: boolean; - startAddon?: React.ReactNode; - size?: "sm" | "default" | "lg" | number; - ref?: React.Ref; -}) { - const sizeValue = (size ?? "default") as "sm" | "default" | "lg" | number; - - return ( -
- {startAddon && ( - - )} - } - {...props} - /> - {showTrigger && ( - - - - - - )} - {showClear && ( - - - - )} -
- ); -} - -function AutocompletePopup({ - className, - children, - side = "bottom", - sideOffset = 4, - alignOffset, - align = "start", - anchor, - ...props -}: AutocompletePrimitive.Popup.Props & { - align?: AutocompletePrimitive.Positioner.Props["align"]; - sideOffset?: AutocompletePrimitive.Positioner.Props["sideOffset"]; - alignOffset?: AutocompletePrimitive.Positioner.Props["alignOffset"]; - side?: AutocompletePrimitive.Positioner.Props["side"]; - anchor?: AutocompletePrimitive.Positioner.Props["anchor"]; -}) { - return ( - - - - - {children} - - - - - ); -} - function AutocompleteItem({ className, children, ...props }: AutocompletePrimitive.Item.Props) { return ( - ); -} - -function AutocompleteGroup({ className, ...props }: AutocompletePrimitive.Group.Props) { - return ( - - ); -} - -function AutocompleteGroupLabel({ className, ...props }: AutocompletePrimitive.GroupLabel.Props) { - return ( - - ); -} - -function AutocompleteEmpty({ className, ...props }: AutocompletePrimitive.Empty.Props) { - return ( - - ); -} - -function AutocompleteRow({ className, ...props }: AutocompletePrimitive.Row.Props) { - return ( - - ); -} - -function AutocompleteValue({ ...props }: AutocompletePrimitive.Value.Props) { - return ; -} - function AutocompleteList({ className, ...props }: AutocompletePrimitive.List.Props) { return ( @@ -201,71 +34,4 @@ function AutocompleteList({ className, ...props }: AutocompletePrimitive.List.Pr ); } -function AutocompleteClear({ className, ...props }: AutocompletePrimitive.Clear.Props) { - return ( - - - - ); -} - -function AutocompleteStatus({ className, ...props }: AutocompletePrimitive.Status.Props) { - return ( - - ); -} - -function AutocompleteCollection({ ...props }: AutocompletePrimitive.Collection.Props) { - return ; -} - -function AutocompleteTrigger({ - className, - children, - ...props -}: AutocompletePrimitive.Trigger.Props) { - return ( - - {children} - - ); -} - -const useAutocompleteFilter = AutocompletePrimitive.useFilter; - -export { - Autocomplete, - AutocompleteInput, - AutocompleteTrigger, - AutocompletePopup, - AutocompleteItem, - AutocompleteSeparator, - AutocompleteGroup, - AutocompleteGroupLabel, - AutocompleteEmpty, - AutocompleteValue, - AutocompleteList, - AutocompleteClear, - AutocompleteStatus, - AutocompleteRow, - AutocompleteCollection, - useAutocompleteFilter, -}; +export { Autocomplete, AutocompleteItem, AutocompleteList }; diff --git a/apps/web/src/components/ui/badge.tsx b/apps/web/src/components/ui/badge.tsx index e06d9b9a0d..36c36b71ca 100644 --- a/apps/web/src/components/ui/badge.tsx +++ b/apps/web/src/components/ui/badge.tsx @@ -53,4 +53,4 @@ function Badge({ className, variant, size, render, ...props }: BadgeProps) { }); } -export { Badge, badgeVariants }; +export { Badge }; diff --git a/apps/web/src/components/ui/card.tsx b/apps/web/src/components/ui/card.tsx deleted file mode 100644 index f1428d13d9..0000000000 --- a/apps/web/src/components/ui/card.tsx +++ /dev/null @@ -1,196 +0,0 @@ -"use client"; - -import { mergeProps } from "@base-ui/react/merge-props"; -import { useRender } from "@base-ui/react/use-render"; - -import { cn } from "~/lib/utils"; - -function Card({ className, render, ...props }: useRender.ComponentProps<"div">) { - const defaultProps = { - className: cn( - "relative flex flex-col rounded-2xl border bg-card not-dark:bg-clip-padding text-card-foreground shadow-xs/5 before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-2xl)-1px)] before:shadow-[0_1px_--theme(--color-black/4%)] dark:before:shadow-[0_-1px_--theme(--color-white/6%)]", - className, - ), - "data-slot": "card", - }; - - return useRender({ - defaultTagName: "div", - props: mergeProps<"div">(defaultProps, props), - render, - }); -} - -function CardFrame({ className, render, ...props }: useRender.ComponentProps<"div">) { - const defaultProps = { - className: cn( - "[--clip-top:-1rem] [--clip-bottom:-1rem] *:data-[slot=card]:first:[--clip-top:1px] *:data-[slot=card]:last:[--clip-bottom:1px] flex flex-col relative rounded-2xl border bg-card before:bg-muted/72 not-dark:bg-clip-padding text-card-foreground shadow-xs/5 before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-2xl)-1px)] before:shadow-[0_1px_--theme(--color-black/4%)] dark:before:shadow-[0_-1px_--theme(--color-white/6%)] *:data-[slot=card]:-m-px *:not-last:data-[slot=card]:rounded-b-xl *:not-last:data-[slot=card]:before:rounded-b-[calc(var(--radius-xl)-1px)] *:not-first:data-[slot=card]:rounded-t-xl *:not-first:data-[slot=card]:before:rounded-t-[calc(var(--radius-xl)-1px)] *:data-[slot=card]:[clip-path:inset(var(--clip-top)_1px_var(--clip-bottom)_1px_round_calc(var(--radius-2xl)-1px))] *:data-[slot=card]:shadow-none *:data-[slot=card]:before:hidden *:data-[slot=card]:bg-clip-padding", - className, - ), - "data-slot": "card-frame", - }; - - return useRender({ - defaultTagName: "div", - props: mergeProps<"div">(defaultProps, props), - render, - }); -} - -function CardFrameHeader({ className, render, ...props }: useRender.ComponentProps<"div">) { - const defaultProps = { - className: cn("relative flex flex-col px-6 py-4", className), - "data-slot": "card-frame-header", - }; - - return useRender({ - defaultTagName: "div", - props: mergeProps<"div">(defaultProps, props), - render, - }); -} - -function CardFrameTitle({ className, render, ...props }: useRender.ComponentProps<"div">) { - const defaultProps = { - className: cn("font-semibold text-sm", className), - "data-slot": "card-frame-title", - }; - - return useRender({ - defaultTagName: "div", - props: mergeProps<"div">(defaultProps, props), - render, - }); -} - -function CardFrameDescription({ className, render, ...props }: useRender.ComponentProps<"div">) { - const defaultProps = { - className: cn("text-muted-foreground text-sm", className), - "data-slot": "card-frame-description", - }; - - return useRender({ - defaultTagName: "div", - props: mergeProps<"div">(defaultProps, props), - render, - }); -} - -function CardFrameFooter({ className, render, ...props }: useRender.ComponentProps<"div">) { - const defaultProps = { - className: cn("px-6 py-4", className), - "data-slot": "card-frame-footer", - }; - - return useRender({ - defaultTagName: "div", - props: mergeProps<"div">(defaultProps, props), - render, - }); -} - -function CardHeader({ className, render, ...props }: useRender.ComponentProps<"div">) { - const defaultProps = { - className: cn( - "grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 p-6 in-[[data-slot=card]:has(>[data-slot=card-panel])]:pb-4 has-data-[slot=card-action]:grid-cols-[1fr_auto]", - className, - ), - "data-slot": "card-header", - }; - - return useRender({ - defaultTagName: "div", - props: mergeProps<"div">(defaultProps, props), - render, - }); -} - -function CardTitle({ className, render, ...props }: useRender.ComponentProps<"div">) { - const defaultProps = { - className: cn("font-semibold text-lg leading-none", className), - "data-slot": "card-title", - }; - - return useRender({ - defaultTagName: "div", - props: mergeProps<"div">(defaultProps, props), - render, - }); -} - -function CardDescription({ className, render, ...props }: useRender.ComponentProps<"div">) { - const defaultProps = { - className: cn("text-muted-foreground text-sm", className), - "data-slot": "card-description", - }; - - return useRender({ - defaultTagName: "div", - props: mergeProps<"div">(defaultProps, props), - render, - }); -} - -function CardAction({ className, render, ...props }: useRender.ComponentProps<"div">) { - const defaultProps = { - className: cn( - "col-start-2 row-span-2 row-start-1 self-start justify-self-end inline-flex", - className, - ), - "data-slot": "card-action", - }; - - return useRender({ - defaultTagName: "div", - props: mergeProps<"div">(defaultProps, props), - render, - }); -} - -function CardPanel({ className, render, ...props }: useRender.ComponentProps<"div">) { - const defaultProps = { - className: cn( - "flex-1 p-6 in-[[data-slot=card]:has(>[data-slot=card-header]:not(.border-b))]:pt-0 in-[[data-slot=card]:has(>[data-slot=card-footer]:not(.border-t))]:pb-0", - className, - ), - "data-slot": "card-panel", - }; - - return useRender({ - defaultTagName: "div", - props: mergeProps<"div">(defaultProps, props), - render, - }); -} - -function CardFooter({ className, render, ...props }: useRender.ComponentProps<"div">) { - const defaultProps = { - className: cn( - "flex items-center p-6 in-[[data-slot=card]:has(>[data-slot=card-panel])]:pt-4", - className, - ), - "data-slot": "card-footer", - }; - - return useRender({ - defaultTagName: "div", - props: mergeProps<"div">(defaultProps, props), - render, - }); -} - -export { - Card, - CardFrame, - CardFrameHeader, - CardFrameTitle, - CardFrameDescription, - CardFrameFooter, - CardAction, - CardDescription, - CardFooter, - CardHeader, - CardPanel, - CardPanel as CardContent, - CardTitle, -}; diff --git a/apps/web/src/components/ui/collapsible.tsx b/apps/web/src/components/ui/collapsible.tsx index e5f3db03c3..72e2ca622e 100644 --- a/apps/web/src/components/ui/collapsible.tsx +++ b/apps/web/src/components/ui/collapsible.tsx @@ -7,17 +7,6 @@ import { cn } from "~/lib/utils"; function Collapsible({ ...props }: CollapsiblePrimitive.Root.Props) { return ; } - -function CollapsibleTrigger({ className, ...props }: CollapsiblePrimitive.Trigger.Props) { - return ( - - ); -} - function CollapsiblePanel({ className, ...props }: CollapsiblePrimitive.Panel.Props) { return ( ( ); } - -function ComboboxChipsInput({ - className, - size, - ...props -}: Omit & { - size?: "sm" | "default" | "lg" | number; - ref?: React.Ref; -}) { - const sizeValue = (size ?? "default") as "sm" | "default" | "lg" | number; - - return ( - - ); -} - function ComboboxInput({ className, inputClassName, @@ -209,36 +183,6 @@ function ComboboxItem({ ); } -function ComboboxSeparator({ className, ...props }: ComboboxPrimitive.Separator.Props) { - return ( - - ); -} - -function ComboboxGroup({ className, ...props }: ComboboxPrimitive.Group.Props) { - return ( - - ); -} - -function ComboboxGroupLabel({ className, ...props }: ComboboxPrimitive.GroupLabel.Props) { - return ( - - ); -} - function ComboboxEmpty({ className, ...props }: ComboboxPrimitive.Empty.Props) { return ( ; -} - -function ComboboxValue({ ...props }: ComboboxPrimitive.Value.Props) { - return ; -} - function ComboboxList({ className, ...props }: ComboboxPrimitive.List.Props) { return ( @@ -279,103 +215,12 @@ function ComboboxClear({ className, ...props }: ComboboxPrimitive.Clear.Props) { return ; } -function ComboboxStatus({ className, ...props }: ComboboxPrimitive.Status.Props) { - return ( - - ); -} - -function ComboboxCollection(props: ComboboxPrimitive.Collection.Props) { - return ; -} - -function ComboboxChips({ - className, - children, - startAddon, - ...props -}: ComboboxPrimitive.Chips.Props & { - startAddon?: React.ReactNode; -}) { - const { chipsRef } = React.useContext(ComboboxContext); - - return ( - | null} - {...props} - > - {startAddon && ( - - )} - {children} - - ); -} - -function ComboboxChip({ children, ...props }: ComboboxPrimitive.Chip.Props) { - return ( - - {children} - - - ); -} - -function ComboboxChipRemove(props: ComboboxPrimitive.ChipRemove.Props) { - return ( - - - - ); -} - -const useComboboxFilter = ComboboxPrimitive.useFilter; - export { Combobox, - ComboboxChipsInput, ComboboxInput, ComboboxTrigger, ComboboxPopup, ComboboxItem, - ComboboxSeparator, - ComboboxGroup, - ComboboxGroupLabel, ComboboxEmpty, - ComboboxValue, ComboboxList, - ComboboxClear, - ComboboxStatus, - ComboboxRow, - ComboboxCollection, - ComboboxChips, - ComboboxChip, - useComboboxFilter, }; diff --git a/apps/web/src/components/ui/command.tsx b/apps/web/src/components/ui/command.tsx index a2bc59c092..0f7762a1fe 100644 --- a/apps/web/src/components/ui/command.tsx +++ b/apps/web/src/components/ui/command.tsx @@ -1,76 +1,8 @@ "use client"; -import { Dialog as CommandDialogPrimitive } from "@base-ui/react/dialog"; -import { SearchIcon } from "lucide-react"; import type * as React from "react"; import { cn } from "~/lib/utils"; -import { - Autocomplete, - AutocompleteCollection, - AutocompleteEmpty, - AutocompleteGroup, - AutocompleteGroupLabel, - AutocompleteInput, - AutocompleteItem, - AutocompleteList, - AutocompleteSeparator, -} from "~/components/ui/autocomplete"; - -const CommandDialog = CommandDialogPrimitive.Root; - -const CommandDialogPortal = CommandDialogPrimitive.Portal; - -const CommandCreateHandle = CommandDialogPrimitive.createHandle; - -function CommandDialogTrigger(props: CommandDialogPrimitive.Trigger.Props) { - return ; -} - -function CommandDialogBackdrop({ className, ...props }: CommandDialogPrimitive.Backdrop.Props) { - return ( - - ); -} - -function CommandDialogViewport({ className, ...props }: CommandDialogPrimitive.Viewport.Props) { - return ( - - ); -} - -function CommandDialogPopup({ className, children, ...props }: CommandDialogPrimitive.Popup.Props) { - return ( - - - - - {children} - - - - ); -} +import { Autocomplete, AutocompleteItem, AutocompleteList } from "~/components/ui/autocomplete"; function Command({ autoHighlight = "always", @@ -87,29 +19,6 @@ function Command({ /> ); } - -function CommandInput({ - className, - placeholder = undefined, - ...props -}: React.ComponentProps) { - return ( -
- } - {...props} - /> -
- ); -} - function CommandList({ className, ...props }: React.ComponentProps) { return ( ) { - return ( - - ); -} - -function CommandPanel({ className, ...props }: React.ComponentProps<"div">) { - return ( -
- ); -} - -function CommandGroup({ className, ...props }: React.ComponentProps) { - return ; -} - -function CommandGroupLabel({ - className, - ...props -}: React.ComponentProps) { - return ( - - ); -} - -function CommandCollection({ ...props }: React.ComponentProps) { - return ; -} - function CommandItem({ className, ...props }: React.ComponentProps) { return ( ); } -function CommandSeparator({ - className, - ...props -}: React.ComponentProps) { - return ( - - ); -} - -function CommandShortcut({ className, ...props }: React.ComponentProps<"kbd">) { - return ( - - ); -} - -function CommandFooter({ className, ...props }: React.ComponentProps<"div">) { - return ( -
- ); -} - -export { - CommandCreateHandle, - Command, - CommandCollection, - CommandDialog, - CommandDialogPopup, - CommandDialogTrigger, - CommandEmpty, - CommandFooter, - CommandGroup, - CommandGroupLabel, - CommandInput, - CommandItem, - CommandList, - CommandPanel, - CommandSeparator, - CommandShortcut, -}; +export { Command, CommandItem, CommandList }; diff --git a/apps/web/src/components/ui/dialog.tsx b/apps/web/src/components/ui/dialog.tsx index 080ac80997..70aa503dab 100644 --- a/apps/web/src/components/ui/dialog.tsx +++ b/apps/web/src/components/ui/dialog.tsx @@ -5,21 +5,9 @@ import { XIcon } from "lucide-react"; import { cn } from "~/lib/utils"; import { Button } from "~/components/ui/button"; import { ScrollArea } from "~/components/ui/scroll-area"; - -const DialogCreateHandle = DialogPrimitive.createHandle; - const Dialog = DialogPrimitive.Root; const DialogPortal = DialogPrimitive.Portal; - -function DialogTrigger(props: DialogPrimitive.Trigger.Props) { - return ; -} - -function DialogClose(props: DialogPrimitive.Close.Props) { - return ; -} - function DialogBackdrop({ className, ...props }: DialogPrimitive.Backdrop.Props) { return ( ) { /> ); } - -function EmptyContent({ className, ...props }: React.ComponentProps<"div">) { - return ( -
- ); -} - -export { Empty, EmptyHeader, EmptyTitle, EmptyDescription, EmptyContent, EmptyMedia }; +export { Empty, EmptyHeader, EmptyTitle, EmptyDescription, EmptyMedia }; diff --git a/apps/web/src/components/ui/field.tsx b/apps/web/src/components/ui/field.tsx deleted file mode 100644 index 1bf65b6c80..0000000000 --- a/apps/web/src/components/ui/field.tsx +++ /dev/null @@ -1,59 +0,0 @@ -"use client"; - -import { Field as FieldPrimitive } from "@base-ui/react/field"; - -import { cn } from "~/lib/utils"; - -function Field({ className, ...props }: FieldPrimitive.Root.Props) { - return ( - - ); -} - -function FieldLabel({ className, ...props }: FieldPrimitive.Label.Props) { - return ( - - ); -} - -function FieldItem({ className, ...props }: FieldPrimitive.Item.Props) { - return ( - - ); -} - -function FieldDescription({ className, ...props }: FieldPrimitive.Description.Props) { - return ( - - ); -} - -function FieldError({ className, ...props }: FieldPrimitive.Error.Props) { - return ( - - ); -} - -const FieldControl = FieldPrimitive.Control; -const FieldValidity = FieldPrimitive.Validity; - -export { Field, FieldLabel, FieldDescription, FieldError, FieldControl, FieldItem, FieldValidity }; diff --git a/apps/web/src/components/ui/fieldset.tsx b/apps/web/src/components/ui/fieldset.tsx deleted file mode 100644 index 23763b9824..0000000000 --- a/apps/web/src/components/ui/fieldset.tsx +++ /dev/null @@ -1,26 +0,0 @@ -"use client"; - -import { Fieldset as FieldsetPrimitive } from "@base-ui/react/fieldset"; - -import { cn } from "~/lib/utils"; - -function Fieldset({ className, ...props }: FieldsetPrimitive.Root.Props) { - return ( - - ); -} -function FieldsetLegend({ className, ...props }: FieldsetPrimitive.Legend.Props) { - return ( - - ); -} - -export { Fieldset, FieldsetLegend }; diff --git a/apps/web/src/components/ui/form.tsx b/apps/web/src/components/ui/form.tsx deleted file mode 100644 index 641fc2ee62..0000000000 --- a/apps/web/src/components/ui/form.tsx +++ /dev/null @@ -1,17 +0,0 @@ -"use client"; - -import { Form as FormPrimitive } from "@base-ui/react/form"; - -import { cn } from "~/lib/utils"; - -function Form({ className, ...props }: FormPrimitive.Props) { - return ( - - ); -} - -export { Form }; diff --git a/apps/web/src/components/ui/group.tsx b/apps/web/src/components/ui/group.tsx index 6eedfdda92..ac68eb0300 100644 --- a/apps/web/src/components/ui/group.tsx +++ b/apps/web/src/components/ui/group.tsx @@ -1,7 +1,5 @@ "use client"; -import { mergeProps } from "@base-ui/react/merge-props"; -import { useRender } from "@base-ui/react/use-render"; import { cva, type VariantProps } from "class-variance-authority"; import type * as React from "react"; @@ -47,22 +45,6 @@ function Group({
); } - -function GroupText({ className, render, ...props }: useRender.ComponentProps<"div">) { - const defaultProps = { - className: cn( - "relative inline-flex items-center whitespace-nowrap gap-2 rounded-lg border border-input bg-muted not-dark:bg-clip-padding px-[calc(--spacing(3)-1px)] text-muted-foreground text-base sm:text-sm shadow-xs/5 outline-none transition-shadow before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-lg)-1px)] before:shadow-[0_1px_--theme(--color-black/6%)] dark:bg-input/64 dark:before:shadow-[0_-1px_--theme(--color-white/6%)] [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 [&_svg]:-mx-0.5", - className, - ), - "data-slot": "group-text", - }; - return useRender({ - defaultTagName: "div", - props: mergeProps(defaultProps, props), - render, - }); -} - function GroupSeparator({ className, orientation = "vertical", @@ -82,12 +64,4 @@ function GroupSeparator({ ); } -export { - Group, - Group as ButtonGroup, - GroupText, - GroupText as ButtonGroupText, - GroupSeparator, - GroupSeparator as ButtonGroupSeparator, - groupVariants, -}; +export { Group, GroupSeparator }; diff --git a/apps/web/src/components/ui/input-group.tsx b/apps/web/src/components/ui/input-group.tsx deleted file mode 100644 index 2d63162733..0000000000 --- a/apps/web/src/components/ui/input-group.tsx +++ /dev/null @@ -1,95 +0,0 @@ -"use client"; - -import { cva, type VariantProps } from "class-variance-authority"; -import type * as React from "react"; - -import { cn } from "~/lib/utils"; -import { Input, type InputProps } from "~/components/ui/input"; -import { Textarea, type TextareaProps } from "~/components/ui/textarea"; - -function InputGroup({ className, ...props }: React.ComponentProps<"div">) { - return ( -
- ); -} - -const inputGroupAddonVariants = cva( - "[&_svg]:-mx-0.5 flex h-auto cursor-text select-none items-center justify-center gap-2 leading-none [&>kbd]:rounded-[calc(var(--radius)-5px)] in-[[data-slot=input-group]:has([data-slot=input-control],[data-slot=textarea-control])]:[&_svg:not([class*='size-'])]:size-4.5 sm:in-[[data-slot=input-group]:has([data-slot=input-control],[data-slot=textarea-control])]:[&_svg:not([class*='size-'])]:size-4 not-has-[button]:**:[svg:not([class*='opacity-'])]:opacity-80", - { - defaultVariants: { - align: "inline-start", - }, - variants: { - align: { - "block-end": - "order-last w-full justify-start px-[calc(--spacing(3)-1px)] pb-[calc(--spacing(3)-1px)] [.border-t]:pt-[calc(--spacing(3)-1px)] [[data-size=sm]+&]:px-[calc(--spacing(2.5)-1px)]", - "block-start": - "order-first w-full justify-start px-[calc(--spacing(3)-1px)] pt-[calc(--spacing(3)-1px)] [.border-b]:pb-[calc(--spacing(3)-1px)] [[data-size=sm]+&]:px-[calc(--spacing(2.5)-1px)]", - "inline-end": - "has-[>:last-child[data-slot=badge]]:-me-1.5 has-[>button]:-me-2 order-last pe-[calc(--spacing(3)-1px)] has-[>kbd:last-child]:me-[-0.35rem] [[data-size=sm]+&]:pe-[calc(--spacing(2.5)-1px)]", - "inline-start": - "has-[>:last-child[data-slot=badge]]:-ms-1.5 has-[>button]:-ms-2 order-first ps-[calc(--spacing(3)-1px)] has-[>kbd:last-child]:ms-[-0.35rem] [[data-size=sm]+&]:ps-[calc(--spacing(2.5)-1px)]", - }, - }, - }, -); - -function InputGroupAddon({ - className, - align = "inline-start", - ...props -}: React.ComponentProps<"div"> & VariantProps) { - return ( -
{ - const target = e.target as HTMLElement; - const isInteractive = target.closest( - "button, a, input, select, textarea, [role='button'], [role='combobox'], [role='listbox'], [data-slot='select-trigger']", - ); - if (isInteractive) return; - e.preventDefault(); - const parent = e.currentTarget.parentElement; - const input = parent?.querySelector( - "input, textarea", - ); - if (input && !parent?.querySelector("input:focus, textarea:focus")) { - input.focus(); - } - }} - {...props} - /> - ); -} - -function InputGroupText({ className, ...props }: React.ComponentProps<"span">) { - return ( - - ); -} - -function InputGroupInput({ className, ...props }: InputProps) { - return ; -} - -function InputGroupTextarea({ className, ...props }: TextareaProps) { - return