fork of hey-api/openapi-ts because I need some additional things
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge pull request #3638 from hey-api/docs/plugin-orpc

docs: add orpc docs

authored by

Lubos and committed by
GitHub
c3e497c0 725101ab

+763 -280
+5
.changeset/five-crabs-relate.md
··· 1 + --- 2 + "@hey-api/openapi-ts": patch 3 + --- 4 + 5 + **plugin(orpc)**: remove `base` export
+1 -1
dev/package.json
··· 13 13 "@hey-api/openapi-python": "workspace:*", 14 14 "@hey-api/openapi-ts": "workspace:*", 15 15 "@opencode-ai/sdk": "1.2.27", 16 - "@orpc/contract": "1.13.4", 16 + "@orpc/contract": "1.13.9", 17 17 "@pinia/colada": "0.19.1", 18 18 "@tanstack/angular-query-experimental": "5.90.25", 19 19 "@tanstack/preact-query": "5.93.0",
+5 -1
docs/.vitepress/config/en.ts
··· 232 232 text: 'Nest', 233 233 }, 234 234 { 235 + link: '/openapi-ts/plugins/orpc', 236 + text: 'oRPC', 237 + }, 238 + { 235 239 link: '/openapi-ts/plugins/adonis', 236 240 text: 'Adonis <span data-soon>soon</span>', 237 241 }, ··· 330 334 text: 'License', 331 335 }, 332 336 { 333 - link: 'https://github.com/orgs/hey-api/discussions/1495', 337 + link: 'https://github.com/orgs/hey-api/discussions/3159', 334 338 text: 'Roadmap', 335 339 }, 336 340 ],
+4
docs/.vitepress/theme/custom.css
··· 303 303 display: none; 304 304 } 305 305 306 + .vp-doc img { 307 + margin: 0; 308 + } 309 + 306 310 .authors-list li > a:hover, 307 311 .authors-list li > a:focus, 308 312 .sponsors-list li:has(> a:hover),
+5
docs/data/people.ts
··· 28 28 name: 'Sebastiaan Wouters', 29 29 }; 30 30 31 + export const stephenZhou: Person = { 32 + github: 'https://github.com/hyoban', 33 + name: 'Stephen Zhou', 34 + }; 35 + 31 36 export const yuriMikhin: Person = { 32 37 github: 'https://github.com/mikhin', 33 38 name: 'Yuri Mikhin',
+2 -2
docs/openapi-ts/plugins/angular/v19.md
··· 118 118 119 119 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. 120 120 121 - <!--@include: ../../partials/examples.md--> 122 - <!--@include: ../../partials/sponsors.md--> 121 + <!--@include: ../../../partials/examples.md--> 122 + <!--@include: ../../../partials/sponsors.md-->
+1 -3
docs/openapi-ts/plugins/fastify.md
··· 87 87 output: 'src/client', 88 88 plugins: [ 89 89 // ...other plugins 90 - { 91 - name: 'fastify', 92 - }, 90 + 'fastify', 93 91 ], 94 92 }; 95 93 ```
+183
docs/openapi-ts/plugins/orpc.md
··· 1 + --- 2 + title: oRPC v1 Plugin 3 + description: Generate oRPC v1 contracts from OpenAPI with the oRPC plugin for openapi-ts. Fully compatible with validators, transformers, and all core features. 4 + --- 5 + 6 + <script setup lang="ts"> 7 + import AuthorsList from '@components/AuthorsList.vue'; 8 + import Heading from '@components/Heading.vue'; 9 + import { stephenZhou } from '@data/people.js'; 10 + import VersionLabel from '@components/VersionLabel.vue'; 11 + </script> 12 + 13 + <Heading> 14 + <h1>oRPC<span class="sr-only"> v1</span></h1> 15 + <VersionLabel value="v1" /> 16 + </Heading> 17 + 18 + ::: warning 19 + 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). 20 + ::: 21 + 22 + ### About 23 + 24 + [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. 25 + 26 + The oRPC plugin for Hey API generates contracts from your OpenAPI spec, fully compatible with all core features. 27 + 28 + ### Collaborators 29 + 30 + <AuthorsList :people="[stephenZhou]" /> 31 + 32 + ## Features 33 + 34 + - oRPC v1 support 35 + - seamless integration with `@hey-api/openapi-ts` ecosystem 36 + - generated contracts 37 + - minimal learning curve thanks to extending the underlying technology 38 + 39 + ## Installation 40 + 41 + In your [configuration](/openapi-ts/get-started), add `orpc` to your plugins and you'll be ready to generate oRPC artifacts. :tada: 42 + 43 + ```js 44 + export default { 45 + input: 'hey-api/backend', // sign up at app.heyapi.dev 46 + output: 'src/client', 47 + plugins: [ 48 + // ...other plugins 49 + 'orpc', // [!code ++] 50 + ], 51 + }; 52 + ``` 53 + 54 + ## Output 55 + 56 + The oRPC plugin will generate the following artifacts, depending on the input specification. 57 + 58 + ## Contracts 59 + 60 + Contracts are generated from all endpoints. 61 + 62 + ::: code-group 63 + 64 + ```js [example] 65 + import { oc } from '@orpc/contract'; 66 + 67 + const addPet = oc.route({ 68 + description: 'Add a new pet to the store.', 69 + inputStructure: 'detailed', 70 + method: 'POST', 71 + operationId: 'addPet', 72 + path: '/pet', 73 + summary: 'Add a new pet to the store.', 74 + tags: ['pet'], 75 + }); 76 + ``` 77 + 78 + ```js [config] 79 + export default { 80 + input: 'hey-api/backend', // sign up at app.heyapi.dev 81 + output: 'src/client', 82 + plugins: [ 83 + // ...other plugins 84 + 'orpc', 85 + ], 86 + }; 87 + ``` 88 + 89 + ::: 90 + 91 + ### Validators 92 + 93 + 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. 94 + 95 + 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. 96 + 97 + ::: code-group 98 + 99 + ```js [example] 100 + import { oc } from '@orpc/contract'; 101 + 102 + import { vAddPetData, vAddPetResponse } from './valibot.gen'; 103 + 104 + const addPet = oc 105 + .route({ 106 + description: 'Add a new pet to the store.', 107 + inputStructure: 'detailed', 108 + method: 'POST', 109 + operationId: 'addPet', 110 + path: '/pet', 111 + summary: 'Add a new pet to the store.', 112 + tags: ['pet'], 113 + }) 114 + .input(vAddPetData) // [!code ++] 115 + .output(vAddPetResponse); // [!code ++] 116 + ``` 117 + 118 + ```js [config] 119 + export default { 120 + input: 'hey-api/backend', // sign up at app.heyapi.dev 121 + output: 'src/client', 122 + plugins: [ 123 + // ...other plugins 124 + { 125 + name: 'orpc', 126 + validator: true, // or 'valibot' // [!code ++] 127 + }, 128 + { 129 + name: 'valibot', // customize (optional) // [!code ++] 130 + // other options 131 + }, 132 + ], 133 + }; 134 + ``` 135 + 136 + ::: 137 + 138 + You can choose to validate only inputs or outputs. 139 + 140 + ::: code-group 141 + 142 + ```js [inputs] 143 + export default { 144 + input: 'hey-api/backend', // sign up at app.heyapi.dev 145 + output: 'src/client', 146 + plugins: [ 147 + // ...other plugins 148 + { 149 + name: 'orpc', 150 + validator: { 151 + input: 'zod', // [!code ++] 152 + }, 153 + }, 154 + ], 155 + }; 156 + ``` 157 + 158 + ```js [outputs] 159 + export default { 160 + input: 'hey-api/backend', // sign up at app.heyapi.dev 161 + output: 'src/client', 162 + plugins: [ 163 + // ...other plugins 164 + { 165 + name: 'orpc', 166 + validator: { 167 + output: 'zod', // [!code ++] 168 + }, 169 + }, 170 + ], 171 + }; 172 + ``` 173 + 174 + ::: 175 + 176 + Learn more about available validators on the [Validators](/openapi-ts/validators) page. 177 + 178 + ## API 179 + 180 + 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. 181 + 182 + <!--@include: ../../partials/examples.md--> 183 + <!--@include: ../../partials/sponsors.md-->
+1 -1
docs/openapi-ts/plugins/transformers.md
··· 153 153 154 154 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. 155 155 156 - <!--@include: ../partials/sponsors.md--> 156 + <!--@include: ../../partials/sponsors.md-->
+1
docs/openapi-ts/web-frameworks.md
··· 14 14 - [Angular](/openapi-ts/plugins/angular) 15 15 - [Fastify](/openapi-ts/plugins/fastify) 16 16 - [Nest](/openapi-ts/plugins/nest) 17 + - [oRPC](/openapi-ts/plugins/orpc) 17 18 - [Adonis](/openapi-ts/plugins/adonis) <span data-soon>Soon</span> 18 19 - [Elysia](/openapi-ts/plugins/elysia) <span data-soon>Soon</span> 19 20 - [Express](/openapi-ts/plugins/express) <span data-soon>Soon</span>
+1 -1
docs/package.json
··· 16 16 "devDependencies": { 17 17 "sharp": "0.34.5", 18 18 "vitepress": "2.0.0-alpha.16", 19 - "vitepress-plugin-llms": "1.11.0", 19 + "vitepress-plugin-llms": "1.12.0", 20 20 "vue": "3.5.25" 21 21 } 22 22 }
+16 -10
packages/openapi-ts-tests/orpc/v1/__snapshots__/3.0.x/custom-names/orpc.gen.ts
··· 4 4 5 5 import { vCreatePostData, vCreatePostResponse, vCreateUserData, vCreateUserResponse, vDeleteUserData, vGetPostByIdData, vGetPostByIdResponse, vGetPostsData, vGetPostsResponse, vGetUserByIdData, vGetUserByIdResponse, vGetUsersData, vGetUsersResponse, vUpdateUserData, vUpdateUserResponse } from './valibot.gen'; 6 6 7 - export const base = oc.$route({ inputStructure: 'detailed' }); 8 - 9 7 /** 10 8 * Get all users 11 9 */ 12 - export const getUsersRpc = base.route({ 10 + export const getUsersRpc = oc.route({ 11 + inputStructure: 'detailed', 13 12 method: 'GET', 14 13 operationId: 'getUsers', 15 14 path: '/users', ··· 20 19 /** 21 20 * Create a new user 22 21 */ 23 - export const createUserRpc = base.route({ 22 + export const createUserRpc = oc.route({ 23 + inputStructure: 'detailed', 24 24 method: 'POST', 25 25 operationId: 'createUser', 26 26 path: '/users', ··· 32 32 /** 33 33 * Delete a user 34 34 */ 35 - export const deleteUserRpc = base.route({ 35 + export const deleteUserRpc = oc.route({ 36 + inputStructure: 'detailed', 36 37 method: 'DELETE', 37 38 operationId: 'deleteUser', 38 39 path: '/users/{userId}', ··· 43 44 /** 44 45 * Get a user by ID 45 46 */ 46 - export const getUserByIdRpc = base.route({ 47 + export const getUserByIdRpc = oc.route({ 48 + inputStructure: 'detailed', 47 49 method: 'GET', 48 50 operationId: 'getUserById', 49 51 path: '/users/{userId}', ··· 54 56 /** 55 57 * Update a user 56 58 */ 57 - export const updateUserRpc = base.route({ 59 + export const updateUserRpc = oc.route({ 60 + inputStructure: 'detailed', 58 61 method: 'PUT', 59 62 operationId: 'updateUser', 60 63 path: '/users/{userId}', ··· 65 68 /** 66 69 * Get all posts 67 70 */ 68 - export const getPostsRpc = base.route({ 71 + export const getPostsRpc = oc.route({ 72 + inputStructure: 'detailed', 69 73 method: 'GET', 70 74 operationId: 'getPosts', 71 75 path: '/posts', ··· 76 80 /** 77 81 * Create a new post 78 82 */ 79 - export const createPostRpc = base.route({ 83 + export const createPostRpc = oc.route({ 84 + inputStructure: 'detailed', 80 85 method: 'POST', 81 86 operationId: 'createPost', 82 87 path: '/posts', ··· 88 93 /** 89 94 * Get a post by ID 90 95 */ 91 - export const getPostByIdRpc = base.route({ 96 + export const getPostByIdRpc = oc.route({ 97 + inputStructure: 'detailed', 92 98 method: 'GET', 93 99 operationId: 'getPostById', 94 100 path: '/posts/{postId}',
+16 -10
packages/openapi-ts-tests/orpc/v1/__snapshots__/3.0.x/default/orpc.gen.ts
··· 4 4 5 5 import { zCreatePostData, zCreatePostResponse, zCreateUserData, zCreateUserResponse, zDeleteUserData, zGetPostByIdData, zGetPostByIdResponse, zGetPostsData, zGetPostsResponse, zGetUserByIdData, zGetUserByIdResponse, zGetUsersData, zGetUsersResponse, zUpdateUserData, zUpdateUserResponse } from './zod.gen'; 6 6 7 - export const base = oc.$route({ inputStructure: 'detailed' }); 8 - 9 7 /** 10 8 * Get all users 11 9 */ 12 - export const getUsers = base.route({ 10 + export const getUsers = oc.route({ 11 + inputStructure: 'detailed', 13 12 method: 'GET', 14 13 operationId: 'getUsers', 15 14 path: '/users', ··· 20 19 /** 21 20 * Create a new user 22 21 */ 23 - export const createUser = base.route({ 22 + export const createUser = oc.route({ 23 + inputStructure: 'detailed', 24 24 method: 'POST', 25 25 operationId: 'createUser', 26 26 path: '/users', ··· 32 32 /** 33 33 * Delete a user 34 34 */ 35 - export const deleteUser = base.route({ 35 + export const deleteUser = oc.route({ 36 + inputStructure: 'detailed', 36 37 method: 'DELETE', 37 38 operationId: 'deleteUser', 38 39 path: '/users/{userId}', ··· 43 44 /** 44 45 * Get a user by ID 45 46 */ 46 - export const getUserById = base.route({ 47 + export const getUserById = oc.route({ 48 + inputStructure: 'detailed', 47 49 method: 'GET', 48 50 operationId: 'getUserById', 49 51 path: '/users/{userId}', ··· 54 56 /** 55 57 * Update a user 56 58 */ 57 - export const updateUser = base.route({ 59 + export const updateUser = oc.route({ 60 + inputStructure: 'detailed', 58 61 method: 'PUT', 59 62 operationId: 'updateUser', 60 63 path: '/users/{userId}', ··· 65 68 /** 66 69 * Get all posts 67 70 */ 68 - export const getPosts = base.route({ 71 + export const getPosts = oc.route({ 72 + inputStructure: 'detailed', 69 73 method: 'GET', 70 74 operationId: 'getPosts', 71 75 path: '/posts', ··· 76 80 /** 77 81 * Create a new post 78 82 */ 79 - export const createPost = base.route({ 83 + export const createPost = oc.route({ 84 + inputStructure: 'detailed', 80 85 method: 'POST', 81 86 operationId: 'createPost', 82 87 path: '/posts', ··· 88 93 /** 89 94 * Get a post by ID 90 95 */ 91 - export const getPostById = base.route({ 96 + export const getPostById = oc.route({ 97 + inputStructure: 'detailed', 92 98 method: 'GET', 93 99 operationId: 'getPostById', 94 100 path: '/posts/{postId}',
+16 -10
packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/contracts-custom-naming/orpc.gen.ts
··· 4 4 5 5 import { zCreatePostData, zCreatePostResponse, zCreateUserData, zCreateUserResponse, zDeleteUserData, zGetPostByIdData, zGetPostByIdResponse, zGetPostsData, zGetPostsResponse, zGetUserByIdData, zGetUserByIdResponse, zGetUsersData, zGetUsersResponse, zUpdateUserData, zUpdateUserResponse } from './zod.gen'; 6 6 7 - export const base = oc.$route({ inputStructure: 'detailed' }); 8 - 9 7 /** 10 8 * Get all users 11 9 */ 12 - export const GetUsers = base.route({ 10 + export const GetUsers = oc.route({ 11 + inputStructure: 'detailed', 13 12 method: 'GET', 14 13 operationId: 'getUsers', 15 14 path: '/users', ··· 20 19 /** 21 20 * Create a new user 22 21 */ 23 - export const CreateUser = base.route({ 22 + export const CreateUser = oc.route({ 23 + inputStructure: 'detailed', 24 24 method: 'POST', 25 25 operationId: 'createUser', 26 26 path: '/users', ··· 32 32 /** 33 33 * Delete a user 34 34 */ 35 - export const DeleteUser = base.route({ 35 + export const DeleteUser = oc.route({ 36 + inputStructure: 'detailed', 36 37 method: 'DELETE', 37 38 operationId: 'deleteUser', 38 39 path: '/users/{userId}', ··· 43 44 /** 44 45 * Get a user by ID 45 46 */ 46 - export const GetUserById = base.route({ 47 + export const GetUserById = oc.route({ 48 + inputStructure: 'detailed', 47 49 method: 'GET', 48 50 operationId: 'getUserById', 49 51 path: '/users/{userId}', ··· 54 56 /** 55 57 * Update a user 56 58 */ 57 - export const UpdateUser = base.route({ 59 + export const UpdateUser = oc.route({ 60 + inputStructure: 'detailed', 58 61 method: 'PUT', 59 62 operationId: 'updateUser', 60 63 path: '/users/{userId}', ··· 73 76 /** 74 77 * Get all posts 75 78 */ 76 - export const GetPosts = base.route({ 79 + export const GetPosts = oc.route({ 80 + inputStructure: 'detailed', 77 81 method: 'GET', 78 82 operationId: 'getPosts', 79 83 path: '/posts', ··· 84 88 /** 85 89 * Create a new post 86 90 */ 87 - export const CreatePost = base.route({ 91 + export const CreatePost = oc.route({ 92 + inputStructure: 'detailed', 88 93 method: 'POST', 89 94 operationId: 'createPost', 90 95 path: '/posts', ··· 96 101 /** 97 102 * Get a post by ID 98 103 */ 99 - export const GetPostById = base.route({ 104 + export const GetPostById = oc.route({ 105 + inputStructure: 'detailed', 100 106 method: 'GET', 101 107 operationId: 'getPostById', 102 108 path: '/posts/{postId}',
+16 -10
packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/contracts-nesting-id/orpc.gen.ts
··· 4 4 5 5 import { zCreatePostData, zCreatePostResponse, zCreateUserData, zCreateUserResponse, zDeleteUserData, zGetPostByIdData, zGetPostByIdResponse, zGetPostsData, zGetPostsResponse, zGetUserByIdData, zGetUserByIdResponse, zGetUsersData, zGetUsersResponse, zUpdateUserData, zUpdateUserResponse } from './zod.gen'; 6 6 7 - export const base = oc.$route({ inputStructure: 'detailed' }); 8 - 9 7 /** 10 8 * Get all users 11 9 */ 12 - export const getUsers = base.route({ 10 + export const getUsers = oc.route({ 11 + inputStructure: 'detailed', 13 12 method: 'GET', 14 13 operationId: 'getUsers', 15 14 path: '/users', ··· 20 19 /** 21 20 * Create a new user 22 21 */ 23 - export const createUser = base.route({ 22 + export const createUser = oc.route({ 23 + inputStructure: 'detailed', 24 24 method: 'POST', 25 25 operationId: 'createUser', 26 26 path: '/users', ··· 32 32 /** 33 33 * Delete a user 34 34 */ 35 - export const deleteUser = base.route({ 35 + export const deleteUser = oc.route({ 36 + inputStructure: 'detailed', 36 37 method: 'DELETE', 37 38 operationId: 'deleteUser', 38 39 path: '/users/{userId}', ··· 43 44 /** 44 45 * Get a user by ID 45 46 */ 46 - export const getUserById = base.route({ 47 + export const getUserById = oc.route({ 48 + inputStructure: 'detailed', 47 49 method: 'GET', 48 50 operationId: 'getUserById', 49 51 path: '/users/{userId}', ··· 54 56 /** 55 57 * Update a user 56 58 */ 57 - export const updateUser = base.route({ 59 + export const updateUser = oc.route({ 60 + inputStructure: 'detailed', 58 61 method: 'PUT', 59 62 operationId: 'updateUser', 60 63 path: '/users/{userId}', ··· 73 76 /** 74 77 * Get all posts 75 78 */ 76 - export const getPosts = base.route({ 79 + export const getPosts = oc.route({ 80 + inputStructure: 'detailed', 77 81 method: 'GET', 78 82 operationId: 'getPosts', 79 83 path: '/posts', ··· 84 88 /** 85 89 * Create a new post 86 90 */ 87 - export const createPost = base.route({ 91 + export const createPost = oc.route({ 92 + inputStructure: 'detailed', 88 93 method: 'POST', 89 94 operationId: 'createPost', 90 95 path: '/posts', ··· 96 101 /** 97 102 * Get a post by ID 98 103 */ 99 - export const getPostById = base.route({ 104 + export const getPostById = oc.route({ 105 + inputStructure: 'detailed', 100 106 method: 'GET', 101 107 operationId: 'getPostById', 102 108 path: '/posts/{postId}',
+16 -10
packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/contracts-strategy-by-tags/orpc.gen.ts
··· 4 4 5 5 import { zCreatePostData, zCreatePostResponse, zCreateUserData, zCreateUserResponse, zDeleteUserData, zGetPostByIdData, zGetPostByIdResponse, zGetPostsData, zGetPostsResponse, zGetUserByIdData, zGetUserByIdResponse, zGetUsersData, zGetUsersResponse, zUpdateUserData, zUpdateUserResponse } from './zod.gen'; 6 6 7 - export const base = oc.$route({ inputStructure: 'detailed' }); 8 - 9 7 /** 10 8 * Get all users 11 9 */ 12 - export const getUsers = base.route({ 10 + export const getUsers = oc.route({ 11 + inputStructure: 'detailed', 13 12 method: 'GET', 14 13 operationId: 'getUsers', 15 14 path: '/users', ··· 20 19 /** 21 20 * Create a new user 22 21 */ 23 - export const createUser = base.route({ 22 + export const createUser = oc.route({ 23 + inputStructure: 'detailed', 24 24 method: 'POST', 25 25 operationId: 'createUser', 26 26 path: '/users', ··· 32 32 /** 33 33 * Delete a user 34 34 */ 35 - export const deleteUser = base.route({ 35 + export const deleteUser = oc.route({ 36 + inputStructure: 'detailed', 36 37 method: 'DELETE', 37 38 operationId: 'deleteUser', 38 39 path: '/users/{userId}', ··· 43 44 /** 44 45 * Get a user by ID 45 46 */ 46 - export const getUserById = base.route({ 47 + export const getUserById = oc.route({ 48 + inputStructure: 'detailed', 47 49 method: 'GET', 48 50 operationId: 'getUserById', 49 51 path: '/users/{userId}', ··· 54 56 /** 55 57 * Update a user 56 58 */ 57 - export const updateUser = base.route({ 59 + export const updateUser = oc.route({ 60 + inputStructure: 'detailed', 58 61 method: 'PUT', 59 62 operationId: 'updateUser', 60 63 path: '/users/{userId}', ··· 73 76 /** 74 77 * Get all posts 75 78 */ 76 - export const getPosts = base.route({ 79 + export const getPosts = oc.route({ 80 + inputStructure: 'detailed', 77 81 method: 'GET', 78 82 operationId: 'getPosts', 79 83 path: '/posts', ··· 84 88 /** 85 89 * Create a new post 86 90 */ 87 - export const createPost = base.route({ 91 + export const createPost = oc.route({ 92 + inputStructure: 'detailed', 88 93 method: 'POST', 89 94 operationId: 'createPost', 90 95 path: '/posts', ··· 96 101 /** 97 102 * Get a post by ID 98 103 */ 99 - export const getPostById = base.route({ 104 + export const getPostById = oc.route({ 105 + inputStructure: 'detailed', 100 106 method: 'GET', 101 107 operationId: 'getPostById', 102 108 path: '/posts/{postId}',
+16 -10
packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/contracts-strategy-single/orpc.gen.ts
··· 4 4 5 5 import { zCreatePostData, zCreatePostResponse, zCreateUserData, zCreateUserResponse, zDeleteUserData, zGetPostByIdData, zGetPostByIdResponse, zGetPostsData, zGetPostsResponse, zGetUserByIdData, zGetUserByIdResponse, zGetUsersData, zGetUsersResponse, zUpdateUserData, zUpdateUserResponse } from './zod.gen'; 6 6 7 - export const base = oc.$route({ inputStructure: 'detailed' }); 8 - 9 7 /** 10 8 * Get all users 11 9 */ 12 - export const getUsers = base.route({ 10 + export const getUsers = oc.route({ 11 + inputStructure: 'detailed', 13 12 method: 'GET', 14 13 operationId: 'getUsers', 15 14 path: '/users', ··· 20 19 /** 21 20 * Create a new user 22 21 */ 23 - export const createUser = base.route({ 22 + export const createUser = oc.route({ 23 + inputStructure: 'detailed', 24 24 method: 'POST', 25 25 operationId: 'createUser', 26 26 path: '/users', ··· 32 32 /** 33 33 * Delete a user 34 34 */ 35 - export const deleteUser = base.route({ 35 + export const deleteUser = oc.route({ 36 + inputStructure: 'detailed', 36 37 method: 'DELETE', 37 38 operationId: 'deleteUser', 38 39 path: '/users/{userId}', ··· 43 44 /** 44 45 * Get a user by ID 45 46 */ 46 - export const getUserById = base.route({ 47 + export const getUserById = oc.route({ 48 + inputStructure: 'detailed', 47 49 method: 'GET', 48 50 operationId: 'getUserById', 49 51 path: '/users/{userId}', ··· 54 56 /** 55 57 * Update a user 56 58 */ 57 - export const updateUser = base.route({ 59 + export const updateUser = oc.route({ 60 + inputStructure: 'detailed', 58 61 method: 'PUT', 59 62 operationId: 'updateUser', 60 63 path: '/users/{userId}', ··· 65 68 /** 66 69 * Get all posts 67 70 */ 68 - export const getPosts = base.route({ 71 + export const getPosts = oc.route({ 72 + inputStructure: 'detailed', 69 73 method: 'GET', 70 74 operationId: 'getPosts', 71 75 path: '/posts', ··· 76 80 /** 77 81 * Create a new post 78 82 */ 79 - export const createPost = base.route({ 83 + export const createPost = oc.route({ 84 + inputStructure: 'detailed', 80 85 method: 'POST', 81 86 operationId: 'createPost', 82 87 path: '/posts', ··· 88 93 /** 89 94 * Get a post by ID 90 95 */ 91 - export const getPostById = base.route({ 96 + export const getPostById = oc.route({ 97 + inputStructure: 'detailed', 92 98 method: 'GET', 93 99 operationId: 'getPostById', 94 100 path: '/posts/{postId}',
+16 -10
packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/custom-names/orpc.gen.ts
··· 4 4 5 5 import { vCreatePostData, vCreatePostResponse, vCreateUserData, vCreateUserResponse, vDeleteUserData, vGetPostByIdData, vGetPostByIdResponse, vGetPostsData, vGetPostsResponse, vGetUserByIdData, vGetUserByIdResponse, vGetUsersData, vGetUsersResponse, vUpdateUserData, vUpdateUserResponse } from './valibot.gen'; 6 6 7 - export const base = oc.$route({ inputStructure: 'detailed' }); 8 - 9 7 /** 10 8 * Get all users 11 9 */ 12 - export const getUsersRpc = base.route({ 10 + export const getUsersRpc = oc.route({ 11 + inputStructure: 'detailed', 13 12 method: 'GET', 14 13 operationId: 'getUsers', 15 14 path: '/users', ··· 20 19 /** 21 20 * Create a new user 22 21 */ 23 - export const createUserRpc = base.route({ 22 + export const createUserRpc = oc.route({ 23 + inputStructure: 'detailed', 24 24 method: 'POST', 25 25 operationId: 'createUser', 26 26 path: '/users', ··· 32 32 /** 33 33 * Delete a user 34 34 */ 35 - export const deleteUserRpc = base.route({ 35 + export const deleteUserRpc = oc.route({ 36 + inputStructure: 'detailed', 36 37 method: 'DELETE', 37 38 operationId: 'deleteUser', 38 39 path: '/users/{userId}', ··· 43 44 /** 44 45 * Get a user by ID 45 46 */ 46 - export const getUserByIdRpc = base.route({ 47 + export const getUserByIdRpc = oc.route({ 48 + inputStructure: 'detailed', 47 49 method: 'GET', 48 50 operationId: 'getUserById', 49 51 path: '/users/{userId}', ··· 54 56 /** 55 57 * Update a user 56 58 */ 57 - export const updateUserRpc = base.route({ 59 + export const updateUserRpc = oc.route({ 60 + inputStructure: 'detailed', 58 61 method: 'PUT', 59 62 operationId: 'updateUser', 60 63 path: '/users/{userId}', ··· 65 68 /** 66 69 * Get all posts 67 70 */ 68 - export const getPostsRpc = base.route({ 71 + export const getPostsRpc = oc.route({ 72 + inputStructure: 'detailed', 69 73 method: 'GET', 70 74 operationId: 'getPosts', 71 75 path: '/posts', ··· 76 80 /** 77 81 * Create a new post 78 82 */ 79 - export const createPostRpc = base.route({ 83 + export const createPostRpc = oc.route({ 84 + inputStructure: 'detailed', 80 85 method: 'POST', 81 86 operationId: 'createPost', 82 87 path: '/posts', ··· 88 93 /** 89 94 * Get a post by ID 90 95 */ 91 - export const getPostByIdRpc = base.route({ 96 + export const getPostByIdRpc = oc.route({ 97 + inputStructure: 'detailed', 92 98 method: 'GET', 93 99 operationId: 'getPostById', 94 100 path: '/posts/{postId}',
+16 -10
packages/openapi-ts-tests/orpc/v1/__snapshots__/3.1.x/default/orpc.gen.ts
··· 4 4 5 5 import { zCreatePostData, zCreatePostResponse, zCreateUserData, zCreateUserResponse, zDeleteUserData, zGetPostByIdData, zGetPostByIdResponse, zGetPostsData, zGetPostsResponse, zGetUserByIdData, zGetUserByIdResponse, zGetUsersData, zGetUsersResponse, zUpdateUserData, zUpdateUserResponse } from './zod.gen'; 6 6 7 - export const base = oc.$route({ inputStructure: 'detailed' }); 8 - 9 7 /** 10 8 * Get all users 11 9 */ 12 - export const getUsers = base.route({ 10 + export const getUsers = oc.route({ 11 + inputStructure: 'detailed', 13 12 method: 'GET', 14 13 operationId: 'getUsers', 15 14 path: '/users', ··· 20 19 /** 21 20 * Create a new user 22 21 */ 23 - export const createUser = base.route({ 22 + export const createUser = oc.route({ 23 + inputStructure: 'detailed', 24 24 method: 'POST', 25 25 operationId: 'createUser', 26 26 path: '/users', ··· 32 32 /** 33 33 * Delete a user 34 34 */ 35 - export const deleteUser = base.route({ 35 + export const deleteUser = oc.route({ 36 + inputStructure: 'detailed', 36 37 method: 'DELETE', 37 38 operationId: 'deleteUser', 38 39 path: '/users/{userId}', ··· 43 44 /** 44 45 * Get a user by ID 45 46 */ 46 - export const getUserById = base.route({ 47 + export const getUserById = oc.route({ 48 + inputStructure: 'detailed', 47 49 method: 'GET', 48 50 operationId: 'getUserById', 49 51 path: '/users/{userId}', ··· 54 56 /** 55 57 * Update a user 56 58 */ 57 - export const updateUser = base.route({ 59 + export const updateUser = oc.route({ 60 + inputStructure: 'detailed', 58 61 method: 'PUT', 59 62 operationId: 'updateUser', 60 63 path: '/users/{userId}', ··· 65 68 /** 66 69 * Get all posts 67 70 */ 68 - export const getPosts = base.route({ 71 + export const getPosts = oc.route({ 72 + inputStructure: 'detailed', 69 73 method: 'GET', 70 74 operationId: 'getPosts', 71 75 path: '/posts', ··· 76 80 /** 77 81 * Create a new post 78 82 */ 79 - export const createPost = base.route({ 83 + export const createPost = oc.route({ 84 + inputStructure: 'detailed', 80 85 method: 'POST', 81 86 operationId: 'createPost', 82 87 path: '/posts', ··· 88 93 /** 89 94 * Get a post by ID 90 95 */ 91 - export const getPostById = base.route({ 96 + export const getPostById = oc.route({ 97 + inputStructure: 'detailed', 92 98 method: 'GET', 93 99 operationId: 'getPostById', 94 100 path: '/posts/{postId}',
+1 -1
packages/openapi-ts-tests/orpc/v1/package.json
··· 8 8 }, 9 9 "devDependencies": { 10 10 "@hey-api/openapi-ts": "workspace:*", 11 - "@orpc/contract": "1.13.4", 11 + "@orpc/contract": "1.13.9", 12 12 "typescript": "5.9.3", 13 13 "valibot": "1.2.0", 14 14 "zod": "4.3.6"
+8 -7
packages/openapi-ts/README.md
··· 306 306 307 307 ### Client 308 308 309 - 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). 309 + 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. 310 310 311 - ### Native Clients 311 + ### Available Clients 312 312 313 313 - [`@hey-api/client-fetch`](https://heyapi.dev/openapi-ts/clients/fetch) 314 314 - [`@hey-api/client-angular`](https://heyapi.dev/openapi-ts/clients/angular) ··· 318 318 - [`@hey-api/client-nuxt`](https://heyapi.dev/openapi-ts/clients/nuxt) 319 319 - [`@hey-api/client-ofetch`](https://heyapi.dev/openapi-ts/clients/ofetch) 320 320 321 - ### Planned Clients 321 + ### Proposed Clients (Vote to Prioritize) 322 322 323 - 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). 323 + 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). 324 324 325 325 - [`@hey-api/client-effect`](https://heyapi.dev/openapi-ts/clients/effect) 326 326 327 327 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). 328 328 329 - ### Native Plugins 329 + ### Available Plugins 330 330 331 331 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. 332 332 ··· 343 343 - [`@tanstack/svelte-query`](https://heyapi.dev/openapi-ts/plugins/tanstack-query) 344 344 - [`@tanstack/vue-query`](https://heyapi.dev/openapi-ts/plugins/tanstack-query) 345 345 - [`fastify`](https://heyapi.dev/openapi-ts/plugins/fastify) 346 + - [`orpc`](https://heyapi.dev/openapi-ts/plugins/orpc) 346 347 - [`nestjs`](https://heyapi.dev/openapi-ts/plugins/nest) 347 348 - [`valibot`](https://heyapi.dev/openapi-ts/plugins/valibot) 348 349 - [`zod`](https://heyapi.dev/openapi-ts/plugins/zod) 349 350 350 - ### Planned Plugins 351 + ### Proposed Plugins (Vote to Prioritize) 351 352 352 - 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). 353 + 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). 353 354 354 355 - [Adonis](https://heyapi.dev/openapi-ts/plugins/adonis) 355 356 - [Ajv](https://heyapi.dev/openapi-ts/plugins/ajv)
+5 -6
packages/openapi-ts/src/plugins/orpc/contracts/node.ts
··· 52 52 function createContractExpression( 53 53 plugin: OrpcPlugin['Instance'], 54 54 operation: IR.OperationObject, 55 - baseSymbol: Symbol, 56 - ) { 55 + ): ReturnType<typeof $.call> { 57 56 const successResponse = getSuccessResponse(operation); 58 57 const tags = getTags(operation, plugin.config.contracts.strategyDefaultTag); 59 58 60 - let expression = $(baseSymbol) 59 + let expression = $(plugin.external('@orpc/contract.oc')) 61 60 .attr('route') 62 61 .call( 63 62 $.object() 64 63 .$if(operation.deprecated, (o, v) => o.prop('deprecated', $.literal(v))) 65 64 .$if(operation.description, (o, v) => o.prop('description', $.literal(v))) 65 + .prop('inputStructure', $.literal('detailed')) 66 66 .prop('method', $.literal(operation.method.toUpperCase())) 67 67 .$if(operation.operationId, (o, v) => o.prop('operationId', $.literal(v))) 68 68 .prop('path', $.literal(operation.path)) ··· 164 164 export function toNode( 165 165 model: StructureNode, 166 166 plugin: OrpcPlugin['Instance'], 167 - baseSymbol: Symbol, 168 167 ): { 169 168 nodes: ReadonlyArray<ReturnType<typeof $.const>>; 170 169 symbols?: Map<string, Symbol>; ··· 176 175 for (const item of model.itemsFrom<ContractItem>(source)) { 177 176 const { operation } = item.data; 178 177 const contractSymbol = createContractSymbol(plugin, item); 179 - const expression = createContractExpression(plugin, operation, baseSymbol); 178 + const expression = createContractExpression(plugin, operation); 180 179 181 180 const node = $.const(contractSymbol) 182 181 .export() ··· 198 197 for (const item of model.itemsFrom<ContractItem>(source)) { 199 198 const { operation } = item.data; 200 199 const contractSymbol = createContractSymbol(plugin, item); 201 - const expression = createContractExpression(plugin, operation, baseSymbol); 200 + const expression = createContractExpression(plugin, operation); 202 201 203 202 const node = $.const(contractSymbol) 204 203 .export()
+7 -13
packages/openapi-ts/src/plugins/orpc/v1/plugin.ts
··· 1 1 import { StructureModel } from '@hey-api/codegen-core'; 2 2 3 - import { $ } from '../../../ts-dsl'; 3 + import type { $ } from '../../../ts-dsl'; 4 4 import type { ContractItem } from '../contracts'; 5 5 import { createShell, resolveStrategy, source, toNode } from '../contracts'; 6 6 import type { OrpcPlugin } from '../types'; 7 7 8 8 export const handlerV1: OrpcPlugin['Handler'] = ({ plugin }) => { 9 - const oc = plugin.symbol('oc', { 9 + plugin.symbol('oc', { 10 10 external: '@orpc/contract', 11 + meta: { 12 + category: 'external', 13 + resource: '@orpc/contract.oc', 14 + }, 11 15 }); 12 - const baseSymbol = plugin.symbol('base'); 13 - 14 - const baseNode = $.const(baseSymbol) 15 - .export() 16 - .assign( 17 - $(oc) 18 - .attr('$route') 19 - .call($.object().prop('inputStructure', $.literal('detailed'))), 20 - ); 21 - plugin.node(baseNode); 22 16 23 17 const structure = new StructureModel(); 24 18 const shell = createShell(plugin); ··· 43 37 const allNodes: Array<ReturnType<typeof $.class | typeof $.var>> = []; 44 38 45 39 for (const node of structure.walk()) { 46 - const { nodes } = toNode(node, plugin, baseSymbol); 40 + const { nodes } = toNode(node, plugin); 47 41 allNodes.push(...nodes); 48 42 } 49 43
+405 -164
pnpm-lock.yaml
··· 119 119 specifier: 1.2.27 120 120 version: 1.2.27 121 121 '@orpc/contract': 122 - specifier: 1.13.4 123 - version: 1.13.4 122 + specifier: 1.13.9 123 + version: 1.13.9 124 124 '@pinia/colada': 125 125 specifier: 0.19.1 126 126 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 183 specifier: 2.0.0-alpha.16 184 184 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) 185 185 vitepress-plugin-llms: 186 - specifier: 1.11.0 187 - version: 1.11.0 186 + specifier: 1.12.0 187 + version: 1.12.0 188 188 vue: 189 189 specifier: 3.5.25 190 190 version: 3.5.25(typescript@5.9.3) ··· 1312 1312 version: 1.8.0 1313 1313 nuxt: 1314 1314 specifier: '>=3.0.0' 1315 - 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)) 1315 + 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)) 1316 1316 vue: 1317 1317 specifier: '>=3.5.13' 1318 1318 version: 3.5.13(typescript@5.9.3) ··· 1444 1444 version: 1.14.3 1445 1445 nuxt: 1446 1446 specifier: 3.14.1592 1447 - 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)) 1447 + 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)) 1448 1448 ofetch: 1449 1449 specifier: 1.5.1 1450 1450 version: 1.5.1 ··· 1593 1593 specifier: workspace:* 1594 1594 version: link:../../../openapi-ts 1595 1595 '@orpc/contract': 1596 - specifier: 1.13.4 1597 - version: 1.13.4 1596 + specifier: 1.13.9 1597 + version: 1.13.9 1598 1598 typescript: 1599 1599 specifier: 5.9.3 1600 1600 version: 5.9.3 ··· 2886 2886 resolution: {integrity: sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==} 2887 2887 engines: {node: '>=14.17.0'} 2888 2888 2889 - '@docsearch/css@4.5.3': 2890 - resolution: {integrity: sha512-kUpHaxn0AgI3LQfyzTYkNUuaFY4uEz/Ym9/N/FvyDE+PzSgZsCyDH9jE49B6N6f1eLCm9Yp64J9wENd6vypdxA==} 2889 + '@docsearch/css@4.6.0': 2890 + resolution: {integrity: sha512-YlcAimkXclvqta47g47efzCM5CFxDwv2ClkDfEs/fC/Ak0OxPH2b3czwa4o8O1TRBf+ujFF2RiUwszz2fPVNJQ==} 2891 2891 2892 - '@docsearch/js@4.5.3': 2893 - resolution: {integrity: sha512-rcBiUMCXbZLqrLIT6F6FDcrG/tyvM2WM0zum6NPbIiQNDQxbSgmNc+/bToS0rxBsXaxiU64esiWoS02WqrWLsg==} 2892 + '@docsearch/js@4.6.0': 2893 + resolution: {integrity: sha512-9/rbgkm/BgTq46cwxIohvSAz3koOFjnPpg0mwkJItAfzKbQIj+310PvwtgUY1YITDuGCag6yOL50GW2DBkaaBw==} 2894 2894 2895 - '@docsearch/sidepanel-js@4.5.3': 2896 - resolution: {integrity: sha512-DmcZYc1ZMMcabtKrCU2RIf1z09LwazKCyoPFU/ijJiBg2LdqMLmkyDKHGy1OIYEyUx4ok5RIbkVGaRfD55BqZQ==} 2895 + '@docsearch/sidepanel-js@4.6.0': 2896 + resolution: {integrity: sha512-lFT5KLwlzUmpoGArCScNoK41l9a22JYsEPwBzMrz+/ILVR5Ax87UphCuiyDFQWEvEmbwzn/kJx5W/O5BUlN1Rw==} 2897 2897 2898 2898 '@dxup/nuxt@0.3.2': 2899 2899 resolution: {integrity: sha512-2f2usP4oLNsIGjPprvABe3f3GWuIhIDp0169pGLFxTDRI5A4d4sBbGpR+tD9bGZCT+1Btb6Q2GKlyv3LkDCW5g==} ··· 4395 4395 resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} 4396 4396 engines: {node: 20 || >=22} 4397 4397 4398 - '@isaacs/brace-expansion@5.0.0': 4399 - resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} 4400 - engines: {node: 20 || >=22} 4401 - 4402 4398 '@isaacs/brace-expansion@5.0.1': 4403 4399 resolution: {integrity: sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==} 4404 4400 engines: {node: 20 || >=22} ··· 5152 5148 '@opencode-ai/sdk@1.2.27': 5153 5149 resolution: {integrity: sha512-Wk0o/I+Fo+wE3zgvlJDs8Fb67KlKqX0PrV8dK5adSDkANq6r4Z25zXJg2iOir+a8ntg3rAcpel1OY4FV/TwRUA==} 5154 5150 5155 - '@orpc/client@1.13.4': 5156 - resolution: {integrity: sha512-s13GPMeoooJc5Th2EaYT5HMFtWG8S03DUVytYfJv8pIhP87RYKl94w52A36denH6r/B4LaAgBeC9nTAOslK+Og==} 5151 + '@orpc/client@1.13.9': 5152 + resolution: {integrity: sha512-RmD2HDgmGgF6zgHHdybE4zH6QJoHjC+/C3n56yLf+fmWbiZtwnOUETgGCroY6S8aK2fpy6hJ3wZaJUjfWVuGHg==} 5157 5153 5158 - '@orpc/contract@1.13.4': 5159 - resolution: {integrity: sha512-TIxyaF67uOlihCRcasjHZxguZpbqfNK7aMrDLnhoufmQBE4OKvguNzmrOFHgsuM0OXoopX0Nuhun1ccaxKP10A==} 5154 + '@orpc/contract@1.13.9': 5155 + resolution: {integrity: sha512-0zxMyF82pxE8DwHzarCsCtOHQK96PE23qubMMBkxkP0XTtLJ7f8aYhrG8F16pNApypmTHiRlQlqNX8VXNViMqQ==} 5160 5156 5161 - '@orpc/shared@1.13.4': 5162 - resolution: {integrity: sha512-TYt9rLG/BUkNQBeQ6C1tEiHS/Seb8OojHgj9GlvqyjHJhMZx5qjsIyTW6RqLPZJ4U2vgK6x4Her36+tlFCKJug==} 5157 + '@orpc/shared@1.13.9': 5158 + resolution: {integrity: sha512-gpMY2e9jDsSyikh4DjBCO2Cs0wGj2I6xo2juIcmogYK5ecsTGO/U5huIftQn+2NUMk1cItwmykJBwc4pqHWVHw==} 5163 5159 peerDependencies: 5164 5160 '@opentelemetry/api': '>=1.9.0' 5165 5161 peerDependenciesMeta: 5166 5162 '@opentelemetry/api': 5167 5163 optional: true 5168 5164 5169 - '@orpc/standard-server-fetch@1.13.4': 5170 - resolution: {integrity: sha512-/zmKwnuxfAXbppJpgr1CMnQX3ptPlYcDzLz1TaVzz9VG/Xg58Ov3YhabS2Oi1utLVhy5t4kaCppUducAvoKN+A==} 5165 + '@orpc/standard-server-fetch@1.13.9': 5166 + resolution: {integrity: sha512-/dJmHO+EVONyvmX3CFZkRjlRHeBfq0+6nnpFIVueGo4fNUbtQc+qurKEtpQqPxL/b7GSehskNH21XKLE0IE0gQ==} 5171 5167 5172 - '@orpc/standard-server-peer@1.13.4': 5173 - resolution: {integrity: sha512-UfqnTLqevjCKUk4cmImOG8cQUwANpV1dp9e9u2O1ki6BRBsg/zlXFg6G2N6wP0zr9ayIiO1d2qJdH55yl/1BNw==} 5168 + '@orpc/standard-server-peer@1.13.9': 5169 + resolution: {integrity: sha512-r8hSykxNIKwXSMuLYWBxQx1c3DU8b6nU8V76DZhtwC5g1SLYIzw+dzT/EgHplOfmsFeyodiEDXXX1k/twRLuzw==} 5174 5170 5175 - '@orpc/standard-server@1.13.4': 5176 - resolution: {integrity: sha512-ZOzgfVp6XUg+wVYw+gqesfRfGPtQbnBIrIiSnFMtZF+6ncmFJeF2Shc4RI2Guqc0Qz25juy8Ogo4tX3YqysOcg==} 5171 + '@orpc/standard-server@1.13.9': 5172 + resolution: {integrity: sha512-dwsky7CScgOaDBa7CBF85aPGk/3UoB4fJjitVghb/sZD0Nt+CGIeiPHMsjEgxw5rJwgawMWLI5KxFH9euAJlWw==} 5177 5173 5178 5174 '@oxc-minify/binding-android-arm-eabi@0.110.0': 5179 5175 resolution: {integrity: sha512-43fMTO8/5bMlqfOiNSZNKUzIqeLIYuB9Hr1Ohyf58B1wU11S2dPGibTXOGNaWsfgHy99eeZ1bSgeIHy/fEYqbw==} ··· 7135 7131 resolution: {integrity: sha512-OEd7RYlSwmq4zpaHPOnf+yyzWN6aON4RrA+Dd3PGo5JPBY8G5peofQpJZDwxdJJKPOvqU0C7aZ8LeL2CE2XTdA==} 7136 7132 hasBin: true 7137 7133 7138 - '@shikijs/core@3.22.0': 7139 - resolution: {integrity: sha512-iAlTtSDDbJiRpvgL5ugKEATDtHdUVkqgHDm/gbD2ZS9c88mx7G1zSYjjOxp5Qa0eaW0MAQosFRmJSk354PRoQA==} 7134 + '@shikijs/core@3.23.0': 7135 + resolution: {integrity: sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA==} 7140 7136 7141 - '@shikijs/engine-javascript@3.22.0': 7142 - resolution: {integrity: sha512-jdKhfgW9CRtj3Tor0L7+yPwdG3CgP7W+ZEqSsojrMzCjD1e0IxIbwUMDDpYlVBlC08TACg4puwFGkZfLS+56Tw==} 7137 + '@shikijs/engine-javascript@3.23.0': 7138 + resolution: {integrity: sha512-aHt9eiGFobmWR5uqJUViySI1bHMqrAgamWE1TYSUoftkAeCCAiGawPMwM+VCadylQtF4V3VNOZ5LmfItH5f3yA==} 7143 7139 7144 - '@shikijs/engine-oniguruma@3.22.0': 7145 - resolution: {integrity: sha512-DyXsOG0vGtNtl7ygvabHd7Mt5EY8gCNqR9Y7Lpbbd/PbJvgWrqaKzH1JW6H6qFkuUa8aCxoiYVv8/YfFljiQxA==} 7140 + '@shikijs/engine-oniguruma@3.23.0': 7141 + resolution: {integrity: sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==} 7146 7142 7147 - '@shikijs/langs@3.22.0': 7148 - resolution: {integrity: sha512-x/42TfhWmp6H00T6uwVrdTJGKgNdFbrEdhaDwSR5fd5zhQ1Q46bHq9EO61SCEWJR0HY7z2HNDMaBZp8JRmKiIA==} 7143 + '@shikijs/langs@3.23.0': 7144 + resolution: {integrity: sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==} 7149 7145 7150 - '@shikijs/themes@3.22.0': 7151 - resolution: {integrity: sha512-o+tlOKqsr6FE4+mYJG08tfCFDS+3CG20HbldXeVoyP+cYSUxDhrFf3GPjE60U55iOkkjbpY2uC3It/eeja35/g==} 7146 + '@shikijs/themes@3.23.0': 7147 + resolution: {integrity: sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==} 7152 7148 7153 - '@shikijs/transformers@3.22.0': 7154 - resolution: {integrity: sha512-E7eRV7mwDBjueLF6852n2oYeJYxBq3NSsDk+uyruYAXONv4U8holGmIrT+mPRJQ1J1SNOH6L8G19KRzmBawrFw==} 7149 + '@shikijs/transformers@3.23.0': 7150 + resolution: {integrity: sha512-F9msZVxdF+krQNSdQ4V+Ja5QemeAoTQ2jxt7nJCwhDsdF1JWS3KxIQXA3lQbyKwS3J61oHRUSv4jYWv3CkaKTQ==} 7155 7151 7156 - '@shikijs/types@3.22.0': 7157 - resolution: {integrity: sha512-491iAekgKDBFE67z70Ok5a8KBMsQ2IJwOWw3us/7ffQkIBCyOQfm/aNwVMBUriP02QshIfgHCBSIYAl3u2eWjg==} 7152 + '@shikijs/types@3.23.0': 7153 + resolution: {integrity: sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==} 7158 7154 7159 7155 '@shikijs/vscode-textmate@10.0.2': 7160 7156 resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} ··· 8328 8324 vue: 8329 8325 optional: true 8330 8326 8331 - '@vueuse/core@14.1.0': 8332 - resolution: {integrity: sha512-rgBinKs07hAYyPF834mDTigH7BtPqvZ3Pryuzt1SD/lg5wEcWqvwzXXYGEDb2/cP0Sj5zSvHl3WkmMELr5kfWw==} 8327 + '@vueuse/core@14.2.1': 8328 + resolution: {integrity: sha512-3vwDzV+GDUNpdegRY6kzpLm4Igptq+GA0QkJ3W61Iv27YWwW/ufSlOfgQIpN6FZRMG0mkaz4gglJRtq5SeJyIQ==} 8333 8329 peerDependencies: 8334 8330 vue: ^3.5.0 8335 8331 8336 - '@vueuse/integrations@14.1.0': 8337 - resolution: {integrity: sha512-eNQPdisnO9SvdydTIXnTE7c29yOsJBD/xkwEyQLdhDC/LKbqrFpXHb3uS//7NcIrQO3fWVuvMGp8dbK6mNEMCA==} 8332 + '@vueuse/integrations@14.2.1': 8333 + resolution: {integrity: sha512-2LIUpBi/67PoXJGqSDQUF0pgQWpNHh7beiA+KG2AbybcNm+pTGWT6oPGlBgUoDWmYwfeQqM/uzOHqcILpKL7nA==} 8338 8334 peerDependencies: 8339 8335 async-validator: ^4 8340 8336 axios: ^1 8341 8337 change-case: ^5 8342 8338 drauu: ^0.4 8343 - focus-trap: ^7 8339 + focus-trap: ^7 || ^8 8344 8340 fuse.js: ^7 8345 8341 idb-keyval: ^6 8346 8342 jwt-decode: ^4 ··· 8375 8371 universal-cookie: 8376 8372 optional: true 8377 8373 8378 - '@vueuse/metadata@14.1.0': 8379 - resolution: {integrity: sha512-7hK4g015rWn2PhKcZ99NyT+ZD9sbwm7SGvp7k+k+rKGWnLjS/oQozoIZzWfCewSUeBmnJkIb+CNr7Zc/EyRnnA==} 8374 + '@vueuse/metadata@14.2.1': 8375 + resolution: {integrity: sha512-1ButlVtj5Sb/HDtIy1HFr1VqCP4G6Ypqt5MAo0lCgjokrk2mvQKsK2uuy0vqu/Ks+sHfuHo0B9Y9jn9xKdjZsw==} 8380 8376 8381 - '@vueuse/shared@14.1.0': 8382 - resolution: {integrity: sha512-EcKxtYvn6gx1F8z9J5/rsg3+lTQnvOruQd8fUecW99DCK04BkWD7z5KQ/wTAx+DazyoEE9dJt/zV8OIEQbM6kw==} 8377 + '@vueuse/shared@14.2.1': 8378 + resolution: {integrity: sha512-shTJncjV9JTI4oVNyF1FQonetYAiTBd+Qj7cY89SWbXSkx7gyhrgtEdF2ZAVWS1S3SHlaROO6F2IesJxQEkZBw==} 8383 8379 peerDependencies: 8384 8380 vue: ^3.5.0 8385 8381 ··· 8821 8817 balanced-match@1.0.2: 8822 8818 resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 8823 8819 8820 + balanced-match@4.0.4: 8821 + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} 8822 + engines: {node: 18 || 20 || >=22} 8823 + 8824 8824 bare-events@2.6.1: 8825 8825 resolution: {integrity: sha512-AuTJkq9XmE6Vk0FJVNq5QxETrSA/vKHarWVBG5l/JbdCL1prJemiyJqUS0jrlXO0MftuPq4m3YVYhoNc5+aE/g==} 8826 8826 ··· 8891 8891 brace-expansion@2.0.2: 8892 8892 resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} 8893 8893 8894 + brace-expansion@5.0.4: 8895 + resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==} 8896 + engines: {node: 18 || 20 || >=22} 8897 + 8894 8898 braces@3.0.3: 8895 8899 resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 8896 8900 engines: {node: '>=8'} ··· 11828 11832 resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} 11829 11833 engines: {node: '>= 0.4'} 11830 11834 11831 - mdast-util-from-markdown@2.0.2: 11832 - resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} 11835 + mdast-util-from-markdown@2.0.3: 11836 + resolution: {integrity: sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==} 11833 11837 11834 11838 mdast-util-frontmatter@2.0.1: 11835 11839 resolution: {integrity: sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==} ··· 12029 12033 minimalistic-assert@1.0.1: 12030 12034 resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} 12031 12035 12032 - minimatch@10.1.1: 12033 - resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} 12034 - engines: {node: 20 || >=22} 12035 - 12036 12036 minimatch@10.1.2: 12037 12037 resolution: {integrity: sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==} 12038 12038 engines: {node: 20 || >=22} 12039 + 12040 + minimatch@10.2.4: 12041 + resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} 12042 + engines: {node: 18 || 20 || >=22} 12039 12043 12040 12044 minimatch@3.1.2: 12041 12045 resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} ··· 12571 12575 oniguruma-parser@0.12.1: 12572 12576 resolution: {integrity: sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==} 12573 12577 12574 - oniguruma-to-es@4.3.4: 12575 - resolution: {integrity: sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==} 12578 + oniguruma-to-es@4.3.5: 12579 + resolution: {integrity: sha512-Zjygswjpsewa0NLTsiizVuMQZbp0MDyM6lIt66OxsF21npUDlzpHi1Mgb/qhQdkb+dWFTzJmFbEWdvZgRho8eQ==} 12576 12580 12577 12581 open@10.2.0: 12578 12582 resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} ··· 13517 13521 regex-utilities@2.3.0: 13518 13522 resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} 13519 13523 13520 - regex@6.0.1: 13521 - resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==} 13524 + regex@6.1.0: 13525 + resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==} 13522 13526 13523 13527 regexp-tree@0.1.27: 13524 13528 resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} ··· 13939 13943 resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} 13940 13944 engines: {node: '>= 0.4'} 13941 13945 13942 - shiki@3.22.0: 13943 - resolution: {integrity: sha512-LBnhsoYEe0Eou4e1VgJACes+O6S6QC0w71fCSp5Oya79inkwkm15gQ1UF6VtQ8j/taMDh79hAB49WUk8ALQW3g==} 13946 + shiki@3.23.0: 13947 + resolution: {integrity: sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA==} 13944 13948 13945 13949 side-channel-list@1.0.0: 13946 13950 resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} ··· 14516 14520 resolution: {integrity: sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==} 14517 14521 engines: {node: '>=14.16'} 14518 14522 14519 - tokenx@1.2.1: 14520 - resolution: {integrity: sha512-lVhFIhR2qh3uUyUA8Ype+HGzcokUJbHmRSN1TJKOe4Y26HkawQuLiGkUCkR5LD9dx+Rtp+njrwzPL8AHHYQSYA==} 14523 + tokenx@1.3.0: 14524 + resolution: {integrity: sha512-NLdXTEZkKiO0gZuLtMoZKjCXTREXeZZt8nnnNeyoXtNZAfG/GKGSbQtLU5STspc0rMSwcA+UJfWZkbNU01iKmQ==} 14521 14525 14522 14526 toml@3.0.0: 14523 14527 resolution: {integrity: sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==} ··· 14706 14710 14707 14711 type-fest@5.4.3: 14708 14712 resolution: {integrity: sha512-AXSAQJu79WGc79/3e9/CR77I/KQgeY1AhNvcShIH4PTcGYyC4xv6H4R4AUOwkPS5799KlVDAu8zExeCrkGquiA==} 14713 + engines: {node: '>=20'} 14714 + 14715 + type-fest@5.5.0: 14716 + resolution: {integrity: sha512-PlBfpQwiUvGViBNX84Yxwjsdhd1TUlXr6zjX7eoirtCPIr08NAmxwa+fcYBTeRQxHo9YC9wwF3m9i700sHma8g==} 14709 14717 engines: {node: '>=20'} 14710 14718 14711 14719 type-is@1.6.18: ··· 14909 14917 unist-util-visit-parents@6.0.1: 14910 14918 resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} 14911 14919 14912 - unist-util-visit@5.0.0: 14913 - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} 14920 + unist-util-visit@5.1.0: 14921 + resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} 14914 14922 14915 14923 universalify@0.1.2: 14916 14924 resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} ··· 15483 15491 vite: 15484 15492 optional: true 15485 15493 15486 - vitepress-plugin-llms@1.11.0: 15487 - resolution: {integrity: sha512-n6fjWzBNKy40p8cij+d2cHiC2asNW1eQKdmc06gX9VAv7vWppIoVLH/f7Ht1bK0vSpGzzW2QimvNfbfv1oCdJw==} 15494 + vitepress-plugin-llms@1.12.0: 15495 + resolution: {integrity: sha512-zuzL7a8UJuGl46le5cAy/QxKMGlpSylcsLjDDn6BYPc1u+eP3nzoQk9ne9XFBqrE7exoJlIYJELVN8HMgYlFKQ==} 15496 + engines: {node: '>=18.0.0'} 15488 15497 15489 15498 vitepress@2.0.0-alpha.16: 15490 15499 resolution: {integrity: sha512-w1nwsefDVIsje7BZr2tsKxkZutDGjG0YoQ2yxO7+a9tvYVqfljYbwj5LMYkPy8Tb7YbPwa22HtIhk62jbrvuEQ==} ··· 18021 18030 18022 18031 '@discoveryjs/json-ext@0.6.3': {} 18023 18032 18024 - '@docsearch/css@4.5.3': {} 18033 + '@docsearch/css@4.6.0': {} 18025 18034 18026 - '@docsearch/js@4.5.3': {} 18035 + '@docsearch/js@4.6.0': {} 18027 18036 18028 - '@docsearch/sidepanel-js@4.5.3': {} 18037 + '@docsearch/sidepanel-js@4.6.0': {} 18029 18038 18030 18039 '@dxup/nuxt@0.3.2(magicast@0.5.2)': 18031 18040 dependencies: ··· 19122 19131 19123 19132 '@isaacs/balanced-match@4.0.1': {} 19124 19133 19125 - '@isaacs/brace-expansion@5.0.0': 19126 - dependencies: 19127 - '@isaacs/balanced-match': 4.0.1 19128 - 19129 19134 '@isaacs/brace-expansion@5.0.1': 19130 19135 dependencies: 19131 19136 '@isaacs/balanced-match': 4.0.1 ··· 19798 19803 19799 19804 '@nuxt/devalue@2.0.2': {} 19800 19805 19806 + '@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))': 19807 + dependencies: 19808 + '@nuxt/kit': 3.21.0(magicast@0.3.5) 19809 + '@nuxt/schema': 3.16.2 19810 + execa: 7.2.0 19811 + vite: 5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1) 19812 + transitivePeerDependencies: 19813 + - magicast 19814 + 19801 19815 '@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))': 19802 19816 dependencies: 19803 19817 '@nuxt/kit': 3.21.0(magicast@0.3.5) ··· 19894 19908 - utf-8-validate 19895 19909 - vue 19896 19910 19911 + '@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))': 19912 + dependencies: 19913 + '@antfu/utils': 0.7.10 19914 + '@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)) 19915 + '@nuxt/devtools-wizard': 1.7.0 19916 + '@nuxt/kit': 3.21.0(magicast@0.3.5) 19917 + '@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)) 19918 + '@vue/devtools-kit': 7.6.8 19919 + birpc: 0.2.19 19920 + consola: 3.4.2 19921 + cronstrue: 2.59.0 19922 + destr: 2.0.5 19923 + error-stack-parser-es: 0.1.5 19924 + execa: 7.2.0 19925 + fast-npm-meta: 0.2.2 19926 + flatted: 3.3.3 19927 + get-port-please: 3.2.0 19928 + hookable: 5.5.3 19929 + image-meta: 0.2.1 19930 + is-installed-globally: 1.0.0 19931 + launch-editor: 2.11.1 19932 + local-pkg: 0.5.1 19933 + magicast: 0.3.5 19934 + nypm: 0.4.1 19935 + ohash: 1.1.6 19936 + pathe: 1.1.2 19937 + perfect-debounce: 1.0.0 19938 + pkg-types: 1.3.1 19939 + rc9: 2.1.2 19940 + scule: 1.3.0 19941 + semver: 7.7.3 19942 + simple-git: 3.28.0 19943 + sirv: 3.0.2 19944 + tinyglobby: 0.2.15 19945 + unimport: 3.14.6(rollup@4.56.0) 19946 + vite: 5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1) 19947 + 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)) 19948 + 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)) 19949 + which: 3.0.1 19950 + ws: 8.18.3 19951 + transitivePeerDependencies: 19952 + - bufferutil 19953 + - rollup 19954 + - supports-color 19955 + - utf-8-validate 19956 + - vue 19957 + 19897 19958 '@nuxt/devtools@1.7.0(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))(vue@3.5.25(typescript@5.9.3))': 19898 19959 dependencies: 19899 19960 '@antfu/utils': 0.7.10 ··· 20601 20662 20602 20663 '@opencode-ai/sdk@1.2.27': {} 20603 20664 20604 - '@orpc/client@1.13.4': 20665 + '@orpc/client@1.13.9': 20605 20666 dependencies: 20606 - '@orpc/shared': 1.13.4 20607 - '@orpc/standard-server': 1.13.4 20608 - '@orpc/standard-server-fetch': 1.13.4 20609 - '@orpc/standard-server-peer': 1.13.4 20667 + '@orpc/shared': 1.13.9 20668 + '@orpc/standard-server': 1.13.9 20669 + '@orpc/standard-server-fetch': 1.13.9 20670 + '@orpc/standard-server-peer': 1.13.9 20610 20671 transitivePeerDependencies: 20611 20672 - '@opentelemetry/api' 20612 20673 20613 - '@orpc/contract@1.13.4': 20674 + '@orpc/contract@1.13.9': 20614 20675 dependencies: 20615 - '@orpc/client': 1.13.4 20616 - '@orpc/shared': 1.13.4 20676 + '@orpc/client': 1.13.9 20677 + '@orpc/shared': 1.13.9 20617 20678 '@standard-schema/spec': 1.1.0 20618 20679 openapi-types: 12.1.3 20619 20680 transitivePeerDependencies: 20620 20681 - '@opentelemetry/api' 20621 20682 20622 - '@orpc/shared@1.13.4': 20683 + '@orpc/shared@1.13.9': 20623 20684 dependencies: 20624 20685 radash: 12.1.1 20625 - type-fest: 5.4.3 20686 + type-fest: 5.5.0 20626 20687 20627 - '@orpc/standard-server-fetch@1.13.4': 20688 + '@orpc/standard-server-fetch@1.13.9': 20628 20689 dependencies: 20629 - '@orpc/shared': 1.13.4 20630 - '@orpc/standard-server': 1.13.4 20690 + '@orpc/shared': 1.13.9 20691 + '@orpc/standard-server': 1.13.9 20631 20692 transitivePeerDependencies: 20632 20693 - '@opentelemetry/api' 20633 20694 20634 - '@orpc/standard-server-peer@1.13.4': 20695 + '@orpc/standard-server-peer@1.13.9': 20635 20696 dependencies: 20636 - '@orpc/shared': 1.13.4 20637 - '@orpc/standard-server': 1.13.4 20697 + '@orpc/shared': 1.13.9 20698 + '@orpc/standard-server': 1.13.9 20638 20699 transitivePeerDependencies: 20639 20700 - '@opentelemetry/api' 20640 20701 20641 - '@orpc/standard-server@1.13.4': 20702 + '@orpc/standard-server@1.13.9': 20642 20703 dependencies: 20643 - '@orpc/shared': 1.13.4 20704 + '@orpc/shared': 1.13.9 20644 20705 transitivePeerDependencies: 20645 20706 - '@opentelemetry/api' 20646 20707 ··· 22147 22208 ajv-formats: 3.0.1(ajv@8.17.1) 22148 22209 js-yaml: 4.1.1 22149 22210 22150 - '@shikijs/core@3.22.0': 22211 + '@shikijs/core@3.23.0': 22151 22212 dependencies: 22152 - '@shikijs/types': 3.22.0 22213 + '@shikijs/types': 3.23.0 22153 22214 '@shikijs/vscode-textmate': 10.0.2 22154 22215 '@types/hast': 3.0.4 22155 22216 hast-util-to-html: 9.0.5 22156 22217 22157 - '@shikijs/engine-javascript@3.22.0': 22218 + '@shikijs/engine-javascript@3.23.0': 22158 22219 dependencies: 22159 - '@shikijs/types': 3.22.0 22220 + '@shikijs/types': 3.23.0 22160 22221 '@shikijs/vscode-textmate': 10.0.2 22161 - oniguruma-to-es: 4.3.4 22222 + oniguruma-to-es: 4.3.5 22162 22223 22163 - '@shikijs/engine-oniguruma@3.22.0': 22224 + '@shikijs/engine-oniguruma@3.23.0': 22164 22225 dependencies: 22165 - '@shikijs/types': 3.22.0 22226 + '@shikijs/types': 3.23.0 22166 22227 '@shikijs/vscode-textmate': 10.0.2 22167 22228 22168 - '@shikijs/langs@3.22.0': 22229 + '@shikijs/langs@3.23.0': 22169 22230 dependencies: 22170 - '@shikijs/types': 3.22.0 22231 + '@shikijs/types': 3.23.0 22171 22232 22172 - '@shikijs/themes@3.22.0': 22233 + '@shikijs/themes@3.23.0': 22173 22234 dependencies: 22174 - '@shikijs/types': 3.22.0 22235 + '@shikijs/types': 3.23.0 22175 22236 22176 - '@shikijs/transformers@3.22.0': 22237 + '@shikijs/transformers@3.23.0': 22177 22238 dependencies: 22178 - '@shikijs/core': 3.22.0 22179 - '@shikijs/types': 3.22.0 22239 + '@shikijs/core': 3.23.0 22240 + '@shikijs/types': 3.23.0 22180 22241 22181 - '@shikijs/types@3.22.0': 22242 + '@shikijs/types@3.23.0': 22182 22243 dependencies: 22183 22244 '@shikijs/vscode-textmate': 10.0.2 22184 22245 '@types/hast': 3.0.4 ··· 23579 23640 dependencies: 23580 23641 '@vue/devtools-kit': 8.0.5 23581 23642 23643 + '@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))': 23644 + dependencies: 23645 + '@vue/devtools-kit': 7.7.7 23646 + '@vue/devtools-shared': 7.7.7 23647 + mitt: 3.0.1 23648 + nanoid: 5.1.5 23649 + pathe: 1.1.2 23650 + 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)) 23651 + vue: 3.5.25(typescript@5.9.3) 23652 + transitivePeerDependencies: 23653 + - vite 23654 + 23582 23655 '@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))': 23583 23656 dependencies: 23584 23657 '@vue/devtools-kit': 7.7.7 ··· 23800 23873 typescript: 5.9.3 23801 23874 vue: 3.5.13(typescript@5.9.3) 23802 23875 23803 - '@vueuse/core@14.1.0(vue@3.5.27(typescript@5.9.3))': 23876 + '@vueuse/core@14.2.1(vue@3.5.27(typescript@5.9.3))': 23804 23877 dependencies: 23805 23878 '@types/web-bluetooth': 0.0.21 23806 - '@vueuse/metadata': 14.1.0 23807 - '@vueuse/shared': 14.1.0(vue@3.5.27(typescript@5.9.3)) 23879 + '@vueuse/metadata': 14.2.1 23880 + '@vueuse/shared': 14.2.1(vue@3.5.27(typescript@5.9.3)) 23808 23881 vue: 3.5.27(typescript@5.9.3) 23809 23882 23810 - '@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))': 23883 + '@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))': 23811 23884 dependencies: 23812 - '@vueuse/core': 14.1.0(vue@3.5.27(typescript@5.9.3)) 23813 - '@vueuse/shared': 14.1.0(vue@3.5.27(typescript@5.9.3)) 23885 + '@vueuse/core': 14.2.1(vue@3.5.27(typescript@5.9.3)) 23886 + '@vueuse/shared': 14.2.1(vue@3.5.27(typescript@5.9.3)) 23814 23887 vue: 3.5.27(typescript@5.9.3) 23815 23888 optionalDependencies: 23816 23889 axios: 1.13.4 ··· 23818 23891 fuse.js: 7.1.0 23819 23892 jwt-decode: 4.0.0 23820 23893 23821 - '@vueuse/metadata@14.1.0': {} 23894 + '@vueuse/metadata@14.2.1': {} 23822 23895 23823 - '@vueuse/shared@14.1.0(vue@3.5.27(typescript@5.9.3))': 23896 + '@vueuse/shared@14.2.1(vue@3.5.27(typescript@5.9.3))': 23824 23897 dependencies: 23825 23898 vue: 3.5.27(typescript@5.9.3) 23826 23899 ··· 24353 24426 24354 24427 balanced-match@1.0.2: {} 24355 24428 24429 + balanced-match@4.0.4: {} 24430 + 24356 24431 bare-events@2.6.1: 24357 24432 optional: true 24358 24433 ··· 24445 24520 brace-expansion@2.0.2: 24446 24521 dependencies: 24447 24522 balanced-match: 1.0.2 24523 + 24524 + brace-expansion@5.0.4: 24525 + dependencies: 24526 + balanced-match: 4.0.4 24448 24527 24449 24528 braces@3.0.3: 24450 24529 dependencies: ··· 28028 28107 28029 28108 math-intrinsics@1.1.0: {} 28030 28109 28031 - mdast-util-from-markdown@2.0.2: 28110 + mdast-util-from-markdown@2.0.3: 28032 28111 dependencies: 28033 28112 '@types/mdast': 4.0.4 28034 28113 '@types/unist': 3.0.3 ··· 28050 28129 '@types/mdast': 4.0.4 28051 28130 devlop: 1.1.0 28052 28131 escape-string-regexp: 5.0.0 28053 - mdast-util-from-markdown: 2.0.2 28132 + mdast-util-from-markdown: 2.0.3 28054 28133 mdast-util-to-markdown: 2.1.2 28055 28134 micromark-extension-frontmatter: 2.0.0 28056 28135 transitivePeerDependencies: ··· 28070 28149 micromark-util-sanitize-uri: 2.0.1 28071 28150 trim-lines: 3.0.1 28072 28151 unist-util-position: 5.0.0 28073 - unist-util-visit: 5.0.0 28152 + unist-util-visit: 5.1.0 28074 28153 vfile: 6.0.3 28075 28154 28076 28155 mdast-util-to-markdown@2.1.2: ··· 28082 28161 mdast-util-to-string: 4.0.0 28083 28162 micromark-util-classify-character: 2.0.1 28084 28163 micromark-util-decode-string: 2.0.1 28085 - unist-util-visit: 5.0.0 28164 + unist-util-visit: 5.1.0 28086 28165 zwitch: 2.0.4 28087 28166 28088 28167 mdast-util-to-string@4.0.0: ··· 28317 28396 28318 28397 minimalistic-assert@1.0.1: {} 28319 28398 28320 - minimatch@10.1.1: 28321 - dependencies: 28322 - '@isaacs/brace-expansion': 5.0.0 28323 - 28324 28399 minimatch@10.1.2: 28325 28400 dependencies: 28326 28401 '@isaacs/brace-expansion': 5.0.1 28402 + 28403 + minimatch@10.2.4: 28404 + dependencies: 28405 + brace-expansion: 5.0.4 28327 28406 28328 28407 minimatch@3.1.2: 28329 28408 dependencies: ··· 28908 28987 28909 28988 nuxi@3.28.0: {} 28910 28989 28911 - 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)): 28990 + 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)): 28912 28991 dependencies: 28913 28992 '@nuxt/devalue': 2.0.2 28914 - '@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)) 28915 - '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@3.29.5) 28916 - '@nuxt/schema': 3.14.1592(magicast@0.3.5)(rollup@3.29.5) 28993 + '@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)) 28994 + '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@4.56.0) 28995 + '@nuxt/schema': 3.14.1592(magicast@0.3.5)(rollup@4.56.0) 28917 28996 '@nuxt/telemetry': 2.6.6(magicast@0.3.5) 28918 - '@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)) 28997 + '@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)) 28919 28998 '@unhead/dom': 1.11.20 28920 28999 '@unhead/shared': 1.11.20 28921 29000 '@unhead/ssr': 1.11.20 ··· 28938 29017 h3: 1.15.4 28939 29018 hookable: 5.5.3 28940 29019 ignore: 6.0.2 28941 - impound: 0.2.2(rollup@3.29.5) 29020 + impound: 0.2.2(rollup@4.56.0) 28942 29021 jiti: 2.6.1 28943 29022 klona: 2.0.6 28944 29023 knitwork: 1.3.0 ··· 28965 29044 unctx: 2.4.1 28966 29045 unenv: 1.10.0 28967 29046 unhead: 1.11.20 28968 - unimport: 3.14.6(rollup@3.29.5) 29047 + unimport: 3.14.6(rollup@4.56.0) 28969 29048 unplugin: 1.16.1 28970 - 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)) 29049 + 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)) 28971 29050 unstorage: 1.17.0(@netlify/blobs@9.1.2)(db0@0.3.2)(ioredis@5.7.0) 28972 29051 untyped: 1.5.2 28973 29052 vue: 3.5.25(typescript@5.9.3) 28974 29053 vue-bundle-renderer: 2.1.2 28975 29054 vue-devtools-stub: 0.1.0 28976 - vue-router: 4.5.0(vue@3.5.13(typescript@5.9.3)) 29055 + vue-router: 4.5.0(vue@3.5.25(typescript@5.9.3)) 28977 29056 optionalDependencies: 28978 29057 '@parcel/watcher': 2.5.1 28979 29058 '@types/node': 25.2.1 ··· 29150 29229 - vue-tsc 29151 29230 - xml2js 29152 29231 29232 + 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)): 29233 + dependencies: 29234 + '@nuxt/devalue': 2.0.2 29235 + '@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)) 29236 + '@nuxt/kit': 3.14.1592(magicast@0.3.5)(rollup@3.29.5) 29237 + '@nuxt/schema': 3.14.1592(magicast@0.3.5)(rollup@3.29.5) 29238 + '@nuxt/telemetry': 2.6.6(magicast@0.3.5) 29239 + '@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)) 29240 + '@unhead/dom': 1.11.20 29241 + '@unhead/shared': 1.11.20 29242 + '@unhead/ssr': 1.11.20 29243 + '@unhead/vue': 1.11.20(vue@3.5.25(typescript@5.9.3)) 29244 + '@vue/shared': 3.5.25 29245 + acorn: 8.14.0 29246 + c12: 2.0.1(magicast@0.3.5) 29247 + chokidar: 4.0.3 29248 + compatx: 0.1.8 29249 + consola: 3.4.2 29250 + cookie-es: 1.2.2 29251 + defu: 6.1.4 29252 + destr: 2.0.5 29253 + devalue: 5.3.2 29254 + errx: 0.1.0 29255 + esbuild: 0.24.2 29256 + escape-string-regexp: 5.0.0 29257 + estree-walker: 3.0.3 29258 + globby: 14.1.0 29259 + h3: 1.15.4 29260 + hookable: 5.5.3 29261 + ignore: 6.0.2 29262 + impound: 0.2.2(rollup@3.29.5) 29263 + jiti: 2.6.1 29264 + klona: 2.0.6 29265 + knitwork: 1.3.0 29266 + magic-string: 0.30.21 29267 + mlly: 1.8.0 29268 + nanotar: 0.1.1 29269 + nitropack: 2.12.4(@netlify/blobs@9.1.2)(encoding@0.1.13)(rolldown@1.0.0-rc.9) 29270 + nuxi: 3.28.0 29271 + nypm: 0.3.12 29272 + ofetch: 1.5.1 29273 + ohash: 1.1.6 29274 + pathe: 1.1.2 29275 + perfect-debounce: 1.0.0 29276 + pkg-types: 1.3.1 29277 + radix3: 1.1.2 29278 + scule: 1.3.0 29279 + semver: 7.7.3 29280 + std-env: 3.10.0 29281 + strip-literal: 2.1.1 29282 + tinyglobby: 0.2.10 29283 + ufo: 1.6.1 29284 + ultrahtml: 1.6.0 29285 + uncrypto: 0.1.3 29286 + unctx: 2.4.1 29287 + unenv: 1.10.0 29288 + unhead: 1.11.20 29289 + unimport: 3.14.6(rollup@3.29.5) 29290 + unplugin: 1.16.1 29291 + 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)) 29292 + unstorage: 1.17.0(@netlify/blobs@9.1.2)(db0@0.3.4)(ioredis@5.9.2) 29293 + untyped: 1.5.2 29294 + vue: 3.5.25(typescript@5.9.3) 29295 + vue-bundle-renderer: 2.1.2 29296 + vue-devtools-stub: 0.1.0 29297 + vue-router: 4.5.0(vue@3.5.25(typescript@5.9.3)) 29298 + optionalDependencies: 29299 + '@parcel/watcher': 2.5.1 29300 + '@types/node': 25.2.1 29301 + transitivePeerDependencies: 29302 + - '@azure/app-configuration' 29303 + - '@azure/cosmos' 29304 + - '@azure/data-tables' 29305 + - '@azure/identity' 29306 + - '@azure/keyvault-secrets' 29307 + - '@azure/storage-blob' 29308 + - '@biomejs/biome' 29309 + - '@capacitor/preferences' 29310 + - '@deno/kv' 29311 + - '@electric-sql/pglite' 29312 + - '@libsql/client' 29313 + - '@netlify/blobs' 29314 + - '@planetscale/database' 29315 + - '@upstash/redis' 29316 + - '@vercel/blob' 29317 + - '@vercel/functions' 29318 + - '@vercel/kv' 29319 + - aws4fetch 29320 + - better-sqlite3 29321 + - bufferutil 29322 + - db0 29323 + - drizzle-orm 29324 + - encoding 29325 + - eslint 29326 + - idb-keyval 29327 + - ioredis 29328 + - less 29329 + - lightningcss 29330 + - magicast 29331 + - meow 29332 + - mysql2 29333 + - optionator 29334 + - rolldown 29335 + - rollup 29336 + - sass 29337 + - sass-embedded 29338 + - sqlite3 29339 + - stylelint 29340 + - stylus 29341 + - sugarss 29342 + - supports-color 29343 + - terser 29344 + - typescript 29345 + - uploadthing 29346 + - utf-8-validate 29347 + - vite 29348 + - vls 29349 + - vti 29350 + - vue-tsc 29351 + - xml2js 29352 + 29153 29353 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@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)): 29154 29354 dependencies: 29155 29355 '@nuxt/devalue': 2.0.2 ··· 29529 29729 29530 29730 oniguruma-parser@0.12.1: {} 29531 29731 29532 - oniguruma-to-es@4.3.4: 29732 + oniguruma-to-es@4.3.5: 29533 29733 dependencies: 29534 29734 oniguruma-parser: 0.12.1 29535 - regex: 6.0.1 29735 + regex: 6.1.0 29536 29736 regex-recursion: 6.0.2 29537 29737 29538 29738 open@10.2.0: ··· 30592 30792 30593 30793 regex-utilities@2.3.0: {} 30594 30794 30595 - regex@6.0.1: 30795 + regex@6.1.0: 30596 30796 dependencies: 30597 30797 regex-utilities: 2.3.0 30598 30798 ··· 30634 30834 remark-parse@11.0.0: 30635 30835 dependencies: 30636 30836 '@types/mdast': 4.0.4 30637 - mdast-util-from-markdown: 2.0.2 30837 + mdast-util-from-markdown: 2.0.3 30638 30838 micromark-util-types: 2.0.2 30639 30839 unified: 11.0.5 30640 30840 transitivePeerDependencies: ··· 31178 31378 31179 31379 shell-quote@1.8.3: {} 31180 31380 31181 - shiki@3.22.0: 31381 + shiki@3.23.0: 31182 31382 dependencies: 31183 - '@shikijs/core': 3.22.0 31184 - '@shikijs/engine-javascript': 3.22.0 31185 - '@shikijs/engine-oniguruma': 3.22.0 31186 - '@shikijs/langs': 3.22.0 31187 - '@shikijs/themes': 3.22.0 31188 - '@shikijs/types': 3.22.0 31383 + '@shikijs/core': 3.23.0 31384 + '@shikijs/engine-javascript': 3.23.0 31385 + '@shikijs/engine-oniguruma': 3.23.0 31386 + '@shikijs/langs': 3.23.0 31387 + '@shikijs/themes': 3.23.0 31388 + '@shikijs/types': 3.23.0 31189 31389 '@shikijs/vscode-textmate': 10.0.2 31190 31390 '@types/hast': 3.0.4 31191 31391 ··· 31945 32145 '@tokenizer/token': 0.3.0 31946 32146 ieee754: 1.2.1 31947 32147 31948 - tokenx@1.2.1: {} 32148 + tokenx@1.3.0: {} 31949 32149 31950 32150 toml@3.0.0: {} 31951 32151 ··· 32133 32333 dependencies: 32134 32334 tagged-tag: 1.0.0 32135 32335 32336 + type-fest@5.5.0: 32337 + dependencies: 32338 + tagged-tag: 1.0.0 32339 + 32136 32340 type-is@1.6.18: 32137 32341 dependencies: 32138 32342 media-typer: 0.3.0 ··· 32465 32669 '@types/unist': 3.0.3 32466 32670 unist-util-is: 6.0.0 32467 32671 32468 - unist-util-visit@5.0.0: 32672 + unist-util-visit@5.1.0: 32469 32673 dependencies: 32470 32674 '@types/unist': 3.0.3 32471 32675 unist-util-is: 6.0.0 ··· 32522 32726 unplugin: 2.0.0-beta.1 32523 32727 yaml: 2.8.2 32524 32728 optionalDependencies: 32525 - vue-router: 4.5.0(vue@3.5.13(typescript@5.9.3)) 32729 + vue-router: 4.5.0(vue@3.5.25(typescript@5.9.3)) 32526 32730 transitivePeerDependencies: 32527 32731 - rollup 32528 32732 - vue ··· 32828 33032 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) 32829 33033 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)) 32830 33034 33035 + 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)): 33036 + dependencies: 33037 + vite: 5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1) 33038 + 32831 33039 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)): 32832 33040 dependencies: 32833 33041 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 33167 - rollup 32960 33168 - supports-color 32961 33169 33170 + 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)): 33171 + dependencies: 33172 + '@antfu/utils': 0.7.10 33173 + '@rollup/pluginutils': 5.2.0(rollup@4.56.0) 33174 + debug: 4.4.3 33175 + error-stack-parser-es: 0.1.5 33176 + fs-extra: 11.3.1 33177 + open: 10.2.0 33178 + perfect-debounce: 1.0.0 33179 + picocolors: 1.1.1 33180 + sirv: 3.0.2 33181 + vite: 5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1) 33182 + optionalDependencies: 33183 + '@nuxt/kit': 3.21.0(magicast@0.3.5) 33184 + transitivePeerDependencies: 33185 + - rollup 33186 + - supports-color 33187 + 32962 33188 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)): 32963 33189 dependencies: 32964 33190 '@antfu/utils': 0.7.10 ··· 33024 33250 - supports-color 33025 33251 - vue 33026 33252 33253 + 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)): 33254 + dependencies: 33255 + '@babel/core': 7.28.3 33256 + '@babel/plugin-proposal-decorators': 7.28.0(@babel/core@7.28.3) 33257 + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.3) 33258 + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.3) 33259 + '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.28.3) 33260 + '@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.28.3) 33261 + '@vue/compiler-dom': 3.5.25 33262 + kolorist: 1.8.0 33263 + magic-string: 0.30.21 33264 + vite: 5.4.19(@types/node@25.2.1)(less@4.4.2)(sass@1.97.1)(terser@5.44.1) 33265 + transitivePeerDependencies: 33266 + - supports-color 33267 + 33027 33268 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)): 33028 33269 dependencies: 33029 33270 '@babel/core': 7.28.3 ··· 33152 33393 optionalDependencies: 33153 33394 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) 33154 33395 33155 - vitepress-plugin-llms@1.11.0: 33396 + vitepress-plugin-llms@1.12.0: 33156 33397 dependencies: 33157 33398 gray-matter: 4.0.3 33158 33399 markdown-it: 14.1.0 33159 33400 markdown-title: 1.0.2 33160 - mdast-util-from-markdown: 2.0.2 33401 + mdast-util-from-markdown: 2.0.3 33161 33402 millify: 6.1.0 33162 - minimatch: 10.1.1 33403 + minimatch: 10.2.4 33163 33404 path-to-regexp: 6.3.0 33164 33405 picocolors: 1.1.1 33165 33406 pretty-bytes: 7.1.0 33166 33407 remark: 15.0.1 33167 33408 remark-frontmatter: 5.0.0 33168 - tokenx: 1.2.1 33409 + tokenx: 1.3.0 33169 33410 unist-util-remove: 4.0.0 33170 - unist-util-visit: 5.0.0 33411 + unist-util-visit: 5.1.0 33171 33412 transitivePeerDependencies: 33172 33413 - supports-color 33173 33414 33174 33415 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): 33175 33416 dependencies: 33176 - '@docsearch/css': 4.5.3 33177 - '@docsearch/js': 4.5.3 33178 - '@docsearch/sidepanel-js': 4.5.3 33417 + '@docsearch/css': 4.6.0 33418 + '@docsearch/js': 4.6.0 33419 + '@docsearch/sidepanel-js': 4.6.0 33179 33420 '@iconify-json/simple-icons': 1.2.69 33180 - '@shikijs/core': 3.22.0 33181 - '@shikijs/transformers': 3.22.0 33182 - '@shikijs/types': 3.22.0 33421 + '@shikijs/core': 3.23.0 33422 + '@shikijs/transformers': 3.23.0 33423 + '@shikijs/types': 3.23.0 33183 33424 '@types/markdown-it': 14.1.2 33184 33425 '@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)) 33185 33426 '@vue/devtools-api': 8.0.5 33186 33427 '@vue/shared': 3.5.27 33187 - '@vueuse/core': 14.1.0(vue@3.5.27(typescript@5.9.3)) 33188 - '@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)) 33428 + '@vueuse/core': 14.2.1(vue@3.5.27(typescript@5.9.3)) 33429 + '@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)) 33189 33430 focus-trap: 7.8.0 33190 33431 mark.js: 8.11.1 33191 33432 minisearch: 7.2.0 33192 - shiki: 3.22.0 33433 + shiki: 3.23.0 33193 33434 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) 33194 33435 vue: 3.5.27(typescript@5.9.3) 33195 33436 optionalDependencies: