diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -119,8 +119,8 @@ specifier: 1.2.27 version: 1.2.27 '@orpc/contract': - specifier: 1.13.4 - version: 1.13.4 + specifier: 1.13.9 + version: 1.13.9 '@pinia/colada': specifier: 0.19.1 version: 0.19.1(pinia@3.0.3(typescript@5.9.3)(vue@3.5.25(typescript@5.9.3)))(vue@3.5.25(typescript@5.9.3)) @@ -183,8 +183,8 @@ specifier: 2.0.0-alpha.16 version: 2.0.0-alpha.16(patch_hash=828e6d2347338f051e3210f9d54e3a79212e9afb26e6b8a746d7ad5f58e9385b)(@types/node@25.2.1)(axios@1.13.4)(fuse.js@7.1.0)(jiti@2.6.1)(jwt-decode@4.0.0)(less@4.4.2)(oxc-minify@0.110.0)(postcss@8.5.6)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) vitepress-plugin-llms: - specifier: 1.11.0 - version: 1.11.0 + specifier: 1.12.0 + version: 1.12.0 vue: specifier: 3.5.25 version: 3.5.25(typescript@5.9.3) @@ -1312,7 +1312,7 @@ version: 1.8.0 nuxt: specifier: '>=3.0.0' - version: 3.14.1592(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.1)(@types/node@25.2.1)(db0@0.3.2)(encoding@0.1.13)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.7.0)(less@4.4.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-rc.9)(rollup@3.29.5)(sass@1.97.1)(terser@5.44.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue-tsc@3.2.4(typescript@5.9.3)) + version: 3.14.1592(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.1)(@types/node@25.2.1)(db0@0.3.4)(encoding@0.1.13)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.9.2)(less@4.4.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-rc.9)(rollup@3.29.5)(sass@1.97.1)(terser@5.44.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue-tsc@3.2.4(typescript@5.9.3)) vue: specifier: '>=3.5.13' version: 3.5.13(typescript@5.9.3) @@ -1444,7 +1444,7 @@ version: 1.14.3 nuxt: specifier: 3.14.1592 - version: 3.14.1592(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.1)(@types/node@25.2.1)(db0@0.3.4)(encoding@0.1.13)(eslint@9.39.1(jiti@2.6.1))(ioredis@5.9.2)(less@4.4.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-rc.9)(rollup@4.56.0)(sass@1.97.1)(terser@5.44.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue-tsc@3.2.4(typescript@5.9.3)) + version: 3.14.1592(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.1)(@types/node@25.2.1)(db0@0.3.2)(encoding@0.1.13)(eslint@9.39.1(jiti@2.6.1))(ioredis@5.7.0)(less@4.4.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-rc.9)(rollup@4.56.0)(sass@1.97.1)(terser@5.44.1)(typescript@5.9.3)(vite@5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1))(vue-tsc@3.2.4(typescript@5.9.3)) ofetch: specifier: 1.5.1 version: 1.5.1 @@ -1593,8 +1593,8 @@ specifier: workspace:* version: link:../../../openapi-ts '@orpc/contract': - specifier: 1.13.4 - version: 1.13.4 + specifier: 1.13.9 + version: 1.13.9 typescript: specifier: 5.9.3 version: 5.9.3 @@ -2886,14 +2886,14 @@ resolution: {integrity: sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==} engines: {node: '>=14.17.0'} - '@docsearch/css@4.5.3': - resolution: {integrity: sha512-kUpHaxn0AgI3LQfyzTYkNUuaFY4uEz/Ym9/N/FvyDE+PzSgZsCyDH9jE49B6N6f1eLCm9Yp64J9wENd6vypdxA==} + '@docsearch/css@4.6.0': + resolution: {integrity: sha512-YlcAimkXclvqta47g47efzCM5CFxDwv2ClkDfEs/fC/Ak0OxPH2b3czwa4o8O1TRBf+ujFF2RiUwszz2fPVNJQ==} - '@docsearch/js@4.5.3': - resolution: {integrity: sha512-rcBiUMCXbZLqrLIT6F6FDcrG/tyvM2WM0zum6NPbIiQNDQxbSgmNc+/bToS0rxBsXaxiU64esiWoS02WqrWLsg==} + '@docsearch/js@4.6.0': + resolution: {integrity: sha512-9/rbgkm/BgTq46cwxIohvSAz3koOFjnPpg0mwkJItAfzKbQIj+310PvwtgUY1YITDuGCag6yOL50GW2DBkaaBw==} - '@docsearch/sidepanel-js@4.5.3': - resolution: {integrity: sha512-DmcZYc1ZMMcabtKrCU2RIf1z09LwazKCyoPFU/ijJiBg2LdqMLmkyDKHGy1OIYEyUx4ok5RIbkVGaRfD55BqZQ==} + '@docsearch/sidepanel-js@4.6.0': + resolution: {integrity: sha512-lFT5KLwlzUmpoGArCScNoK41l9a22JYsEPwBzMrz+/ILVR5Ax87UphCuiyDFQWEvEmbwzn/kJx5W/O5BUlN1Rw==} '@dxup/nuxt@0.3.2': resolution: {integrity: sha512-2f2usP4oLNsIGjPprvABe3f3GWuIhIDp0169pGLFxTDRI5A4d4sBbGpR+tD9bGZCT+1Btb6Q2GKlyv3LkDCW5g==} @@ -4395,10 +4395,6 @@ resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} engines: {node: 20 || >=22} - '@isaacs/brace-expansion@5.0.0': - resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} - engines: {node: 20 || >=22} - '@isaacs/brace-expansion@5.0.1': resolution: {integrity: sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==} engines: {node: 20 || >=22} @@ -5152,28 +5148,28 @@ '@opencode-ai/sdk@1.2.27': resolution: {integrity: sha512-Wk0o/I+Fo+wE3zgvlJDs8Fb67KlKqX0PrV8dK5adSDkANq6r4Z25zXJg2iOir+a8ntg3rAcpel1OY4FV/TwRUA==} - '@orpc/client@1.13.4': - resolution: {integrity: sha512-s13GPMeoooJc5Th2EaYT5HMFtWG8S03DUVytYfJv8pIhP87RYKl94w52A36denH6r/B4LaAgBeC9nTAOslK+Og==} + '@orpc/client@1.13.9': + resolution: {integrity: sha512-RmD2HDgmGgF6zgHHdybE4zH6QJoHjC+/C3n56yLf+fmWbiZtwnOUETgGCroY6S8aK2fpy6hJ3wZaJUjfWVuGHg==} - '@orpc/contract@1.13.4': - resolution: {integrity: sha512-TIxyaF67uOlihCRcasjHZxguZpbqfNK7aMrDLnhoufmQBE4OKvguNzmrOFHgsuM0OXoopX0Nuhun1ccaxKP10A==} + '@orpc/contract@1.13.9': + resolution: {integrity: sha512-0zxMyF82pxE8DwHzarCsCtOHQK96PE23qubMMBkxkP0XTtLJ7f8aYhrG8F16pNApypmTHiRlQlqNX8VXNViMqQ==} - '@orpc/shared@1.13.4': - resolution: {integrity: sha512-TYt9rLG/BUkNQBeQ6C1tEiHS/Seb8OojHgj9GlvqyjHJhMZx5qjsIyTW6RqLPZJ4U2vgK6x4Her36+tlFCKJug==} + '@orpc/shared@1.13.9': + resolution: {integrity: sha512-gpMY2e9jDsSyikh4DjBCO2Cs0wGj2I6xo2juIcmogYK5ecsTGO/U5huIftQn+2NUMk1cItwmykJBwc4pqHWVHw==} peerDependencies: '@opentelemetry/api': '>=1.9.0' peerDependenciesMeta: '@opentelemetry/api': optional: true - '@orpc/standard-server-fetch@1.13.4': - resolution: {integrity: sha512-/zmKwnuxfAXbppJpgr1CMnQX3ptPlYcDzLz1TaVzz9VG/Xg58Ov3YhabS2Oi1utLVhy5t4kaCppUducAvoKN+A==} + '@orpc/standard-server-fetch@1.13.9': + resolution: {integrity: sha512-/dJmHO+EVONyvmX3CFZkRjlRHeBfq0+6nnpFIVueGo4fNUbtQc+qurKEtpQqPxL/b7GSehskNH21XKLE0IE0gQ==} - '@orpc/standard-server-peer@1.13.4': - resolution: {integrity: sha512-UfqnTLqevjCKUk4cmImOG8cQUwANpV1dp9e9u2O1ki6BRBsg/zlXFg6G2N6wP0zr9ayIiO1d2qJdH55yl/1BNw==} + '@orpc/standard-server-peer@1.13.9': + resolution: {integrity: sha512-r8hSykxNIKwXSMuLYWBxQx1c3DU8b6nU8V76DZhtwC5g1SLYIzw+dzT/EgHplOfmsFeyodiEDXXX1k/twRLuzw==} - '@orpc/standard-server@1.13.4': - resolution: {integrity: sha512-ZOzgfVp6XUg+wVYw+gqesfRfGPtQbnBIrIiSnFMtZF+6ncmFJeF2Shc4RI2Guqc0Qz25juy8Ogo4tX3YqysOcg==} + '@orpc/standard-server@1.13.9': + resolution: {integrity: sha512-dwsky7CScgOaDBa7CBF85aPGk/3UoB4fJjitVghb/sZD0Nt+CGIeiPHMsjEgxw5rJwgawMWLI5KxFH9euAJlWw==} '@oxc-minify/binding-android-arm-eabi@0.110.0': resolution: {integrity: sha512-43fMTO8/5bMlqfOiNSZNKUzIqeLIYuB9Hr1Ohyf58B1wU11S2dPGibTXOGNaWsfgHy99eeZ1bSgeIHy/fEYqbw==} @@ -7135,26 +7131,26 @@ resolution: {integrity: sha512-OEd7RYlSwmq4zpaHPOnf+yyzWN6aON4RrA+Dd3PGo5JPBY8G5peofQpJZDwxdJJKPOvqU0C7aZ8LeL2CE2XTdA==} hasBin: true - '@shikijs/core@3.22.0': - resolution: {integrity: sha512-iAlTtSDDbJiRpvgL5ugKEATDtHdUVkqgHDm/gbD2ZS9c88mx7G1zSYjjOxp5Qa0eaW0MAQosFRmJSk354PRoQA==} + '@shikijs/core@3.23.0': + resolution: {integrity: sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA==} - '@shikijs/engine-javascript@3.22.0': - resolution: {integrity: sha512-jdKhfgW9CRtj3Tor0L7+yPwdG3CgP7W+ZEqSsojrMzCjD1e0IxIbwUMDDpYlVBlC08TACg4puwFGkZfLS+56Tw==} + '@shikijs/engine-javascript@3.23.0': + resolution: {integrity: sha512-aHt9eiGFobmWR5uqJUViySI1bHMqrAgamWE1TYSUoftkAeCCAiGawPMwM+VCadylQtF4V3VNOZ5LmfItH5f3yA==} - '@shikijs/engine-oniguruma@3.22.0': - resolution: {integrity: sha512-DyXsOG0vGtNtl7ygvabHd7Mt5EY8gCNqR9Y7Lpbbd/PbJvgWrqaKzH1JW6H6qFkuUa8aCxoiYVv8/YfFljiQxA==} + '@shikijs/engine-oniguruma@3.23.0': + resolution: {integrity: sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==} - '@shikijs/langs@3.22.0': - resolution: {integrity: sha512-x/42TfhWmp6H00T6uwVrdTJGKgNdFbrEdhaDwSR5fd5zhQ1Q46bHq9EO61SCEWJR0HY7z2HNDMaBZp8JRmKiIA==} + '@shikijs/langs@3.23.0': + resolution: {integrity: sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==} - '@shikijs/themes@3.22.0': - resolution: {integrity: sha512-o+tlOKqsr6FE4+mYJG08tfCFDS+3CG20HbldXeVoyP+cYSUxDhrFf3GPjE60U55iOkkjbpY2uC3It/eeja35/g==} + '@shikijs/themes@3.23.0': + resolution: {integrity: sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==} - '@shikijs/transformers@3.22.0': - resolution: {integrity: sha512-E7eRV7mwDBjueLF6852n2oYeJYxBq3NSsDk+uyruYAXONv4U8holGmIrT+mPRJQ1J1SNOH6L8G19KRzmBawrFw==} + '@shikijs/transformers@3.23.0': + resolution: {integrity: sha512-F9msZVxdF+krQNSdQ4V+Ja5QemeAoTQ2jxt7nJCwhDsdF1JWS3KxIQXA3lQbyKwS3J61oHRUSv4jYWv3CkaKTQ==} - '@shikijs/types@3.22.0': - resolution: {integrity: sha512-491iAekgKDBFE67z70Ok5a8KBMsQ2IJwOWw3us/7ffQkIBCyOQfm/aNwVMBUriP02QshIfgHCBSIYAl3u2eWjg==} + '@shikijs/types@3.23.0': + resolution: {integrity: sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==} '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} @@ -8328,19 +8324,19 @@ vue: optional: true - '@vueuse/core@14.1.0': - resolution: {integrity: sha512-rgBinKs07hAYyPF834mDTigH7BtPqvZ3Pryuzt1SD/lg5wEcWqvwzXXYGEDb2/cP0Sj5zSvHl3WkmMELr5kfWw==} + '@vueuse/core@14.2.1': + resolution: {integrity: sha512-3vwDzV+GDUNpdegRY6kzpLm4Igptq+GA0QkJ3W61Iv27YWwW/ufSlOfgQIpN6FZRMG0mkaz4gglJRtq5SeJyIQ==} peerDependencies: vue: ^3.5.0 - '@vueuse/integrations@14.1.0': - resolution: {integrity: sha512-eNQPdisnO9SvdydTIXnTE7c29yOsJBD/xkwEyQLdhDC/LKbqrFpXHb3uS//7NcIrQO3fWVuvMGp8dbK6mNEMCA==} + '@vueuse/integrations@14.2.1': + resolution: {integrity: sha512-2LIUpBi/67PoXJGqSDQUF0pgQWpNHh7beiA+KG2AbybcNm+pTGWT6oPGlBgUoDWmYwfeQqM/uzOHqcILpKL7nA==} peerDependencies: async-validator: ^4 axios: ^1 change-case: ^5 drauu: ^0.4 - focus-trap: ^7 + focus-trap: ^7 || ^8 fuse.js: ^7 idb-keyval: ^6 jwt-decode: ^4 @@ -8375,11 +8371,11 @@ universal-cookie: optional: true - '@vueuse/metadata@14.1.0': - resolution: {integrity: sha512-7hK4g015rWn2PhKcZ99NyT+ZD9sbwm7SGvp7k+k+rKGWnLjS/oQozoIZzWfCewSUeBmnJkIb+CNr7Zc/EyRnnA==} + '@vueuse/metadata@14.2.1': + resolution: {integrity: sha512-1ButlVtj5Sb/HDtIy1HFr1VqCP4G6Ypqt5MAo0lCgjokrk2mvQKsK2uuy0vqu/Ks+sHfuHo0B9Y9jn9xKdjZsw==} - '@vueuse/shared@14.1.0': - resolution: {integrity: sha512-EcKxtYvn6gx1F8z9J5/rsg3+lTQnvOruQd8fUecW99DCK04BkWD7z5KQ/wTAx+DazyoEE9dJt/zV8OIEQbM6kw==} + '@vueuse/shared@14.2.1': + resolution: {integrity: sha512-shTJncjV9JTI4oVNyF1FQonetYAiTBd+Qj7cY89SWbXSkx7gyhrgtEdF2ZAVWS1S3SHlaROO6F2IesJxQEkZBw==} peerDependencies: vue: ^3.5.0 @@ -8821,6 +8817,10 @@ balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + bare-events@2.6.1: resolution: {integrity: sha512-AuTJkq9XmE6Vk0FJVNq5QxETrSA/vKHarWVBG5l/JbdCL1prJemiyJqUS0jrlXO0MftuPq4m3YVYhoNc5+aE/g==} @@ -8890,6 +8890,10 @@ brace-expansion@2.0.2: resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + + brace-expansion@5.0.4: + resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==} + engines: {node: 18 || 20 || >=22} braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} @@ -11828,8 +11832,8 @@ resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} - mdast-util-from-markdown@2.0.2: - resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} + mdast-util-from-markdown@2.0.3: + resolution: {integrity: sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==} mdast-util-frontmatter@2.0.1: resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==} @@ -12029,13 +12033,13 @@ minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - minimatch@10.1.1: - resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} - engines: {node: 20 || >=22} - minimatch@10.1.2: resolution: {integrity: sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==} engines: {node: 20 || >=22} + + minimatch@10.2.4: + resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} + engines: {node: 18 || 20 || >=22} minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -12571,8 +12575,8 @@ oniguruma-parser@0.12.1: resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} - oniguruma-to-es@4.3.4: - resolution: {integrity: sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==} + oniguruma-to-es@4.3.5: + resolution: {integrity: sha512-Zjygswjpsewa0NLTsiizVuMQZbp0MDyM6lIt66OxsF21npUDlzpHi1Mgb/qhQdkb+dWFTzJmFbEWdvZgRho8eQ==} open@10.2.0: resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} @@ -13517,8 +13521,8 @@ regex-utilities@2.3.0: resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} - regex@6.0.1: - resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==} + regex@6.1.0: + resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==} regexp-tree@0.1.27: resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} @@ -13939,8 +13943,8 @@ resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} engines: {node: '>= 0.4'} - shiki@3.22.0: - resolution: {integrity: sha512-LBnhsoYEe0Eou4e1VgJACes+O6S6QC0w71fCSp5Oya79inkwkm15gQ1UF6VtQ8j/taMDh79hAB49WUk8ALQW3g==} + shiki@3.23.0: + resolution: {integrity: sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA==} side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} @@ -14516,8 +14520,8 @@ resolution: {integrity: sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==} engines: {node: '>=14.16'} - tokenx@1.2.1: - resolution: {integrity: sha512-lVhFIhR2qh3uUyUA8Ype+HGzcokUJbHmRSN1TJKOe4Y26HkawQuLiGkUCkR5LD9dx+Rtp+njrwzPL8AHHYQSYA==} + tokenx@1.3.0: + resolution: {integrity: sha512-NLdXTEZkKiO0gZuLtMoZKjCXTREXeZZt8nnnNeyoXtNZAfG/GKGSbQtLU5STspc0rMSwcA+UJfWZkbNU01iKmQ==} toml@3.0.0: resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} @@ -14706,6 +14710,10 @@ type-fest@5.4.3: resolution: {integrity: sha512-AXSAQJu79WGc79/3e9/CR77I/KQgeY1AhNvcShIH4PTcGYyC4xv6H4R4AUOwkPS5799KlVDAu8zExeCrkGquiA==} + engines: {node: '>=20'} + + type-fest@5.5.0: + resolution: {integrity: sha512-PlBfpQwiUvGViBNX84Yxwjsdhd1TUlXr6zjX7eoirtCPIr08NAmxwa+fcYBTeRQxHo9YC9wwF3m9i700sHma8g==} engines: {node: '>=20'} type-is@1.6.18: @@ -14909,8 +14917,8 @@ unist-util-visit-parents@6.0.1: resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} - unist-util-visit@5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + unist-util-visit@5.1.0: + resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} @@ -15483,8 +15491,9 @@ vite: optional: true - vitepress-plugin-llms@1.11.0: - resolution: {integrity: sha512-n6fjWzBNKy40p8cij+d2cHiC2asNW1eQKdmc06gX9VAv7vWppIoVLH/f7Ht1bK0vSpGzzW2QimvNfbfv1oCdJw==} + vitepress-plugin-llms@1.12.0: + resolution: {integrity: sha512-zuzL7a8UJuGl46le5cAy/QxKMGlpSylcsLjDDn6BYPc1u+eP3nzoQk9ne9XFBqrE7exoJlIYJELVN8HMgYlFKQ==} + engines: {node: '>=18.0.0'} vitepress@2.0.0-alpha.16: resolution: {integrity: sha512-w1nwsefDVIsje7BZr2tsKxkZutDGjG0YoQ2yxO7+a9tvYVqfljYbwj5LMYkPy8Tb7YbPwa22HtIhk62jbrvuEQ==} @@ -18021,11 +18030,11 @@ '@discoveryjs/json-ext@0.6.3': {} - '@docsearch/css@4.5.3': {} + '@docsearch/css@4.6.0': {} - '@docsearch/js@4.5.3': {} + '@docsearch/js@4.6.0': {} - '@docsearch/sidepanel-js@4.5.3': {} + '@docsearch/sidepanel-js@4.6.0': {} '@dxup/nuxt@0.3.2(magicast@0.5.2)': dependencies: @@ -19122,10 +19131,6 @@ '@isaacs/balanced-match@4.0.1': {} - '@isaacs/brace-expansion@5.0.0': - dependencies: - '@isaacs/balanced-match': 4.0.1 - '@isaacs/brace-expansion@5.0.1': dependencies: '@isaacs/balanced-match': 4.0.1 @@ -19798,6 +19803,15 @@ '@nuxt/devalue@2.0.2': {} + '@nuxt/devtools-kit@1.7.0(magicast@0.3.5)(vite@5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1))': + dependencies: + '@nuxt/kit': 3.21.0(magicast@0.3.5) + '@nuxt/schema': 3.16.2 + execa: 7.2.0 + vite: 5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1) + transitivePeerDependencies: + - magicast + '@nuxt/devtools-kit@1.7.0(magicast@0.3.5)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))': dependencies: '@nuxt/kit': 3.21.0(magicast@0.3.5) @@ -19885,6 +19899,53 @@ vite: 7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vite-plugin-inspect: 0.8.9(@nuxt/kit@3.21.0(magicast@0.3.5))(rollup@3.29.5)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) vite-plugin-vue-inspector: 5.3.2(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + which: 3.0.1 + ws: 8.18.3 + transitivePeerDependencies: + - bufferutil + - rollup + - supports-color + - utf-8-validate + - vue + + '@nuxt/devtools@1.7.0(rollup@4.56.0)(vite@5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1))(vue@3.5.25(typescript@5.9.3))': + dependencies: + '@antfu/utils': 0.7.10 + '@nuxt/devtools-kit': 1.7.0(magicast@0.3.5)(vite@5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)) + '@nuxt/devtools-wizard': 1.7.0 + '@nuxt/kit': 3.21.0(magicast@0.3.5) + '@vue/devtools-core': 7.6.8(vite@5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1))(vue@3.5.25(typescript@5.9.3)) + '@vue/devtools-kit': 7.6.8 + birpc: 0.2.19 + consola: 3.4.2 + cronstrue: 2.59.0 + destr: 2.0.5 + error-stack-parser-es: 0.1.5 + execa: 7.2.0 + fast-npm-meta: 0.2.2 + flatted: 3.3.3 + get-port-please: 3.2.0 + hookable: 5.5.3 + image-meta: 0.2.1 + is-installed-globally: 1.0.0 + launch-editor: 2.11.1 + local-pkg: 0.5.1 + magicast: 0.3.5 + nypm: 0.4.1 + ohash: 1.1.6 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + pkg-types: 1.3.1 + rc9: 2.1.2 + scule: 1.3.0 + semver: 7.7.3 + simple-git: 3.28.0 + sirv: 3.0.2 + tinyglobby: 0.2.15 + unimport: 3.14.6(rollup@4.56.0) + vite: 5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1) + vite-plugin-inspect: 0.8.9(@nuxt/kit@3.21.0(magicast@0.3.5))(rollup@4.56.0)(vite@5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)) + vite-plugin-vue-inspector: 5.3.2(vite@5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)) which: 3.0.1 ws: 8.18.3 transitivePeerDependencies: @@ -20601,46 +20662,46 @@ '@opencode-ai/sdk@1.2.27': {} - '@orpc/client@1.13.4': + '@orpc/client@1.13.9': dependencies: - '@orpc/shared': 1.13.4 - '@orpc/standard-server': 1.13.4 - '@orpc/standard-server-fetch': 1.13.4 - '@orpc/standard-server-peer': 1.13.4 + '@orpc/shared': 1.13.9 + '@orpc/standard-server': 1.13.9 + '@orpc/standard-server-fetch': 1.13.9 + '@orpc/standard-server-peer': 1.13.9 transitivePeerDependencies: - '@opentelemetry/api' - '@orpc/contract@1.13.4': + '@orpc/contract@1.13.9': dependencies: - '@orpc/client': 1.13.4 - '@orpc/shared': 1.13.4 + '@orpc/client': 1.13.9 + '@orpc/shared': 1.13.9 '@standard-schema/spec': 1.1.0 openapi-types: 12.1.3 transitivePeerDependencies: - '@opentelemetry/api' - '@orpc/shared@1.13.4': + '@orpc/shared@1.13.9': dependencies: radash: 12.1.1 - type-fest: 5.4.3 + type-fest: 5.5.0 - '@orpc/standard-server-fetch@1.13.4': + '@orpc/standard-server-fetch@1.13.9': dependencies: - '@orpc/shared': 1.13.4 - '@orpc/standard-server': 1.13.4 + '@orpc/shared': 1.13.9 + '@orpc/standard-server': 1.13.9 transitivePeerDependencies: - '@opentelemetry/api' - '@orpc/standard-server-peer@1.13.4': + '@orpc/standard-server-peer@1.13.9': dependencies: - '@orpc/shared': 1.13.4 - '@orpc/standard-server': 1.13.4 + '@orpc/shared': 1.13.9 + '@orpc/standard-server': 1.13.9 transitivePeerDependencies: - '@opentelemetry/api' - '@orpc/standard-server@1.13.4': + '@orpc/standard-server@1.13.9': dependencies: - '@orpc/shared': 1.13.4 + '@orpc/shared': 1.13.9 transitivePeerDependencies: - '@opentelemetry/api' @@ -22147,38 +22208,38 @@ ajv-formats: 3.0.1(ajv@8.17.1) js-yaml: 4.1.1 - '@shikijs/core@3.22.0': + '@shikijs/core@3.23.0': dependencies: - '@shikijs/types': 3.22.0 + '@shikijs/types': 3.23.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@3.22.0': + '@shikijs/engine-javascript@3.23.0': dependencies: - '@shikijs/types': 3.22.0 + '@shikijs/types': 3.23.0 '@shikijs/vscode-textmate': 10.0.2 - oniguruma-to-es: 4.3.4 + oniguruma-to-es: 4.3.5 - '@shikijs/engine-oniguruma@3.22.0': + '@shikijs/engine-oniguruma@3.23.0': dependencies: - '@shikijs/types': 3.22.0 + '@shikijs/types': 3.23.0 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@3.22.0': + '@shikijs/langs@3.23.0': dependencies: - '@shikijs/types': 3.22.0 + '@shikijs/types': 3.23.0 - '@shikijs/themes@3.22.0': + '@shikijs/themes@3.23.0': dependencies: - '@shikijs/types': 3.22.0 + '@shikijs/types': 3.23.0 - '@shikijs/transformers@3.22.0': + '@shikijs/transformers@3.23.0': dependencies: - '@shikijs/core': 3.22.0 - '@shikijs/types': 3.22.0 + '@shikijs/core': 3.23.0 + '@shikijs/types': 3.23.0 - '@shikijs/types@3.22.0': + '@shikijs/types@3.23.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -23579,6 +23640,18 @@ dependencies: '@vue/devtools-kit': 8.0.5 + '@vue/devtools-core@7.6.8(vite@5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1))(vue@3.5.25(typescript@5.9.3))': + dependencies: + '@vue/devtools-kit': 7.7.7 + '@vue/devtools-shared': 7.7.7 + mitt: 3.0.1 + nanoid: 5.1.5 + pathe: 1.1.2 + vite-hot-client: 0.2.4(vite@5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)) + vue: 3.5.25(typescript@5.9.3) + transitivePeerDependencies: + - vite + '@vue/devtools-core@7.6.8(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.25(typescript@5.9.3))': dependencies: '@vue/devtools-kit': 7.7.7 @@ -23800,17 +23873,17 @@ typescript: 5.9.3 vue: 3.5.13(typescript@5.9.3) - '@vueuse/core@14.1.0(vue@3.5.27(typescript@5.9.3))': + '@vueuse/core@14.2.1(vue@3.5.27(typescript@5.9.3))': dependencies: '@types/web-bluetooth': 0.0.21 - '@vueuse/metadata': 14.1.0 - '@vueuse/shared': 14.1.0(vue@3.5.27(typescript@5.9.3)) + '@vueuse/metadata': 14.2.1 + '@vueuse/shared': 14.2.1(vue@3.5.27(typescript@5.9.3)) vue: 3.5.27(typescript@5.9.3) - '@vueuse/integrations@14.1.0(axios@1.13.4)(focus-trap@7.8.0)(fuse.js@7.1.0)(jwt-decode@4.0.0)(vue@3.5.27(typescript@5.9.3))': + '@vueuse/integrations@14.2.1(axios@1.13.4)(focus-trap@7.8.0)(fuse.js@7.1.0)(jwt-decode@4.0.0)(vue@3.5.27(typescript@5.9.3))': dependencies: - '@vueuse/core': 14.1.0(vue@3.5.27(typescript@5.9.3)) - '@vueuse/shared': 14.1.0(vue@3.5.27(typescript@5.9.3)) + '@vueuse/core': 14.2.1(vue@3.5.27(typescript@5.9.3)) + '@vueuse/shared': 14.2.1(vue@3.5.27(typescript@5.9.3)) vue: 3.5.27(typescript@5.9.3) optionalDependencies: axios: 1.13.4 @@ -23818,9 +23891,9 @@ fuse.js: 7.1.0 jwt-decode: 4.0.0 - '@vueuse/metadata@14.1.0': {} + '@vueuse/metadata@14.2.1': {} - '@vueuse/shared@14.1.0(vue@3.5.27(typescript@5.9.3))': + '@vueuse/shared@14.2.1(vue@3.5.27(typescript@5.9.3))': dependencies: vue: 3.5.27(typescript@5.9.3) @@ -24353,6 +24426,8 @@ balanced-match@1.0.2: {} + balanced-match@4.0.4: {} + bare-events@2.6.1: optional: true @@ -24445,6 +24520,10 @@ brace-expansion@2.0.2: dependencies: balanced-match: 1.0.2 + + brace-expansion@5.0.4: + dependencies: + balanced-match: 4.0.4 braces@3.0.3: dependencies: @@ -28028,7 +28107,7 @@ math-intrinsics@1.1.0: {} - mdast-util-from-markdown@2.0.2: + mdast-util-from-markdown@2.0.3: dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.3 @@ -28050,7 +28129,7 @@ '@types/mdast': 4.0.4 devlop: 1.1.0 escape-string-regexp: 5.0.0 - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.3 mdast-util-to-markdown: 2.1.2 micromark-extension-frontmatter: 2.0.0 transitivePeerDependencies: @@ -28070,7 +28149,7 @@ micromark-util-sanitize-uri: 2.0.1 trim-lines: 3.0.1 unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 vfile: 6.0.3 mdast-util-to-markdown@2.1.2: @@ -28082,7 +28161,7 @@ mdast-util-to-string: 4.0.0 micromark-util-classify-character: 2.0.1 micromark-util-decode-string: 2.0.1 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 zwitch: 2.0.4 mdast-util-to-string@4.0.0: @@ -28317,13 +28396,13 @@ minimalistic-assert@1.0.1: {} - minimatch@10.1.1: - dependencies: - '@isaacs/brace-expansion': 5.0.0 - minimatch@10.1.2: dependencies: '@isaacs/brace-expansion': 5.0.1 + + minimatch@10.2.4: + dependencies: + brace-expansion: 5.0.4 minimatch@3.1.2: dependencies: @@ -28908,14 +28987,14 @@ nuxi@3.28.0: {} - nuxt@3.14.1592(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.1)(@types/node@25.2.1)(db0@0.3.2)(encoding@0.1.13)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.7.0)(less@4.4.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-rc.9)(rollup@3.29.5)(sass@1.97.1)(terser@5.44.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue-tsc@3.2.4(typescript@5.9.3)): + nuxt@3.14.1592(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.1)(@types/node@25.2.1)(db0@0.3.2)(encoding@0.1.13)(eslint@9.39.1(jiti@2.6.1))(ioredis@5.7.0)(less@4.4.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-rc.9)(rollup@4.56.0)(sass@1.97.1)(terser@5.44.1)(typescript@5.9.3)(vite@5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1))(vue-tsc@3.2.4(typescript@5.9.3)): dependencies: '@nuxt/devalue': 2.0.2 - '@nuxt/devtools': 1.7.0(rollup@3.29.5)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.25(typescript@5.9.3)) - '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@3.29.5) - '@nuxt/schema': 3.14.1592(magicast@0.3.5)(rollup@3.29.5) + '@nuxt/devtools': 1.7.0(rollup@4.56.0)(vite@5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1))(vue@3.5.25(typescript@5.9.3)) + '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@4.56.0) + '@nuxt/schema': 3.14.1592(magicast@0.3.5)(rollup@4.56.0) '@nuxt/telemetry': 2.6.6(magicast@0.3.5) - '@nuxt/vite-builder': 3.14.1592(@types/node@25.2.1)(eslint@9.39.2(jiti@2.6.1))(less@4.4.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-rc.9)(rollup@3.29.5)(sass@1.97.1)(terser@5.44.1)(typescript@5.9.3)(vue-tsc@3.2.4(typescript@5.9.3))(vue@3.5.25(typescript@5.9.3)) + '@nuxt/vite-builder': 3.14.1592(@types/node@25.2.1)(eslint@9.39.1(jiti@2.6.1))(less@4.4.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-rc.9)(rollup@4.56.0)(sass@1.97.1)(terser@5.44.1)(typescript@5.9.3)(vue-tsc@3.2.4(typescript@5.9.3))(vue@3.5.25(typescript@5.9.3)) '@unhead/dom': 1.11.20 '@unhead/shared': 1.11.20 '@unhead/ssr': 1.11.20 @@ -28938,7 +29017,7 @@ h3: 1.15.4 hookable: 5.5.3 ignore: 6.0.2 - impound: 0.2.2(rollup@3.29.5) + impound: 0.2.2(rollup@4.56.0) jiti: 2.6.1 klona: 2.0.6 knitwork: 1.3.0 @@ -28965,15 +29044,15 @@ unctx: 2.4.1 unenv: 1.10.0 unhead: 1.11.20 - unimport: 3.14.6(rollup@3.29.5) + unimport: 3.14.6(rollup@4.56.0) unplugin: 1.16.1 - unplugin-vue-router: 0.10.9(rollup@3.29.5)(vue-router@4.5.0(vue@3.5.25(typescript@5.9.3)))(vue@3.5.25(typescript@5.9.3)) + unplugin-vue-router: 0.10.9(rollup@4.56.0)(vue-router@4.5.0(vue@3.5.25(typescript@5.9.3)))(vue@3.5.25(typescript@5.9.3)) unstorage: 1.17.0(@netlify/blobs@9.1.2)(db0@0.3.2)(ioredis@5.7.0) untyped: 1.5.2 vue: 3.5.25(typescript@5.9.3) vue-bundle-renderer: 2.1.2 vue-devtools-stub: 0.1.0 - vue-router: 4.5.0(vue@3.5.13(typescript@5.9.3)) + vue-router: 4.5.0(vue@3.5.25(typescript@5.9.3)) optionalDependencies: '@parcel/watcher': 2.5.1 '@types/node': 25.2.1 @@ -29089,6 +29168,127 @@ unimport: 3.14.6(rollup@4.56.0) unplugin: 1.16.1 unplugin-vue-router: 0.10.9(rollup@4.56.0)(vue-router@4.5.0(vue@3.5.25(typescript@5.9.3)))(vue@3.5.25(typescript@5.9.3)) + unstorage: 1.17.0(@netlify/blobs@9.1.2)(db0@0.3.4)(ioredis@5.9.2) + untyped: 1.5.2 + vue: 3.5.25(typescript@5.9.3) + vue-bundle-renderer: 2.1.2 + vue-devtools-stub: 0.1.0 + vue-router: 4.5.0(vue@3.5.25(typescript@5.9.3)) + optionalDependencies: + '@parcel/watcher': 2.5.1 + '@types/node': 25.2.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@biomejs/biome' + - '@capacitor/preferences' + - '@deno/kv' + - '@electric-sql/pglite' + - '@libsql/client' + - '@netlify/blobs' + - '@planetscale/database' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - better-sqlite3 + - bufferutil + - db0 + - drizzle-orm + - encoding + - eslint + - idb-keyval + - ioredis + - less + - lightningcss + - magicast + - meow + - mysql2 + - optionator + - rolldown + - rollup + - sass + - sass-embedded + - sqlite3 + - stylelint + - stylus + - sugarss + - supports-color + - terser + - typescript + - uploadthing + - utf-8-validate + - vite + - vls + - vti + - vue-tsc + - xml2js + + nuxt@3.14.1592(@netlify/blobs@9.1.2)(@parcel/watcher@2.5.1)(@types/node@25.2.1)(db0@0.3.4)(encoding@0.1.13)(eslint@9.39.2(jiti@2.6.1))(ioredis@5.9.2)(less@4.4.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-rc.9)(rollup@3.29.5)(sass@1.97.1)(terser@5.44.1)(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue-tsc@3.2.4(typescript@5.9.3)): + dependencies: + '@nuxt/devalue': 2.0.2 + '@nuxt/devtools': 1.7.0(rollup@3.29.5)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.25(typescript@5.9.3)) + '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@3.29.5) + '@nuxt/schema': 3.14.1592(magicast@0.3.5)(rollup@3.29.5) + '@nuxt/telemetry': 2.6.6(magicast@0.3.5) + '@nuxt/vite-builder': 3.14.1592(@types/node@25.2.1)(eslint@9.39.2(jiti@2.6.1))(less@4.4.2)(magicast@0.3.5)(optionator@0.9.4)(rolldown@1.0.0-rc.9)(rollup@3.29.5)(sass@1.97.1)(terser@5.44.1)(typescript@5.9.3)(vue-tsc@3.2.4(typescript@5.9.3))(vue@3.5.25(typescript@5.9.3)) + '@unhead/dom': 1.11.20 + '@unhead/shared': 1.11.20 + '@unhead/ssr': 1.11.20 + '@unhead/vue': 1.11.20(vue@3.5.25(typescript@5.9.3)) + '@vue/shared': 3.5.25 + acorn: 8.14.0 + c12: 2.0.1(magicast@0.3.5) + chokidar: 4.0.3 + compatx: 0.1.8 + consola: 3.4.2 + cookie-es: 1.2.2 + defu: 6.1.4 + destr: 2.0.5 + devalue: 5.3.2 + errx: 0.1.0 + esbuild: 0.24.2 + escape-string-regexp: 5.0.0 + estree-walker: 3.0.3 + globby: 14.1.0 + h3: 1.15.4 + hookable: 5.5.3 + ignore: 6.0.2 + impound: 0.2.2(rollup@3.29.5) + jiti: 2.6.1 + klona: 2.0.6 + knitwork: 1.3.0 + magic-string: 0.30.21 + mlly: 1.8.0 + nanotar: 0.1.1 + nitropack: 2.12.4(@netlify/blobs@9.1.2)(encoding@0.1.13)(rolldown@1.0.0-rc.9) + nuxi: 3.28.0 + nypm: 0.3.12 + ofetch: 1.5.1 + ohash: 1.1.6 + pathe: 1.1.2 + perfect-debounce: 1.0.0 + pkg-types: 1.3.1 + radix3: 1.1.2 + scule: 1.3.0 + semver: 7.7.3 + std-env: 3.10.0 + strip-literal: 2.1.1 + tinyglobby: 0.2.10 + ufo: 1.6.1 + ultrahtml: 1.6.0 + uncrypto: 0.1.3 + unctx: 2.4.1 + unenv: 1.10.0 + unhead: 1.11.20 + unimport: 3.14.6(rollup@3.29.5) + unplugin: 1.16.1 + unplugin-vue-router: 0.10.9(rollup@3.29.5)(vue-router@4.5.0(vue@3.5.25(typescript@5.9.3)))(vue@3.5.25(typescript@5.9.3)) unstorage: 1.17.0(@netlify/blobs@9.1.2)(db0@0.3.4)(ioredis@5.9.2) untyped: 1.5.2 vue: 3.5.25(typescript@5.9.3) @@ -29529,10 +29729,10 @@ oniguruma-parser@0.12.1: {} - oniguruma-to-es@4.3.4: + oniguruma-to-es@4.3.5: dependencies: oniguruma-parser: 0.12.1 - regex: 6.0.1 + regex: 6.1.0 regex-recursion: 6.0.2 open@10.2.0: @@ -30592,7 +30792,7 @@ regex-utilities@2.3.0: {} - regex@6.0.1: + regex@6.1.0: dependencies: regex-utilities: 2.3.0 @@ -30634,7 +30834,7 @@ remark-parse@11.0.0: dependencies: '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.3 micromark-util-types: 2.0.2 unified: 11.0.5 transitivePeerDependencies: @@ -31178,14 +31378,14 @@ shell-quote@1.8.3: {} - shiki@3.22.0: + shiki@3.23.0: dependencies: - '@shikijs/core': 3.22.0 - '@shikijs/engine-javascript': 3.22.0 - '@shikijs/engine-oniguruma': 3.22.0 - '@shikijs/langs': 3.22.0 - '@shikijs/themes': 3.22.0 - '@shikijs/types': 3.22.0 + '@shikijs/core': 3.23.0 + '@shikijs/engine-javascript': 3.23.0 + '@shikijs/engine-oniguruma': 3.23.0 + '@shikijs/langs': 3.23.0 + '@shikijs/themes': 3.23.0 + '@shikijs/types': 3.23.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -31945,7 +32145,7 @@ '@tokenizer/token': 0.3.0 ieee754: 1.2.1 - tokenx@1.2.1: {} + tokenx@1.3.0: {} toml@3.0.0: {} @@ -32130,6 +32330,10 @@ type-fest@4.41.0: {} type-fest@5.4.3: + dependencies: + tagged-tag: 1.0.0 + + type-fest@5.5.0: dependencies: tagged-tag: 1.0.0 @@ -32465,7 +32669,7 @@ '@types/unist': 3.0.3 unist-util-is: 6.0.0 - unist-util-visit@5.0.0: + unist-util-visit@5.1.0: dependencies: '@types/unist': 3.0.3 unist-util-is: 6.0.0 @@ -32522,7 +32726,7 @@ unplugin: 2.0.0-beta.1 yaml: 2.8.2 optionalDependencies: - vue-router: 4.5.0(vue@3.5.13(typescript@5.9.3)) + vue-router: 4.5.0(vue@3.5.25(typescript@5.9.3)) transitivePeerDependencies: - rollup - vue @@ -32828,6 +33032,10 @@ vite: 7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vite-hot-client: 2.1.0(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)) + vite-hot-client@0.2.4(vite@5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)): + dependencies: + vite: 5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1) + vite-hot-client@0.2.4(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): dependencies: vite: 7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) @@ -32959,6 +33167,24 @@ - rollup - supports-color + vite-plugin-inspect@0.8.9(@nuxt/kit@3.21.0(magicast@0.3.5))(rollup@4.56.0)(vite@5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)): + dependencies: + '@antfu/utils': 0.7.10 + '@rollup/pluginutils': 5.2.0(rollup@4.56.0) + debug: 4.4.3 + error-stack-parser-es: 0.1.5 + fs-extra: 11.3.1 + open: 10.2.0 + perfect-debounce: 1.0.0 + picocolors: 1.1.1 + sirv: 3.0.2 + vite: 5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1) + optionalDependencies: + '@nuxt/kit': 3.21.0(magicast@0.3.5) + transitivePeerDependencies: + - rollup + - supports-color + vite-plugin-inspect@0.8.9(@nuxt/kit@3.21.0(magicast@0.3.5))(rollup@4.56.0)(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): dependencies: '@antfu/utils': 0.7.10 @@ -33023,6 +33249,21 @@ - '@nuxt/kit' - supports-color - vue + + vite-plugin-vue-inspector@5.3.2(vite@5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)): + dependencies: + '@babel/core': 7.28.3 + '@babel/plugin-proposal-decorators': 7.28.0(@babel/core@7.28.3) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.3) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.3) + '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.28.3) + '@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.28.3) + '@vue/compiler-dom': 3.5.25 + kolorist: 1.8.0 + magic-string: 0.30.21 + vite: 5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1) + transitivePeerDependencies: + - supports-color vite-plugin-vue-inspector@5.3.2(vite@7.3.1(@types/node@24.10.10)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2)): dependencies: @@ -33152,44 +33393,44 @@ optionalDependencies: vite: 7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) - vitepress-plugin-llms@1.11.0: + vitepress-plugin-llms@1.12.0: dependencies: gray-matter: 4.0.3 markdown-it: 14.1.0 markdown-title: 1.0.2 - mdast-util-from-markdown: 2.0.2 + mdast-util-from-markdown: 2.0.3 millify: 6.1.0 - minimatch: 10.1.1 + minimatch: 10.2.4 path-to-regexp: 6.3.0 picocolors: 1.1.1 pretty-bytes: 7.1.0 remark: 15.0.1 remark-frontmatter: 5.0.0 - tokenx: 1.2.1 + tokenx: 1.3.0 unist-util-remove: 4.0.0 - unist-util-visit: 5.0.0 + unist-util-visit: 5.1.0 transitivePeerDependencies: - supports-color vitepress@2.0.0-alpha.16(patch_hash=828e6d2347338f051e3210f9d54e3a79212e9afb26e6b8a746d7ad5f58e9385b)(@types/node@25.2.1)(axios@1.13.4)(fuse.js@7.1.0)(jiti@2.6.1)(jwt-decode@4.0.0)(less@4.4.2)(oxc-minify@0.110.0)(postcss@8.5.6)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2): dependencies: - '@docsearch/css': 4.5.3 - '@docsearch/js': 4.5.3 - '@docsearch/sidepanel-js': 4.5.3 + '@docsearch/css': 4.6.0 + '@docsearch/js': 4.6.0 + '@docsearch/sidepanel-js': 4.6.0 '@iconify-json/simple-icons': 1.2.69 - '@shikijs/core': 3.22.0 - '@shikijs/transformers': 3.22.0 - '@shikijs/types': 3.22.0 + '@shikijs/core': 3.23.0 + '@shikijs/transformers': 3.23.0 + '@shikijs/types': 3.23.0 '@types/markdown-it': 14.1.2 '@vitejs/plugin-vue': 6.0.4(vite@7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2))(vue@3.5.27(typescript@5.9.3)) '@vue/devtools-api': 8.0.5 '@vue/shared': 3.5.27 - '@vueuse/core': 14.1.0(vue@3.5.27(typescript@5.9.3)) - '@vueuse/integrations': 14.1.0(axios@1.13.4)(focus-trap@7.8.0)(fuse.js@7.1.0)(jwt-decode@4.0.0)(vue@3.5.27(typescript@5.9.3)) + '@vueuse/core': 14.2.1(vue@3.5.27(typescript@5.9.3)) + '@vueuse/integrations': 14.2.1(axios@1.13.4)(focus-trap@7.8.0)(fuse.js@7.1.0)(jwt-decode@4.0.0)(vue@3.5.27(typescript@5.9.3)) focus-trap: 7.8.0 mark.js: 8.11.1 minisearch: 7.2.0 - shiki: 3.22.0 + shiki: 3.23.0 vite: 7.3.1(@types/node@25.2.1)(jiti@2.6.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1)(tsx@4.21.0)(yaml@2.8.2) vue: 3.5.27(typescript@5.9.3) optionalDependencies: diff --git a/.changeset/five-crabs-relate.md b/.changeset/five-crabs-relate.md new file mode 100644 --- /dev/null +++ b/.changeset/five-crabs-relate.md @@ -0,0 +1,5 @@ +--- +"@hey-api/openapi-ts": patch +--- + +**plugin(orpc)**: remove `base` export diff --git a/dev/package.json b/dev/package.json --- a/dev/package.json +++ b/dev/package.json @@ -13,7 +13,7 @@ "@hey-api/openapi-python": "workspace:*", "@hey-api/openapi-ts": "workspace:*", "@opencode-ai/sdk": "1.2.27", - "@orpc/contract": "1.13.4", + "@orpc/contract": "1.13.9", "@pinia/colada": "0.19.1", "@tanstack/angular-query-experimental": "5.90.25", "@tanstack/preact-query": "5.93.0", diff --git a/docs/package.json b/docs/package.json --- a/docs/package.json +++ b/docs/package.json @@ -16,7 +16,7 @@ "devDependencies": { "sharp": "0.34.5", "vitepress": "2.0.0-alpha.16", - "vitepress-plugin-llms": "1.11.0", + "vitepress-plugin-llms": "1.12.0", "vue": "3.5.25" } } diff --git a/docs/data/people.ts b/docs/data/people.ts --- a/docs/data/people.ts +++ b/docs/data/people.ts @@ -28,6 +28,11 @@ name: 'Sebastiaan Wouters', }; +export const stephenZhou: Person = { + github: 'https://github.com/hyoban', + name: 'Stephen Zhou', +}; + export const yuriMikhin: Person = { github: 'https://github.com/mikhin', name: 'Yuri Mikhin', diff --git a/docs/openapi-ts/web-frameworks.md b/docs/openapi-ts/web-frameworks.md --- a/docs/openapi-ts/web-frameworks.md +++ b/docs/openapi-ts/web-frameworks.md @@ -14,6 +14,7 @@ - [Angular](/openapi-ts/plugins/angular) - [Fastify](/openapi-ts/plugins/fastify) - [Nest](/openapi-ts/plugins/nest) +- [oRPC](/openapi-ts/plugins/orpc) - [Adonis](/openapi-ts/plugins/adonis) Soon - [Elysia](/openapi-ts/plugins/elysia) Soon - [Express](/openapi-ts/plugins/express) Soon diff --git a/packages/openapi-ts/README.md b/packages/openapi-ts/README.md --- a/packages/openapi-ts/README.md +++ b/packages/openapi-ts/README.md @@ -306,9 +306,9 @@ ### Client -Clients are responsible for sending the actual HTTP requests. Using clients is not required, but you must add a client to `plugins` if you're generating SDKs (we default to Fetch). +Clients are responsible for sending the actual HTTP requests. We default to Fetch client if you're generating SDKs, but you can choose a different option from the available clients. -### Native Clients +### Available Clients - [`@hey-api/client-fetch`](https://heyapi.dev/openapi-ts/clients/fetch) - [`@hey-api/client-angular`](https://heyapi.dev/openapi-ts/clients/angular) @@ -318,15 +318,15 @@ - [`@hey-api/client-nuxt`](https://heyapi.dev/openapi-ts/clients/nuxt) - [`@hey-api/client-ofetch`](https://heyapi.dev/openapi-ts/clients/ofetch) -### Planned Clients +### Proposed Clients (Vote to Prioritize) -The following clients are planned but not in development yet. You can help us prioritize them by voting on [GitHub](https://github.com/hey-api/openapi-ts/labels/RSVP%20%F0%9F%91%8D%F0%9F%91%8E). +The following clients are roadmap proposals and are not started yet. You can help us prioritize them by voting on [GitHub](https://github.com/hey-api/openapi-ts/issues?q=state%3Aopen%20label%3A%22vote%20%F0%9F%93%A9%22). - [`@hey-api/client-effect`](https://heyapi.dev/openapi-ts/clients/effect) Don't see your client? [Build your own](https://heyapi.dev/openapi-ts/clients/custom) or let us know your interest by [opening an issue](https://github.com/hey-api/openapi-ts/issues). -### Native Plugins +### Available Plugins These plugins help reduce boilerplate associated with third-party dependencies. Hey API natively supports the most popular packages. Please open an issue on [GitHub](https://github.com/hey-api/openapi-ts/issues) if you'd like us to support your favorite package. @@ -343,13 +343,14 @@ - [`@tanstack/svelte-query`](https://heyapi.dev/openapi-ts/plugins/tanstack-query) - [`@tanstack/vue-query`](https://heyapi.dev/openapi-ts/plugins/tanstack-query) - [`fastify`](https://heyapi.dev/openapi-ts/plugins/fastify) +- [`orpc`](https://heyapi.dev/openapi-ts/plugins/orpc) - [`nestjs`](https://heyapi.dev/openapi-ts/plugins/nest) - [`valibot`](https://heyapi.dev/openapi-ts/plugins/valibot) - [`zod`](https://heyapi.dev/openapi-ts/plugins/zod) -### Planned Plugins +### Proposed Plugins (Vote to Prioritize) -The following plugins are planned but not in development yet. You can help us prioritize them by voting on [GitHub](https://github.com/hey-api/openapi-ts/labels/RSVP%20%F0%9F%91%8D%F0%9F%91%8E). +The following plugins are roadmap proposals and are not started yet. You can help us prioritize them by voting on [GitHub](https://github.com/hey-api/openapi-ts/issues?q=state%3Aopen%20label%3A%22vote%20%F0%9F%93%A9%22). - [Adonis](https://heyapi.dev/openapi-ts/plugins/adonis) - [Ajv](https://heyapi.dev/openapi-ts/plugins/ajv) diff --git a/docs/.vitepress/config/en.ts b/docs/.vitepress/config/en.ts --- a/docs/.vitepress/config/en.ts +++ b/docs/.vitepress/config/en.ts @@ -232,6 +232,10 @@ text: 'Nest', }, { + link: '/openapi-ts/plugins/orpc', + text: 'oRPC', + }, + { link: '/openapi-ts/plugins/adonis', text: 'Adonis soon', }, @@ -330,7 +334,7 @@ text: 'License', }, { - link: 'https://github.com/orgs/hey-api/discussions/1495', + link: 'https://github.com/orgs/hey-api/discussions/3159', text: 'Roadmap', }, ], diff --git a/docs/.vitepress/theme/custom.css b/docs/.vitepress/theme/custom.css --- a/docs/.vitepress/theme/custom.css +++ b/docs/.vitepress/theme/custom.css @@ -303,6 +303,10 @@ display: none; } +.vp-doc img { + margin: 0; +} + .authors-list li > a:hover, .authors-list li > a:focus, .sponsors-list li:has(> a:hover), diff --git a/docs/openapi-ts/plugins/fastify.md b/docs/openapi-ts/plugins/fastify.md --- a/docs/openapi-ts/plugins/fastify.md +++ b/docs/openapi-ts/plugins/fastify.md @@ -87,9 +87,7 @@ output: 'src/client', plugins: [ // ...other plugins - { - name: 'fastify', - }, + 'fastify', ], }; ``` diff --git a/docs/openapi-ts/plugins/orpc.md b/docs/openapi-ts/plugins/orpc.md new file mode 100644 --- /dev/null +++ b/docs/openapi-ts/plugins/orpc.md @@ -0,0 +1,183 @@ +--- +title: oRPC v1 Plugin +description: Generate oRPC v1 contracts from OpenAPI with the oRPC plugin for openapi-ts. Fully compatible with validators, transformers, and all core features. +--- + + + + +

oRPC v1

+ +
+ +::: warning +oRPC plugin is currently in beta. The interface might change before it becomes stable. We encourage you to leave feedback on [GitHub](https://github.com/hey-api/openapi-ts/issues). +::: + +### About + +[oRPC](https://orpc.dev) combines RPC with OpenAPI, allowing you to define and call remote or local procedures through a type-safe API while adhering to the OpenAPI specification. + +The oRPC plugin for Hey API generates contracts from your OpenAPI spec, fully compatible with all core features. + +### Collaborators + + + +## Features + +- oRPC v1 support +- seamless integration with `@hey-api/openapi-ts` ecosystem +- generated contracts +- minimal learning curve thanks to extending the underlying technology + +## Installation + +In your [configuration](/openapi-ts/get-started), add `orpc` to your plugins and you'll be ready to generate oRPC artifacts. :tada: + +```js +export default { + input: 'hey-api/backend', // sign up at app.heyapi.dev + output: 'src/client', + plugins: [ + // ...other plugins + 'orpc', // [!code ++] + ], +}; +``` + +## Output + +The oRPC plugin will generate the following artifacts, depending on the input specification. + +## Contracts + +Contracts are generated from all endpoints. + +::: code-group + +```js [example] +import { oc } from '@orpc/contract'; + +const addPet = oc.route({ + description: 'Add a new pet to the store.', + inputStructure: 'detailed', + method: 'POST', + operationId: 'addPet', + path: '/pet', + summary: 'Add a new pet to the store.', + tags: ['pet'], +}); +``` + +```js [config] +export default { + input: 'hey-api/backend', // sign up at app.heyapi.dev + output: 'src/client', + plugins: [ + // ...other plugins + 'orpc', + ], +}; +``` + +::: + +### Validators + +To enable schema validation, set `validator` to `zod` or one of the available [validator plugins](/openapi-ts/validators). This will implicitly add the selected plugin with default values. + +For a more granular approach, manually add a validator plugin and set `validator` to the plugin name or `true` to automatically select a compatible plugin. Until you customize the validator plugin, both approaches will produce the same default output. + +::: code-group + +```js [example] +import { oc } from '@orpc/contract'; + +import { vAddPetData, vAddPetResponse } from './valibot.gen'; + +const addPet = oc + .route({ + description: 'Add a new pet to the store.', + inputStructure: 'detailed', + method: 'POST', + operationId: 'addPet', + path: '/pet', + summary: 'Add a new pet to the store.', + tags: ['pet'], + }) + .input(vAddPetData) // [!code ++] + .output(vAddPetResponse); // [!code ++] +``` + +```js [config] +export default { + input: 'hey-api/backend', // sign up at app.heyapi.dev + output: 'src/client', + plugins: [ + // ...other plugins + { + name: 'orpc', + validator: true, // or 'valibot' // [!code ++] + }, + { + name: 'valibot', // customize (optional) // [!code ++] + // other options + }, + ], +}; +``` + +::: + +You can choose to validate only inputs or outputs. + +::: code-group + +```js [inputs] +export default { + input: 'hey-api/backend', // sign up at app.heyapi.dev + output: 'src/client', + plugins: [ + // ...other plugins + { + name: 'orpc', + validator: { + input: 'zod', // [!code ++] + }, + }, + ], +}; +``` + +```js [outputs] +export default { + input: 'hey-api/backend', // sign up at app.heyapi.dev + output: 'src/client', + plugins: [ + // ...other plugins + { + name: 'orpc', + validator: { + output: 'zod', // [!code ++] + }, + }, + ], +}; +``` + +::: + +Learn more about available validators on the [Validators](/openapi-ts/validators) page. + +## API + +You can view the complete list of options in the [UserConfig](https://github.com/hey-api/openapi-ts/blob/main/packages/openapi-ts/src/plugins/orpc/types.ts) interface. + + + diff --git a/docs/openapi-ts/plugins/transformers.md b/docs/openapi-ts/plugins/transformers.md --- a/docs/openapi-ts/plugins/transformers.md +++ b/docs/openapi-ts/plugins/transformers.md @@ -153,4 +153,4 @@ You can view the complete list of options in the [UserConfig](https://github.com/hey-api/openapi-ts/blob/main/packages/openapi-ts/src/plugins/@hey-api/transformers/types.ts) interface. - + diff --git a/docs/openapi-ts/plugins/angular/v19.md b/docs/openapi-ts/plugins/angular/v19.md --- a/docs/openapi-ts/plugins/angular/v19.md +++ b/docs/openapi-ts/plugins/angular/v19.md @@ -118,5 +118,5 @@ You can view the complete list of options in the [UserConfig](https://github.com/hey-api/openapi-ts/blob/main/packages/openapi-ts/src/plugins/@angular/common/types.ts) interface. - - + + diff --git a/packages/openapi-ts-tests/orpc/v1/package.json b/packages/openapi-ts-tests/orpc/v1/package.json --- a/packages/openapi-ts-tests/orpc/v1/package.json +++ b/packages/openapi-ts-tests/orpc/v1/package.json @@ -8,7 +8,7 @@ }, "devDependencies": { "@hey-api/openapi-ts": "workspace:*", - "@orpc/contract": "1.13.4", + "@orpc/contract": "1.13.9", "typescript": "5.9.3", "valibot": "1.2.0", "zod": "4.3.6" diff --git a/packages/openapi-ts/src/plugins/orpc/contracts/node.ts b/packages/openapi-ts/src/plugins/orpc/contracts/node.ts --- a/packages/openapi-ts/src/plugins/orpc/contracts/node.ts +++ b/packages/openapi-ts/src/plugins/orpc/contracts/node.ts @@ -52,17 +52,17 @@ function createContractExpression( plugin: OrpcPlugin['Instance'], operation: IR.OperationObject, - baseSymbol: Symbol, -) { +): ReturnType { const successResponse = getSuccessResponse(operation); const tags = getTags(operation, plugin.config.contracts.strategyDefaultTag); - let expression = $(baseSymbol) + let expression = $(plugin.external('@orpc/contract.oc')) .attr('route') .call( $.object() .$if(operation.deprecated, (o, v) => o.prop('deprecated', $.literal(v))) .$if(operation.description, (o, v) => o.prop('description', $.literal(v))) + .prop('inputStructure', $.literal('detailed')) .prop('method', $.literal(operation.method.toUpperCase())) .$if(operation.operationId, (o, v) => o.prop('operationId', $.literal(v))) .prop('path', $.literal(operation.path)) @@ -164,7 +164,6 @@ export function toNode( model: StructureNode, plugin: OrpcPlugin['Instance'], - baseSymbol: Symbol, ): { nodes: ReadonlyArray>; symbols?: Map; @@ -176,7 +175,7 @@ for (const item of model.itemsFrom(source)) { const { operation } = item.data; const contractSymbol = createContractSymbol(plugin, item); - const expression = createContractExpression(plugin, operation, baseSymbol); + const expression = createContractExpression(plugin, operation); const node = $.const(contractSymbol) .export() @@ -198,7 +197,7 @@ for (const item of model.itemsFrom(source)) { const { operation } = item.data; const contractSymbol = createContractSymbol(plugin, item); - const expression = createContractExpression(plugin, operation, baseSymbol); + const expression = createContractExpression(plugin, operation); const node = $.const(contractSymbol) .export() diff --git a/packages/openapi-ts/src/plugins/orpc/v1/plugin.ts b/packages/openapi-ts/src/plugins/orpc/v1/plugin.ts --- a/packages/openapi-ts/src/plugins/orpc/v1/plugin.ts +++ b/packages/openapi-ts/src/plugins/orpc/v1/plugin.ts @@ -1,24 +1,18 @@ import { StructureModel } from '@hey-api/codegen-core'; -import { $ } from '../../../ts-dsl'; +import type { $ } from '../../../ts-dsl'; import type { ContractItem } from '../contracts'; import { createShell, resolveStrategy, source, toNode } from '../contracts'; import type { OrpcPlugin } from '../types'; export const handlerV1: OrpcPlugin['Handler'] = ({ plugin }) => { - const oc = plugin.symbol('oc', { + plugin.symbol('oc', { external: '@orpc/contract', + meta: { + category: 'external', + resource: '@orpc/contract.oc', + }, }); - const baseSymbol = plugin.symbol('base'); - - const baseNode = $.const(baseSymbol) - .export() - .assign( - $(oc) - .attr('$route') - .call($.object().prop('inputStructure', $.literal('detailed'))), - ); - plugin.node(baseNode); const structure = new StructureModel(); const shell = createShell(plugin); @@ -43,7 +37,7 @@ const allNodes: Array> = []; for (const node of structure.walk()) { - const { nodes } = toNode(node, plugin, baseSymbol); + const { nodes } = toNode(node, plugin); allNodes.push(...nodes); } diff --git a/packages/openapi-ts-tests/orpc/v1/__snapshots__/3.0.x/custom-names/orpc.gen.ts b/packages/openapi-ts-tests/orpc/v1/__snapshots__/3.0.x/custom-names/orpc.gen.ts --- a/packages/openapi-ts-tests/orpc/v1/__snapshots__/3.0.x/custom-names/orpc.gen.ts +++ b/packages/openapi-ts-tests/orpc/v1/__snapshots__/3.0.x/custom-names/orpc.gen.ts @@ -4,12 +4,11 @@ import { vCreatePostData, vCreatePostResponse, vCreateUserData, vCreateUserResponse, vDeleteUserData, vGetPostByIdData, vGetPostByIdResponse, vGetPostsData, vGetPostsResponse, vGetUserByIdData, vGetUserByIdResponse, vGetUsersData, vGetUsersResponse, vUpdateUserData, vUpdateUserResponse } from './valibot.gen'; -export const base = oc.$route({ inputStructure: 'detailed' }); - /** * Get all users */ -export const getUsersRpc = base.route({ +export const getUsersRpc = oc.route({ + inputStructure: 'detailed', method: 'GET', operationId: 'getUsers', path: '/users', @@ -20,7 +19,8 @@ /** * Create a new user */ -export const createUserRpc = base.route({ +export const createUserRpc = oc.route({ + inputStructure: 'detailed', method: 'POST', operationId: 'createUser', path: '/users', @@ -32,7 +32,8 @@ /** * Delete a user */ -export const deleteUserRpc = base.route({ +export const deleteUserRpc = oc.route({ + inputStructure: 'detailed', method: 'DELETE', operationId: 'deleteUser', path: '/users/{userId}', @@ -43,7 +44,8 @@ /** * Get a user by ID */ -export const getUserByIdRpc = base.route({ +export const getUserByIdRpc = oc.route({ + inputStructure: 'detailed', method: 'GET', operationId: 'getUserById', path: '/users/{userId}', @@ -54,7 +56,8 @@ /** * Update a user */ -export const updateUserRpc = base.route({ +export const updateUserRpc = oc.route({ + inputStructure: 'detailed', method: 'PUT', operationId: 'updateUser', path: '/users/{userId}', @@ -65,7 +68,8 @@ /** * Get all posts */ -export const getPostsRpc = base.route({ +export const getPostsRpc = oc.route({ + inputStructure: 'detailed', method: 'GET', operationId: 'getPosts', path: '/posts', @@ -76,7 +80,8 @@ /** * Create a new post */ -export const createPostRpc = base.route({ +export const createPostRpc = oc.route({ + inputStructure: 'detailed', method: 'POST', operationId: 'createPost', path: '/posts', @@ -88,7 +93,8 @@ /** * Get a post by ID */ -export const getPostByIdRpc = base.route({ +export const getPostByIdRpc = oc.route({ + inputStructure: 'detailed', method: 'GET', operationId: 'getPostById', path: '/posts/{postId}', diff --git a/packages/openapi-ts-tests/orpc/v1/__snapshots__/3.0.x/default/orpc.gen.ts b/packages/openapi-ts-tests/orpc/v1/__snapshots__/3.0.x/default/orpc.gen.ts --- a/packages/openapi-ts-tests/orpc/v1/__snapshots__/3.0.x/default/orpc.gen.ts +++ b/packages/openapi-ts-tests/orpc/v1/__snapshots__/3.0.x/default/orpc.gen.ts @@ -4,12 +4,11 @@ import { zCreatePostData, zCreatePostResponse, zCreateUserData, zCreateUserResponse, zDeleteUserData, zGetPostByIdData, zGetPostByIdResponse, zGetPostsData, zGetPostsResponse, zGetUserByIdData, zGetUserByIdResponse, zGetUsersData, zGetUsersResponse, zUpdateUserData, zUpdateUserResponse } from './zod.gen'; -export const base = oc.$route({ inputStructure: 'detailed' }); - /** * Get all users */ -export const getUsers = base.route({ +export const getUsers = oc.route({ + inputStructure: 'detailed', method: 'GET', operationId: 'getUsers', path: '/users', @@ -20,7 +19,8 @@ /** * Create a new user */ -export const createUser = base.route({ +export const createUser = oc.route({ + inputStructure: 'detailed', method: 'POST', operationId: 'createUser', path: '/users', @@ -32,7 +32,8 @@ /** * Delete a user */ -export const deleteUser = base.route({ +export const deleteUser = oc.route({ + inputStructure: 'detailed', method: 'DELETE', operationId: 'deleteUser', path: '/users/{userId}', @@ -43,7 +44,8 @@ /** * Get a user by ID */ -export const getUserById = base.route({ +export const getUserById = oc.route({ + inputStructure: 'detailed', method: 'GET', operationId: 'getUserById', path: '/users/{userId}', @@ -54,7 +56,8 @@ /** * Update a user */ -export const updateUser = base.route({ +export const updateUser = oc.route({ + inputStructure: 'detailed', method: 'PUT', operationId: 'updateUser', path: '/users/{userId}', @@ -65,7 +68,8 @@ /** * Get all posts */ -export const getPosts = base.route({ +export const getPosts = oc.route({ + inputStructure: 'detailed', method: 'GET', operationId: 'getPosts', path: '/posts', @@ -76,7 +80,8 @@ /** * Create a new post */ -export const createPost = base.route({ +export const createPost = oc.route({ + inputStructure: 'detailed', method: 'POST', operationId: 'createPost', path: '/posts', @@ -88,7 +93,8 @@ /** * Get a post by ID */ -export const getPostById = base.route({ +export const getPostById = oc.route({ + inputStructure: 'detailed', method: 'GET', operationId: 'getPostById', path: '/posts/{postId}', diff --git a/packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/contracts-custom-naming/orpc.gen.ts b/packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/contracts-custom-naming/orpc.gen.ts --- a/packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/contracts-custom-naming/orpc.gen.ts +++ b/packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/contracts-custom-naming/orpc.gen.ts @@ -4,12 +4,11 @@ import { zCreatePostData, zCreatePostResponse, zCreateUserData, zCreateUserResponse, zDeleteUserData, zGetPostByIdData, zGetPostByIdResponse, zGetPostsData, zGetPostsResponse, zGetUserByIdData, zGetUserByIdResponse, zGetUsersData, zGetUsersResponse, zUpdateUserData, zUpdateUserResponse } from './zod.gen'; -export const base = oc.$route({ inputStructure: 'detailed' }); - /** * Get all users */ -export const GetUsers = base.route({ +export const GetUsers = oc.route({ + inputStructure: 'detailed', method: 'GET', operationId: 'getUsers', path: '/users', @@ -20,7 +19,8 @@ /** * Create a new user */ -export const CreateUser = base.route({ +export const CreateUser = oc.route({ + inputStructure: 'detailed', method: 'POST', operationId: 'createUser', path: '/users', @@ -32,7 +32,8 @@ /** * Delete a user */ -export const DeleteUser = base.route({ +export const DeleteUser = oc.route({ + inputStructure: 'detailed', method: 'DELETE', operationId: 'deleteUser', path: '/users/{userId}', @@ -43,7 +44,8 @@ /** * Get a user by ID */ -export const GetUserById = base.route({ +export const GetUserById = oc.route({ + inputStructure: 'detailed', method: 'GET', operationId: 'getUserById', path: '/users/{userId}', @@ -54,7 +56,8 @@ /** * Update a user */ -export const UpdateUser = base.route({ +export const UpdateUser = oc.route({ + inputStructure: 'detailed', method: 'PUT', operationId: 'updateUser', path: '/users/{userId}', @@ -73,7 +76,8 @@ /** * Get all posts */ -export const GetPosts = base.route({ +export const GetPosts = oc.route({ + inputStructure: 'detailed', method: 'GET', operationId: 'getPosts', path: '/posts', @@ -84,7 +88,8 @@ /** * Create a new post */ -export const CreatePost = base.route({ +export const CreatePost = oc.route({ + inputStructure: 'detailed', method: 'POST', operationId: 'createPost', path: '/posts', @@ -96,7 +101,8 @@ /** * Get a post by ID */ -export const GetPostById = base.route({ +export const GetPostById = oc.route({ + inputStructure: 'detailed', method: 'GET', operationId: 'getPostById', path: '/posts/{postId}', diff --git a/packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/contracts-nesting-id/orpc.gen.ts b/packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/contracts-nesting-id/orpc.gen.ts --- a/packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/contracts-nesting-id/orpc.gen.ts +++ b/packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/contracts-nesting-id/orpc.gen.ts @@ -4,12 +4,11 @@ import { zCreatePostData, zCreatePostResponse, zCreateUserData, zCreateUserResponse, zDeleteUserData, zGetPostByIdData, zGetPostByIdResponse, zGetPostsData, zGetPostsResponse, zGetUserByIdData, zGetUserByIdResponse, zGetUsersData, zGetUsersResponse, zUpdateUserData, zUpdateUserResponse } from './zod.gen'; -export const base = oc.$route({ inputStructure: 'detailed' }); - /** * Get all users */ -export const getUsers = base.route({ +export const getUsers = oc.route({ + inputStructure: 'detailed', method: 'GET', operationId: 'getUsers', path: '/users', @@ -20,7 +19,8 @@ /** * Create a new user */ -export const createUser = base.route({ +export const createUser = oc.route({ + inputStructure: 'detailed', method: 'POST', operationId: 'createUser', path: '/users', @@ -32,7 +32,8 @@ /** * Delete a user */ -export const deleteUser = base.route({ +export const deleteUser = oc.route({ + inputStructure: 'detailed', method: 'DELETE', operationId: 'deleteUser', path: '/users/{userId}', @@ -43,7 +44,8 @@ /** * Get a user by ID */ -export const getUserById = base.route({ +export const getUserById = oc.route({ + inputStructure: 'detailed', method: 'GET', operationId: 'getUserById', path: '/users/{userId}', @@ -54,7 +56,8 @@ /** * Update a user */ -export const updateUser = base.route({ +export const updateUser = oc.route({ + inputStructure: 'detailed', method: 'PUT', operationId: 'updateUser', path: '/users/{userId}', @@ -73,7 +76,8 @@ /** * Get all posts */ -export const getPosts = base.route({ +export const getPosts = oc.route({ + inputStructure: 'detailed', method: 'GET', operationId: 'getPosts', path: '/posts', @@ -84,7 +88,8 @@ /** * Create a new post */ -export const createPost = base.route({ +export const createPost = oc.route({ + inputStructure: 'detailed', method: 'POST', operationId: 'createPost', path: '/posts', @@ -96,7 +101,8 @@ /** * Get a post by ID */ -export const getPostById = base.route({ +export const getPostById = oc.route({ + inputStructure: 'detailed', method: 'GET', operationId: 'getPostById', path: '/posts/{postId}', diff --git a/packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/contracts-strategy-by-tags/orpc.gen.ts b/packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/contracts-strategy-by-tags/orpc.gen.ts --- a/packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/contracts-strategy-by-tags/orpc.gen.ts +++ b/packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/contracts-strategy-by-tags/orpc.gen.ts @@ -4,12 +4,11 @@ import { zCreatePostData, zCreatePostResponse, zCreateUserData, zCreateUserResponse, zDeleteUserData, zGetPostByIdData, zGetPostByIdResponse, zGetPostsData, zGetPostsResponse, zGetUserByIdData, zGetUserByIdResponse, zGetUsersData, zGetUsersResponse, zUpdateUserData, zUpdateUserResponse } from './zod.gen'; -export const base = oc.$route({ inputStructure: 'detailed' }); - /** * Get all users */ -export const getUsers = base.route({ +export const getUsers = oc.route({ + inputStructure: 'detailed', method: 'GET', operationId: 'getUsers', path: '/users', @@ -20,7 +19,8 @@ /** * Create a new user */ -export const createUser = base.route({ +export const createUser = oc.route({ + inputStructure: 'detailed', method: 'POST', operationId: 'createUser', path: '/users', @@ -32,7 +32,8 @@ /** * Delete a user */ -export const deleteUser = base.route({ +export const deleteUser = oc.route({ + inputStructure: 'detailed', method: 'DELETE', operationId: 'deleteUser', path: '/users/{userId}', @@ -43,7 +44,8 @@ /** * Get a user by ID */ -export const getUserById = base.route({ +export const getUserById = oc.route({ + inputStructure: 'detailed', method: 'GET', operationId: 'getUserById', path: '/users/{userId}', @@ -54,7 +56,8 @@ /** * Update a user */ -export const updateUser = base.route({ +export const updateUser = oc.route({ + inputStructure: 'detailed', method: 'PUT', operationId: 'updateUser', path: '/users/{userId}', @@ -73,7 +76,8 @@ /** * Get all posts */ -export const getPosts = base.route({ +export const getPosts = oc.route({ + inputStructure: 'detailed', method: 'GET', operationId: 'getPosts', path: '/posts', @@ -84,7 +88,8 @@ /** * Create a new post */ -export const createPost = base.route({ +export const createPost = oc.route({ + inputStructure: 'detailed', method: 'POST', operationId: 'createPost', path: '/posts', @@ -96,7 +101,8 @@ /** * Get a post by ID */ -export const getPostById = base.route({ +export const getPostById = oc.route({ + inputStructure: 'detailed', method: 'GET', operationId: 'getPostById', path: '/posts/{postId}', diff --git a/packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/contracts-strategy-single/orpc.gen.ts b/packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/contracts-strategy-single/orpc.gen.ts --- a/packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/contracts-strategy-single/orpc.gen.ts +++ b/packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/contracts-strategy-single/orpc.gen.ts @@ -4,12 +4,11 @@ import { zCreatePostData, zCreatePostResponse, zCreateUserData, zCreateUserResponse, zDeleteUserData, zGetPostByIdData, zGetPostByIdResponse, zGetPostsData, zGetPostsResponse, zGetUserByIdData, zGetUserByIdResponse, zGetUsersData, zGetUsersResponse, zUpdateUserData, zUpdateUserResponse } from './zod.gen'; -export const base = oc.$route({ inputStructure: 'detailed' }); - /** * Get all users */ -export const getUsers = base.route({ +export const getUsers = oc.route({ + inputStructure: 'detailed', method: 'GET', operationId: 'getUsers', path: '/users', @@ -20,7 +19,8 @@ /** * Create a new user */ -export const createUser = base.route({ +export const createUser = oc.route({ + inputStructure: 'detailed', method: 'POST', operationId: 'createUser', path: '/users', @@ -32,7 +32,8 @@ /** * Delete a user */ -export const deleteUser = base.route({ +export const deleteUser = oc.route({ + inputStructure: 'detailed', method: 'DELETE', operationId: 'deleteUser', path: '/users/{userId}', @@ -43,7 +44,8 @@ /** * Get a user by ID */ -export const getUserById = base.route({ +export const getUserById = oc.route({ + inputStructure: 'detailed', method: 'GET', operationId: 'getUserById', path: '/users/{userId}', @@ -54,7 +56,8 @@ /** * Update a user */ -export const updateUser = base.route({ +export const updateUser = oc.route({ + inputStructure: 'detailed', method: 'PUT', operationId: 'updateUser', path: '/users/{userId}', @@ -65,7 +68,8 @@ /** * Get all posts */ -export const getPosts = base.route({ +export const getPosts = oc.route({ + inputStructure: 'detailed', method: 'GET', operationId: 'getPosts', path: '/posts', @@ -76,7 +80,8 @@ /** * Create a new post */ -export const createPost = base.route({ +export const createPost = oc.route({ + inputStructure: 'detailed', method: 'POST', operationId: 'createPost', path: '/posts', @@ -88,7 +93,8 @@ /** * Get a post by ID */ -export const getPostById = base.route({ +export const getPostById = oc.route({ + inputStructure: 'detailed', method: 'GET', operationId: 'getPostById', path: '/posts/{postId}', diff --git a/packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/custom-names/orpc.gen.ts b/packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/custom-names/orpc.gen.ts --- a/packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/custom-names/orpc.gen.ts +++ b/packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/custom-names/orpc.gen.ts @@ -4,12 +4,11 @@ import { vCreatePostData, vCreatePostResponse, vCreateUserData, vCreateUserResponse, vDeleteUserData, vGetPostByIdData, vGetPostByIdResponse, vGetPostsData, vGetPostsResponse, vGetUserByIdData, vGetUserByIdResponse, vGetUsersData, vGetUsersResponse, vUpdateUserData, vUpdateUserResponse } from './valibot.gen'; -export const base = oc.$route({ inputStructure: 'detailed' }); - /** * Get all users */ -export const getUsersRpc = base.route({ +export const getUsersRpc = oc.route({ + inputStructure: 'detailed', method: 'GET', operationId: 'getUsers', path: '/users', @@ -20,7 +19,8 @@ /** * Create a new user */ -export const createUserRpc = base.route({ +export const createUserRpc = oc.route({ + inputStructure: 'detailed', method: 'POST', operationId: 'createUser', path: '/users', @@ -32,7 +32,8 @@ /** * Delete a user */ -export const deleteUserRpc = base.route({ +export const deleteUserRpc = oc.route({ + inputStructure: 'detailed', method: 'DELETE', operationId: 'deleteUser', path: '/users/{userId}', @@ -43,7 +44,8 @@ /** * Get a user by ID */ -export const getUserByIdRpc = base.route({ +export const getUserByIdRpc = oc.route({ + inputStructure: 'detailed', method: 'GET', operationId: 'getUserById', path: '/users/{userId}', @@ -54,7 +56,8 @@ /** * Update a user */ -export const updateUserRpc = base.route({ +export const updateUserRpc = oc.route({ + inputStructure: 'detailed', method: 'PUT', operationId: 'updateUser', path: '/users/{userId}', @@ -65,7 +68,8 @@ /** * Get all posts */ -export const getPostsRpc = base.route({ +export const getPostsRpc = oc.route({ + inputStructure: 'detailed', method: 'GET', operationId: 'getPosts', path: '/posts', @@ -76,7 +80,8 @@ /** * Create a new post */ -export const createPostRpc = base.route({ +export const createPostRpc = oc.route({ + inputStructure: 'detailed', method: 'POST', operationId: 'createPost', path: '/posts', @@ -88,7 +93,8 @@ /** * Get a post by ID */ -export const getPostByIdRpc = base.route({ +export const getPostByIdRpc = oc.route({ + inputStructure: 'detailed', method: 'GET', operationId: 'getPostById', path: '/posts/{postId}', diff --git a/packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/default/orpc.gen.ts b/packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/default/orpc.gen.ts --- a/packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/default/orpc.gen.ts +++ b/packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/default/orpc.gen.ts @@ -4,12 +4,11 @@ import { zCreatePostData, zCreatePostResponse, zCreateUserData, zCreateUserResponse, zDeleteUserData, zGetPostByIdData, zGetPostByIdResponse, zGetPostsData, zGetPostsResponse, zGetUserByIdData, zGetUserByIdResponse, zGetUsersData, zGetUsersResponse, zUpdateUserData, zUpdateUserResponse } from './zod.gen'; -export const base = oc.$route({ inputStructure: 'detailed' }); - /** * Get all users */ -export const getUsers = base.route({ +export const getUsers = oc.route({ + inputStructure: 'detailed', method: 'GET', operationId: 'getUsers', path: '/users', @@ -20,7 +19,8 @@ /** * Create a new user */ -export const createUser = base.route({ +export const createUser = oc.route({ + inputStructure: 'detailed', method: 'POST', operationId: 'createUser', path: '/users', @@ -32,7 +32,8 @@ /** * Delete a user */ -export const deleteUser = base.route({ +export const deleteUser = oc.route({ + inputStructure: 'detailed', method: 'DELETE', operationId: 'deleteUser', path: '/users/{userId}', @@ -43,7 +44,8 @@ /** * Get a user by ID */ -export const getUserById = base.route({ +export const getUserById = oc.route({ + inputStructure: 'detailed', method: 'GET', operationId: 'getUserById', path: '/users/{userId}', @@ -54,7 +56,8 @@ /** * Update a user */ -export const updateUser = base.route({ +export const updateUser = oc.route({ + inputStructure: 'detailed', method: 'PUT', operationId: 'updateUser', path: '/users/{userId}', @@ -65,7 +68,8 @@ /** * Get all posts */ -export const getPosts = base.route({ +export const getPosts = oc.route({ + inputStructure: 'detailed', method: 'GET', operationId: 'getPosts', path: '/posts', @@ -76,7 +80,8 @@ /** * Create a new post */ -export const createPost = base.route({ +export const createPost = oc.route({ + inputStructure: 'detailed', method: 'POST', operationId: 'createPost', path: '/posts', @@ -88,7 +93,8 @@ /** * Get a post by ID */ -export const getPostById = base.route({ +export const getPostById = oc.route({ + inputStructure: 'detailed', method: 'GET', operationId: 'getPostById', path: '/posts/{postId}',