From 1f51aca854e25dd5b0b490c23cb41473730863fa Mon Sep 17 00:00:00 2001 From: auricom <27022259+auricom@users.noreply.github.com> Date: Mon, 21 Jul 2025 14:18:54 +0200 Subject: [PATCH 1/4] feat: api documentation --- .vitepress/config.ts | 48 +- .vitepress/theme/index.ts | 4 +- api/index.md | 11 + api/operationsByTags/[operationId].md | 16 + api/operationsByTags/[operationId].paths.js | 17 + package.json | 3 +- src/openapi-rpc.json | 899 ++++++++++++++++++++ yarn.lock | 324 ++++++- 8 files changed, 1306 insertions(+), 16 deletions(-) create mode 100644 api/index.md create mode 100644 api/operationsByTags/[operationId].md create mode 100644 api/operationsByTags/[operationId].paths.js create mode 100644 src/openapi-rpc.json diff --git a/.vitepress/config.ts b/.vitepress/config.ts index 276fba0fa..ba92ccd0f 100644 --- a/.vitepress/config.ts +++ b/.vitepress/config.ts @@ -1,4 +1,6 @@ import { withMermaid } from "vitepress-plugin-mermaid"; +import { useSidebar } from 'vitepress-openapi' +import spec from '../src/openapi-rpc.json' with { type: 'json' } const telegramSVG = ` @@ -6,6 +8,12 @@ const telegramSVG = ` +import spec from '../src/openapi-rpc.json' + + + \ No newline at end of file diff --git a/api/operationsByTags/[operationId].md b/api/operationsByTags/[operationId].md new file mode 100644 index 000000000..b5badef73 --- /dev/null +++ b/api/operationsByTags/[operationId].md @@ -0,0 +1,16 @@ +--- +aside: false +outline: false +title: vitepress-openapi +--- + + + + \ No newline at end of file diff --git a/api/operationsByTags/[operationId].paths.js b/api/operationsByTags/[operationId].paths.js new file mode 100644 index 000000000..c36221e73 --- /dev/null +++ b/api/operationsByTags/[operationId].paths.js @@ -0,0 +1,17 @@ +import { usePaths } from 'vitepress-openapi' +import spec from '../../src/openapi-rpc.json' with {type: 'json'} + +export default { + paths() { + return usePaths({ spec }) + .getPathsByVerbs() + .map(({ operationId, summary }) => { + return { + params: { + operationId, + pageTitle: `${summary} - vitepress-openapi`, + }, + } + }) + }, +} \ No newline at end of file diff --git a/package.json b/package.json index f68d61c89..2060ee16f 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,8 @@ "vitepress-plugin-mermaid": "^2.0.17" }, "dependencies": { - "node-fetch": "^3.3.2" + "node-fetch": "^3.3.2", + "vitepress-openapi": "^0.1.3" }, "type": "module" } diff --git a/src/openapi-rpc.json b/src/openapi-rpc.json new file mode 100644 index 000000000..793736ba6 --- /dev/null +++ b/src/openapi-rpc.json @@ -0,0 +1,899 @@ +{ + "openapi": "3.1.0", + "info": { + "title": "Rollkit API", + "description": "This API provides access to Signer, Store, P2P, and Health services.\n\n## Services\n\n* **Signer Service** - Sign messages and retrieve public keys\n* **Store Service** - Access blocks, state, and metadata\n* **P2P Service** - Network and peer information\n* **Health Service** - Node health checks and simple HTTP endpoints\n\n## Protocols\n\n### gRPC-Web Protocol\n\nMost endpoints use gRPC-Web protocol over HTTP/1.1 with JSON encoding. Requests are made via POST with `Content-Type: application/json`.\n\n### Simple HTTP Endpoints\n\nSome endpoints (like `/health/live`) are simple HTTP GET requests that return plain text responses for basic monitoring and health checks.", + "version": "1.0.0", + "contact": { + "name": "Rollkit Team", + "url": "https://rollkit.dev" + } + }, + "servers": [ + { + "url": "http://localhost:7331", + "description": "A local Rollkit instance configured to provide a remote procedure call (RPC) endpoint, actively listening for connections on TCP port 7331." + } + ], + "tags": [ + { + "name": "Signer Service", + "description": "Sign messages and retrieve public keys" + }, + { + "name": "Store Service", + "description": "Access blocks, state, and metadata from the chain store" + }, + { + "name": "P2P Service", + "description": "Network and peer information" + }, + { + "name": "Health Service", + "description": "Node health and liveness checks" + } + ], + "paths": { + "/rollkit.v1.SignerService/Sign": { + "post": { + "tags": ["Signer Service"], + "summary": "Sign a message", + "description": "Sign the given message bytes and return the signature.", + "operationId": "sign", + "requestBody": { + "description": "Message to sign", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SignRequest" + }, + "examples": { + "default": { + "summary": "Sign a message", + "value": { + "message": "SGVsbG8gV29ybGQ=" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Message signed successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SignResponse" + } + } + } + }, + "400": { + "$ref": "#/components/responses/BadRequest" + }, + "500": { + "$ref": "#/components/responses/InternalError" + } + } + } + }, + "/rollkit.v1.SignerService/GetPublic": { + "post": { + "tags": ["Signer Service"], + "summary": "Get public key", + "description": "Retrieve the public key of the signer.", + "operationId": "getPublic", + "requestBody": { + "description": "Get public key request (empty)", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetPublicRequest" + }, + "examples": { + "default": { + "summary": "Get public key", + "value": {} + } + } + } + } + }, + "responses": { + "200": { + "description": "Public key retrieved successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetPublicResponse" + } + } + } + }, + "500": { + "$ref": "#/components/responses/InternalError" + } + } + } + }, + "/rollkit.v1.StoreService/GetBlock": { + "post": { + "tags": ["Store Service"], + "summary": "Get a block", + "description": "Retrieve a block by height or hash from the chain store.", + "operationId": "getBlock", + "requestBody": { + "description": "Block request parameters", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetBlockRequest" + }, + "examples": { + "by_height": { + "summary": "Get block by height", + "value": { + "height": 1 + } + }, + "by_hash": { + "summary": "Get block by hash", + "value": { + "hash": "SGVsbG8gV29ybGQ=" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Block retrieved successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetBlockResponse" + } + } + } + }, + "400": { + "$ref": "#/components/responses/BadRequest" + }, + "404": { + "$ref": "#/components/responses/NotFound" + }, + "500": { + "$ref": "#/components/responses/InternalError" + } + } + } + }, + "/rollkit.v1.StoreService/GetState": { + "post": { + "tags": ["Store Service"], + "summary": "Get current state", + "description": "Retrieve the current state of the chain.", + "operationId": "getState", + "requestBody": { + "description": "State request (empty)", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetStateRequest" + }, + "examples": { + "default": { + "summary": "Get current state", + "value": {} + } + } + } + } + }, + "responses": { + "200": { + "description": "State retrieved successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetStateResponse" + } + } + } + }, + "500": { + "$ref": "#/components/responses/InternalError" + } + } + } + }, + "/rollkit.v1.StoreService/GetMetadata": { + "post": { + "tags": ["Store Service"], + "summary": "Get metadata", + "description": "Retrieve metadata by key from the chain store.", + "operationId": "getMetadata", + "requestBody": { + "description": "Metadata request with key", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetMetadataRequest" + }, + "examples": { + "default": { + "summary": "Get metadata by key", + "value": { + "key": "example_key" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Metadata retrieved successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetMetadataResponse" + } + } + } + }, + "400": { + "$ref": "#/components/responses/BadRequest" + }, + "404": { + "$ref": "#/components/responses/NotFound" + }, + "500": { + "$ref": "#/components/responses/InternalError" + } + } + } + }, + "/rollkit.v1.P2PService/GetPeerInfo": { + "post": { + "tags": ["P2P Service"], + "summary": "Get peer information", + "description": "Retrieve information about connected peers.", + "operationId": "getPeerInfo", + "requestBody": { + "description": "Peer info request (empty)", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetPeerInfoRequest" + }, + "examples": { + "default": { + "summary": "Get peer information", + "value": {} + } + } + } + } + }, + "responses": { + "200": { + "description": "Peer information retrieved successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetPeerInfoResponse" + } + } + } + }, + "500": { + "$ref": "#/components/responses/InternalError" + } + } + } + }, + "/rollkit.v1.P2PService/GetNetInfo": { + "post": { + "tags": ["P2P Service"], + "summary": "Get network information", + "description": "Retrieve network information and statistics.", + "operationId": "getNetInfo", + "requestBody": { + "description": "Network info request (empty)", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetNetInfoRequest" + }, + "examples": { + "default": { + "summary": "Get network information", + "value": {} + } + } + } + } + }, + "responses": { + "200": { + "description": "Network information retrieved successfully", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetNetInfoResponse" + } + } + } + }, + "500": { + "$ref": "#/components/responses/InternalError" + } + } + } + }, + "/rollkit.v1.HealthService/Livez": { + "post": { + "tags": ["Health Service"], + "summary": "Check node health", + "description": "Check if the node is alive and healthy.", + "operationId": "livez", + "requestBody": { + "description": "Health check request (empty)", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LivezRequest" + }, + "examples": { + "default": { + "summary": "Check node health", + "value": {} + } + } + } + } + }, + "responses": { + "200": { + "description": "Node is healthy", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetHealthResponse" + } + } + } + }, + "503": { + "description": "Node is unhealthy", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, + "/health/live": { + "get": { + "tags": ["Health Service"], + "summary": "Simple liveness check", + "description": "Simple HTTP endpoint to check if the node is alive. Returns plain text 'OK' response.", + "operationId": "healthLive", + "responses": { + "200": { + "description": "Node is alive", + "content": { + "text/plain": { + "schema": { + "type": "string", + "example": "OK" + } + } + } + } + } + } + } + }, + "components": { + "responses": { + "BadRequest": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "NotFound": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "InternalError": { + "description": "Internal Server Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + }, + "schemas": { + "SignRequest": { + "type": "object", + "description": "Request to sign a message", + "required": ["message"], + "properties": { + "message": { + "type": "string", + "format": "byte", + "description": "The bytes we want to sign (base64-encoded)", + "example": "SGVsbG8gV29ybGQ=" + } + } + }, + "SignResponse": { + "type": "object", + "description": "Response containing signature", + "required": ["signature"], + "properties": { + "signature": { + "type": "string", + "format": "byte", + "description": "The signature bytes (base64-encoded)", + "example": "c2lnbmF0dXJl" + } + } + }, + "GetPublicRequest": { + "type": "object", + "description": "Request to get public key (empty)", + "properties": {} + }, + "GetPublicResponse": { + "type": "object", + "description": "Response containing public key", + "required": ["public_key"], + "properties": { + "public_key": { + "type": "string", + "format": "byte", + "description": "The public key (base64-encoded)", + "example": "cHVibGljX2tleQ==" + } + } + }, + "GetBlockRequest": { + "type": "object", + "description": "Request to get a block by height or hash", + "properties": { + "height": { + "type": "integer", + "format": "int64", + "description": "Block height to retrieve", + "example": 1 + }, + "hash": { + "type": "string", + "format": "byte", + "description": "Block hash to retrieve (base64-encoded)", + "example": "SGVsbG8gV29ybGQ=" + } + } + }, + "GetBlockResponse": { + "type": "object", + "description": "Response containing block data", + "properties": { + "block": { + "$ref": "#/components/schemas/Block" + }, + "header_da_height": { + "type": "integer", + "format": "int64", + "description": "Data availability height for header" + }, + "data_da_height": { + "type": "integer", + "format": "int64", + "description": "Data availability height for data" + } + } + }, + "GetStateRequest": { + "type": "object", + "description": "Request to get current state (empty)", + "properties": {} + }, + "GetStateResponse": { + "type": "object", + "description": "Response containing current state", + "properties": { + "state": { + "$ref": "#/components/schemas/State" + } + } + }, + "GetMetadataRequest": { + "type": "object", + "description": "Request to get metadata by key", + "required": ["key"], + "properties": { + "key": { + "type": "string", + "description": "Metadata key to retrieve", + "example": "example_key" + } + } + }, + "GetMetadataResponse": { + "type": "object", + "description": "Response containing metadata", + "required": ["value"], + "properties": { + "value": { + "type": "string", + "format": "byte", + "description": "Metadata value (base64-encoded)", + "example": "dGVzdCB2YWx1ZQ==" + } + } + }, + "GetPeerInfoRequest": { + "type": "object", + "description": "Request to get peer information (empty)", + "properties": {} + }, + "GetPeerInfoResponse": { + "type": "object", + "description": "Response containing peer information", + "required": ["peers"], + "properties": { + "peers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PeerInfo" + }, + "description": "List of connected peers" + } + } + }, + "GetNetInfoRequest": { + "type": "object", + "description": "Request to get network information (empty)", + "properties": {} + }, + "GetNetInfoResponse": { + "type": "object", + "description": "Response containing network information", + "properties": { + "net_info": { + "$ref": "#/components/schemas/NetInfo" + } + } + }, + "LivezRequest": { + "type": "object", + "description": "Request to check node health (empty)", + "properties": {} + }, + "GetHealthResponse": { + "type": "object", + "description": "Response indicating node health status", + "required": ["status"], + "properties": { + "status": { + "$ref": "#/components/schemas/HealthStatus" + } + } + }, + "HealthStatus": { + "type": "string", + "enum": ["UNKNOWN", "PASS", "WARN", "FAIL"], + "description": "Health status of the node" + }, + "Block": { + "type": "object", + "description": "Chain block data", + "properties": { + "header": { + "$ref": "#/components/schemas/SignedHeader" + }, + "data": { + "$ref": "#/components/schemas/Data" + } + } + }, + "SignedHeader": { + "type": "object", + "description": "Signed block header", + "properties": { + "header": { + "$ref": "#/components/schemas/Header" + }, + "signature": { + "type": "string", + "format": "byte", + "description": "Header signature (base64-encoded)" + }, + "signer": { + "$ref": "#/components/schemas/Signer" + } + } + }, + "Header": { + "type": "object", + "description": "Block header information", + "required": ["height", "time", "chain_id"], + "properties": { + "version": { + "$ref": "#/components/schemas/Version" + }, + "height": { + "type": "integer", + "format": "int64", + "description": "Block height" + }, + "time": { + "type": "integer", + "format": "int64", + "description": "Block creation time" + }, + "last_header_hash": { + "type": "string", + "format": "byte", + "description": "Previous block info (base64-encoded)" + }, + "last_commit_hash": { + "type": "string", + "format": "byte", + "description": "Commit from aggregator(s) from the last block (base64-encoded)" + }, + "data_hash": { + "type": "string", + "format": "byte", + "description": "Block.Data root aka Transactions (base64-encoded)" + }, + "consensus_hash": { + "type": "string", + "format": "byte", + "description": "Consensus params for current block (base64-encoded)" + }, + "app_hash": { + "type": "string", + "format": "byte", + "description": "State after applying txs from the current block (base64-encoded)" + }, + "last_results_hash": { + "type": "string", + "format": "byte", + "description": "Root hash of all results from the txs from the previous block (base64-encoded)" + }, + "proposer_address": { + "type": "string", + "format": "byte", + "description": "Original proposer of the block (base64-encoded)" + }, + "validator_hash": { + "type": "string", + "format": "byte", + "description": "validatorhash for compatibility with tendermint light client (base64-encoded)" + }, + "chain_id": { + "type": "string", + "description": "Chain ID the block belongs to" + } + } + }, + "Version": { + "type": "object", + "description": "Version captures the consensus rules for processing a block", + "required": ["block", "app"], + "properties": { + "block": { + "type": "integer", + "format": "int64", + "description": "Block version" + }, + "app": { + "type": "integer", + "format": "int64", + "description": "App version" + } + } + }, + "Signer": { + "type": "object", + "description": "Signer of a block", + "required": ["address", "pub_key"], + "properties": { + "address": { + "type": "string", + "format": "byte", + "description": "Address of the signer (base64-encoded)" + }, + "pub_key": { + "type": "string", + "format": "byte", + "description": "Public key of the signer (base64-encoded)" + } + } + }, + "Data": { + "type": "object", + "description": "Block transaction data", + "required": ["txs"], + "properties": { + "metadata": { + "$ref": "#/components/schemas/Metadata" + }, + "txs": { + "type": "array", + "items": { + "type": "string", + "format": "byte" + }, + "description": "List of transactions (base64-encoded)" + } + } + }, + "Metadata": { + "type": "object", + "description": "Metadata of a block", + "required": ["chain_id", "height", "time"], + "properties": { + "chain_id": { + "type": "string", + "description": "Chain ID" + }, + "height": { + "type": "integer", + "format": "int64", + "description": "Block height" + }, + "time": { + "type": "integer", + "format": "int64", + "description": "Block creation time" + }, + "last_data_hash": { + "type": "string", + "format": "byte", + "description": "Previous block info (base64-encoded)" + } + } + }, + "State": { + "type": "object", + "description": "Current chain state", + "required": ["chain_id", "initial_height", "last_block_height", "da_height"], + "properties": { + "version": { + "$ref": "#/components/schemas/Version" + }, + "chain_id": { + "type": "string", + "description": "Chain ID" + }, + "initial_height": { + "type": "integer", + "format": "int64", + "description": "Initial height" + }, + "last_block_height": { + "type": "integer", + "format": "int64", + "description": "Last block height" + }, + "last_block_time": { + "type": "string", + "format": "date-time", + "description": "Last block time" + }, + "da_height": { + "type": "integer", + "format": "int64", + "description": "Data availability height" + }, + "last_results_hash": { + "type": "string", + "format": "byte", + "description": "Last results hash (base64-encoded)" + }, + "app_hash": { + "type": "string", + "format": "byte", + "description": "Application state hash (base64-encoded)" + } + } + }, + "PeerInfo": { + "type": "object", + "description": "Information about a connected peer", + "required": ["id", "address"], + "properties": { + "id": { + "type": "string", + "description": "Peer ID" + }, + "address": { + "type": "string", + "description": "Peer network address" + } + } + }, + "NetInfo": { + "type": "object", + "description": "Network information", + "required": ["id", "listen_addresses", "connected_peers"], + "properties": { + "id": { + "type": "string", + "description": "Network ID" + }, + "listen_addresses": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Listen addresses" + }, + "connected_peers": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of connected peers" + } + } + }, + "Error": { + "type": "object", + "description": "Error response", + "required": ["code", "message"], + "properties": { + "code": { + "type": "integer", + "description": "Error code" + }, + "message": { + "type": "string", + "description": "Error message" + }, + "details": { + "type": "array", + "items": { + "type": "object" + }, + "description": "Additional error details" + } + } + } + } + } +} diff --git a/yarn.lock b/yarn.lock index f7d8b4678..da6a2ae3c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -168,11 +168,21 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d" integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== +"@babel/helper-string-parser@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" + integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== + "@babel/helper-validator-identifier@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== +"@babel/helper-validator-identifier@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" + integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== + "@babel/parser@^7.25.3": version "7.25.6" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.6.tgz#85660c5ef388cbbf6e3d2a694ee97a38f18afe2f" @@ -180,6 +190,13 @@ dependencies: "@babel/types" "^7.25.6" +"@babel/parser@^7.27.5": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.0.tgz#979829fbab51a29e13901e5a80713dbcb840825e" + integrity sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g== + dependencies: + "@babel/types" "^7.28.0" + "@babel/types@^7.25.6": version "7.25.6" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.6.tgz#893942ddb858f32ae7a004ec9d3a76b3463ef8e6" @@ -189,6 +206,14 @@ "@babel/helper-validator-identifier" "^7.24.7" to-fast-properties "^2.0.0" +"@babel/types@^7.28.0": + version "7.28.1" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.1.tgz#2aaf3c10b31ba03a77ac84f52b3912a0edef4cf9" + integrity sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ== + dependencies: + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + "@braintree/sanitize-url@^6.0.0": version "6.0.2" resolved "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.2.tgz" @@ -369,6 +394,35 @@ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c" integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw== +"@floating-ui/core@^1.7.2": + version "1.7.2" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.7.2.tgz#3d1c35263950b314b6d5a72c8bfb9e3c1551aefd" + integrity sha512-wNB5ooIKHQc+Kui96jE/n69rHFWAVoxn5CAzL1Xdd8FG03cgY3MLO+GF9U3W737fYDSgPWA6MReKhBQBop6Pcw== + dependencies: + "@floating-ui/utils" "^0.2.10" + +"@floating-ui/dom@^1.6.13", "@floating-ui/dom@^1.7.2": + version "1.7.2" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.7.2.tgz#3540b051cf5ce0d4f4db5fb2507a76e8ea5b4a45" + integrity sha512-7cfaOQuCS27HD7DX+6ib2OrnW+b4ZBwDNnCcT0uTyidcmyWb03FnQqJybDBoCnpdxwBSfA94UAYlRCt7mV+TbA== + dependencies: + "@floating-ui/core" "^1.7.2" + "@floating-ui/utils" "^0.2.10" + +"@floating-ui/utils@^0.2.10": + version "0.2.10" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.10.tgz#a2a1e3812d14525f725d011a73eceb41fef5bc1c" + integrity sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ== + +"@floating-ui/vue@^1.1.6": + version "1.1.7" + resolved "https://registry.yarnpkg.com/@floating-ui/vue/-/vue-1.1.7.tgz#64d70a7fecd0a671853c2cdb70ff60d0b4773e43" + integrity sha512-idmAtbAIigGXN2SI5gItiXYBYtNfDTP9yIiObxgu13dgtG7ARCHlNfnR29GxP4LI4o13oiwsJ8wVgghj1lNqcw== + dependencies: + "@floating-ui/dom" "^1.7.2" + "@floating-ui/utils" "^0.2.10" + vue-demi ">=0.13.0" + "@iconify-json/simple-icons@^1.2.10": version "1.2.11" resolved "https://registry.yarnpkg.com/@iconify-json/simple-icons/-/simple-icons-1.2.11.tgz#076096af7dd95ae09f09bc23fadb261f4e3978ce" @@ -395,6 +449,20 @@ local-pkg "^1.0.0" mlly "^1.7.4" +"@internationalized/date@^3.5.0": + version "3.8.2" + resolved "https://registry.yarnpkg.com/@internationalized/date/-/date-3.8.2.tgz#977620c1407cc6830fd44cb505679d23c599e119" + integrity sha512-/wENk7CbvLbkUvX1tu0mwq49CVkkWpkXubGel6birjRPyo6uQ4nQpnq5xZu823zRCwwn82zgHrvgF1vZyvmVgA== + dependencies: + "@swc/helpers" "^0.5.0" + +"@internationalized/number@^3.5.0": + version "3.6.3" + resolved "https://registry.yarnpkg.com/@internationalized/number/-/number-3.6.3.tgz#4bba32e90cd8095ae7d252586c661d9c651918b4" + integrity sha512-p+Zh1sb6EfrfVaS86jlHGQ9HA66fJhV9x5LiE5vCbZtXEHAuhcmUZUdZ4WrFpUBfNalr2OkAJI5AcKEQF+Lebw== + dependencies: + "@swc/helpers" "^0.5.0" + "@jridgewell/sourcemap-codec@^1.5.0": version "1.5.0" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" @@ -549,6 +617,25 @@ resolved "https://registry.yarnpkg.com/@shikijs/vscode-textmate/-/vscode-textmate-9.3.0.tgz#b2f1776e488c1d6c2b6cd129bab62f71bbc9c7ab" integrity sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA== +"@swc/helpers@^0.5.0": + version "0.5.17" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.17.tgz#5a7be95ac0f0bf186e7e6e890e7a6f6cda6ce971" + integrity sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A== + dependencies: + tslib "^2.8.0" + +"@tanstack/virtual-core@3.13.12": + version "3.13.12" + resolved "https://registry.yarnpkg.com/@tanstack/virtual-core/-/virtual-core-3.13.12.tgz#1dff176df9cc8f93c78c5e46bcea11079b397578" + integrity sha512-1YBOJfRHV4sXUmWsFSf5rQor4Ss82G8dQWLRbnk3GA4jeP8hQt1hxXh0tmflpC0dz3VgEv/1+qwPyLeWkQuPFA== + +"@tanstack/vue-virtual@^3.12.0": + version "3.13.12" + resolved "https://registry.yarnpkg.com/@tanstack/vue-virtual/-/vue-virtual-3.13.12.tgz#a66daac9e6822ce4bcba76a3954937440697c264" + integrity sha512-vhF7kEU9EXWXh+HdAwKJ2m3xaOnTTmgcdXcF2pim8g4GvI7eRrk2YRuV5nUlZnd/NbCIX4/Ja2OZu5EjJL06Ww== + dependencies: + "@tanstack/virtual-core" "3.13.12" + "@types/d3-array@*": version "3.2.1" resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-3.2.1.tgz#1f6658e3d2006c4fceac53fde464166859f8b8c5" @@ -816,6 +903,11 @@ resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz#f066abfcd1cbe66267cdbbf0de010d8a41b41597" integrity sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow== +"@types/web-bluetooth@^0.0.21": + version "0.0.21" + resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz#525433c784aed9b457aaa0ee3d92aeb71f346b63" + integrity sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA== + "@ungap/structured-clone@^1.0.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" @@ -837,6 +929,17 @@ estree-walker "^2.0.2" source-map-js "^1.2.0" +"@vue/compiler-core@3.5.17": + version "3.5.17" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.5.17.tgz#23d291bd01b863da3ef2e26e7db84d8e01a9b4c5" + integrity sha512-Xe+AittLbAyV0pabcN7cP7/BenRBNcteM4aSDCtRvGw0d9OL+HG1u/XHLY/kt1q4fyMeZYXyIYrsHuPSiDPosA== + dependencies: + "@babel/parser" "^7.27.5" + "@vue/shared" "3.5.17" + entities "^4.5.0" + estree-walker "^2.0.2" + source-map-js "^1.2.1" + "@vue/compiler-dom@3.5.12": version "3.5.12" resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.5.12.tgz#456d631d11102535b7ee6fd954cf2c93158d0354" @@ -845,6 +948,14 @@ "@vue/compiler-core" "3.5.12" "@vue/shared" "3.5.12" +"@vue/compiler-dom@3.5.17": + version "3.5.17" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.5.17.tgz#7bc19a20e23b670243a64b47ce3a890239b870be" + integrity sha512-+2UgfLKoaNLhgfhV5Ihnk6wB4ljyW1/7wUIog2puUqajiC29Lp5R/IKDdkebh9jTbTogTbsgB+OY9cEWzG95JQ== + dependencies: + "@vue/compiler-core" "3.5.17" + "@vue/shared" "3.5.17" + "@vue/compiler-sfc@3.5.12": version "3.5.12" resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.5.12.tgz#6688120d905fcf22f7e44d3cb90f8dabc4dd3cc8" @@ -860,6 +971,21 @@ postcss "^8.4.47" source-map-js "^1.2.0" +"@vue/compiler-sfc@3.5.17": + version "3.5.17" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.5.17.tgz#c518871276e26593612bdab36f3f5bcd053b13bf" + integrity sha512-rQQxbRJMgTqwRugtjw0cnyQv9cP4/4BxWfTdRBkqsTfLOHWykLzbOc3C4GGzAmdMDxhzU/1Ija5bTjMVrddqww== + dependencies: + "@babel/parser" "^7.27.5" + "@vue/compiler-core" "3.5.17" + "@vue/compiler-dom" "3.5.17" + "@vue/compiler-ssr" "3.5.17" + "@vue/shared" "3.5.17" + estree-walker "^2.0.2" + magic-string "^0.30.17" + postcss "^8.5.6" + source-map-js "^1.2.1" + "@vue/compiler-ssr@3.5.12": version "3.5.12" resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.5.12.tgz#5f1a3fbd5c44b79a6dbe88729f7801d9c9218bde" @@ -868,6 +994,14 @@ "@vue/compiler-dom" "3.5.12" "@vue/shared" "3.5.12" +"@vue/compiler-ssr@3.5.17": + version "3.5.17" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.5.17.tgz#14ba3b7bba6e0e1fd02002316263165a5d1046c7" + integrity sha512-hkDbA0Q20ZzGgpj5uZjb9rBzQtIHLS78mMilwrlpWk2Ep37DYntUz0PonQ6kr113vfOEdM+zTBuJDaceNIW0tQ== + dependencies: + "@vue/compiler-dom" "3.5.17" + "@vue/shared" "3.5.17" + "@vue/devtools-api@^7.5.4": version "7.6.2" resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-7.6.2.tgz#9beb95e3faba24aa89b8237f4ac713210a28b6f7" @@ -902,6 +1036,13 @@ dependencies: "@vue/shared" "3.5.12" +"@vue/reactivity@3.5.17": + version "3.5.17" + resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.5.17.tgz#169b5dcf96c7f23788e5ed9745ec8a7227f2125e" + integrity sha512-l/rmw2STIscWi7SNJp708FK4Kofs97zc/5aEPQh4bOsReD/8ICuBcEmS7KGwDj5ODQLYWVN2lNibKJL1z5b+Lw== + dependencies: + "@vue/shared" "3.5.17" + "@vue/runtime-core@3.5.12": version "3.5.12" resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.5.12.tgz#849207f203d0fd82971f19574d30dbe7134c78c7" @@ -910,6 +1051,14 @@ "@vue/reactivity" "3.5.12" "@vue/shared" "3.5.12" +"@vue/runtime-core@3.5.17": + version "3.5.17" + resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.5.17.tgz#b17bd41e13011e85e9b1025545292d43f5512730" + integrity sha512-QQLXa20dHg1R0ri4bjKeGFKEkJA7MMBxrKo2G+gJikmumRS7PTD4BOU9FKrDQWMKowz7frJJGqBffYMgQYS96Q== + dependencies: + "@vue/reactivity" "3.5.17" + "@vue/shared" "3.5.17" + "@vue/runtime-dom@3.5.12": version "3.5.12" resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.5.12.tgz#6d4de3df49a90a460b311b1100baa5e2d0d1c8c9" @@ -920,6 +1069,16 @@ "@vue/shared" "3.5.12" csstype "^3.1.3" +"@vue/runtime-dom@3.5.17": + version "3.5.17" + resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.5.17.tgz#8e325e29cd03097fe179032fc8df384a426fc83a" + integrity sha512-8El0M60TcwZ1QMz4/os2MdlQECgGoVHPuLnQBU3m9h3gdNRW9xRmI8iLS4t/22OQlOE6aJvNNlBiCzPHur4H9g== + dependencies: + "@vue/reactivity" "3.5.17" + "@vue/runtime-core" "3.5.17" + "@vue/shared" "3.5.17" + csstype "^3.1.3" + "@vue/server-renderer@3.5.12": version "3.5.12" resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.5.12.tgz#79c6bc3860e4e4ef80d85653c5d03fd94b26574e" @@ -928,11 +1087,24 @@ "@vue/compiler-ssr" "3.5.12" "@vue/shared" "3.5.12" +"@vue/server-renderer@3.5.17": + version "3.5.17" + resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.5.17.tgz#9b8fd6a40a3d55322509fafe78ac841ede649fbe" + integrity sha512-BOHhm8HalujY6lmC3DbqF6uXN/K00uWiEeF22LfEsm9Q93XeJ/plHTepGwf6tqFcF7GA5oGSSAAUock3VvzaCA== + dependencies: + "@vue/compiler-ssr" "3.5.17" + "@vue/shared" "3.5.17" + "@vue/shared@3.5.12", "@vue/shared@^3.5.12": version "3.5.12" resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.5.12.tgz#f9e45b7f63f2c3f40d84237b1194b7f67de192e3" integrity sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg== +"@vue/shared@3.5.17": + version "3.5.17" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.5.17.tgz#e8b3a41f0be76499882a89e8ed40d86a70fa4b70" + integrity sha512-CabR+UN630VnsJO/jHWYBC1YVXyMq94KKp6iF5MQgZJs5I8cmjw6oVMO1oDbtBkENSHSSn/UadWlW/OAgdmKrg== + "@vueuse/core@11.1.0", "@vueuse/core@^11.1.0": version "11.1.0" resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-11.1.0.tgz#a104f33c899a15f3b28d3eb7b20738501a3a5035" @@ -943,6 +1115,25 @@ "@vueuse/shared" "11.1.0" vue-demi ">=0.14.10" +"@vueuse/core@^12.5.0": + version "12.8.2" + resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-12.8.2.tgz#007c6dd29a7d1f6933e916e7a2f8ef3c3f968eaa" + integrity sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ== + dependencies: + "@types/web-bluetooth" "^0.0.21" + "@vueuse/metadata" "12.8.2" + "@vueuse/shared" "12.8.2" + vue "^3.5.13" + +"@vueuse/core@^13.1.0": + version "13.5.0" + resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-13.5.0.tgz#1136d3db088945d7b7a2397170737d5a3e557b36" + integrity sha512-wV7z0eUpifKmvmN78UBZX8T7lMW53Nrk6JP5+6hbzrB9+cJ3jr//hUlhl9TZO/03bUkMK6gGkQpqOPWoabr72g== + dependencies: + "@types/web-bluetooth" "^0.0.21" + "@vueuse/metadata" "13.5.0" + "@vueuse/shared" "13.5.0" + "@vueuse/integrations@^11.1.0": version "11.1.0" resolved "https://registry.yarnpkg.com/@vueuse/integrations/-/integrations-11.1.0.tgz#1e2c1d43b2d389fc4b4d0a7ee08091665698b9ad" @@ -957,6 +1148,16 @@ resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-11.1.0.tgz#ad367d2a51d985129724425923b3cf95f0faf27b" integrity sha512-l9Q502TBTaPYGanl1G+hPgd3QX5s4CGnpXriVBR5fEZ/goI6fvDaVmIl3Td8oKFurOxTmbXvBPSsgrd6eu6HYg== +"@vueuse/metadata@12.8.2": + version "12.8.2" + resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-12.8.2.tgz#6cb3a4e97cdcf528329eebc1bda73cd7f64318d3" + integrity sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A== + +"@vueuse/metadata@13.5.0": + version "13.5.0" + resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-13.5.0.tgz#18c24a32489b0a4fb9d7436efc048e836bfc4799" + integrity sha512-euhItU3b0SqXxSy8u1XHxUCdQ8M++bsRs+TYhOLDU/OykS7KvJnyIFfep0XM5WjIFry9uAPlVSjmVHiqeshmkw== + "@vueuse/shared@11.1.0": version "11.1.0" resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-11.1.0.tgz#3bfc3aa555c2a456c21945ec7f127d71938d12e8" @@ -964,6 +1165,18 @@ dependencies: vue-demi ">=0.14.10" +"@vueuse/shared@12.8.2", "@vueuse/shared@^12.5.0": + version "12.8.2" + resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-12.8.2.tgz#b9e4611d0603629c8e151f982459da394e22f930" + integrity sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w== + dependencies: + vue "^3.5.13" + +"@vueuse/shared@13.5.0": + version "13.5.0" + resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-13.5.0.tgz#c36e3e0eafca9c3b92356ccef139db0df7d9905e" + integrity sha512-K7GrQIxJ/ANtucxIXbQlUHdB0TPA8c+q5i+zbrjxuhJCnJ9GtBg75sBSnvmLSxHKPg2Yo8w62PWksl9kwH0Q8g== + acorn@^8.14.0: version "8.15.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" @@ -990,6 +1203,13 @@ algoliasearch@^4.19.1: "@algolia/requester-node-http" "4.24.0" "@algolia/transporter" "4.24.0" +aria-hidden@^1.2.4: + version "1.2.6" + resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.6.tgz#73051c9b088114c795b1ea414e9c0fff874ffc1a" + integrity sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA== + dependencies: + tslib "^2.0.0" + birpc@^0.2.19: version "0.2.19" resolved "https://registry.yarnpkg.com/birpc/-/birpc-0.2.19.tgz#cdd183a4a70ba103127d49765b4a71349da5a0ca" @@ -1029,6 +1249,18 @@ chevrotain@~11.0.3: "@chevrotain/utils" "11.0.3" lodash-es "4.17.21" +class-variance-authority@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/class-variance-authority/-/class-variance-authority-0.7.1.tgz#4008a798a0e4553a781a57ac5177c9fb5d043787" + integrity sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg== + dependencies: + clsx "^2.1.1" + +clsx@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999" + integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== + comma-separated-tokens@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz#4e89c9458acb61bc8fef19f4529973b2392839ee" @@ -1395,6 +1627,11 @@ debug@^4.4.0: dependencies: ms "^2.1.3" +defu@^6.1.4: + version "6.1.4" + resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.4.tgz#4e0c9cf9ff68fe5f3d7f2765cc1a012dfdcb0479" + integrity sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg== + delaunator@5: version "5.0.0" resolved "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz" @@ -1620,6 +1857,11 @@ lodash-es@4.17.21, lodash-es@^4.17.21: resolved "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz" integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== +lucide-vue-next@^0.503.0: + version "0.503.0" + resolved "https://registry.yarnpkg.com/lucide-vue-next/-/lucide-vue-next-0.503.0.tgz#a66bd31fdf84d4ddc590d8a5cb518b5a7da849ec" + integrity sha512-3MrtHIBdh4dPCUZDLxQnvmQ17UzUnBYgezUSIo87Laais8hOz6qIPllp0iG/uS/UIzk7bJxyZRzoZTW/gLSr4A== + magic-string@^0.30.11: version "0.30.11" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.11.tgz#301a6f93b3e8c2cb13ac1a7a673492c0dfd12954" @@ -1627,11 +1869,23 @@ magic-string@^0.30.11: dependencies: "@jridgewell/sourcemap-codec" "^1.5.0" +magic-string@^0.30.17: + version "0.30.17" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.17.tgz#450a449673d2460e5bbcfba9a61916a1714c7453" + integrity sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + mark.js@8.11.1: version "8.11.1" resolved "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz" integrity sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ== +markdown-it-link-attributes@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/markdown-it-link-attributes/-/markdown-it-link-attributes-4.0.1.tgz#25751f2cf74fd91f0a35ba7b3247fa45f2056d88" + integrity sha512-pg5OK0jPLg62H4k7M9mRJLT61gUp9nvG0XveKYHMOOluASo9OEF13WlXrpAp2aj35LbedAy3QOCgQCw0tkLKAQ== + marked@^15.0.7: version "15.0.12" resolved "https://registry.yarnpkg.com/marked/-/marked-15.0.12.tgz#30722c7346e12d0a2d0207ab9b0c4f0102d86c4e" @@ -1735,6 +1989,11 @@ ms@^2.1.3: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== +nanoid@^3.3.11: + version "3.3.11" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" + integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== + nanoid@^3.3.7: version "3.3.8" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" @@ -1759,6 +2018,11 @@ non-layered-tidy-tree-layout@^2.0.2: resolved "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz" integrity sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw== +ohash@^2.0.11: + version "2.0.11" + resolved "https://registry.yarnpkg.com/ohash/-/ohash-2.0.11.tgz#60b11e8cff62ca9dee88d13747a5baa145f5900b" + integrity sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ== + oniguruma-to-js@0.4.3: version "0.4.3" resolved "https://registry.yarnpkg.com/oniguruma-to-js/-/oniguruma-to-js-0.4.3.tgz#8d899714c21f5c7d59a3c0008ca50e848086d740" @@ -1791,6 +2055,11 @@ picocolors@^1.1.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59" integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw== +picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + pkg-types@^1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.3.1.tgz#bd7cc70881192777eef5326c19deb46e890917df" @@ -1831,6 +2100,15 @@ postcss@^8.4.43, postcss@^8.4.47: picocolors "^1.1.0" source-map-js "^1.2.1" +postcss@^8.5.6: + version "8.5.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c" + integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== + dependencies: + nanoid "^3.3.11" + picocolors "^1.1.1" + source-map-js "^1.2.1" + preact@^10.0.0: version "10.16.0" resolved "https://registry.npmjs.org/preact/-/preact-10.16.0.tgz" @@ -1851,6 +2129,22 @@ regex@^4.3.2: resolved "https://registry.yarnpkg.com/regex/-/regex-4.3.2.tgz#a68a68c9b337a77bf4ce4ed0b4b1a49d97cb3b7b" integrity sha512-kK/AA3A9K6q2js89+VMymcboLOlF5lZRCYJv3gzszXFHBr6kO6qLGzbm+UIugBEV8SMMKCTR59txoY6ctRHYVw== +reka-ui@^2.2.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/reka-ui/-/reka-ui-2.3.2.tgz#aedae51d85dcc61e418f12ffc0b013fccd5bb00c" + integrity sha512-lCysSCILH2uqShEnt93/qzlXnB7ySvK7scR0Q5C+a2iXwFVzHhvZQsMaSnbQYueoCihx6yyUZTYECepnmKrbRA== + dependencies: + "@floating-ui/dom" "^1.6.13" + "@floating-ui/vue" "^1.1.6" + "@internationalized/date" "^3.5.0" + "@internationalized/number" "^3.5.0" + "@tanstack/vue-virtual" "^3.12.0" + "@vueuse/core" "^12.5.0" + "@vueuse/shared" "^12.5.0" + aria-hidden "^1.2.4" + defu "^6.1.4" + ohash "^2.0.11" + rfdc@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca" @@ -1978,6 +2272,11 @@ ts-dedent@^2.2.0: resolved "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz" integrity sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ== +tslib@^2.0.0, tslib@^2.8.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + ufo@^1.5.4: version "1.6.1" resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.6.1.tgz#ac2db1d54614d1b22c1d603e3aef44a85d8f146b" @@ -2053,6 +2352,18 @@ vite@^5.4.10: optionalDependencies: fsevents "~2.3.3" +vitepress-openapi@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/vitepress-openapi/-/vitepress-openapi-0.1.3.tgz#7ef64c2e559514845207821fc69e47e12ddd262f" + integrity sha512-3p/Mc3eActjtSaIQNMNihXUSoLLoPxlG2MYwWWMw3D3eBDfreDfMbhNwQc/AtCUBIxinhgnn/LXYEEI3C/PxgQ== + dependencies: + "@vueuse/core" "^13.1.0" + class-variance-authority "^0.7.1" + clsx "^2.1.1" + lucide-vue-next "^0.503.0" + markdown-it-link-attributes "^4.0.1" + reka-ui "^2.2.0" + vitepress-plugin-mermaid@^2.0.17: version "2.0.17" resolved "https://registry.yarnpkg.com/vitepress-plugin-mermaid/-/vitepress-plugin-mermaid-2.0.17.tgz#547f464441298333b10f5f76f2333ad7d82173f3" @@ -2119,7 +2430,7 @@ vscode-uri@~3.0.8: resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-3.0.8.tgz#1770938d3e72588659a172d0fd4642780083ff9f" integrity sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw== -vue-demi@>=0.14.10: +vue-demi@>=0.13.0, vue-demi@>=0.14.10: version "0.14.10" resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.14.10.tgz#afc78de3d6f9e11bf78c55e8510ee12814522f04" integrity sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg== @@ -2135,6 +2446,17 @@ vue@^3.5.12: "@vue/server-renderer" "3.5.12" "@vue/shared" "3.5.12" +vue@^3.5.13: + version "3.5.17" + resolved "https://registry.yarnpkg.com/vue/-/vue-3.5.17.tgz#ea8a6a45abb2b0620e7d479319ce8434b55650cf" + integrity sha512-LbHV3xPN9BeljML+Xctq4lbz2lVHCR6DtbpTf5XIO6gugpXUN49j2QQPcMj086r9+AkJ0FfUT8xjulKKBkkr9g== + dependencies: + "@vue/compiler-dom" "3.5.17" + "@vue/compiler-sfc" "3.5.17" + "@vue/runtime-dom" "3.5.17" + "@vue/server-renderer" "3.5.17" + "@vue/shared" "3.5.17" + web-streams-polyfill@^3.0.3: version "3.2.1" resolved "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz" From 59fc8eac53ccdb0fd43ff8a5384355597a3cea55 Mon Sep 17 00:00:00 2001 From: auricom <27022259+auricom@users.noreply.github.com> Date: Mon, 21 Jul 2025 14:20:44 +0200 Subject: [PATCH 2/4] fix --- .vitepress/config.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.vitepress/config.ts b/.vitepress/config.ts index ba92ccd0f..dd096144f 100644 --- a/.vitepress/config.ts +++ b/.vitepress/config.ts @@ -102,10 +102,10 @@ export default withMermaid({ items: [ { text: "Introduction", - link: "/rpc", + link: "/api", }, ...sidebar.generateSidebarGroups({ - linkPrefix: "/rpc/operationsByTags/" + linkPrefix: "/api/operationsByTags/" }) ] }, From b668f6ba9d29dba86efa716550aa78082bfd82c4 Mon Sep 17 00:00:00 2001 From: auricom <27022259+auricom@users.noreply.github.com> Date: Mon, 21 Jul 2025 14:28:13 +0200 Subject: [PATCH 3/4] fix --- .vitepress/config.ts | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/.vitepress/config.ts b/.vitepress/config.ts index fcece9639..54dd48a8e 100644 --- a/.vitepress/config.ts +++ b/.vitepress/config.ts @@ -96,19 +96,19 @@ export default withMermaid({ ], [ "script", - { - text: "API Documentation", - collapsed: true, - items: [ - { - text: "Introduction", - link: "/api", - }, - ...sidebar.generateSidebarGroups({ - linkPrefix: "/api/operationsByTags/" - }) - ] - }, + { + src: "https://www.chatbase.co/embed.min.js", + id: "sw0sRxREFEQLTdqwC_Fbe", + defer: true, + }, + ], + [ + "script", + { + src: "https://plausible.celestia.org/js/plausible.js", + "data-domain": "rollkit.dev", + defer: true, + }, ], [ "script", From 888b35bdd2a94c828cf0a110f036cd07505e8323 Mon Sep 17 00:00:00 2001 From: auricom <27022259+auricom@users.noreply.github.com> Date: Mon, 21 Jul 2025 14:29:05 +0200 Subject: [PATCH 4/4] Apply suggestions from code review Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- api/index.md | 2 +- api/operationsByTags/[operationId].md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/api/index.md b/api/index.md index 278d9d276..694987ac7 100644 --- a/api/index.md +++ b/api/index.md @@ -1,7 +1,7 @@ --- aside: false outline: false -title: vitepress-openapi +title: API Introduction ---