diff --git a/knip.jsonc b/knip.jsonc index 42ce9d06b..7361033fa 100644 --- a/knip.jsonc +++ b/knip.jsonc @@ -32,7 +32,7 @@ // This is a review tool, not a second gate, for two reasons written down so // the next reader does not have to rediscover them: // -// 1. It reports 29 files today. Some are test-only by construction (the +// 1. It reports 21 files today. Some are test-only by construction (the // guard helpers under `src/__tests__/helpers/`, the settings section // harness) and some are deliberately unreachable from production // (`src/lib/ai/mock-client.ts` is excluded structurally by the @@ -130,6 +130,19 @@ // Scoped to a single file: an export used only inside its own module is not // a finding. It is also why the default pass cannot answer the question the // production pass answers — this setting is about exports, not reachability. + // + // It had a second effect nobody asked for, worth knowing because it means + // the gate under-reported for a year. Until knip 6.28.0 this setting also + // exempted every RE-EXPORT: a barrel line was unconditionally marked + // "referenced in its own file", so `export { x } from "./x"` that nothing + // imported was never reported. knip 6.28.0 (PR webpro-nl/knip#1895, fixing + // issue #1894 — `--fix` deleted the source export and left the barrel line + // behind, emitting code that did not compile) dropped the exemption. The + // upgrade from 6.16.1 took this repo from 0 findings to 206 on unchanged + // code; all but two were barrel lines with no importer, and they are gone + // now. The suppression was entirely gated on this setting — with it off, + // 6.16.1 and 6.32.2 agree exactly. So a green Dead-code gate on any knip + // before 6.28.0 said nothing about re-exports. "ignoreExportsUsedInFile": true, "ignoreIssues": { "src/components/ui/**": ["exports", "types"], diff --git a/package.json b/package.json index eaf031622..6725904df 100644 --- a/package.json +++ b/package.json @@ -123,7 +123,7 @@ "@vitest/coverage-v8": "^4.1.5", "eslint": "^9", "eslint-config-next": "16.2.12", - "knip": "^6.16.1", + "knip": "^6.32.2", "lefthook": "^2.1.10", "pdf-parse": "^2.4.5", "pdfjs-dist": "6.2.108", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 24853b490..271314a1c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -228,8 +228,8 @@ importers: specifier: 16.2.12 version: 16.2.12(@typescript-eslint/parser@8.65.0(eslint@9.39.3(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.3(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) knip: - specifier: ^6.16.1 - version: 6.16.1 + specifier: ^6.32.2 + version: 6.32.2 lefthook: specifier: ^2.1.10 version: 2.1.10 @@ -580,6 +580,9 @@ packages: '@emnapi/core@1.11.1': resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==} + '@emnapi/core@1.11.2': + resolution: {integrity: sha512-TC8MkTuZUtcTSiFeuC0ksCh9QIJ5+F21MvZ4Wn4ORfYaFJ/0dsiudv5tVkejgwZlwQ39jL9WWDe2lz8x0WglOA==} + '@emnapi/core@1.8.1': resolution: {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==} @@ -589,6 +592,9 @@ packages: '@emnapi/runtime@1.11.1': resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==} + '@emnapi/runtime@1.11.2': + resolution: {integrity: sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==} + '@emnapi/runtime@1.8.1': resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==} @@ -1357,12 +1363,6 @@ packages: '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} - '@napi-rs/wasm-runtime@1.1.4': - resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==} - peerDependencies: - '@emnapi/core': ^1.7.1 - '@emnapi/runtime': ^1.7.1 - '@napi-rs/wasm-runtime@1.2.2': resolution: {integrity: sha512-JfB4kuJQjaoHuCTseIINHtHWeJnvgEcxjwA5t/Y00ZgaOO1Crz3fjT/p8kT28zA/Caz7oiUMn3d6H2yOVCVwuw==} engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} @@ -1634,239 +1634,234 @@ packages: cpu: [x64] os: [win32] - '@oxc-parser/binding-android-arm-eabi@0.133.0': - resolution: {integrity: sha512-l/44caGse+VpnY9gx0yvvc5QnnG3yG1FO3KZgYvNL1GZrfK86zIwAOgGEVlxDyRymzrU/KHiblPFpevKOmJmUA==} + '@oxc-parser/binding-android-arm-eabi@0.143.0': + resolution: {integrity: sha512-n9uozULWflPqBtdmI8lAabLqGKNgLVNN0ZH8HfgCwpKGNtzRzauB76jTiW/3YLkcA7N1zskpi9GdVnZuu1SAvg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@oxc-parser/binding-android-arm64@0.133.0': - resolution: {integrity: sha512-KUHmPMziLBp4u+zbrLdB7iWS7KshuZe+RAp7ELnY9SI9nNXBZ+dp8fiBqWOxhXqn+FQg3a4UcQhwmsJOKV8Jjg==} + '@oxc-parser/binding-android-arm64@0.143.0': + resolution: {integrity: sha512-9BbdjHETk6O3zH/DDid9IgBtF0GlpLabNKN231uraXpRDSfY+iiZxTP5bk1Z63GBownVdhdINFIeddmMz4MzpQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxc-parser/binding-darwin-arm64@0.133.0': - resolution: {integrity: sha512-q8dWmnU/8ea2tga9w2f1PinQ5rcMPDUGkF64T189b65YMjUomET4oy5oRldOr4AwOQkneOG/Zttnz1Dvrc62wg==} + '@oxc-parser/binding-darwin-arm64@0.143.0': + resolution: {integrity: sha512-gh+6ecoHUy4/sUcolBl/1qPXKBbYNxFY0Pk0ujgQvINTMSftJY7o4yb8gOkDJPeZeB8+a+u7xTe6umoP8N5HFA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxc-parser/binding-darwin-x64@0.133.0': - resolution: {integrity: sha512-cOKeIELIB2bJnCKwqx4Rdj+1Lss/U6uCbLxRySZrhyOOQa1flKhwZFjEHRHxk8fU1NKmhK5OnTdPQ4CpjuFuVw==} + '@oxc-parser/binding-darwin-x64@0.143.0': + resolution: {integrity: sha512-qd1hl2d+lXgHv/VQ/M9qm8TrMC5T4RqDBwtOnl+1D0QMjwcz+8AaB4JSg8STgeag0GP6a6L74XEGAsrTSJWNzQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxc-parser/binding-freebsd-x64@0.133.0': - resolution: {integrity: sha512-OpaSv4pW3KgFrMYQxTaS0aOE4T1DQF3qZE/4B6uqqv1KgPWWd4UQhJALi8PJPX1RRV5K7ThKXRfF7qGg2+3l1A==} + '@oxc-parser/binding-freebsd-x64@0.143.0': + resolution: {integrity: sha512-M5XXcNa7aOqLPKTR41msfghKu2yQ4xWvCm11/gwU0JzOzHNk5sgW//rVEjJ+LO48+VDAMzXTSzurUVxIDKwozw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxc-parser/binding-linux-arm-gnueabihf@0.133.0': - resolution: {integrity: sha512-JGK1wlGrGwxBIlVSF7KWTX1/ru6BEtf28fRROztDRkLfiW+Kxa4onnriezMIiogfn9hVw2KzYcKiLjkLR2ns8A==} + '@oxc-parser/binding-linux-arm-gnueabihf@0.143.0': + resolution: {integrity: sha512-T/GXusuOkPNQhCQCSBbcU/N8j0rAypuDBl1IyFK+lyYT594XsVz80clPC/OtbSSpBGyJxj8uYEfctxVuxVYoww==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxc-parser/binding-linux-arm-musleabihf@0.133.0': - resolution: {integrity: sha512-yuZO533Ftonxn/iyoqQzURzLQHMspvsIyfiCSNi1t/ER4eIQaR0SsmUOUm5b/lmSig7IWIUa5/BrbEkAPwcilQ==} + '@oxc-parser/binding-linux-arm-musleabihf@0.143.0': + resolution: {integrity: sha512-oKu4RcBlXSqo3OC62dp6YTnQaZIurNDpCX3BnAM3+bJxt7s8J2TJKMnC0UYer1qhlRaDCg6wkTaTw+2IlsZ12w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxc-parser/binding-linux-arm64-gnu@0.133.0': - resolution: {integrity: sha512-hvpbqT5pN2rR+3+xtWeizwfR/aZ0vGceg6TqYMl+ToxMpk9/tmnX7kSvQnfEUkoua8mhogzvIKsAkn0wxgblBA==} + '@oxc-parser/binding-linux-arm64-gnu@0.143.0': + resolution: {integrity: sha512-WJBbD186AZmMGaSIhlktC+rPl8L3peCTXAh88Ih9uEvK0en2mPojGyCGYiL6mHtV1RPV3JyfJW5t6n5hh0lXhA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-arm64-musl@0.133.0': - resolution: {integrity: sha512-wJQGamIosQBoJHW9+S5XxrtKRo3eyJxsnS1XCPrqN0LHi8uw1pTqqTfn3t/NVuvbBg7Pumn4ez9Eidgcn0xbEg==} + '@oxc-parser/binding-linux-arm64-musl@0.143.0': + resolution: {integrity: sha512-t1AcYOwEzgceadT4v5e+vaCCb0AncCA3v5AyzfBAz/tMq11qzVccXKzNHtkWdjBsgvTKwRkaUF3QvT4kot8vcQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@oxc-parser/binding-linux-ppc64-gnu@0.133.0': - resolution: {integrity: sha512-Koaz32/O5+abIfrNGdyndgRvdOZ9jEf5/z3Ep9h3h2QWpdDiUQpVwgH0OcMXCs+l9aXxPLtkupqyVig9W6FDKw==} + '@oxc-parser/binding-linux-ppc64-gnu@0.143.0': + resolution: {integrity: sha512-RsnO/NoD8376LMJq8JS8TwI0ieNaFRTuNe2GVJntQg6gwZNMENZsEbknHdVwjpOmxdGLGodcwaGSbAeRr5Bgjw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-riscv64-gnu@0.133.0': - resolution: {integrity: sha512-R4vOjWzxhnNWHnVLeiB6jNuIifdy9vcMXZGPc7StXcxBovI+U2zg1QhZ9o8OjV80oGivs1lX5NfPLzk4IPqlRA==} + '@oxc-parser/binding-linux-riscv64-gnu@0.143.0': + resolution: {integrity: sha512-48fSVfR9TZi5CASZFyv0VC6z6BCoeihFsX031mAD/oSH7d9PYsPgIqza7d9mjP7Z2KTEpTFyH6SIu0Ui6R1vdg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-riscv64-musl@0.133.0': - resolution: {integrity: sha512-iwgBNUTHiMdxARLYuM0SBlnYeb19iw1Ea5M+4ERZupCsBMLArti6FyZ6UfFjJxIiTDr2oW2DGQFxlQVQ/dW9rA==} + '@oxc-parser/binding-linux-riscv64-musl@0.143.0': + resolution: {integrity: sha512-T8CpdD+SfE01DnIOD4HpVxu0ZJOfMJ/VhCvikKfaXAxkZ+9veyLM/D2hpi7Y2hFUyPmVQO3FNZHmYzV/WlVR4g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [musl] - '@oxc-parser/binding-linux-s390x-gnu@0.133.0': - resolution: {integrity: sha512-ZwZNo8FZmB/gVfboQl+wXilBigGl+6nQQs+nITOeAP/HcAOjiHl6XZJL9F/KXNEspODQcbjAiyjUbeCJd9a0fA==} + '@oxc-parser/binding-linux-s390x-gnu@0.143.0': + resolution: {integrity: sha512-QLdeMsCcacenPEFsfxnBUDF1y6opyz5+fmOz9bfD5Y7fiGCMupUCuB3KTPQhNwshIG1P9fPqar9MHxuBDd4bwQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-x64-gnu@0.133.0': - resolution: {integrity: sha512-govCvWx1dBlED3uu4qXctxpRcouu9I8Kn+DBktGCl760JtlGJzc9l/OmPJKlYWSbrRqKkMZehNeZ/4Wfma7uSA==} + '@oxc-parser/binding-linux-x64-gnu@0.143.0': + resolution: {integrity: sha512-659ujfqLy6k7cuH3sbzhd8b+ztSq+i6E2E9pG78Q0BmHjAExfGIdgc8cGgMdwAozDXeZFHkJ+LXYJdWsaGdgyw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@oxc-parser/binding-linux-x64-musl@0.133.0': - resolution: {integrity: sha512-ssTlpXD5Mq9uCssDJPzlRWqBt4Y7Zzd9i+XZhWmK/9Y6KUIuAxVYTYiI8lxcGWi0+3/Cz4A8q9UrD4NK9Y2j7g==} + '@oxc-parser/binding-linux-x64-musl@0.143.0': + resolution: {integrity: sha512-/Mw/9j4TfZcnKphPrzOE6t4MMknXadcAAuVUlDRTF/ETWB5xOgQvOJV2Mh9We/bWxZdoxaGAdc+hy4GuYwQ2yQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@oxc-parser/binding-openharmony-arm64@0.133.0': - resolution: {integrity: sha512-51aByfXhPtLEdWG4a2Ihdw6cPWV1ei1AarALpFdDP8MLWDLE2NuUMgbo3DERR2Kt8fT/ok1GUvBiLxVGke9uUQ==} + '@oxc-parser/binding-openharmony-arm64@0.143.0': + resolution: {integrity: sha512-8rIKWR2BFuifbIK/1XB9wTaSdtuJ25dlE7ZQYDnEwj/2xH2vHsxnvIjHT3ZjSVuLLwGGlSslIG/fbOJ8TV8rTw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@oxc-parser/binding-wasm32-wasi@0.133.0': - resolution: {integrity: sha512-2e16tkKp+wDO2GTAmXfxbBcCmGEaFPIJEIRBBmVKNVXSc8/fJsSIaBGyFTPHM9ST5GNWgJcYIt94rDTks+PLwA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [wasm32] - - '@oxc-parser/binding-win32-arm64-msvc@0.133.0': - resolution: {integrity: sha512-KPTNDKbxH1cglrqTyVeXHb4Pk4oksz8EcE1/v8zqU7N4UXbiHfA/IwtXZ2U77fnRAWBbgVkl/lZbL7o3hRdejg==} + '@oxc-parser/binding-win32-arm64-msvc@0.143.0': + resolution: {integrity: sha512-5U9kQYMfRRI6Zq7KDxgbIP0RMnKrfn3gLepRMgJuRkPSUALTiRCk9d/uyhb4lGDjUdzwK7mBkKqhLgzBPCmLpQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@oxc-parser/binding-win32-ia32-msvc@0.133.0': - resolution: {integrity: sha512-Una1bNYv9zCavQrfnDR9wuZVB3itLjCEH4Oz7i6CwAJN/Xq9b+zbbcxmvdkKvvJt4Ngc/MBmIYlbLo3zS4TQ0A==} + '@oxc-parser/binding-win32-ia32-msvc@0.143.0': + resolution: {integrity: sha512-25P7AaHk4R88Yv2XH4gToDVmh0cOu+bEURQU10CRrmvgabfRArSGAP5osmwUKeSUHj0VS50upbpbRWWW/m7mHA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@oxc-parser/binding-win32-x64-msvc@0.133.0': - resolution: {integrity: sha512-kjBhCiOGSYTwDJQuuZa7a94JbP8htWu7J0X1KwH74kV2K5eYf6eyJRYmkpCDvr0XEL8tMxYI4WU1VekblFCLgg==} + '@oxc-parser/binding-win32-x64-msvc@0.143.0': + resolution: {integrity: sha512-ORMh3JE1s6V7ySicdRK7vgaDQnn5o+UHg9ct989PlWHbel8O9ARrmWXM6kZjrBMtNucxNayQ8g69G0VfWzhANw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@oxc-project/types@0.133.0': - resolution: {integrity: sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA==} - '@oxc-project/types@0.139.0': resolution: {integrity: sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==} - '@oxc-resolver/binding-android-arm-eabi@11.20.0': - resolution: {integrity: sha512-IjfWOXRgJFNdORDl+Uf1aibNgZY2guOD3zmOhx1BGVb/MIiqlFTdmjpQNplSN58lhWehnX4UNqC3QwpUo8pjJg==} + '@oxc-project/types@0.143.0': + resolution: {integrity: sha512-u6JZdLBTLotrNC9Vd6vPssINdzcCzleKAH6EJKImQb7GtYvX5keN2dxkoK44stCc4tffE6QQRtZTXVSzsLUlWA==} + + '@oxc-resolver/binding-android-arm-eabi@11.24.2': + resolution: {integrity: sha512-y09e0L0SRI2OA2tUIrjBgoV3eH5hvUKXNkJqXmNo5V2WxIjyC7I7aJfRLMEVpA8yi95f90gFDvO0VMgrDw+vwA==} cpu: [arm] os: [android] - '@oxc-resolver/binding-android-arm64@11.20.0': - resolution: {integrity: sha512-QqslZAuFQG8Q9xm7JuIn8JUbvywhSBMVhuQHtYW+auirZJloS41oxUUaBXk7uUhZJgp44c5zQLeVvmFaDQB+2Q==} + '@oxc-resolver/binding-android-arm64@11.24.2': + resolution: {integrity: sha512-cl4icWaZFnLdg8m6qtnh5rBMuGbxc/ptStFHLeCNwr+2cZjkjNwQu/jYRS0CHlnPecOJMpuS5M6/BH+0J/YkEg==} cpu: [arm64] os: [android] - '@oxc-resolver/binding-darwin-arm64@11.20.0': - resolution: {integrity: sha512-MUcavykj2ewlR+kc5arpg4tC2RvzJkUxWtNv74pf7lcNk00GpIpN43vXMj+j6r4eMmfZhlb8hueKoIb8e9kAGQ==} + '@oxc-resolver/binding-darwin-arm64@11.24.2': + resolution: {integrity: sha512-At29QEMF6HajbQvgY8K6OXnHD1x9rad74xBEfmCB6ZqCGsdq75aK7tOYcTbOanMy8qdIBrfL3SMr3p/lfSlb9w==} cpu: [arm64] os: [darwin] - '@oxc-resolver/binding-darwin-x64@11.20.0': - resolution: {integrity: sha512-BGB16nRUK5Etiv//ihPyzj8Lj1px0mhh4YIfe0FDf045ywknfSm0GEbiRESpr6Q4K82AvnyaRIhhluHByvS4bg==} + '@oxc-resolver/binding-darwin-x64@11.24.2': + resolution: {integrity: sha512-A5Kqr1EUj4oIL5CF4WRssq/o5P0Y11cwoFouMRmQ7YnC/A8V93nv1nb7aSU8HwcgmXropjLNkVTl4MN87cu28Q==} cpu: [x64] os: [darwin] - '@oxc-resolver/binding-freebsd-x64@11.20.0': - resolution: {integrity: sha512-JZgtePaqj3qmD5XFHJaSLWzHRxQu0LaPkdoM1KJXYADvAaa83ijXHclV3ej3CueeW0wxfIAbGCZVP45J0CA7uQ==} + '@oxc-resolver/binding-freebsd-x64@11.24.2': + resolution: {integrity: sha512-R5xkRBRRz7ceH/P5Jrc6G7FmdUdgpLYyESFAUDVTNQ9K0sGPxcp4ljiwEwEqsvNcQ4sYbMRrWcHHBCu7ksAJVw==} cpu: [x64] os: [freebsd] - '@oxc-resolver/binding-linux-arm-gnueabihf@11.20.0': - resolution: {integrity: sha512-hOQ/p3ry3v3SchUBXicrrnszaI/UmYzM4wtS4RGfwgVUX7a+HbyQSzJ5aOzu+o6XZkFkS3ZXN4PZAzhOb77OSg==} + '@oxc-resolver/binding-linux-arm-gnueabihf@11.24.2': + resolution: {integrity: sha512-k/RuYL4L/R58IBn3wT5ma3Wh4k62bp1eYCFRWCmMsasUOqL+H6sW0VGFadEzKWXFFlz+2uIMoeMk9ySSZJHgbg==} cpu: [arm] os: [linux] - '@oxc-resolver/binding-linux-arm-musleabihf@11.20.0': - resolution: {integrity: sha512-2ArPksaw0AqeuGBfoS715VF+JvJQAhD2niWgjE5hVO+L+nAfikVQopvngCMX9x4BD8itWoQ3dnikrQyl5Ho5Jg==} + '@oxc-resolver/binding-linux-arm-musleabihf@11.24.2': + resolution: {integrity: sha512-bnHAak3ujYfH5pKk4NieFNbvYvernfoQDgwLddbZ3OtMYrem87/qjlA+u+aKG0oZcqSLGCful/6/CEA+aeAgaA==} cpu: [arm] os: [linux] - '@oxc-resolver/binding-linux-arm64-gnu@11.20.0': - resolution: {integrity: sha512-0bJnmYFp62JdZ4nVMDUZ/C58BCZOCcqgKtnUlp7L9Ojf/czIN+3j72YlLPeWLkzlr6SlYvIQA4SGV/HyO0d+qg==} + '@oxc-resolver/binding-linux-arm64-gnu@11.24.2': + resolution: {integrity: sha512-vDT3KHgzYp47gmtNOqL2VNhCyl5Zv643eyxm//A68J8DeUGXrvD1pZFiaT4jSfe+RInfnn1R2yVHye4enx6RnA==} cpu: [arm64] os: [linux] libc: [glibc] - '@oxc-resolver/binding-linux-arm64-musl@11.20.0': - resolution: {integrity: sha512-wKHHzPKZo7Ufhv/Bt6yxT7FOgnIgW4gwXcJUipkShGp68W3wGVqvr1Sr0fY65lN0Oy6y41+g2kIDvkgZaMMUkw==} + '@oxc-resolver/binding-linux-arm64-musl@11.24.2': + resolution: {integrity: sha512-+kMlQvbzfyEYtu5FcjE4p+ttBLpKW4d/AsAsuE69BxV6V4twZJeIQZFfD8gh/wqglY0MkPSezWXQH0jBV13MUw==} cpu: [arm64] os: [linux] libc: [musl] - '@oxc-resolver/binding-linux-ppc64-gnu@11.20.0': - resolution: {integrity: sha512-RN8goF7Ie0B79L4i4G6OeBocTgSC56vJbQ65VJje+oXnldVpLnOU7j/AQ/dP94TcCS+Yh6WG8u3Qt4ETteXFNQ==} + '@oxc-resolver/binding-linux-ppc64-gnu@11.24.2': + resolution: {integrity: sha512-shjfMhmZ3gq9fv/w7bi3PnZlgOPG+2QAOFf0BJF0EgBSIGZ6PMLN2zbGEblTUYB/NKVDRyYhE2ff3dJ1QqNPkA==} cpu: [ppc64] os: [linux] libc: [glibc] - '@oxc-resolver/binding-linux-riscv64-gnu@11.20.0': - resolution: {integrity: sha512-5l1yU6/xQEqLZRzxqmMxJfWPslpwCmBsdDGaBvABPehxquCXDC7dd7oraNdKSJUMDXSM7VvVj8H2D2FTjU7oWw==} + '@oxc-resolver/binding-linux-riscv64-gnu@11.24.2': + resolution: {integrity: sha512-zGelwFR5oRo+b69k8Lrzun86DyUHzfKN6cnjbR9l7Z7NIRznOE/2ZvPa1IUKqAL2PzAXOdwkfVqNvO1H2RlpAw==} cpu: [riscv64] os: [linux] libc: [glibc] - '@oxc-resolver/binding-linux-riscv64-musl@11.20.0': - resolution: {integrity: sha512-xHEvkbgz6UC+A3JOyDQy76LkUaxsNSfIr3/GV8slwZsnuooJiIB34gzJfsyvR4JdCYNUUPsRJc/w/oWkODu+hg==} + '@oxc-resolver/binding-linux-riscv64-musl@11.24.2': + resolution: {integrity: sha512-qxZ1SWCXJY0eyhAlP6Lmo9F2Nrtx7EkYj9oCgL8apDPCwXwCEDA2U697bbT81JIc2IrVjxO4KX6WU2N+oN9Z4w==} cpu: [riscv64] os: [linux] libc: [musl] - '@oxc-resolver/binding-linux-s390x-gnu@11.20.0': - resolution: {integrity: sha512-aWPDUUmSeyHvlW+SoEUd+JIJsQhVhu6a5tBpDRMu058naPAchTgAVGCFy35zjbnFlt0i8hLWziff6HX0D3LU4g==} + '@oxc-resolver/binding-linux-s390x-gnu@11.24.2': + resolution: {integrity: sha512-sGCecF3cx2DFlH4t/z7ApnOnXqN48p5p5mlHDEnHTAukQa2P+qMVE4CwyWE9W+q/m3QJ7kKfGrIjax31f44oFQ==} cpu: [s390x] os: [linux] libc: [glibc] - '@oxc-resolver/binding-linux-x64-gnu@11.20.0': - resolution: {integrity: sha512-x2YeSimvhJjKLVD8KSu8f/rqU1potcdEMkApIPJqjZWN7c2Fpt4g2X32WDg1p+XDAmyT7nuQGe0vnhvXeLbH+g==} + '@oxc-resolver/binding-linux-x64-gnu@11.24.2': + resolution: {integrity: sha512-k/VlMMcSzMlahb3/fENM4rTlsJ0s3fFROA0KXPBmKggqmTSaE383sl8F3KCOXPLmVsYfW6hCitMhXCEtNeZxxg==} cpu: [x64] os: [linux] libc: [glibc] - '@oxc-resolver/binding-linux-x64-musl@11.20.0': - resolution: {integrity: sha512-kcRLEIxpZefeYfLChjpgFf3ilBzRDZ+yobMrpRsQlSrxuFGtm3U6PMU7AaEpMqo3NfDGVyJJseAjnRLzMFHjwQ==} + '@oxc-resolver/binding-linux-x64-musl@11.24.2': + resolution: {integrity: sha512-8hbnZyNi97b/8wapYaIF9+t9GmZKBW2vunaOc3h9HGJptH7b7XpvZqOTBSm/MpTjr7H497BlgOaSfLUdhmy2bw==} cpu: [x64] os: [linux] libc: [musl] - '@oxc-resolver/binding-openharmony-arm64@11.20.0': - resolution: {integrity: sha512-HHcfnApSZGtKhTiHqe8OZruOZe5XuFQH5/E0Yhj3u8fnFvzkM4/k6WjacUf4SvA0SPEAbfbgYmVPuo0VX/fIBQ==} + '@oxc-resolver/binding-openharmony-arm64@11.24.2': + resolution: {integrity: sha512-MvyGik3a6pVgZ0t/kWlbmFxFLmXQJwgLsY2eYFHLpy0wGwRbfzeIGgDwQ3kXqE30z+kSXennRkCrT7TUvkptNg==} cpu: [arm64] os: [openharmony] - '@oxc-resolver/binding-wasm32-wasi@11.20.0': - resolution: {integrity: sha512-Tn0y1XOFYHNfK1wp1Z5QK8Rcld/bsOwRISQXfqAZ5IBpv8Gz1IvV39fUWNprqNdRizgcvFhOzWwFun2zkJsyBg==} + '@oxc-resolver/binding-wasm32-wasi@11.24.2': + resolution: {integrity: sha512-vHcssMPwO08RTvj/c0iOBz90attxyG3wQJ0dTcyEQK43LRpcdLWZlV5feBhv6Isn6ahbQIzHbCgfa81+RiML0Q==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@oxc-resolver/binding-win32-arm64-msvc@11.20.0': - resolution: {integrity: sha512-qPi25YNPe4YenS8MgsQU2+bIFHxxpLx1LVna2444cEHqNPhNjvWf9zqj4aWE43H9LpAsTmkkAlA3eL5ElBU3mA==} + '@oxc-resolver/binding-win32-arm64-msvc@11.24.2': + resolution: {integrity: sha512-uokJqro2iBqkFvJdKQLP7d8/BUmFwESQFVmIJUQKj1Xn1a/LysJoe1vmeECLF5b3jsV8CAL5sEMJXX6SdK9Nhg==} cpu: [arm64] os: [win32] - '@oxc-resolver/binding-win32-x64-msvc@11.20.0': - resolution: {integrity: sha512-Wb14jWEW8huH6It9F6sXd9vrYmIS7pMrgkU6sxpLxkP+9z+wRgs71hUEhRpcn8FOXAFa27FVWfY2tRpbfTzfLw==} + '@oxc-resolver/binding-win32-x64-msvc@11.24.2': + resolution: {integrity: sha512-UqGPmo56KDfLlfXFAFIrNflHT8tFxWGEivWg3Zeyp4Uy2NlKN1FGPr6/BxcLGG3+kZ6Wp14g5Uj+n71boqZfiw==} cpu: [x64] os: [win32] @@ -4671,9 +4666,6 @@ packages: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} - get-tsconfig@4.14.0: - resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} - get-tsconfig@4.14.1: resolution: {integrity: sha512-Dz/6HxkrxgNehhxLVeyv8sad9UzF2xBVeaKBQNDfJ5XiSXmp2gTR0eO0RWiT2NCKS5aGP9jjkOMggTN90qU50A==} @@ -5183,8 +5175,8 @@ packages: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} - knip@6.16.1: - resolution: {integrity: sha512-TKMn1rxgH6h9vXR9Y0B+Cq7AdPTr9EI02IwoT65NzqYUkvoDQAaJ/aPybiFpAhZ1px6cNYYwXf86iHkBgzCo9w==} + knip@6.32.2: + resolution: {integrity: sha512-WXTXbmocrw7gqm1A1TQvFN0OgJ7hUSU6E1g6SPRIzzHFogUBhXByc7cYeOFVtJ2uODg7DP4VbESYBYnfbtBYsg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -5707,12 +5699,12 @@ packages: resolution: {integrity: sha512-19YVAg7T+WTrxggPukVq7DjTv6+PJ867TmhCvBsYwmbFCsZd344rq2Ld1p0wo8f8Qrrhgp82c6FJRqdXWtSEhg==} engines: {node: '>= 0.4'} - oxc-parser@0.133.0: - resolution: {integrity: sha512-661RSx+ZcjBmjBYid+Fpp/2F5EbtildpeoZh5HdgnGs+jZ03nqQEQW8yGkt4BGyOC3OMPDQQRl8M5kqD2/g6jw==} + oxc-parser@0.143.0: + resolution: {integrity: sha512-ov0NzaDCOInknS7mP1cwKdJERt3utPW8ldjtdUXQ8Ty0GEFD08wk422vCUN0d7pST6kqtV7dxoI9w1Zi0l/9TA==} engines: {node: ^20.19.0 || >=22.12.0} - oxc-resolver@11.20.0: - resolution: {integrity: sha512-CblytBiV/a/ZXY34dsVU2NxhIOxMXst8CvDCtyBelVITgd7PLrKzbEbA6oKLdPjvDKDzCiW48qzmzZ+mYaqn+g==} + oxc-resolver@11.24.2: + resolution: {integrity: sha512-FY91FiDBj7ls5MsFS9jN3tjz2o0/zsdSsymlakySaBwVJZorHhkWyICLZMKxlu1R9vYo+sd3z1jwb4J8x7bNDw==} p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} @@ -6457,6 +6449,10 @@ packages: resolution: {integrity: sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==} engines: {node: '>= 18'} + smol-toml@1.8.0: + resolution: {integrity: sha512-kCZr2V3ch9i00x8zXRhjUNVcjG9ijES5dDudkXvUVCT5QlJNQWElSJdZqyPemffHoLNUYwOcou0Fy+ojN0uHSQ==} + engines: {node: '>= 18'} + sonner@2.0.7: resolution: {integrity: sha512-W6ZN4p58k8aDKA4XPcx2hpIQXBRAgyiWVkYhT7CvK6D3iAu7xjvVyhQHg2/iaKJZ1XVJ4r7XuwGL+WGEK37i9w==} peerDependencies: @@ -6800,8 +6796,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - unbash@3.0.0: - resolution: {integrity: sha512-FeFPZ/WFT0mbRCuydiZzpPFlrYN8ZUpphQKoq4EeElVIYjYyGzPMxQR/simUwCOJIyVhpFk4RbtyO7RuMpMnHA==} + unbash@4.0.10: + resolution: {integrity: sha512-b7zoBQvpWp0vuN5q2vK2RRBR2SvuruQAs50DApdDveBSn3eSYd84IaHodFqQIMlvY9K2VnyBUEXgwOBuGU9GBg==} engines: {node: '>=14'} unbox-primitive@1.1.0: @@ -7681,6 +7677,12 @@ snapshots: tslib: 2.8.1 optional: true + '@emnapi/core@1.11.2': + dependencies: + '@emnapi/wasi-threads': 1.2.2 + tslib: 2.8.1 + optional: true + '@emnapi/core@1.8.1': dependencies: '@emnapi/wasi-threads': 1.1.0 @@ -7697,6 +7699,11 @@ snapshots: tslib: 2.8.1 optional: true + '@emnapi/runtime@1.11.2': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/runtime@1.8.1': dependencies: tslib: 2.8.1 @@ -8334,13 +8341,6 @@ snapshots: '@tybys/wasm-util': 0.10.1 optional: true - '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': - dependencies: - '@emnapi/core': 1.10.0 - '@emnapi/runtime': 1.10.0 - '@tybys/wasm-util': 0.10.1 - optional: true - '@napi-rs/wasm-runtime@1.2.2(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': dependencies: '@emnapi/core': 1.10.0 @@ -8355,6 +8355,13 @@ snapshots: '@tybys/wasm-util': 0.10.3 optional: true + '@napi-rs/wasm-runtime@1.2.2(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)': + dependencies: + '@emnapi/core': 1.11.2 + '@emnapi/runtime': 1.11.2 + '@tybys/wasm-util': 0.10.3 + optional: true + '@next/bundle-analyzer@16.3.1': dependencies: webpack-bundle-analyzer: 4.10.1 @@ -8575,133 +8582,126 @@ snapshots: '@openai/codex@0.144.6-win32-x64': optional: true - '@oxc-parser/binding-android-arm-eabi@0.133.0': + '@oxc-parser/binding-android-arm-eabi@0.143.0': optional: true - '@oxc-parser/binding-android-arm64@0.133.0': + '@oxc-parser/binding-android-arm64@0.143.0': optional: true - '@oxc-parser/binding-darwin-arm64@0.133.0': + '@oxc-parser/binding-darwin-arm64@0.143.0': optional: true - '@oxc-parser/binding-darwin-x64@0.133.0': + '@oxc-parser/binding-darwin-x64@0.143.0': optional: true - '@oxc-parser/binding-freebsd-x64@0.133.0': + '@oxc-parser/binding-freebsd-x64@0.143.0': optional: true - '@oxc-parser/binding-linux-arm-gnueabihf@0.133.0': + '@oxc-parser/binding-linux-arm-gnueabihf@0.143.0': optional: true - '@oxc-parser/binding-linux-arm-musleabihf@0.133.0': + '@oxc-parser/binding-linux-arm-musleabihf@0.143.0': optional: true - '@oxc-parser/binding-linux-arm64-gnu@0.133.0': + '@oxc-parser/binding-linux-arm64-gnu@0.143.0': optional: true - '@oxc-parser/binding-linux-arm64-musl@0.133.0': + '@oxc-parser/binding-linux-arm64-musl@0.143.0': optional: true - '@oxc-parser/binding-linux-ppc64-gnu@0.133.0': + '@oxc-parser/binding-linux-ppc64-gnu@0.143.0': optional: true - '@oxc-parser/binding-linux-riscv64-gnu@0.133.0': + '@oxc-parser/binding-linux-riscv64-gnu@0.143.0': optional: true - '@oxc-parser/binding-linux-riscv64-musl@0.133.0': + '@oxc-parser/binding-linux-riscv64-musl@0.143.0': optional: true - '@oxc-parser/binding-linux-s390x-gnu@0.133.0': + '@oxc-parser/binding-linux-s390x-gnu@0.143.0': optional: true - '@oxc-parser/binding-linux-x64-gnu@0.133.0': + '@oxc-parser/binding-linux-x64-gnu@0.143.0': optional: true - '@oxc-parser/binding-linux-x64-musl@0.133.0': + '@oxc-parser/binding-linux-x64-musl@0.143.0': optional: true - '@oxc-parser/binding-openharmony-arm64@0.133.0': + '@oxc-parser/binding-openharmony-arm64@0.143.0': optional: true - '@oxc-parser/binding-wasm32-wasi@0.133.0': - dependencies: - '@emnapi/core': 1.10.0 - '@emnapi/runtime': 1.10.0 - '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + '@oxc-parser/binding-win32-arm64-msvc@0.143.0': optional: true - '@oxc-parser/binding-win32-arm64-msvc@0.133.0': + '@oxc-parser/binding-win32-ia32-msvc@0.143.0': optional: true - '@oxc-parser/binding-win32-ia32-msvc@0.133.0': + '@oxc-parser/binding-win32-x64-msvc@0.143.0': optional: true - '@oxc-parser/binding-win32-x64-msvc@0.133.0': - optional: true - - '@oxc-project/types@0.133.0': {} - '@oxc-project/types@0.139.0': {} - '@oxc-resolver/binding-android-arm-eabi@11.20.0': + '@oxc-project/types@0.143.0': {} + + '@oxc-resolver/binding-android-arm-eabi@11.24.2': optional: true - '@oxc-resolver/binding-android-arm64@11.20.0': + '@oxc-resolver/binding-android-arm64@11.24.2': optional: true - '@oxc-resolver/binding-darwin-arm64@11.20.0': + '@oxc-resolver/binding-darwin-arm64@11.24.2': optional: true - '@oxc-resolver/binding-darwin-x64@11.20.0': + '@oxc-resolver/binding-darwin-x64@11.24.2': optional: true - '@oxc-resolver/binding-freebsd-x64@11.20.0': + '@oxc-resolver/binding-freebsd-x64@11.24.2': optional: true - '@oxc-resolver/binding-linux-arm-gnueabihf@11.20.0': + '@oxc-resolver/binding-linux-arm-gnueabihf@11.24.2': optional: true - '@oxc-resolver/binding-linux-arm-musleabihf@11.20.0': + '@oxc-resolver/binding-linux-arm-musleabihf@11.24.2': optional: true - '@oxc-resolver/binding-linux-arm64-gnu@11.20.0': + '@oxc-resolver/binding-linux-arm64-gnu@11.24.2': optional: true - '@oxc-resolver/binding-linux-arm64-musl@11.20.0': + '@oxc-resolver/binding-linux-arm64-musl@11.24.2': optional: true - '@oxc-resolver/binding-linux-ppc64-gnu@11.20.0': + '@oxc-resolver/binding-linux-ppc64-gnu@11.24.2': optional: true - '@oxc-resolver/binding-linux-riscv64-gnu@11.20.0': + '@oxc-resolver/binding-linux-riscv64-gnu@11.24.2': optional: true - '@oxc-resolver/binding-linux-riscv64-musl@11.20.0': + '@oxc-resolver/binding-linux-riscv64-musl@11.24.2': optional: true - '@oxc-resolver/binding-linux-s390x-gnu@11.20.0': + '@oxc-resolver/binding-linux-s390x-gnu@11.24.2': optional: true - '@oxc-resolver/binding-linux-x64-gnu@11.20.0': + '@oxc-resolver/binding-linux-x64-gnu@11.24.2': optional: true - '@oxc-resolver/binding-linux-x64-musl@11.20.0': + '@oxc-resolver/binding-linux-x64-musl@11.24.2': optional: true - '@oxc-resolver/binding-openharmony-arm64@11.20.0': + '@oxc-resolver/binding-openharmony-arm64@11.24.2': optional: true - '@oxc-resolver/binding-wasm32-wasi@11.20.0': + '@oxc-resolver/binding-wasm32-wasi@11.24.2': dependencies: - '@emnapi/core': 1.10.0 - '@emnapi/runtime': 1.10.0 - '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + '@emnapi/core': 1.11.2 + '@emnapi/runtime': 1.11.2 + '@napi-rs/wasm-runtime': 1.2.2(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2) optional: true - '@oxc-resolver/binding-win32-arm64-msvc@11.20.0': + '@oxc-resolver/binding-win32-arm64-msvc@11.24.2': optional: true - '@oxc-resolver/binding-win32-x64-msvc@11.20.0': + '@oxc-resolver/binding-win32-x64-msvc@11.24.2': optional: true '@parse/node-apn@8.1.0(supports-color@7.2.0)': @@ -11807,10 +11807,6 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 - get-tsconfig@4.14.0: - dependencies: - resolve-pkg-maps: 1.0.0 - get-tsconfig@4.14.1: dependencies: resolve-pkg-maps: 1.0.0 @@ -12283,19 +12279,19 @@ snapshots: kleur@4.1.5: {} - knip@6.16.1: + knip@6.32.2: dependencies: - fdir: 6.5.0(picomatch@4.0.4) + fdir: 6.5.0(picomatch@4.0.5) formatly: 0.3.0 - get-tsconfig: 4.14.0 + get-tsconfig: 4.14.1 jiti: 2.7.0 - oxc-parser: 0.133.0 - oxc-resolver: 11.20.0 - picomatch: 4.0.4 - smol-toml: 1.6.1 + oxc-parser: 0.143.0 + oxc-resolver: 11.24.2 + picomatch: 4.0.5 + smol-toml: 1.8.0 strip-json-comments: 5.0.3 tinyglobby: 0.2.17 - unbash: 3.0.0 + unbash: 4.0.10 yaml: 2.9.0 zod: 4.4.3 @@ -12777,52 +12773,51 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 - oxc-parser@0.133.0: + oxc-parser@0.143.0: dependencies: - '@oxc-project/types': 0.133.0 + '@oxc-project/types': 0.143.0 optionalDependencies: - '@oxc-parser/binding-android-arm-eabi': 0.133.0 - '@oxc-parser/binding-android-arm64': 0.133.0 - '@oxc-parser/binding-darwin-arm64': 0.133.0 - '@oxc-parser/binding-darwin-x64': 0.133.0 - '@oxc-parser/binding-freebsd-x64': 0.133.0 - '@oxc-parser/binding-linux-arm-gnueabihf': 0.133.0 - '@oxc-parser/binding-linux-arm-musleabihf': 0.133.0 - '@oxc-parser/binding-linux-arm64-gnu': 0.133.0 - '@oxc-parser/binding-linux-arm64-musl': 0.133.0 - '@oxc-parser/binding-linux-ppc64-gnu': 0.133.0 - '@oxc-parser/binding-linux-riscv64-gnu': 0.133.0 - '@oxc-parser/binding-linux-riscv64-musl': 0.133.0 - '@oxc-parser/binding-linux-s390x-gnu': 0.133.0 - '@oxc-parser/binding-linux-x64-gnu': 0.133.0 - '@oxc-parser/binding-linux-x64-musl': 0.133.0 - '@oxc-parser/binding-openharmony-arm64': 0.133.0 - '@oxc-parser/binding-wasm32-wasi': 0.133.0 - '@oxc-parser/binding-win32-arm64-msvc': 0.133.0 - '@oxc-parser/binding-win32-ia32-msvc': 0.133.0 - '@oxc-parser/binding-win32-x64-msvc': 0.133.0 + '@oxc-parser/binding-android-arm-eabi': 0.143.0 + '@oxc-parser/binding-android-arm64': 0.143.0 + '@oxc-parser/binding-darwin-arm64': 0.143.0 + '@oxc-parser/binding-darwin-x64': 0.143.0 + '@oxc-parser/binding-freebsd-x64': 0.143.0 + '@oxc-parser/binding-linux-arm-gnueabihf': 0.143.0 + '@oxc-parser/binding-linux-arm-musleabihf': 0.143.0 + '@oxc-parser/binding-linux-arm64-gnu': 0.143.0 + '@oxc-parser/binding-linux-arm64-musl': 0.143.0 + '@oxc-parser/binding-linux-ppc64-gnu': 0.143.0 + '@oxc-parser/binding-linux-riscv64-gnu': 0.143.0 + '@oxc-parser/binding-linux-riscv64-musl': 0.143.0 + '@oxc-parser/binding-linux-s390x-gnu': 0.143.0 + '@oxc-parser/binding-linux-x64-gnu': 0.143.0 + '@oxc-parser/binding-linux-x64-musl': 0.143.0 + '@oxc-parser/binding-openharmony-arm64': 0.143.0 + '@oxc-parser/binding-win32-arm64-msvc': 0.143.0 + '@oxc-parser/binding-win32-ia32-msvc': 0.143.0 + '@oxc-parser/binding-win32-x64-msvc': 0.143.0 - oxc-resolver@11.20.0: + oxc-resolver@11.24.2: optionalDependencies: - '@oxc-resolver/binding-android-arm-eabi': 11.20.0 - '@oxc-resolver/binding-android-arm64': 11.20.0 - '@oxc-resolver/binding-darwin-arm64': 11.20.0 - '@oxc-resolver/binding-darwin-x64': 11.20.0 - '@oxc-resolver/binding-freebsd-x64': 11.20.0 - '@oxc-resolver/binding-linux-arm-gnueabihf': 11.20.0 - '@oxc-resolver/binding-linux-arm-musleabihf': 11.20.0 - '@oxc-resolver/binding-linux-arm64-gnu': 11.20.0 - '@oxc-resolver/binding-linux-arm64-musl': 11.20.0 - '@oxc-resolver/binding-linux-ppc64-gnu': 11.20.0 - '@oxc-resolver/binding-linux-riscv64-gnu': 11.20.0 - '@oxc-resolver/binding-linux-riscv64-musl': 11.20.0 - '@oxc-resolver/binding-linux-s390x-gnu': 11.20.0 - '@oxc-resolver/binding-linux-x64-gnu': 11.20.0 - '@oxc-resolver/binding-linux-x64-musl': 11.20.0 - '@oxc-resolver/binding-openharmony-arm64': 11.20.0 - '@oxc-resolver/binding-wasm32-wasi': 11.20.0 - '@oxc-resolver/binding-win32-arm64-msvc': 11.20.0 - '@oxc-resolver/binding-win32-x64-msvc': 11.20.0 + '@oxc-resolver/binding-android-arm-eabi': 11.24.2 + '@oxc-resolver/binding-android-arm64': 11.24.2 + '@oxc-resolver/binding-darwin-arm64': 11.24.2 + '@oxc-resolver/binding-darwin-x64': 11.24.2 + '@oxc-resolver/binding-freebsd-x64': 11.24.2 + '@oxc-resolver/binding-linux-arm-gnueabihf': 11.24.2 + '@oxc-resolver/binding-linux-arm-musleabihf': 11.24.2 + '@oxc-resolver/binding-linux-arm64-gnu': 11.24.2 + '@oxc-resolver/binding-linux-arm64-musl': 11.24.2 + '@oxc-resolver/binding-linux-ppc64-gnu': 11.24.2 + '@oxc-resolver/binding-linux-riscv64-gnu': 11.24.2 + '@oxc-resolver/binding-linux-riscv64-musl': 11.24.2 + '@oxc-resolver/binding-linux-s390x-gnu': 11.24.2 + '@oxc-resolver/binding-linux-x64-gnu': 11.24.2 + '@oxc-resolver/binding-linux-x64-musl': 11.24.2 + '@oxc-resolver/binding-openharmony-arm64': 11.24.2 + '@oxc-resolver/binding-wasm32-wasi': 11.24.2 + '@oxc-resolver/binding-win32-arm64-msvc': 11.24.2 + '@oxc-resolver/binding-win32-x64-msvc': 11.24.2 p-limit@2.3.0: dependencies: @@ -13677,6 +13672,8 @@ snapshots: smol-toml@1.6.1: {} + smol-toml@1.8.0: {} + sonner@2.0.7(react-dom@19.2.7(react@19.2.7))(react@19.2.7): dependencies: react: 19.2.7 @@ -13972,8 +13969,8 @@ snapshots: tinyglobby@0.2.17: dependencies: - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 + fdir: 6.5.0(picomatch@4.0.5) + picomatch: 4.0.5 tinyrainbow@3.1.0: {} @@ -14098,7 +14095,7 @@ snapshots: typescript@6.0.3: {} - unbash@3.0.0: {} + unbash@4.0.10: {} unbox-primitive@1.1.0: dependencies: @@ -14224,7 +14221,7 @@ snapshots: dependencies: lightningcss: 1.32.0 picomatch: 4.0.5 - postcss: 8.5.25 + postcss: 8.5.26 rolldown: 1.1.5 tinyglobby: 0.2.17 optionalDependencies: diff --git a/src/components/charts/trend-card.tsx b/src/components/charts/trend-card.tsx index fe0e873be..63d4bbfcf 100644 --- a/src/components/charts/trend-card.tsx +++ b/src/components/charts/trend-card.tsx @@ -15,14 +15,8 @@ import { getTrendSentiment, sentimentColorClass, type TrendDirectionSentiment, - type TrendSentimentDirection, } from "@/lib/insights/trend-sentiment"; -// v1.9.0 — the metric-aware sentiment mapping moved to a shared module so the -// range-delta caption paints the same colour for the same signal. Re-exported -// here so existing `@/components/charts/trend-card` importers keep the type. -export type { TrendDirectionSentiment, TrendSentimentDirection }; - interface SecondaryMetric { /** Sub-value latest reading (e.g. diastolic when latest is systolic). */ latest: number | null; diff --git a/src/components/data-list/index.ts b/src/components/data-list/index.ts index e57f9faa4..5ae4cd35f 100644 --- a/src/components/data-list/index.ts +++ b/src/components/data-list/index.ts @@ -16,5 +16,4 @@ export { selectAllState, selectedIdsOnPage, selectedCountOnPage, - type SelectAllState, } from "./selection"; diff --git a/src/components/insights/coach-panel/use-coach.ts b/src/components/insights/coach-panel/use-coach.ts index 532d58f60..a08d4a325 100644 --- a/src/components/insights/coach-panel/use-coach.ts +++ b/src/components/insights/coach-panel/use-coach.ts @@ -13,7 +13,6 @@ import { toast } from "sonner"; import type { CoachConversationAttachmentDTO, CoachConversationDetailDTO, - CoachConversationDTO, CoachConversationsPage, CoachProvenance, CoachScope, @@ -1118,7 +1117,6 @@ export function useSendCoachMessage(opts: UseSendCoachMessageOptions = {}) { // `@/lib/ai/coach/types` directly. export type { CoachConversationAttachmentDTO, - CoachConversationDTO, CoachConversationDetailDTO, CoachProvenance, CoachSuggestion, diff --git a/src/components/insights/workout-detail/index.ts b/src/components/insights/workout-detail/index.ts index 1b77f8345..ed2a654a1 100644 --- a/src/components/insights/workout-detail/index.ts +++ b/src/components/insights/workout-detail/index.ts @@ -11,7 +11,4 @@ export { WorkoutDetailZones } from "./zones"; export { WorkoutDetailRoute } from "./route-map"; export { WorkoutDetailSplits } from "./splits"; export { WorkoutDetailDayContext } from "./day-context"; -export { - WorkoutInsightCard, - type WorkoutActivityInsightData, -} from "./insight-slot"; +export { WorkoutInsightCard } from "./insight-slot"; diff --git a/src/components/medications/wizard/wizard-payload.ts b/src/components/medications/wizard/wizard-payload.ts index 7413270a9..55ca08a23 100644 --- a/src/components/medications/wizard/wizard-payload.ts +++ b/src/components/medications/wizard/wizard-payload.ts @@ -44,10 +44,7 @@ */ import { encodeCadence } from "@/components/medications/scheduling/cadence-picker"; -import { - dateToIsoString, - isoStringToDate, -} from "@/components/medications/scheduling/course-window-row"; +import { dateToIsoString } from "@/components/medications/scheduling/course-window-row"; import { type CadenceKind, type CadenceSubControls, @@ -1277,4 +1274,4 @@ function subControlsFromRrule(rrule: string): CadenceSubControls { // Re-exports — convenience for the dialog and tests // ──────────────────────────────────────────────────────────────────── -export { dateToIsoString, isoStringToDate }; +export { dateToIsoString }; diff --git a/src/lib/ai/coach/about-me.ts b/src/lib/ai/coach/about-me.ts index 24c514cc8..31cf2ffa7 100644 --- a/src/lib/ai/coach/about-me.ts +++ b/src/lib/ai/coach/about-me.ts @@ -42,8 +42,6 @@ import { } from "@/lib/validations/health-profile-facts"; import { decryptHealthProfileFactValue } from "@/lib/profile/health-facts"; -export { ABOUT_ME_MAX_CHARS } from "@/lib/validations/about-me"; - export interface SelfContext { aboutMe: string | null; conditions: string | null; diff --git a/src/lib/ai/coach/medication-extract-prompt.ts b/src/lib/ai/coach/medication-extract-prompt.ts index c5858d08c..bbabd616c 100644 --- a/src/lib/ai/coach/medication-extract-prompt.ts +++ b/src/lib/ai/coach/medication-extract-prompt.ts @@ -29,11 +29,7 @@ import { z } from "zod/v4"; -import { - WEEKDAY_TOKENS, - type CadenceKind, - type WeekdayToken, -} from "@/components/medications/scheduling/types"; +import { WEEKDAY_TOKENS } from "@/components/medications/scheduling/types"; /** Closed list — matches the design-synthesis dose-unit dropdown. */ export const DOSE_UNITS = [ @@ -90,13 +86,6 @@ export type MedicationExtractionResult = z.infer< typeof medicationExtractionSchema >; -/** - * Re-export the wizard `CadenceKind` + `WeekdayToken` types so callers - * (the route, the tests) import a single module rather than chasing - * the wizard types directory. - */ -export type { CadenceKind, WeekdayToken }; - /** * Build the system prompt. Same shape across calls — the model only * sees the user's free text via `buildUserPrompt()`. The system prompt diff --git a/src/lib/ai/coach/snapshot-freshness.ts b/src/lib/ai/coach/snapshot-freshness.ts index 7f27fe8e7..09cf91dc8 100644 --- a/src/lib/ai/coach/snapshot-freshness.ts +++ b/src/lib/ai/coach/snapshot-freshness.ts @@ -26,10 +26,7 @@ * * Pure and in-place — the snapshot is a plain record by the time it gets here. */ -import { - TODAY_CLAIM_MAX_AGE_DAYS, - isCurrentForTodayClaim, -} from "@/lib/insights/measurement-freshness"; +import { isCurrentForTodayClaim } from "@/lib/insights/measurement-freshness"; /** When a metric block's series actually ends, and what may be said about it. */ export interface SnapshotAsOf { @@ -187,5 +184,3 @@ export function annotateSnapshotFreshness(snapshot: Record): { } return { stale, coarseWithheld }; } - -export { TODAY_CLAIM_MAX_AGE_DAYS }; diff --git a/src/lib/ai/coach/tools/index.ts b/src/lib/ai/coach/tools/index.ts index 55d8b8a1f..6c3972b28 100644 --- a/src/lib/ai/coach/tools/index.ts +++ b/src/lib/ai/coach/tools/index.ts @@ -6,28 +6,12 @@ * figures, and a bounded loop that executes them. The legacy snapshot path * stays alive as the no-tools fallback (per-provider `supportsTools`). */ -export { - COACH_TOOL_DEFS, - COACH_TOOL_NAMES, - isCoachToolName, - type CoachToolName, -} from "./definitions"; -export { - executeCoachTool, - type CoachToolResult, - type CoachToolTrace, -} from "./executor"; +export { COACH_TOOL_DEFS } from "./definitions"; +export type { CoachToolTrace } from "./executor"; export { buildCoachDataInventory, renderDataInventory, renderFocusHint, - type CoachDataInventory, - type InventoryEntry, } from "./inventory"; export { buildToolModeAddendum } from "./system-addendum"; -export { - runCoachToolLoop, - MAX_ROUNDS, - HARD_CAP, - type CoachToolLoopResult, -} from "./loop"; +export { runCoachToolLoop, MAX_ROUNDS } from "./loop"; diff --git a/src/lib/analytics/score/index.ts b/src/lib/analytics/score/index.ts index b06e0e637..a044997c5 100644 --- a/src/lib/analytics/score/index.ts +++ b/src/lib/analytics/score/index.ts @@ -11,7 +11,6 @@ import { SCORE_PILLAR_DOMAINS, SCORE_PILLAR_IDS, SCORE_VERSION, - type CompositeValue, type HealthScoreReport, type PillarInputs, type ScorePillarId, @@ -95,5 +94,5 @@ export function computeHealthScore( }; } -export type { CompositeValue, HealthScoreReport }; +export type { HealthScoreReport }; export * from "./types"; diff --git a/src/lib/auth/invite-token.ts b/src/lib/auth/invite-token.ts index ecc15be0b..2916cb20d 100644 --- a/src/lib/auth/invite-token.ts +++ b/src/lib/auth/invite-token.ts @@ -20,8 +20,6 @@ import { randomBytes } from "node:crypto"; import { prisma } from "@/lib/db"; import { hashToken } from "@/lib/auth/hmac"; -export { INVITE_MAX_TTL_DAYS } from "@/lib/validations/invite"; - /** Raw-token prefix — distinct from `hlk_` (API) and `hlr_` (refresh). */ export const INVITE_TOKEN_PREFIX = "hlv_"; diff --git a/src/lib/auth/oidc-native-handoff.ts b/src/lib/auth/oidc-native-handoff.ts index 35fec970c..c2d9076cc 100644 --- a/src/lib/auth/oidc-native-handoff.ts +++ b/src/lib/auth/oidc-native-handoff.ts @@ -44,13 +44,7 @@ export function buildNativeCallbackUrl(params: Record): string { // Re-export the shared mint/consume core so the OIDC callback + token route // keep importing from here unchanged. export { - HANDOFF_CODE_PREFIX, mintNativeHandoff, consumeNativeHandoff, stampIssuedRefreshToken, } from "@/lib/auth/native-handoff"; -export type { - HandoffFlow, - MintedHandoff, - ConsumeHandoffResult, -} from "@/lib/auth/native-handoff"; diff --git a/src/lib/crypto/encryption-corpus.ts b/src/lib/crypto/encryption-corpus.ts index 4230770eb..cadeee22d 100644 --- a/src/lib/crypto/encryption-corpus.ts +++ b/src/lib/crypto/encryption-corpus.ts @@ -40,7 +40,6 @@ import { } from "@/lib/crypto"; import { ENCRYPTED_COLUMNS, - encryptedColumnKey, type EncryptedColumn, } from "@/lib/crypto/encrypted-columns"; @@ -381,5 +380,3 @@ export async function rotateCorpus( totalErrors, }; } - -export { encryptedColumnKey }; diff --git a/src/lib/cycle/custom-symptoms.ts b/src/lib/cycle/custom-symptoms.ts index 7435d731a..fcfd4bd66 100644 --- a/src/lib/cycle/custom-symptoms.ts +++ b/src/lib/cycle/custom-symptoms.ts @@ -26,10 +26,8 @@ import { CUSTOM_SYMPTOM_KEY_PREFIX } from "@/lib/cycle/custom-symptoms-shared"; export { CUSTOM_SYMPTOM_KEY_PREFIX, - CUSTOM_SYMPTOM_CATEGORY_KEY, CUSTOM_SYMPTOM_CATEGORY_ID, MAX_CUSTOM_SYMPTOMS_PER_USER, - CUSTOM_SYMPTOM_ICON_ALLOWLIST, isCustomSymptomKey, createCustomSymptomSchema, updateCustomSymptomSchema, diff --git a/src/lib/cycle/index.ts b/src/lib/cycle/index.ts index 14fac3fa0..4dc97406a 100644 --- a/src/lib/cycle/index.ts +++ b/src/lib/cycle/index.ts @@ -10,25 +10,9 @@ export * from "./types"; export * from "./day-math"; export { predictCycle, - estimateCycleLength, - estimatePeriodLength, - observedPeriodLength, - detectTempShift, - detectMucusPeak, - confirmSymptothermal, - detectTemperatureTrend, - detectLhSurgeOvulation, median, mad, resolveLuteal, clampLuteal, } from "./prediction"; -export { phaseForDay, phaseSeries, type PhaseCycle } from "./phase"; -export { - resolveCycleVerdict, - type CycleVerdict, - type CycleVerdictState, - type CyclePhaseSpan, - type CycleProfileLengths, - type VerdictCalendarDay, -} from "./verdict"; +export { phaseForDay, type PhaseCycle } from "./phase"; diff --git a/src/lib/doctor-report-pdf-core.ts b/src/lib/doctor-report-pdf-core.ts index f5e79a422..d193958ad 100644 --- a/src/lib/doctor-report-pdf-core.ts +++ b/src/lib/doctor-report-pdf-core.ts @@ -18,7 +18,7 @@ import { isStructuredLeafId, REPORT_GROUPS, } from "./report-selection/catalogue"; -import { MEASUREMENT_TYPE_LABEL_KEYS } from "./measurements/type-label-keys"; + import { getUnitForType } from "./validations/measurement"; import { makeFormatters, @@ -166,12 +166,6 @@ export interface DoctorReportRenderOptions { includeCharts?: boolean; } -// Per-type label keys live in a lucide-free module so leaf consumers — the -// public clinician share view, this renderer — can import the map without -// dragging icon components into their graph. Re-exported here so the PDF core -// stays the single import surface its existing callers already use. -export { MEASUREMENT_TYPE_LABEL_KEYS }; - export const DOCTOR_REPORT_TYPE_UNIT_KEYS: Record = { WEIGHT: "kg", BLOOD_PRESSURE_SYS: "mmHg", diff --git a/src/lib/fhir/lab-loinc.ts b/src/lib/fhir/lab-loinc.ts index 0e748d0f9..d9e883349 100644 --- a/src/lib/fhir/lab-loinc.ts +++ b/src/lib/fhir/lab-loinc.ts @@ -37,12 +37,9 @@ * to show a biomarker's name resolves it through the labs catalog instead. */ -import { LOINC_SYSTEM, UCUM_SYSTEM } from "@/lib/fhir/loinc-map"; import { localisedValues } from "@/lib/i18n/shared-resolve"; import { stripDiacritics } from "@/lib/i18n/fold-for-match"; -export { LOINC_SYSTEM, UCUM_SYSTEM }; - /** A curated biomarker → LOINC + canonical-UCUM entry. */ export interface LabLoincMapping { loinc: string; diff --git a/src/lib/insights/derived/coach-read.ts b/src/lib/insights/derived/coach-read.ts index 346df7bae..7467e1f98 100644 --- a/src/lib/insights/derived/coach-read.ts +++ b/src/lib/insights/derived/coach-read.ts @@ -39,12 +39,7 @@ import { type CoachReadStripData, } from "@/lib/insights/derived/coach-read-shape"; -export type { - CoachReadBaseline, - CoachReadDriver, - CoachReadStripData, - CoachReadBaselinePlacement, -} from "@/lib/insights/derived/coach-read-shape"; +export type { CoachReadStripData } from "@/lib/insights/derived/coach-read-shape"; /** * Read the latest reading for `(userId, type)` — the value the strip places diff --git a/src/lib/insights/derived/index.ts b/src/lib/insights/derived/index.ts index 3197156a9..9d5026d18 100644 --- a/src/lib/insights/derived/index.ts +++ b/src/lib/insights/derived/index.ts @@ -1,185 +1,47 @@ /** * v1.10.0 — public barrel for the derived-metrics layer. * - * The one module every consumer imports from. Append-only per wave — - * Wave 1 exports the foundation (`Derived` + coverage builders + - * registry + norms + the flagship baseline engine + the route - * dispatcher); W2/W3 append their per-metric engines (`fitness-age`, - * `vascular-age`, `sleep-score`, `readiness`) here. + * Carries the cross-cutting surface: the registry (which metrics exist and + * how they are archetyped), the route dispatcher, the baseline profile + * loader, and the handful of per-metric compute engines and value shapes + * that consumers outside this directory actually reach for. * - * Re-exports the client-safe types/coverage builders and the - * server-only compute engines from one place; consumers import only what - * they need. (A `"use client"` component must value-import only from - * `./types` + `./coverage` + `./registry` — those are server-import-free. - * The route + server consumers may import the engines below.) + * It is deliberately NOT a mirror of every export under `./`. The per-metric + * scoring helpers, their `*Opts` / `*Band` types and the sub-score weights are + * imported from their concrete module (`./sleep-score`, `./trajectory`, …) by + * the code and tests that use them; re-exporting them here only produced lines + * nothing imported. Add a line below when an outside consumer appears, not in + * anticipation of one. + * + * A `"use client"` component must value-import only from `./types`, + * `./coverage` and `./registry` — those are server-import-free. The route and + * server consumers may import the engines below. */ -// ── client-safe contract (types + pure builders + metadata) ────────── -export type { - Derived, - DerivedOk, - DerivedInsufficient, - DerivedCoverage, - DerivedConfidence, - DerivedConfidenceBand, - DerivedProvenance, - DerivedProvenanceSource, -} from "./types"; +// ── client-safe contract ───────────────────────────────────────────── export { isDerivedOk } from "./types"; -export { - deriveCoverage, - buildOk, - buildInsufficient, - scoreToBand, - nowProvenanceTimestamp, -} from "./coverage"; -export type { DeriveCoverageArgs } from "./coverage"; - export { DERIVED_METRIC_IDS, - VITALS_BASELINE_TYPES, TRAJECTORY_TYPES, - SAME_TIME_BASELINE_TYPES, - SAME_TIME_BASELINE_WINDOW_DAYS, - SAME_TIME_BASELINE_MIN_HISTORY_DAYS, isDerivedMetricId, - getDerivedMetricMeta, - isVitalsBaselineType, - isTrajectoryType, - isSameTimeBaselineType, } from "./registry"; -export type { - DerivedMetricId, - DerivedMetricMeta, - DerivedArchetype, -} from "./registry"; - -export { - lookupNormalRange, - hasSharpenedNorm, - predictSixMinuteWalkDistance, -} from "./norms"; -export type { NormRange, NormSex } from "./norms"; +export type { DerivedMetricId } from "./registry"; // ── server-only compute engines (do NOT value-import from a client component) ── -export { - computeVitalsBaseline, - loadBaselineProfile, - buildBaselineBand, - median, - medianAbsoluteDeviation, -} from "./baseline"; -export type { - VitalsBaselineValue, - VitalsBaselineOpts, - BaselineProfile, -} from "./baseline"; +export { loadBaselineProfile } from "./baseline"; +export type { BaselineProfile } from "./baseline"; export { computeDerivedMetric } from "./dispatch"; -export type { DerivedComputeArgs } from "./dispatch"; -// ── W2b vitals tier: passthrough re-frames + derived bands ─────────── -export { - computeFitnessAge, - placeVo2Band, - fitnessAgeDeltaYears, -} from "./fitness-age"; -export type { FitnessAgeValue, FitnessBand } from "./fitness-age"; +export type { SleepScoreValue } from "./sleep-score"; -export { - computeSixMinuteWalkBand, - placeSixMinuteWalkBand, -} from "./six-minute-walk"; -export type { SixMinuteWalkValue, SixMinuteWalkBand } from "./six-minute-walk"; +export { computeReadiness } from "./readiness"; +export type { ReadinessValue, ReadinessComponentKey } from "./readiness"; -export { computeVascularAgeDelta, placeVascularBand } from "./vascular-age"; -export type { VascularAgeDeltaValue, VascularBand } from "./vascular-age"; +export { computeCoincidentDeviation } from "./coincident-deviation"; -export { computeHrvBalance, placeHrvBalance } from "./hrv-balance"; -export type { HrvBalanceValue, HrvBalanceBand } from "./hrv-balance"; +export type { WellnessScoreValue } from "./wellness-scores"; -export { computeBmi, classifyBmi } from "./bmi"; -export type { BmiValue, BmiBand, BmiCategory } from "./bmi"; -// ── W3 composites (server-only compute engines) ────────────────────── -export { - computeSleepScore, - blendSleepSubScores, - reconstructNights, - sleepNeedMinutes, - scoreSufficiency, - scoreEfficiency, - scoreComposition, - scoreConsistency, - scoreTiming, - SLEEP_SUBSCORE_WEIGHTS, -} from "./sleep-score"; -export type { - SleepScoreValue, - SleepScoreOpts, - SleepSubScore, - SleepSubScoreKey, - NightSummary, -} from "./sleep-score"; - -export { - computeReadiness, - blendReadinessComponents, - scoreDeviation, - READINESS_WEIGHTS, - READINESS_MIN_COMPONENTS, -} from "./readiness"; -export type { - ReadinessValue, - ReadinessOpts, - ReadinessComponent, - ReadinessComponentKey, -} from "./readiness"; - -export { - computeCoincidentDeviation, - classifyDeviation, - COINCIDENT_FIRE_THRESHOLD, - COINCIDENT_MIN_BANDS, -} from "./coincident-deviation"; -export type { - CoincidentDeviationValue, - CoincidentDeviationOpts, - VitalDeviation, -} from "./coincident-deviation"; - -// ── persisted nightly wellness scores (passthrough read) ───────────── -export { - computeWellnessScore, - bandWellnessScore, - WELLNESS_SCORE_TYPES, -} from "./wellness-scores"; -export type { - WellnessScoreValue, - WellnessScoreBand, - WellnessScoreType, - WellnessScoreOpts, -} from "./wellness-scores"; - -// ── v1.11.0 (Epic B, Pillar 3) forecasting engine (server-only) ────── -export { - computeTrajectory, - fitOls, - predictionIntervalHalfWidth, - TRAJECTORY_MIN_R2, - TRAJECTORY_MIN_HISTORY_DAYS, -} from "./trajectory"; -export type { - TrajectoryValue, - TrajectoryPoint, - TrajectoryOpts, - OlsFit, -} from "./trajectory"; - -// ── v1.34.0 same-time baseline for cumulative metrics (server-only) ── -export { computeSameTimeBaseline } from "./same-time-baseline"; -export type { - SameTimeBaselineValue, - SameTimeBaselineOpts, - SameTimeBand, -} from "./same-time-baseline"; +export { computeTrajectory } from "./trajectory"; +export type { TrajectoryValue } from "./trajectory"; diff --git a/src/lib/insights/mood-aggregates.ts b/src/lib/insights/mood-aggregates.ts index 985b998ea..f829df5f6 100644 --- a/src/lib/insights/mood-aggregates.ts +++ b/src/lib/insights/mood-aggregates.ts @@ -39,11 +39,7 @@ import { computeMoodDimensionSeries, type MoodDimensionSummary, } from "@/lib/insights/mood-dimension-series"; -export { - computeMoodDimensionSeries, - type MoodDimensionPoint, - type MoodDimensionSummary, -} from "@/lib/insights/mood-dimension-series"; +export { type MoodDimensionSummary } from "@/lib/insights/mood-dimension-series"; import { resolveUserTimezone } from "@/lib/tz/resolver"; import { annotate } from "@/lib/logging/context"; import { createCustomLabelResolver } from "@/lib/mood/custom-tags"; diff --git a/src/lib/insights/status-provider.ts b/src/lib/insights/status-provider.ts index 8f36e8a1d..f30a7b36a 100644 --- a/src/lib/insights/status-provider.ts +++ b/src/lib/insights/status-provider.ts @@ -1,6 +1,5 @@ import { resolveProvider, resolveProviderChain } from "@/lib/ai/provider"; import { - AllProvidersFailedError, runRawCompletionWithFallback, type ProviderChainResolved, } from "@/lib/ai/provider-runner"; @@ -299,5 +298,3 @@ export async function runStatusCompletion( tokensUsed: result.tokensUsed ?? null, }; } - -export { AllProvidersFailedError }; diff --git a/src/lib/links/index.ts b/src/lib/links/index.ts index 3de5c1e27..e3f340e04 100644 --- a/src/lib/links/index.ts +++ b/src/lib/links/index.ts @@ -41,9 +41,5 @@ export { listTargets, listTargetsBySource, listDistinctTargets, - type LinkSourceKind, type LinkTargetKind, - type LinkRequest, - type LinkResult, - type LinkedTarget, } from "@/lib/links/link-service"; diff --git a/src/lib/mcp/index.ts b/src/lib/mcp/index.ts index 1302cec27..7a734c5eb 100644 --- a/src/lib/mcp/index.ts +++ b/src/lib/mcp/index.ts @@ -1,47 +1,17 @@ /** * HealthLog MCP server — barrel. * - * A read-only-by-default Model Context Protocol surface that re-exports + * A read-only-by-default Model Context Protocol surface that exposes * HealthLog's existing server-authoritative read paths over the MCP wire, so a * user can query their own health data from any MCP-capable assistant. The tool - * / resource layer here is transport-agnostic; transports (stdio now, remote - * `/mcp` later) attach to `createMcpServer(ctx)`. + * / resource layer under this directory is transport-agnostic; transports + * attach to `createMcpServer(ctx)`. + * + * The barrel carries only what the remote `/mcp` transport route needs. The + * tool, resource, prompt and write registries are imported from their concrete + * module by `./server` and by their own tests — mirroring them here produced + * lines nothing imported. */ -export { createMcpServer, MCP_SERVER_NAME, MCP_SERVER_VERSION } from "./server"; -export { resolveMcpAuthContext, type McpAuthContext } from "./auth"; -export { MCP_TOOLS, MCP_TOOL_NAMES, type McpToolDefinition } from "./tools"; -export { MCP_WRITE_TOOLS, MCP_WRITE_TOOL_NAMES } from "./write-tools"; -export { - logMcpMeasurement, - logMcpMood, - type McpMeasurementResult, - type McpMoodResult, -} from "./writes"; -export { - MCP_RESOURCES, - MCP_RESOURCE_URIS, - type McpResourceDefinition, -} from "./resources"; -export { - MCP_PROMPTS, - MCP_PROMPT_NAMES, - type McpPromptDefinition, - type McpPromptResult, - type McpPromptMessage, -} from "./prompts"; -export { - getCorrelation, - compareMetric, - getMetricBaseline, - detectChangepoints, - resolveRichMetric, - type RichMetric, -} from "./rich-reads"; -export { - SCOPE_HEALTH_READ, - SCOPE_HEALTH_WRITE, - SCOPE_WILDCARD, - tokenAllowsRead, - tokenAllowsWrite, - sessionBinding, -} from "./scopes"; +export { createMcpServer } from "./server"; +export { resolveMcpAuthContext } from "./auth"; +export { SCOPE_HEALTH_READ } from "./scopes"; diff --git a/src/lib/record-settings/index.ts b/src/lib/record-settings/index.ts index f479498fb..525bae0a7 100644 --- a/src/lib/record-settings/index.ts +++ b/src/lib/record-settings/index.ts @@ -1,17 +1,9 @@ -export { - assertRecordSettingsAccess, - resolveGuardianRecordSettingsAccess, - type RecordSettingsAccess, -} from "./access"; -export { toRecordSettingsDto, type RecordSettingsDto } from "./dto"; +export { resolveGuardianRecordSettingsAccess } from "./access"; +export { toRecordSettingsDto } from "./dto"; export { resolveManagedIntegrationState } from "./integrations"; export { classifySettingsDestination, - isGuardianSettingsWriteAllowed, isManageDelegateSettingsDestination, - SETTINGS_DESTINATION_INVENTORY, - type SettingsDestinationClassification, - type SettingsDestinationKind, } from "./classification"; export { isManagedRecordSettingsFamily, @@ -22,6 +14,5 @@ export { parseManagedRecordSettingsPatch, safeParseManagedRecordSettingsPatch, type ManagedRecordSettingsFamily, - type ManagedRecordSettingsPatch, } from "./configuration"; export { assertRecordSettingsResponseForRecord } from "./response"; diff --git a/src/lib/report-selection/saved-profile.ts b/src/lib/report-selection/saved-profile.ts index 987c2c02c..c23988809 100644 --- a/src/lib/report-selection/saved-profile.ts +++ b/src/lib/report-selection/saved-profile.ts @@ -26,13 +26,6 @@ import { type ReportSelection, } from "./selection"; -export { - savedReportProfileSchema, - parseSavedProfile, - SAVED_PROFILE_FALLBACK, - type SavedReportProfile, -} from "./profile-shape"; - /** * Resolve the owner's saved selection. * diff --git a/src/lib/report-selection/template.ts b/src/lib/report-selection/template.ts index 0a2cc953f..c5246cc08 100644 --- a/src/lib/report-selection/template.ts +++ b/src/lib/report-selection/template.ts @@ -11,7 +11,7 @@ * The template intersects the fenced tier at zero leaves, and * `catalogue-guard.test.ts` fails the build if that stops being true. */ -import { SENSITIVE_LEAF_IDS, type ReportLeafId } from "./catalogue"; +import { type ReportLeafId } from "./catalogue"; /** * Identity and insurer (the cover page a practice files the document under), @@ -59,6 +59,3 @@ export function standardTemplateFor( const hidden = new Set(hiddenLeaves); return STANDARD_TEMPLATE_LEAVES.filter((leaf) => !hidden.has(leaf)); } - -/** Exported so the purity guard reads the same set the panel does. */ -export const SENSITIVE_LEAVES = SENSITIVE_LEAF_IDS; diff --git a/src/lib/tz/resolver.ts b/src/lib/tz/resolver.ts index a51feb7a8..1835432d5 100644 --- a/src/lib/tz/resolver.ts +++ b/src/lib/tz/resolver.ts @@ -49,7 +49,6 @@ export { formatInUserTz, userDayKey, hourInTz, - type FormatInUserTzShape, } from "./format"; const BERLIN_DAY_FORMATTER = new Intl.DateTimeFormat("en-US", { diff --git a/src/lib/validations/coach-reminder.ts b/src/lib/validations/coach-reminder.ts index 9a1eccccb..1e0d4eb91 100644 --- a/src/lib/validations/coach-reminder.ts +++ b/src/lib/validations/coach-reminder.ts @@ -19,7 +19,6 @@ import { REMINDER_METRIC_MAX_CHARS, } from "@/lib/ai/coach/reminders"; import { - SUGGESTED_ACTION_TYPES, CHECKUP_LABEL_MAX_CHARS, ACTION_NOTE_MAX_CHARS, ACTION_METRIC_MAX_CHARS, @@ -133,6 +132,3 @@ export const coachSuggestedActionSchema = z export type CoachSuggestedActionInput = z.infer< typeof coachSuggestedActionSchema >; - -/** Stable list of confirmable action types (mirrors the lib allowlist). */ -export const COACH_SUGGESTED_ACTION_TYPES = SUGGESTED_ACTION_TYPES; diff --git a/src/lib/validations/labs.ts b/src/lib/validations/labs.ts index 8a1b7c6bc..d7c2ea3c3 100644 --- a/src/lib/validations/labs.ts +++ b/src/lib/validations/labs.ts @@ -307,10 +307,7 @@ export type ListLabResultsInput = z.infer; * implementation. Re-exported here for the existing import sites. */ export { - classifyAgainstEffectiveRange, classifyReferenceRange, - formatReferenceRange, - resolveEffectiveReferenceRange, type EffectiveReferenceRange, type ReferenceRangeOrigin, type ReferenceRangeStatus,