From af445aed615cf8c751621bd66986362c6b34aad0 Mon Sep 17 00:00:00 2001 From: Jeff Repanich Date: Sun, 16 Aug 2026 15:04:17 -0400 Subject: [PATCH] chore: adopt AskrJS 0.2.0 --- package-lock.json | 582 +++- package.json | 34 +- src/pages/docs/api-manifest.ts | 296 +- src/pages/docs/api-snapshot.ts | 4984 +++++++++++++++++++++++++++++--- src/pages/docs/cli-snapshot.ts | 5 +- 5 files changed, 5263 insertions(+), 638 deletions(-) diff --git a/package-lock.json b/package-lock.json index 38b4fc9..479b806 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,26 +9,26 @@ "version": "0.1.2", "license": "Apache-2.0", "dependencies": { - "@askrjs/askr": "0.0.92", - "@askrjs/charts": "0.1.6", - "@askrjs/fetch": "0.0.5", - "@askrjs/i18n": "0.0.4", - "@askrjs/logos": "0.0.7", - "@askrjs/lucide": "0.0.9", - "@askrjs/monaco": "0.0.8", - "@askrjs/otel": "0.0.5", - "@askrjs/themes": "0.0.25", - "@askrjs/ui": "0.0.27", + "@askrjs/askr": "0.2.0", + "@askrjs/charts": "0.2.0", + "@askrjs/fetch": "0.2.0", + "@askrjs/i18n": "0.2.0", + "@askrjs/logos": "0.2.0", + "@askrjs/lucide": "0.2.0", + "@askrjs/monaco": "0.2.0", + "@askrjs/otel": "0.2.0", + "@askrjs/themes": "0.2.0", + "@askrjs/ui": "0.2.0", "@fontsource-variable/domine": "^5.3.0" }, "devDependencies": { - "@askrjs/auth": "0.0.9", - "@askrjs/cli": "0.0.23", - "@askrjs/node": "0.0.9", - "@askrjs/schema": "0.0.6", - "@askrjs/server": "0.0.13", - "@askrjs/testing": "0.0.6", - "@askrjs/vite": "0.0.13", + "@askrjs/auth": "0.2.0", + "@askrjs/cli": "0.2.0", + "@askrjs/node": "0.2.0", + "@askrjs/schema": "0.2.0", + "@askrjs/server": "0.2.0", + "@askrjs/testing": "0.2.0", + "@askrjs/vite": "0.2.0", "@types/node": "^26.2.0", "@typescript/native": "npm:typescript@^7.0.2", "@vitest/browser-playwright": "4.1.10", @@ -43,22 +43,22 @@ } }, "node_modules/@askrjs/askr": { - "version": "0.0.92", - "resolved": "https://registry.npmjs.org/@askrjs/askr/-/askr-0.0.92.tgz", - "integrity": "sha512-1nhSnwQr4A2Jcozq1qgD7po+8uVucQfdb1XvcK6TVDyiizW9SSBAkFZSZD5gdQJ7juJWDKuqZ4zMr7J12RpepQ==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@askrjs/askr/-/askr-0.2.0.tgz", + "integrity": "sha512-uRjpRGFWBrLUtIAf/MbKeAetjTN1DkeNlXzzBeov14bV/4uBYgAWC7OAw0PH+tbxy30obabmsON+2ZPqIUuGIQ==", "license": "Apache-2.0", "dependencies": { - "@askrjs/auth": ">=0.0.8 <0.1.0", - "@askrjs/schema": ">=0.0.5 <0.1.0" + "@askrjs/auth": ">=0.2.0 <0.3.0", + "@askrjs/schema": ">=0.2.0 <0.3.0" }, "engines": { "node": ">=24.0.0" } }, "node_modules/@askrjs/auth": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/@askrjs/auth/-/auth-0.0.9.tgz", - "integrity": "sha512-Akv4FCoakSa2WSowIMoxnaUrvnDBF84vmwgbThkWIgTUCgj+L846TGZ/7fR7657MCJAEveLjmqbTDq0WTfbKrg==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@askrjs/auth/-/auth-0.2.0.tgz", + "integrity": "sha512-tuqG9lMUc6xNF/Q7yiqXET1rSzk7jEKDNRu30AyoQd/xn+yMzyjI/p+RSH+kRbrLS+5989vouVDknFAfs8UVsw==", "license": "Apache-2.0", "dependencies": { "@xmldom/xmldom": "0.9.10", @@ -70,21 +70,21 @@ } }, "node_modules/@askrjs/charts": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@askrjs/charts/-/charts-0.1.6.tgz", - "integrity": "sha512-E1+5AkDLf6xgxmoRAtKO9wST5v9dnnLaA3M7pTF/PSiC1hwIuuvWv8V49TkaibllzMTzeUTOWBatq+6Iykk12g==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@askrjs/charts/-/charts-0.2.0.tgz", + "integrity": "sha512-YankcK5pTwhdlZ7e/g71yLgrawYn0Woz8ug9aGGpm9p+yLDhWvUS6pklLH8Bw7Rc7egVEKb/kJB+NB09NKTVNg==", "license": "Apache-2.0", "engines": { "node": ">=24.0.0" }, "peerDependencies": { - "@askrjs/askr": ">=0.0.88 <0.1.0" + "@askrjs/askr": ">=0.2.0 <0.3.0" } }, "node_modules/@askrjs/cli": { - "version": "0.0.23", - "resolved": "https://registry.npmjs.org/@askrjs/cli/-/cli-0.0.23.tgz", - "integrity": "sha512-WvWVlADgMJct0xo4dUn6wf5NVWdQl83gi/LLD54rGuqhYZwnl8UpolORJfZdAGGdA0+/iw72t9vEQJc4/FOgjQ==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@askrjs/cli/-/cli-0.2.0.tgz", + "integrity": "sha512-XO9W2kYkVp2pgZRnl2fto37oWS+v724Xk8ruf98kyjUCg/QoVqHnZirGbujHLvpNTd0ejGvv1IA3F4PjZgrQMQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -104,7 +104,7 @@ "node": ">=24.0.0" }, "peerDependencies": { - "@askrjs/askr": ">=0.0.89 <0.1.0" + "@askrjs/askr": ">=0.2.0 <0.3.0" }, "peerDependenciesMeta": { "@askrjs/askr": { @@ -113,72 +113,72 @@ } }, "node_modules/@askrjs/fetch": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@askrjs/fetch/-/fetch-0.0.5.tgz", - "integrity": "sha512-3kdZ5bpGSRvR9+G1CmVIfHPgEJtzOPcP9m0/dC2dCDSxoAw1wNEa08cMlOrzbsmDBBpxWJ6QpDnD1rqLGxhttg==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@askrjs/fetch/-/fetch-0.2.0.tgz", + "integrity": "sha512-2+aJQCzt+wm9MMEb5RLmUkpGE0N8bkPEn2+jkL0g44Fumnkqv2WfKWNnuCgLK2ms9bvxXK8QyS7Gwx97aeVFLQ==", "license": "Apache-2.0", "engines": { "node": ">=24.0.0" } }, "node_modules/@askrjs/i18n": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@askrjs/i18n/-/i18n-0.0.4.tgz", - "integrity": "sha512-3NwgK/aGv/kJFBIh3p/wtmJyBlD7U4lYjUsh3fQtjEVIXJhLHbh3Lpbbt7pmeZd7ltC1yqo1lN2JCqz4EDvawA==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@askrjs/i18n/-/i18n-0.2.0.tgz", + "integrity": "sha512-QF3HTgkZd7gZ2UZHTBh/uNKJCB8rZMiBTkbtRCR9cYbnK31aTTJ4O/MtQT+WPfjwQ2UQ3ecr1jAtPs3sOMdRGg==", "license": "Apache-2.0", "engines": { "node": ">=24.0.0" }, "peerDependencies": { - "@askrjs/askr": ">=0.0.88 <0.1.0" + "@askrjs/askr": ">=0.2.0 <0.3.0" } }, "node_modules/@askrjs/logos": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@askrjs/logos/-/logos-0.0.7.tgz", - "integrity": "sha512-K4HutPmht5oz5wGxaLrBWuSU3MBROrZjmvfCug7J4JhfBFDPiOh5UOALgWV6kbUw+m0wJN0C1hIcl+DBRI3+Kg==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@askrjs/logos/-/logos-0.2.0.tgz", + "integrity": "sha512-bMGn8Z/LNKs1WUZF/GJ2A0ZxRP8LGi7KmeENnhUFT+jJDDsKt9/sFB/crLPJyOX15XqT5O0sVXHsP/I6zt5fBQ==", "license": "Apache-2.0", "engines": { "node": ">=24.0.0" }, "peerDependencies": { - "@askrjs/askr": ">=0.0.88 <0.1.0" + "@askrjs/askr": ">=0.2.0 <0.3.0" } }, "node_modules/@askrjs/lucide": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/@askrjs/lucide/-/lucide-0.0.9.tgz", - "integrity": "sha512-K6D0GFT0CzE6C/HOEBPumGrAIkFmrG1qh+iD9DkltsBHXZXTBMHdbn7Qu6zxzoNggBNy+5fxOmLC7QLiCHSJ5Q==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@askrjs/lucide/-/lucide-0.2.0.tgz", + "integrity": "sha512-8oNoIudvegdsIMFnFthp+9ly3GLzh8j9llmrr3CXekUixCFyl6akY7/riVaEnmY/4Wy+Z8zHSsf37MKtNMP+Kw==", "license": "Apache-2.0", "engines": { "node": ">=24.0.0" }, "peerDependencies": { - "@askrjs/askr": ">=0.0.88 <0.1.0" + "@askrjs/askr": ">=0.2.0 <0.3.0" } }, "node_modules/@askrjs/monaco": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/@askrjs/monaco/-/monaco-0.0.8.tgz", - "integrity": "sha512-Rhnlp5pCuKMjR8rYo6e5sMAU32apjhalB1hJYpmlfR2ntkRIgCYFbszTFbEjsMlYxdQZhHbhoVSKuKhb/80tvQ==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@askrjs/monaco/-/monaco-0.2.0.tgz", + "integrity": "sha512-CiUfGSQEzzKPcW5YQqyeB1Mb8s8cUCD/NVugv5YMcJlo2d37LL9qEPUPRGgG8Fyxfsn/bVeH6kG2AyqGG+k+Dg==", "license": "Apache-2.0", "engines": { "node": ">=24.0.0" }, "peerDependencies": { - "@askrjs/askr": ">=0.0.88 <0.1.0", + "@askrjs/askr": ">=0.2.0 <0.3.0", "monaco-editor": "^0.56.0" } }, "node_modules/@askrjs/node": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/@askrjs/node/-/node-0.0.9.tgz", - "integrity": "sha512-2sVn1crf0We/q/h7LVm3llFrkgcx/LqbtT7HRpZlHZkGMFG7JNxYBloLCAbGU5nE9AcaqZpac29w1VwWTsYE8g==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@askrjs/node/-/node-0.2.0.tgz", + "integrity": "sha512-QNyUZ1KwVpObnjjfTULlrthEAfXennw1CoCCAclERImRRGXas5pu214rUURta8CuG8I3/hg1yMsEEUwLiYmBzw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@askrjs/auth": ">=0.0.8 <0.1.0", - "@askrjs/server": ">=0.0.11 <0.1.0", + "@askrjs/auth": ">=0.2.0 <0.3.0", + "@askrjs/server": ">=0.2.0 <0.3.0", "@types/ws": "^8.18.1", "ws": "^8.21.3" }, @@ -187,46 +187,41 @@ } }, "node_modules/@askrjs/otel": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@askrjs/otel/-/otel-0.0.5.tgz", - "integrity": "sha512-9emHb1ZQ7MDcyQq5EOypKre1o572szrr9X+4VLjHAAmqjxmtUXilf0mnQdWP3H7iAFhPCTfPFylHQbgRC2fRmQ==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@askrjs/otel/-/otel-0.2.0.tgz", + "integrity": "sha512-G/e0r5xG+Fuo3CEK4jgjnzK7spEBs/OE8EbspYTWQcqYwaTZItnQmrcXs3mJRHZEqlKmeLzKVB7tjisBJen8zw==", "license": "Apache-2.0", "engines": { "node": ">=24.0.0" }, "peerDependencies": { "@opentelemetry/api": "^1.9.1" - }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - } } }, "node_modules/@askrjs/schema": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@askrjs/schema/-/schema-0.0.6.tgz", - "integrity": "sha512-VN4PnJ3/NNP5UnWYbf6/rDciykKb6+Ibx1QLGfWPqX7d7ORmfyAtCRjGsseRfv4y2mcvwe6zxVZ3WnY5YVjVtg==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@askrjs/schema/-/schema-0.2.0.tgz", + "integrity": "sha512-YCDfIiGg466bAoxORVrCT4vwXImZr7BYZaAkaFSdLNP+/hmvDVez0GQ9V55h+mPC4jma1ymxHZMterQZzPhI8g==", "license": "Apache-2.0", "engines": { "node": ">=24.0.0" } }, "node_modules/@askrjs/server": { - "version": "0.0.13", - "resolved": "https://registry.npmjs.org/@askrjs/server/-/server-0.0.13.tgz", - "integrity": "sha512-LpfhVI3efMH4EroBgRRAjNBS5BcQKAq355h0F9cHtMNutI2IgkVfUQHyIk8S+09xYI1EIjWxDaqEA76XeL7+Xg==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@askrjs/server/-/server-0.2.0.tgz", + "integrity": "sha512-y5xq42zEetqopMNwE5ughFxEDg+wKvUrY4ydONqXn8mTKKSfxjG1V1lptDB8OmNjZcFiSNbE6BQ/HQ2mzPdLkA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@askrjs/auth": ">=0.0.9 <0.1.0", - "@askrjs/schema": ">=0.0.6 <0.1.0" + "@askrjs/auth": ">=0.2.0 <0.3.0", + "@askrjs/schema": ">=0.2.0 <0.3.0" }, "engines": { "node": ">=24.0.0" }, "peerDependencies": { - "@askrjs/askr": ">=0.0.89 <0.1.0" + "@askrjs/askr": ">=0.2.0 <0.3.0" }, "peerDependenciesMeta": { "@askrjs/askr": { @@ -235,9 +230,9 @@ } }, "node_modules/@askrjs/testing": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@askrjs/testing/-/testing-0.0.6.tgz", - "integrity": "sha512-jAvXk7++g7AC+Slb8bPVZ0DcsHQ97LlcLkDdhLzV/UARyDBIMy+btnpapiW9qv76VdssSnIbl2IVASe6bUK7cQ==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@askrjs/testing/-/testing-0.2.0.tgz", + "integrity": "sha512-9FKmlawDYF3kfzqF9upkEIlC0SgDCJt9H9YDTmgVm1EDjaEmxHc92xb0Dxpf/3rHxXzVMjWcOEBXmZ30Cs0qqg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -248,45 +243,46 @@ } }, "node_modules/@askrjs/themes": { - "version": "0.0.25", - "resolved": "https://registry.npmjs.org/@askrjs/themes/-/themes-0.0.25.tgz", - "integrity": "sha512-xd6f3r5pR22anIPh/1ADdKhoJUCWXket4ur8OttUxYgXnMPZSik/7ulcymCfq3rQtBbvW0IIgRRU3hy/BluSKA==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@askrjs/themes/-/themes-0.2.0.tgz", + "integrity": "sha512-/XMmIIDvgQmmP13GyYlvcrjSxnQOelcJnGTAMPQlT3jqb6fplRssM8VpCcaaWzZxrLvqRJFVOELgSk2XfbhyVg==", "license": "Apache-2.0", "engines": { "node": ">=24.0.0" }, "peerDependencies": { - "@askrjs/askr": ">=0.0.88 <0.1.0", - "@askrjs/ui": ">=0.0.26 <0.1.0" + "@askrjs/askr": ">=0.2.0 <0.3.0", + "@askrjs/ui": ">=0.2.0 <0.3.0" } }, "node_modules/@askrjs/ui": { - "version": "0.0.27", - "resolved": "https://registry.npmjs.org/@askrjs/ui/-/ui-0.0.27.tgz", - "integrity": "sha512-Rw1MxG1WNSt/4irJQQAWIMd9ooOyo5URRyO/RcP66f11Jh6EOXoNaKqO5mDY/sLThEhBqkLjRACHZqHj3t+kwg==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@askrjs/ui/-/ui-0.2.0.tgz", + "integrity": "sha512-W8wynl2eTEjHrkqdwz4Do7dIp6yeuwkeQF60mrvX7cv3cbHe3sHaf1A0ok5Mac8MvDJG2No0fxWyWFG5uznZUw==", "license": "Apache-2.0", "engines": { "node": ">=24.0.0" }, "peerDependencies": { - "@askrjs/askr": ">=0.0.88 <0.1.0" + "@askrjs/askr": ">=0.2.0 <0.3.0" } }, "node_modules/@askrjs/vite": { - "version": "0.0.13", - "resolved": "https://registry.npmjs.org/@askrjs/vite/-/vite-0.0.13.tgz", - "integrity": "sha512-ilOsruMEsbzYHmFRmPY1kwPchBVbzBwJaZq3OGFSShkG/GSwCO/d+34evkxbpWOxVDVpZbTfyv/RE9eMrkBBbw==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@askrjs/vite/-/vite-0.2.0.tgz", + "integrity": "sha512-/k8XisZZiZG5SEmWDRYqD+oGTBE6cPMthA5pE50qSRPb5wGZ2rkXTza5UU6/84WcL3xYN8ztzfxDARSN1gpswg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@askrjs/node": ">=0.0.8 <0.1.0", + "@askrjs/node": ">=0.2.0 <0.3.0", + "oxc-parser": "^0.144.0", "parse5": "^8.0.1" }, "engines": { "node": ">=24.0.0" }, "peerDependencies": { - "@askrjs/askr": ">=0.0.88 <0.1.0", + "@askrjs/askr": ">=0.2.0 <0.3.0", "sharp": "^0.35.3", "vite": "^8.2.1", "vite-plus": "^0.2.8" @@ -951,6 +947,363 @@ "node": "^22.22.2 || ^24.15.0 || >=26.0.0" } }, + "node_modules/@opentelemetry/api": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.1.tgz", + "integrity": "sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==", + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@oxc-parser/binding-android-arm-eabi": { + "version": "0.144.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-android-arm-eabi/-/binding-android-arm-eabi-0.144.0.tgz", + "integrity": "sha512-IaoGBEp/huvja99PxI/b72TbKFzA/UzxxAka7f233dc/Tg/rRTX9Qn8IquFLWwWf4IddN/5TaJ8S4Subbjq7wQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-android-arm64": { + "version": "0.144.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-android-arm64/-/binding-android-arm64-0.144.0.tgz", + "integrity": "sha512-u6fJu8XQXP99+9pYO3jq7F1D7V9fyFuDBShYFlr+gY+GcJzhveeN/zoMfuXxX6XBquJO0kjqKd7BjhJ7pClWXQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-darwin-arm64": { + "version": "0.144.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-darwin-arm64/-/binding-darwin-arm64-0.144.0.tgz", + "integrity": "sha512-o9xGSmMQcboJLjwI+acFf6xa7nYdp0/nRFE8ry4Xrt8OviQ9ITFDBUkAXVJMOLchSV9Pu981GxJuW0mt4i6vQQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-darwin-x64": { + "version": "0.144.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-darwin-x64/-/binding-darwin-x64-0.144.0.tgz", + "integrity": "sha512-2yNm4tX++W3KLbyziVhs5alSb74a3C1uNDu/1P/AQj1ux8yZYuvbCAeJCCrGkr8J18ZmnBAzDthdTZBEAEb71w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-freebsd-x64": { + "version": "0.144.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-freebsd-x64/-/binding-freebsd-x64-0.144.0.tgz", + "integrity": "sha512-TG4CjY1OjynplkF9nAQ9m9zboPJksnbAF+U/9xQGSXyIt+5sQRitwfQrUgjrG17/up9G8k/boNjLD2zp4xq1Kw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-arm-gnueabihf": { + "version": "0.144.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-0.144.0.tgz", + "integrity": "sha512-i0T9NagVmqc+rbSyBr5mDKj7TCMIBRrSteQlQJt1WhWIH/sZeOP9GB09H9w98YdinuZkDIPmO7Fz0jDC7bMvSA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-arm-musleabihf": { + "version": "0.144.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-0.144.0.tgz", + "integrity": "sha512-YUsEqM3WMS3mOON+TFf7RzS0QthzEifx7tpUQu0GSF2MsT+D6t154ZBs6WhWaCZNl0GuVDEvndCyEAUBHzSHGw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-arm64-gnu": { + "version": "0.144.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.144.0.tgz", + "integrity": "sha512-LlWH4kt+IET3qIAe0e0IFLNlQ3CVUAfN//UFsA6N0/FghMh/FBk1e+wzvgG+t8WSnXkvf8B1TovquS2EJras9g==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-arm64-musl": { + "version": "0.144.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.144.0.tgz", + "integrity": "sha512-ajXbXIWBWUD4U3IQxr2p6DiXwD7GPHEBLa+JteKhIfvLmBEBdTjO28lP+5r3AF2qal8cxLERfTnGs64Z22ZuXw==", + "cpu": [ + "arm64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-ppc64-gnu": { + "version": "0.144.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-0.144.0.tgz", + "integrity": "sha512-/+sDzL/4cWEwdqenKo/DX3gkkxu7H7ytFAtealDey/Gd59yPWn64obVk6wXKVjVfXMciUUUTySxZG9AIMX3RNQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-riscv64-gnu": { + "version": "0.144.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-0.144.0.tgz", + "integrity": "sha512-dMVhPBbrd8y6aeLd7Ihn9OZhKO8QgCQVtLBTRgbmf4lKrcR61SpaQRJPJuocTc/Cn5SJMm+alHYPnzkbOGM7Dg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-riscv64-musl": { + "version": "0.144.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-0.144.0.tgz", + "integrity": "sha512-jQ8O0+b6J2IhJgm0DnqEJq8hG9OocmF1b4TBWCk08CRWqTmLZj/+lYs7w3OA60nb2SiqOmthQyJPacrCi7y+oQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-s390x-gnu": { + "version": "0.144.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-0.144.0.tgz", + "integrity": "sha512-/mZxZtcGrzuvqPLPV7gjavbROYs/dHy6+yQ2Sl/2to/+qoC/v6CcruGFnfQPzQbXXTYReXJzLb5QY9KmgCbJOg==", + "cpu": [ + "s390x" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-x64-gnu": { + "version": "0.144.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.144.0.tgz", + "integrity": "sha512-/caRGFHcarHZlBrucBwQwBbzqhD+UfZZ/r7soocS0/mp6/5KTq+1Zl/OQx5lFLcN+GpUPYszbrvQU9MCFLEzJg==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-linux-x64-musl": { + "version": "0.144.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-linux-x64-musl/-/binding-linux-x64-musl-0.144.0.tgz", + "integrity": "sha512-qFtwAo6BWuWDjh57QDdZdYi746GW0mIeoZSGK2jJqlxIjo389Y/7lrriTOI+ou7tTvusOrSYGQZ+e+nDswt2vQ==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "musl" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-openharmony-arm64": { + "version": "0.144.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-openharmony-arm64/-/binding-openharmony-arm64-0.144.0.tgz", + "integrity": "sha512-n+NgMGWWEYpH+rlkMhDvLR2k8vJDHQp3j8SoS86IS6J0hc4kuDaiYAAvu9dF86xjeGYy+h9WLj12sylmBJV9sg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-win32-arm64-msvc": { + "version": "0.144.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.144.0.tgz", + "integrity": "sha512-fShxpJiCBOdG4+jBAvahTTFUDI5djXc/+IPC1ldeC8LbyCW0h9m/7oP8DRZWI7WT2Ahv8sHtZz4ugECylCFpTA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-win32-ia32-msvc": { + "version": "0.144.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.144.0.tgz", + "integrity": "sha512-vFrYV+C3lJhIiSdNhdkZHnZ0YIClgTSluXaPMYjlGslVPD+uJg6K1s2xNL/X/gdBcy9IIbjbp0vNBwQhdMMdkw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxc-parser/binding-win32-x64-msvc": { + "version": "0.144.0", + "resolved": "https://registry.npmjs.org/@oxc-parser/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.144.0.tgz", + "integrity": "sha512-0ASbKSwdeihMekyy7y4jC0CwW3XBDZk5Sw64m/W7IReVQHaduqLYssF9KCJA2oHG9oldnl/1CMxqCoImXfqQkA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, "node_modules/@oxc-project/runtime": { "version": "0.142.0", "resolved": "https://registry.npmjs.org/@oxc-project/runtime/-/runtime-0.142.0.tgz", @@ -4434,6 +4787,53 @@ "node": ">=12.20.0" } }, + "node_modules/oxc-parser": { + "version": "0.144.0", + "resolved": "https://registry.npmjs.org/oxc-parser/-/oxc-parser-0.144.0.tgz", + "integrity": "sha512-eacM4wMgGWXctHubY262yo+50E76qtQBqe+uK73YEV1IT3qP12Acbnf9Nc8t+agIAdnko9iVT4KF83/d0EjY5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@oxc-project/types": "^0.144.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/sponsors/Boshen" + }, + "optionalDependencies": { + "@oxc-parser/binding-android-arm-eabi": "0.144.0", + "@oxc-parser/binding-android-arm64": "0.144.0", + "@oxc-parser/binding-darwin-arm64": "0.144.0", + "@oxc-parser/binding-darwin-x64": "0.144.0", + "@oxc-parser/binding-freebsd-x64": "0.144.0", + "@oxc-parser/binding-linux-arm-gnueabihf": "0.144.0", + "@oxc-parser/binding-linux-arm-musleabihf": "0.144.0", + "@oxc-parser/binding-linux-arm64-gnu": "0.144.0", + "@oxc-parser/binding-linux-arm64-musl": "0.144.0", + "@oxc-parser/binding-linux-ppc64-gnu": "0.144.0", + "@oxc-parser/binding-linux-riscv64-gnu": "0.144.0", + "@oxc-parser/binding-linux-riscv64-musl": "0.144.0", + "@oxc-parser/binding-linux-s390x-gnu": "0.144.0", + "@oxc-parser/binding-linux-x64-gnu": "0.144.0", + "@oxc-parser/binding-linux-x64-musl": "0.144.0", + "@oxc-parser/binding-openharmony-arm64": "0.144.0", + "@oxc-parser/binding-win32-arm64-msvc": "0.144.0", + "@oxc-parser/binding-win32-ia32-msvc": "0.144.0", + "@oxc-parser/binding-win32-x64-msvc": "0.144.0" + } + }, + "node_modules/oxc-parser/node_modules/@oxc-project/types": { + "version": "0.144.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.144.0.tgz", + "integrity": "sha512-nuhZIOLuI6TFQ32I/WnUx+SCPY7SdSKwgnFHydAuoS1+Z4BRcaP+RRJmGzl9lw+0OFF7UmaESf7KQRXaNLHypg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, "node_modules/oxfmt": { "version": "0.61.0", "resolved": "https://registry.npmjs.org/oxfmt/-/oxfmt-0.61.0.tgz", diff --git a/package.json b/package.json index f5dae0d..65e8546 100644 --- a/package.json +++ b/package.json @@ -26,26 +26,26 @@ "preview": "vp preview --outDir dist" }, "dependencies": { - "@askrjs/askr": "0.0.92", - "@askrjs/charts": "0.1.6", - "@askrjs/fetch": "0.0.5", - "@askrjs/i18n": "0.0.4", - "@askrjs/logos": "0.0.7", - "@askrjs/lucide": "0.0.9", - "@askrjs/monaco": "0.0.8", - "@askrjs/otel": "0.0.5", - "@askrjs/themes": "0.0.25", - "@askrjs/ui": "0.0.27", + "@askrjs/askr": "0.2.0", + "@askrjs/charts": "0.2.0", + "@askrjs/fetch": "0.2.0", + "@askrjs/i18n": "0.2.0", + "@askrjs/logos": "0.2.0", + "@askrjs/lucide": "0.2.0", + "@askrjs/monaco": "0.2.0", + "@askrjs/otel": "0.2.0", + "@askrjs/themes": "0.2.0", + "@askrjs/ui": "0.2.0", "@fontsource-variable/domine": "^5.3.0" }, "devDependencies": { - "@askrjs/auth": "0.0.9", - "@askrjs/cli": "0.0.23", - "@askrjs/node": "0.0.9", - "@askrjs/schema": "0.0.6", - "@askrjs/server": "0.0.13", - "@askrjs/testing": "0.0.6", - "@askrjs/vite": "0.0.13", + "@askrjs/auth": "0.2.0", + "@askrjs/cli": "0.2.0", + "@askrjs/node": "0.2.0", + "@askrjs/schema": "0.2.0", + "@askrjs/server": "0.2.0", + "@askrjs/testing": "0.2.0", + "@askrjs/vite": "0.2.0", "@types/node": "^26.2.0", "@typescript/native": "npm:typescript@^7.0.2", "@vitest/browser-playwright": "4.1.10", diff --git a/src/pages/docs/api-manifest.ts b/src/pages/docs/api-manifest.ts index 0b897dc..5ee1713 100644 --- a/src/pages/docs/api-manifest.ts +++ b/src/pages/docs/api-manifest.ts @@ -11,7 +11,7 @@ export interface ApiEntrypointDefinition { export const apiManifest: readonly ApiEntrypointDefinition[] = [ { packageName: '@askrjs/askr', - version: '0.0.92', + version: '0.2.0', subpath: '.', importName: '@askrjs/askr', slug: 'root', @@ -19,7 +19,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.0.92', + version: '0.2.0', subpath: './boot', importName: '@askrjs/askr/boot', slug: 'boot', @@ -27,7 +27,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.0.92', + version: '0.2.0', subpath: './components', importName: '@askrjs/askr/components', slug: 'components', @@ -35,7 +35,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.0.92', + version: '0.2.0', subpath: './control', importName: '@askrjs/askr/control', slug: 'control', @@ -43,7 +43,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.0.92', + version: '0.2.0', subpath: './foundations', importName: '@askrjs/askr/foundations', slug: 'foundations', @@ -51,7 +51,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.0.92', + version: '0.2.0', subpath: './foundations/utilities', importName: '@askrjs/askr/foundations/utilities', slug: 'foundations--utilities', @@ -59,7 +59,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.0.92', + version: '0.2.0', subpath: './foundations/interactions', importName: '@askrjs/askr/foundations/interactions', slug: 'foundations--interactions', @@ -67,7 +67,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.0.92', + version: '0.2.0', subpath: './foundations/state', importName: '@askrjs/askr/foundations/state', slug: 'foundations--state', @@ -75,7 +75,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.0.92', + version: '0.2.0', subpath: './foundations/structures', importName: '@askrjs/askr/foundations/structures', slug: 'foundations--structures', @@ -83,7 +83,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.0.92', + version: '0.2.0', subpath: './foundations/icon', importName: '@askrjs/askr/foundations/icon', slug: 'foundations--icon', @@ -91,7 +91,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.0.92', + version: '0.2.0', subpath: './resources', importName: '@askrjs/askr/resources', slug: 'resources', @@ -99,7 +99,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.0.92', + version: '0.2.0', subpath: './data', importName: '@askrjs/askr/data', slug: 'data', @@ -107,7 +107,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.0.92', + version: '0.2.0', subpath: './testing', importName: '@askrjs/askr/testing', slug: 'testing', @@ -115,7 +115,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.0.92', + version: '0.2.0', subpath: './fx', importName: '@askrjs/askr/fx', slug: 'fx', @@ -123,7 +123,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.0.92', + version: '0.2.0', subpath: './router', importName: '@askrjs/askr/router', slug: 'router', @@ -131,7 +131,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.0.92', + version: '0.2.0', subpath: './actions', importName: '@askrjs/askr/actions', slug: 'actions', @@ -139,7 +139,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.0.92', + version: '0.2.0', subpath: './ssr', importName: '@askrjs/askr/ssr', slug: 'ssr', @@ -147,7 +147,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.0.92', + version: '0.2.0', subpath: './ssg', importName: '@askrjs/askr/ssg', slug: 'ssg', @@ -155,7 +155,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.0.92', + version: '0.2.0', subpath: './jsx-runtime', importName: '@askrjs/askr/jsx-runtime', slug: 'jsx-runtime', @@ -163,7 +163,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/askr', - version: '0.0.92', + version: '0.2.0', subpath: './jsx-dev-runtime', importName: '@askrjs/askr/jsx-dev-runtime', slug: 'jsx-dev-runtime', @@ -171,7 +171,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/auth', - version: '0.0.9', + version: '0.2.0', subpath: '.', importName: '@askrjs/auth', slug: 'root', @@ -179,7 +179,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/auth', - version: '0.0.9', + version: '0.2.0', subpath: './jwt', importName: '@askrjs/auth/jwt', slug: 'jwt', @@ -187,7 +187,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/auth', - version: '0.0.9', + version: '0.2.0', subpath: './oidc', importName: '@askrjs/auth/oidc', slug: 'oidc', @@ -195,7 +195,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/auth', - version: '0.0.9', + version: '0.2.0', subpath: './saml', importName: '@askrjs/auth/saml', slug: 'saml', @@ -203,7 +203,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/auth', - version: '0.0.9', + version: '0.2.0', subpath: './mfa', importName: '@askrjs/auth/mfa', slug: 'mfa', @@ -211,7 +211,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/auth', - version: '0.0.9', + version: '0.2.0', subpath: './webauthn-client', importName: '@askrjs/auth/webauthn-client', slug: 'webauthn-client', @@ -219,7 +219,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/charts', - version: '0.1.6', + version: '0.2.0', subpath: '.', importName: '@askrjs/charts', slug: 'root', @@ -227,7 +227,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/charts', - version: '0.1.6', + version: '0.2.0', subpath: './styles', importName: '@askrjs/charts/styles', slug: 'styles', @@ -235,7 +235,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/fetch', - version: '0.0.5', + version: '0.2.0', subpath: '.', importName: '@askrjs/fetch', slug: 'root', @@ -243,7 +243,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/fetch', - version: '0.0.5', + version: '0.2.0', subpath: './middleware', importName: '@askrjs/fetch/middleware', slug: 'middleware', @@ -251,7 +251,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/i18n', - version: '0.0.4', + version: '0.2.0', subpath: '.', importName: '@askrjs/i18n', slug: 'root', @@ -259,7 +259,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/logos', - version: '0.0.7', + version: '0.2.0', subpath: '.', importName: '@askrjs/logos', slug: 'root', @@ -267,7 +267,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/lucide', - version: '0.0.9', + version: '0.2.0', subpath: '.', importName: '@askrjs/lucide', slug: 'root', @@ -275,7 +275,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/monaco', - version: '0.0.8', + version: '0.2.0', subpath: '.', importName: '@askrjs/monaco', slug: 'root', @@ -283,7 +283,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/monaco', - version: '0.0.8', + version: '0.2.0', subpath: './monaco-editor', importName: '@askrjs/monaco/monaco-editor', slug: 'monaco-editor', @@ -291,7 +291,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/monaco', - version: '0.0.8', + version: '0.2.0', subpath: './testing', importName: '@askrjs/monaco/testing', slug: 'testing', @@ -299,7 +299,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/node', - version: '0.0.9', + version: '0.2.0', subpath: '.', importName: '@askrjs/node', slug: 'root', @@ -307,7 +307,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/node', - version: '0.0.9', + version: '0.2.0', subpath: './mcp', importName: '@askrjs/node/mcp', slug: 'mcp', @@ -315,7 +315,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/otel', - version: '0.0.5', + version: '0.2.0', subpath: '.', importName: '@askrjs/otel', slug: 'root', @@ -323,7 +323,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/schema', - version: '0.0.6', + version: '0.2.0', subpath: '.', importName: '@askrjs/schema', slug: 'root', @@ -331,7 +331,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/server', - version: '0.0.13', + version: '0.2.0', subpath: '.', importName: '@askrjs/server', slug: 'root', @@ -339,7 +339,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/server', - version: '0.0.13', + version: '0.2.0', subpath: './router', importName: '@askrjs/server/router', slug: 'router', @@ -347,7 +347,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/server', - version: '0.0.13', + version: '0.2.0', subpath: './http', importName: '@askrjs/server/http', slug: 'http', @@ -355,7 +355,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/server', - version: '0.0.13', + version: '0.2.0', subpath: './middleware', importName: '@askrjs/server/middleware', slug: 'middleware', @@ -363,7 +363,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/server', - version: '0.0.13', + version: '0.2.0', subpath: './askr', importName: '@askrjs/server/askr', slug: 'askr', @@ -371,7 +371,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/server', - version: '0.0.13', + version: '0.2.0', subpath: './auth', importName: '@askrjs/server/auth', slug: 'auth', @@ -379,7 +379,7 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/server', - version: '0.0.13', + version: '0.2.0', subpath: './openapi', importName: '@askrjs/server/openapi', slug: 'openapi', @@ -387,394 +387,402 @@ export const apiManifest: readonly ApiEntrypointDefinition[] = [ }, { packageName: '@askrjs/server', - version: '0.0.13', + version: '0.2.0', subpath: './mcp', importName: '@askrjs/server/mcp', slug: 'mcp', symbolSet: 'symbols47', }, + { + packageName: '@askrjs/server', + version: '0.2.0', + subpath: './testing', + importName: '@askrjs/server/testing', + slug: 'testing', + symbolSet: 'symbols48', + }, { packageName: '@askrjs/testing', - version: '0.0.6', + version: '0.2.0', subpath: '.', importName: '@askrjs/testing', slug: 'root', - symbolSet: 'symbols48', + symbolSet: 'symbols49', }, { packageName: '@askrjs/themes', - version: '0.0.25', + version: '0.2.0', subpath: '.', importName: '@askrjs/themes', slug: 'root', - symbolSet: 'symbols49', + symbolSet: 'symbols50', }, { packageName: '@askrjs/themes', - version: '0.0.25', + version: '0.2.0', subpath: './default', importName: '@askrjs/themes/default', slug: 'default', - symbolSet: 'symbols49', + symbolSet: 'symbols50', }, { packageName: '@askrjs/themes', - version: '0.0.25', + version: '0.2.0', subpath: './presets', importName: '@askrjs/themes/presets', slug: 'presets', - symbolSet: 'symbols49', + symbolSet: 'symbols50', }, { packageName: '@askrjs/themes', - version: '0.0.25', + version: '0.2.0', subpath: './components', importName: '@askrjs/themes/components', slug: 'components', - symbolSet: 'symbols50', + symbolSet: 'symbols51', }, { packageName: '@askrjs/themes', - version: '0.0.25', + version: '0.2.0', subpath: './theme', importName: '@askrjs/themes/theme', slug: 'theme', - symbolSet: 'symbols51', + symbolSet: 'symbols52', }, { packageName: '@askrjs/themes', - version: '0.0.25', + version: '0.2.0', subpath: './ssr', importName: '@askrjs/themes/ssr', slug: 'ssr', - symbolSet: 'symbols52', + symbolSet: 'symbols53', }, { packageName: '@askrjs/themes', - version: '0.0.25', + version: '0.2.0', subpath: './default/tokens.css', importName: '@askrjs/themes/default/tokens.css', slug: 'default--tokens.css', - symbolSet: 'symbols49', + symbolSet: 'symbols50', }, { packageName: '@askrjs/themes', - version: '0.0.25', + version: '0.2.0', subpath: './default/foundations.css', importName: '@askrjs/themes/default/foundations.css', slug: 'default--foundations.css', - symbolSet: 'symbols49', + symbolSet: 'symbols50', }, { packageName: '@askrjs/themes', - version: '0.0.25', + version: '0.2.0', subpath: './default/input.css', importName: '@askrjs/themes/default/input.css', slug: 'default--input.css', - symbolSet: 'symbols49', + symbolSet: 'symbols50', }, { packageName: '@askrjs/themes', - version: '0.0.25', + version: '0.2.0', subpath: './default/label.css', importName: '@askrjs/themes/default/label.css', slug: 'default--label.css', - symbolSet: 'symbols49', + symbolSet: 'symbols50', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: '.', importName: '@askrjs/ui', slug: 'root', - symbolSet: 'symbols53', + symbolSet: 'symbols54', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './avatar', importName: '@askrjs/ui/avatar', slug: 'avatar', - symbolSet: 'symbols54', + symbolSet: 'symbols55', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './button', importName: '@askrjs/ui/button', slug: 'button', - symbolSet: 'symbols55', + symbolSet: 'symbols56', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './checkbox', importName: '@askrjs/ui/checkbox', slug: 'checkbox', - symbolSet: 'symbols56', + symbolSet: 'symbols57', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './input', importName: '@askrjs/ui/input', slug: 'input', - symbolSet: 'symbols57', + symbolSet: 'symbols58', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './form', importName: '@askrjs/ui/form', slug: 'form', - symbolSet: 'symbols58', + symbolSet: 'symbols59', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './label', importName: '@askrjs/ui/label', slug: 'label', - symbolSet: 'symbols59', + symbolSet: 'symbols60', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './progress', importName: '@askrjs/ui/progress', slug: 'progress', - symbolSet: 'symbols60', + symbolSet: 'symbols61', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './progress-circle', importName: '@askrjs/ui/progress-circle', slug: 'progress-circle', - symbolSet: 'symbols61', + symbolSet: 'symbols62', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './radio-group', importName: '@askrjs/ui/radio-group', slug: 'radio-group', - symbolSet: 'symbols62', + symbolSet: 'symbols63', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './select', importName: '@askrjs/ui/select', slug: 'select', - symbolSet: 'symbols63', + symbolSet: 'symbols64', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './slider', importName: '@askrjs/ui/slider', slug: 'slider', - symbolSet: 'symbols64', + symbolSet: 'symbols65', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './switch', importName: '@askrjs/ui/switch', slug: 'switch', - symbolSet: 'symbols65', + symbolSet: 'symbols66', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './table', importName: '@askrjs/ui/table', slug: 'table', - symbolSet: 'symbols66', + symbolSet: 'symbols67', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './virtual-list', importName: '@askrjs/ui/virtual-list', slug: 'virtual-list', - symbolSet: 'symbols67', + symbolSet: 'symbols68', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './virtual-table', importName: '@askrjs/ui/virtual-table', slug: 'virtual-table', - symbolSet: 'symbols68', + symbolSet: 'symbols69', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './textarea', importName: '@askrjs/ui/textarea', slug: 'textarea', - symbolSet: 'symbols69', + symbolSet: 'symbols70', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './toggle', importName: '@askrjs/ui/toggle', slug: 'toggle', - symbolSet: 'symbols70', + symbolSet: 'symbols71', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './toggle-group', importName: '@askrjs/ui/toggle-group', slug: 'toggle-group', - symbolSet: 'symbols71', + symbolSet: 'symbols72', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './visually-hidden', importName: '@askrjs/ui/visually-hidden', slug: 'visually-hidden', - symbolSet: 'symbols72', + symbolSet: 'symbols73', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './accordion', importName: '@askrjs/ui/accordion', slug: 'accordion', - symbolSet: 'symbols73', + symbolSet: 'symbols74', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './alert-dialog', importName: '@askrjs/ui/alert-dialog', slug: 'alert-dialog', - symbolSet: 'symbols74', + symbolSet: 'symbols75', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './collapsible', importName: '@askrjs/ui/collapsible', slug: 'collapsible', - symbolSet: 'symbols75', + symbolSet: 'symbols76', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './dialog', importName: '@askrjs/ui/dialog', slug: 'dialog', - symbolSet: 'symbols76', + symbolSet: 'symbols77', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './dismissable-layer', importName: '@askrjs/ui/dismissable-layer', slug: 'dismissable-layer', - symbolSet: 'symbols77', + symbolSet: 'symbols78', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './dropdown', importName: '@askrjs/ui/dropdown', slug: 'dropdown', - symbolSet: 'symbols78', + symbolSet: 'symbols79', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './focus-scope', importName: '@askrjs/ui/focus-scope', slug: 'focus-scope', - symbolSet: 'symbols79', + symbolSet: 'symbols80', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './hover-card', importName: '@askrjs/ui/hover-card', slug: 'hover-card', - symbolSet: 'symbols80', + symbolSet: 'symbols81', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './menu', importName: '@askrjs/ui/menu', slug: 'menu', - symbolSet: 'symbols81', + symbolSet: 'symbols82', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './menubar', importName: '@askrjs/ui/menubar', slug: 'menubar', - symbolSet: 'symbols82', + symbolSet: 'symbols83', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './popover', importName: '@askrjs/ui/popover', slug: 'popover', - symbolSet: 'symbols83', + symbolSet: 'symbols84', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './scroll-area', importName: '@askrjs/ui/scroll-area', slug: 'scroll-area', - symbolSet: 'symbols84', + symbolSet: 'symbols85', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './toast', importName: '@askrjs/ui/toast', slug: 'toast', - symbolSet: 'symbols85', + symbolSet: 'symbols86', }, { packageName: '@askrjs/ui', - version: '0.0.27', + version: '0.2.0', subpath: './tooltip', importName: '@askrjs/ui/tooltip', slug: 'tooltip', - symbolSet: 'symbols86', + symbolSet: 'symbols87', }, { packageName: '@askrjs/vite', - version: '0.0.13', + version: '0.2.0', subpath: '.', importName: '@askrjs/vite', slug: 'root', - symbolSet: 'symbols87', + symbolSet: 'symbols88', }, { packageName: '@askrjs/vite', - version: '0.0.13', + version: '0.2.0', subpath: './server', importName: '@askrjs/vite/server', slug: 'server', - symbolSet: 'symbols88', + symbolSet: 'symbols89', }, { packageName: '@askrjs/vite', - version: '0.0.13', + version: '0.2.0', subpath: './image', importName: '@askrjs/vite/image', slug: 'image', - symbolSet: 'symbols89', + symbolSet: 'symbols90', }, ]; diff --git a/src/pages/docs/api-snapshot.ts b/src/pages/docs/api-snapshot.ts index bc014cd..879d929 100644 --- a/src/pages/docs/api-snapshot.ts +++ b/src/pages/docs/api-snapshot.ts @@ -26,6 +26,8 @@ export const apiSymbolSets: Readonly< anchor: 'askr-runtime', signature: 'AskrRuntime: typeof AskrRuntime', typeOnly: true, + summary: + 'A scheduler + renderer host pairing; owns scheduling and renderer wiring for an app instance.', members: [ { name: 'scheduler', @@ -54,6 +56,7 @@ export const apiSymbolSets: Readonly< anchor: 'askr-runtime-options', signature: 'AskrRuntimeOptions: any', typeOnly: true, + summary: 'Options for {@link createRuntime}.', members: [ { name: 'scheduler', @@ -72,12 +75,15 @@ export const apiSymbolSets: Readonly< anchor: 'case', signature: 'Case: (props: CaseProps) => JSXElement', typeOnly: true, + summary: + 'Render the first matching {@link Match} child (by `when`), or `fallback` if none match.', }, { name: 'CaseProps', anchor: 'case-props', signature: 'CaseProps: any', typeOnly: true, + summary: 'Props for {@link Case}.', }, { name: 'configureRenderDiagnostics', @@ -94,36 +100,52 @@ export const apiSymbolSets: Readonly< signature: 'createQuery: { (options: QueryOptions): Query; (definition: QueryDefinition, input: TInput, options?: Omit, "key" | "fetch">): Query; }', typeOnly: true, + summary: + 'Create a reactive {@link Query} cell bound to the current component, either\nfrom inline `options` (key + fetch) or a reusable {@link QueryDefinition}\nplus its input.', }, { name: 'createRef', anchor: 'create-ref', signature: 'createRef: () => Ref', typeOnly: true, + summary: 'Create a new, empty {@link Ref} holder.', }, { name: 'createRuntime', anchor: 'create-runtime', signature: 'createRuntime: (options?: AskrRuntimeOptions) => AskrRuntime', typeOnly: true, + summary: + 'Create a new {@link AskrRuntime} instance with its own scheduler/renderer wiring.', }, { name: 'cspNonce', anchor: 'csp-nonce', signature: 'cspNonce: () => string | undefined', typeOnly: true, + summary: + 'Read the CSP nonce for the current render from {@link CspNonceScope}.', + tags: { + returns: [ + 'The active nonce, or `undefined` when called outside of a\ncomponent render or when no nonce was configured.', + ], + }, }, { name: 'CspNonceScope', anchor: 'csp-nonce-scope', signature: 'CspNonceScope: Scope', typeOnly: true, + summary: + 'Lexical scope carrying the CSP nonce for the current render, if any.', }, { name: 'DataRuntime', anchor: 'data-runtime', signature: 'DataRuntime: any', typeOnly: true, + summary: + 'Isolated cache/state container backing queries and mutations, e.g. one per test or request.', members: [ { name: 'queryCache', @@ -155,12 +177,15 @@ export const apiSymbolSets: Readonly< signature: 'defineQuery: (definition: QueryDefinition) => QueryDefinition', typeOnly: true, + summary: 'Freeze and return a reusable {@link QueryDefinition}.', }, { name: 'defineScope', anchor: 'define-scope', signature: 'defineScope: (defaultValue: T) => Scope', typeOnly: true, + summary: + 'Create a new lexical {@link Scope} with `defaultValue`, readable via {@link readScope}.', }, { name: 'defineServerQueries', @@ -168,6 +193,8 @@ export const apiSymbolSets: Readonly< signature: 'defineServerQueries: (...entries: readonly ServerQueryEntry[]) => ServerQueryRegistry', typeOnly: true, + summary: + 'Build a {@link ServerQueryRegistry} from one or more {@link serveQuery} entries.', }, { name: 'dehydrateDataRuntime', @@ -175,6 +202,8 @@ export const apiSymbolSets: Readonly< signature: 'dehydrateDataRuntime: (runtime: DataRuntime) => Record', typeOnly: true, + summary: + "Extract a runtime's cached query data into a JSON-serializable snapshot, dropping non-serializable values.", }, { name: 'derive', @@ -190,6 +219,8 @@ export const apiSymbolSets: Readonly< anchor: 'derived', signature: 'Derived: any', typeOnly: true, + summary: + 'A reactive derived value produced by {@link derive}; call it to read the current result.', }, { name: 'For', @@ -197,24 +228,30 @@ export const apiSymbolSets: Readonly< signature: 'For: (props: ForProps) => JSXElement', typeOnly: true, + summary: + 'Render a keyed or indexed list, reconciling items by key instead of position.', }, { name: 'ForProps', anchor: 'for-props', signature: 'ForProps: any', typeOnly: true, + summary: 'Props for {@link For}.', }, { name: 'Fragment', anchor: 'fragment', signature: 'Fragment: typeof Fragment', typeOnly: true, + summary: + 'The element type marker for JSX fragments (`<>...`), groups children without a wrapper element.', }, { name: 'getDefaultRuntime', anchor: 'get-default-runtime', signature: 'getDefaultRuntime: () => AskrRuntime', typeOnly: true, + summary: 'Get the process-wide default {@link AskrRuntime}.', }, { name: 'getSignal', @@ -230,6 +267,8 @@ export const apiSymbolSets: Readonly< signature: 'hydrateDataRuntime: (runtime: DataRuntime, data: unknown) => void', typeOnly: true, + summary: + "Load a {@link dehydrateDataRuntime} snapshot back into a runtime's query cache.", }, { name: 'jsx', @@ -237,6 +276,8 @@ export const apiSymbolSets: Readonly< signature: 'jsx: { (type: EagerControlPrimitive, props: Props | null, key?: string | number): unknown; (type: TTag, props: KnownIntrinsicElementProps[TTag] | null, key?: string | number): JSXElement; (type: Exclude, props: IntrinsicFallbackProps | null, key?: string | number): JSXElement; (type: (props: TProps) => unknown, props: TProps | null, key?: string | number): JSXElement; (type: symbol, props: Props | null, key?: string | number): JSXElement; }', typeOnly: true, + summary: + 'JSX factory for elements with a single or no child, used by the `jsxImportSource` transform.', }, { name: 'jsxs', @@ -244,18 +285,24 @@ export const apiSymbolSets: Readonly< signature: 'jsxs: { (type: EagerControlPrimitive, props: Props | null, key?: string | number): unknown; (type: TTag, props: KnownIntrinsicElementProps[TTag] | null, key?: string | number): JSXElement; (type: Exclude, props: IntrinsicFallbackProps | null, key?: string | number): JSXElement; (type: (props: TProps) => unknown, props: TProps | null, key?: string | number): JSXElement; (type: symbol, props: Props | null, key?: string | number): JSXElement; }', typeOnly: true, + summary: + 'JSX factory for elements with multiple static children, used by the `jsxImportSource` transform.', }, { name: 'Match', anchor: 'match', signature: 'Match: (_props: MatchProps) => null', typeOnly: true, + summary: + 'Declares one branch of a {@link Case}; only valid as its direct child.', }, { name: 'MatchProps', anchor: 'match-props', signature: 'MatchProps: any', typeOnly: true, + summary: + 'Props for {@link Match}, valid only as a direct child of {@link Case}.', }, { name: 'prefetchQuery', @@ -263,6 +310,8 @@ export const apiSymbolSets: Readonly< signature: 'prefetchQuery: (context: QueryPrefetchContext, query: QueryDefinition, input: TInput) => Promise', typeOnly: true, + summary: + "Prefetch `query` with `input` into a {@link QueryPrefetchContext}'s runtime.", }, { name: 'Props', @@ -290,6 +339,8 @@ export const apiSymbolSets: Readonly< anchor: 'query-definition', signature: 'QueryDefinition: any', typeOnly: true, + summary: + 'Reusable query definition for {@link defineQuery}: key, fetcher, and freshness checks.', members: [ { name: 'key', @@ -320,6 +371,8 @@ export const apiSymbolSets: Readonly< anchor: 'query-prefetch-context', signature: 'QueryPrefetchContext: any', typeOnly: true, + summary: + 'Context passed to server prefetch callbacks, exposing a scoped `prefetch` helper.', members: [ { name: 'runtime', @@ -354,6 +407,8 @@ export const apiSymbolSets: Readonly< anchor: 'read-scope', signature: 'readScope: (context: Scope) => T', typeOnly: true, + summary: + 'Read the current value of a {@link Scope} during component render or an async resource.', }, { name: 'Ref', @@ -402,6 +457,8 @@ export const apiSymbolSets: Readonly< anchor: 'runtime-keyed-reorder-decision', signature: 'RuntimeKeyedReorderDecision: any', typeOnly: true, + summary: + 'Diagnostic breakdown of a keyed-list reorder decision, returned by {@link RuntimeRendererHost.isKeyedReorderFastPathEligible}.', members: [ { name: 'useFastPath', @@ -450,6 +507,8 @@ export const apiSymbolSets: Readonly< anchor: 'runtime-renderer-host', signature: 'RuntimeRendererHost: any', typeOnly: true, + summary: + 'The renderer implementation an {@link AskrRuntime} delegates DOM evaluation and cleanup to.', members: [ { name: 'evaluate', @@ -509,6 +568,8 @@ export const apiSymbolSets: Readonly< anchor: 'scope', signature: 'Scope: any', typeOnly: true, + summary: + 'A lexical scope created by {@link defineScope}; render it as a provider component, read it with {@link readScope}.', members: [ { name: 'key', @@ -536,6 +597,8 @@ export const apiSymbolSets: Readonly< anchor: 'selector', signature: 'Selector: any', typeOnly: true, + summary: + 'A fine-grained reactive membership check produced by {@link selector}.', }, { name: 'serveQuery', @@ -543,24 +606,31 @@ export const apiSymbolSets: Readonly< signature: 'serveQuery: (query: QueryDefinition, handler: ServerQueryHandler) => ServerQueryEntry', typeOnly: true, + summary: + 'Pair a {@link QueryDefinition} with the server-side handler that resolves it.', }, { name: 'ServerQueryHandler', anchor: 'server-query-handler', signature: 'ServerQueryHandler: any', typeOnly: true, + summary: + "Server-side handler that resolves a {@link QueryDefinition}'s data for `serveQuery`.", }, { name: 'Show', anchor: 'show', signature: 'Show: (props: ShowProps) => JSXElement', typeOnly: true, + summary: + 'Conditionally render children based on `when`, narrowing truthy values for the render function form.', }, { name: 'ShowProps', anchor: 'show-props', signature: 'ShowProps: any', typeOnly: true, + summary: 'Props for {@link Show}.', }, { name: 'state', @@ -616,6 +686,8 @@ export const apiSymbolSets: Readonly< anchor: 'cleanup-app', signature: 'cleanupApp: (root: Element | string) => void', typeOnly: true, + summary: + 'Tear down the app mounted at `root`: runs its cleanup callbacks, clears\nroute state if it was the last routed root, and removes bookkeeping for\nthe root element.', }, { name: 'createIsland', @@ -645,6 +717,7 @@ export const apiSymbolSets: Readonly< anchor: 'has-app', signature: 'hasApp: (root: Element | string) => boolean', typeOnly: true, + summary: 'Check whether an app instance is currently mounted at `root`.', }, { name: 'hydrateSPA', @@ -659,24 +732,30 @@ export const apiSymbolSets: Readonly< anchor: 'hydrate-spaconfig', signature: 'HydrateSPAConfig: any', typeOnly: true, + summary: 'Configuration for {@link hydrateSPA}.', }, { name: 'IslandConfig', anchor: 'island-config', signature: 'IslandConfig: any', typeOnly: true, + summary: + 'Configuration for {@link createIsland}: mounts one component onto existing DOM.', }, { name: 'IslandsConfig', anchor: 'islands-config', signature: 'IslandsConfig: any', typeOnly: true, + summary: + 'Configuration for {@link createIslands}: mounts several islands at once.', }, { name: 'SPAConfig', anchor: 'spaconfig', signature: 'SPAConfig: any', typeOnly: true, + summary: 'Configuration for {@link createSPA}.', }, ], symbols2: [ @@ -686,19 +765,22 @@ export const apiSymbolSets: Readonly< signature: 'ErrorBoundary: (props: ErrorBoundaryProps) => JSXElement', typeOnly: true, summary: - 'Creates a render-time boundary whose fallback handles descendant render/commit errors.', + 'Creates a boundary for descendant mount and post-mount render/commit errors,\nincluding content materialized through a portal host.', }, { name: 'ErrorBoundaryFallbackRender', anchor: 'error-boundary-fallback-render', signature: 'ErrorBoundaryFallbackRender: any', typeOnly: true, + summary: + 'Renders a fallback for the caught error; call `reset` to retry the children.', }, { name: 'ErrorBoundaryProps', anchor: 'error-boundary-props', signature: 'ErrorBoundaryProps: any', typeOnly: true, + summary: 'Props for {@link ErrorBoundary}.', members: [ { name: 'children', @@ -707,18 +789,20 @@ export const apiSymbolSets: Readonly< }, { name: 'fallback', - summary: '', + summary: + 'Static fallback content, or a render function receiving the error and a reset callback.', signature: 'fallback?: ErrorBoundaryFallbackValue | ErrorBoundaryFallbackRender;', }, { name: 'onError', - summary: '', + summary: 'Called with the caught error when the boundary trips.', signature: 'onError?: (error: unknown) => void;', }, { name: 'resetKey', - summary: '', + summary: + 'Changing this value resets the boundary, re-rendering the children.', signature: 'resetKey?: unknown;', }, ], @@ -730,12 +814,15 @@ export const apiSymbolSets: Readonly< anchor: 'case', signature: 'Case: (props: CaseProps) => JSXElement', typeOnly: true, + summary: + 'Render the first matching {@link Match} child (by `when`), or `fallback` if none match.', }, { name: 'CaseProps', anchor: 'case-props', signature: 'CaseProps: any', typeOnly: true, + summary: 'Props for {@link Case}.', }, { name: 'For', @@ -743,36 +830,46 @@ export const apiSymbolSets: Readonly< signature: 'For: (props: ForProps) => JSXElement', typeOnly: true, + summary: + 'Render a keyed or indexed list, reconciling items by key instead of position.', }, { name: 'ForProps', anchor: 'for-props', signature: 'ForProps: any', typeOnly: true, + summary: 'Props for {@link For}.', }, { name: 'Match', anchor: 'match', signature: 'Match: (_props: MatchProps) => null', typeOnly: true, + summary: + 'Declares one branch of a {@link Case}; only valid as its direct child.', }, { name: 'MatchProps', anchor: 'match-props', signature: 'MatchProps: any', typeOnly: true, + summary: + 'Props for {@link Match}, valid only as a direct child of {@link Case}.', }, { name: 'Show', anchor: 'show', signature: 'Show: (props: ShowProps) => JSXElement', typeOnly: true, + summary: + 'Conditionally render children based on `when`, narrowing truthy values for the render function form.', }, { name: 'ShowProps', anchor: 'show-props', signature: 'ShowProps: any', typeOnly: true, + summary: 'Props for {@link Show}.', }, ], symbols4: [ @@ -781,6 +878,8 @@ export const apiSymbolSets: Readonly< anchor: 'default-portal', signature: 'DefaultPortal: Portal', typeOnly: true, + summary: + 'The implicit portal channel that {@link Portal} writes to and that any\nhost rendered without an explicit portal falls back to.', }, { name: 'definePortal', @@ -788,12 +887,15 @@ export const apiSymbolSets: Readonly< signature: 'definePortal: () => Portal', typeOnly: true, + summary: + 'Create a new named {@link Portal} channel with its own host and content.', }, { name: 'JSXElement', anchor: 'jsxelement', signature: 'JSXElement: any', typeOnly: true, + summary: 'The vnode shape produced by JSX/`jsx()` calls.', members: [ { name: '$$typeof', @@ -823,6 +925,8 @@ export const apiSymbolSets: Readonly< signature: 'layout:

(Layout: LayoutComponent

) => (children?: RenderableChild, props?: P) => unknown', typeOnly: true, + summary: + 'Wrap a {@link LayoutComponent} so it can be invoked as `(children, props)`,\nmatching route layout conventions.', }, { name: 'LayoutComponent', @@ -830,19 +934,22 @@ export const apiSymbolSets: Readonly< signature: 'LayoutComponent: any', typeOnly: true, summary: - 'Layout helper.\n\nA layout is just a normal component that wraps children.\nPersistence and reuse are handled by the runtime via component identity.\n\nThis helper exists purely for readability and convention.\n\nPOLICY DECISIONS (LOCKED):\n\n1. Return Type is Opaque (unknown)\n Layout components return `unknown` to remain runtime-agnostic.\n The runtime owns concrete JSX element types.\n\n2. Children Positioning\n Layout receives children as first argument (router-friendly).\n Props come second. This matches route layout conventions where\n children represent the nested route content.\n\n3. Props Spreading\n Props are spread into the layout component. This is intentional\n and deterministic — no merging or composition.', + 'A component that receives its route children via `props.children`.', }, { name: 'Portal', anchor: 'portal', signature: 'Portal: (props: PortalProps) => JSXElement | null', typeOnly: true, + summary: + 'Write children to the {@link DefaultPortal} host wherever it is rendered.\nA named portal channel created by {@link definePortal}: call it as a\ncomponent to render the host, and call `.render(props)` to write content.', }, { name: 'PortalProps', anchor: 'portal-props', signature: 'PortalProps: any', typeOnly: true, + summary: 'Props for the {@link Portal} component.', members: [ { name: 'children', @@ -865,10 +972,12 @@ export const apiSymbolSets: Readonly< anchor: 'presence-props', signature: 'PresenceProps: any', typeOnly: true, + summary: 'Props for {@link Presence}.', members: [ { name: 'present', - summary: '', + summary: + 'Whether the children should be mounted, or a function returning it.', signature: 'present: boolean | (() => boolean);', }, { @@ -891,6 +1000,8 @@ export const apiSymbolSets: Readonly< anchor: 'slot-props', signature: 'SlotProps: any', typeOnly: true, + summary: + 'Props for {@link Slot}: `asChild` selects prop-merging vs. fragment mode.', }, ], symbols5: [ @@ -900,7 +1011,8 @@ export const apiSymbolSets: Readonly< signature: 'ariaDisabled: (disabled?: boolean) => { "aria-disabled"?: "true"; }', typeOnly: true, - summary: 'Tiny aria helpers', + summary: + 'Build an `aria-disabled` prop object; omitted entirely when `disabled` is falsy.', }, { name: 'ariaExpanded', @@ -908,6 +1020,8 @@ export const apiSymbolSets: Readonly< signature: 'ariaExpanded: (expanded?: boolean) => { "aria-expanded"?: "true" | "false"; }', typeOnly: true, + summary: + 'Build an `aria-expanded` prop object; omitted when `expanded` is `undefined`.', }, { name: 'ariaSelected', @@ -915,6 +1029,8 @@ export const apiSymbolSets: Readonly< signature: 'ariaSelected: (selected?: boolean) => { "aria-selected"?: "true" | "false"; }', typeOnly: true, + summary: + 'Build an `aria-selected` prop object; omitted when `selected` is `undefined`.', }, { name: 'composeHandlers', @@ -922,14 +1038,15 @@ export const apiSymbolSets: Readonly< signature: 'composeHandlers: (first?: (...args: A) => void, second?: (...args: A) => void, options?: ComposeHandlersOptions) => (...args: A) => void', typeOnly: true, + summary: + 'Compose two optional event handlers into one, running `first` then\n`second` unless `first` marked the event as default-prevented.', }, { name: 'ComposeHandlersOptions', anchor: 'compose-handlers-options', signature: 'ComposeHandlersOptions: any', typeOnly: true, - summary: - 'composeHandlers\n\nCompose two event handlers into one. The first handler runs, and unless it\ncalls `event.preventDefault()` (or sets `defaultPrevented`), the second\nhandler runs. This prevents accidental clobbering of child handlers when\ninjecting props.\n\nPOLICY DECISIONS (LOCKED):\n\n1. Execution Order\n First handler runs before second (injected before base).\n This allows injected handlers to prevent default behavior.\n\n2. Default Prevention Check\n By default, checks `defaultPrevented` on first argument.\n Can be disabled via options.checkDefaultPrevented = false.\n\n3. Undefined Handler Support\n Undefined handlers are skipped (no-op). This simplifies usage\n where handlers are optional.\n\n4. Type Safety\n Args are readonly to prevent mutation. Return type matches input.', + summary: 'Options for {@link composeHandlers}.', members: [ { name: 'checkDefaultPrevented', @@ -945,12 +1062,16 @@ export const apiSymbolSets: Readonly< signature: 'composeRefs: (...refs: Array>) => (value: T | null) => void', typeOnly: true, + summary: + 'Combine multiple refs into one callback ref that writes to all of them.', }, { name: 'DefaultPreventable', anchor: 'default-preventable', signature: 'DefaultPreventable: any', typeOnly: true, + summary: + 'Minimal shape of an event that can be prevented from its default action.', members: [ { name: 'defaultPrevented', @@ -969,6 +1090,8 @@ export const apiSymbolSets: Readonly< anchor: 'focus-like-event', signature: 'FocusLikeEvent: any', typeOnly: true, + summary: + 'Structural subset of a focus event, for handlers that accept native or synthetic events.', members: [ { name: 'relatedTarget', @@ -990,6 +1113,7 @@ export const apiSymbolSets: Readonly< anchor: 'format-id-options', signature: 'FormatIdOptions: any', typeOnly: true, + summary: 'Options for {@link formatId}.', members: [ { name: 'prefix', @@ -1008,6 +1132,8 @@ export const apiSymbolSets: Readonly< anchor: 'keyboard-like-event', signature: 'KeyboardLikeEvent: any', typeOnly: true, + summary: + 'Structural subset of a keyboard event, for handlers that accept native or synthetic events.', members: [ { name: 'key', @@ -1022,12 +1148,16 @@ export const apiSymbolSets: Readonly< signature: 'mergeProps: (base: TBase, injected: TInjected) => TInjected & TBase', typeOnly: true, + summary: + 'Merge `base` props over `injected` props: non-handler keys in `base` win,\nand matching event handlers are composed (`injected` runs first).', }, { name: 'PointerLikeEvent', anchor: 'pointer-like-event', signature: 'PointerLikeEvent: any', typeOnly: true, + summary: + 'Structural subset of a pointer event, for handlers that accept native or synthetic events.', members: [ { name: 'target', @@ -1041,6 +1171,7 @@ export const apiSymbolSets: Readonly< anchor: 'propagation-stoppable', signature: 'PropagationStoppable: any', typeOnly: true, + summary: 'Minimal shape of an event whose propagation can be stopped.', members: [ { name: 'stopPropagation', @@ -1054,14 +1185,15 @@ export const apiSymbolSets: Readonly< anchor: 'ref', signature: 'Ref: any', typeOnly: true, - summary: - 'Ref composition utilities\n\nPOLICY DECISIONS (LOCKED):\n\n1. Ref Types Supported\n - Callback refs: (value: T | null) => void\n - Object refs: { current: T | null }\n - null/undefined (no-op)\n\n2. Write Failure Handling\n setRef catches write failures (readonly refs) and ignores them.\n This is intentional — refs may be readonly in some contexts.\n\n3. Composition Order\n composeRefs applies refs in array order (left to right).\n All refs are called even if one fails.', + summary: 'A callback ref, an object ref, or a nullish value (no-op).', }, { name: 'setRef', anchor: 'set-ref', signature: 'setRef: (ref: Ref, value: T | null) => void', typeOnly: true, + summary: + 'Write `value` to a {@link Ref}, ignoring failures on readonly object refs.', }, ], symbols6: [ @@ -1078,16 +1210,17 @@ export const apiSymbolSets: Readonly< name: 'dismissable', anchor: 'dismissable', signature: - 'dismissable: ({ node, disabled, onDismiss }: DismissableOptions) => { onKeyDown: (e: KeyboardLikeEvent) => void; onPointerDownCapture: (e: PointerLikeEvent) => void; }', + 'dismissable: ({ node, additionalInsideNodes, disabled, onDismiss }: DismissableOptions) => { onKeyDown: (e: KeyboardLikeEvent) => void; onPointerDownCapture: (e: PointerLikeEvent) => void; }', typeOnly: true, + summary: + 'Produce keydown/outside-click props that invoke `onDismiss` on Escape or an outside click.', }, { name: 'DismissableOptions', anchor: 'dismissable-options', signature: 'DismissableOptions: any', typeOnly: true, - summary: - "dismissable\n\nTHE dismissal primitive. Handles Escape key and outside interactions.\n\nINVARIANTS:\n1. Returns props that compose via mergeProps (no factories)\n2. Disabled state respected exactly once, here\n3. No side effects - pure props generation\n4. Outside detection requires explicit node reference\n5. This is the ONLY dismissal primitive - do not create alternatives\n\nDESIGN:\n- Returns standard event handler props (onKeyDown, onPointerDownCapture)\n- Composable via mergeProps with other foundations\n- Caller provides the protected node reference for outside detection\n- Returned capture props must be attached to a surface that can observe both\n the protected subtree and the outside interaction path (for example, an\n overlay or wrapper around the protected node)\n- Single onDismiss callback for all dismiss triggers\n\nPIT OF SUCCESS:\n✓ Can't accidentally bypass (only way to get dismiss behavior)\n✓ Can't duplicate (disabled checked once)\n✓ Composes via mergeProps (standard props)\n✓ Wrong usage is hard (no factories to misuse)\n\nUSAGE:\n const props = dismissable({\n node: elementRef,\n disabled: false,\n onDismiss: () => close()\n });\n\n

\n\nMISUSE EXAMPLE (PREVENTED):\n ❌ Can't forget to check disabled - checked inside dismissable\n ❌ Can't create custom escape handler - this is the only one\n ❌ Can't bypass via direct event listeners - mergeProps composes correctly", + summary: 'Options for {@link dismissable}.', members: [ { name: 'node', @@ -1095,6 +1228,13 @@ export const apiSymbolSets: Readonly< 'Reference to the protected element for outside click detection. Attach the\nreturned capture props to a surface that encloses this node.', signature: 'node?: Node | null;', }, + { + name: 'additionalInsideNodes', + summary: + 'Additional roots that are logically inside the protected surface even\nwhen a portal places them outside `node` in the DOM tree.', + signature: + 'additionalInsideNodes?: readonly (Node | null | undefined)[];', + }, { name: 'disabled', summary: 'Whether dismiss is disabled', @@ -1113,14 +1253,15 @@ export const apiSymbolSets: Readonly< signature: 'focusable: ({ disabled, tabIndex }: FocusableOptions) => FocusableResult', typeOnly: true, + summary: + 'Normalize `tabIndex`/`aria-disabled` props for a focusable host.', }, { name: 'FocusableOptions', anchor: 'focusable-options', signature: 'FocusableOptions: any', typeOnly: true, - summary: - 'focusable\n\nNormalize focus-related props for hosts.\n- No DOM manipulation here; returns props that the runtime may attach.', + summary: 'Options for {@link focusable}.', members: [ { name: 'disabled', @@ -1139,6 +1280,7 @@ export const apiSymbolSets: Readonly< anchor: 'focusable-result', signature: 'FocusableResult: any', typeOnly: true, + summary: 'Element props returned by {@link focusable}.', members: [ { name: 'tabIndex', @@ -1153,14 +1295,15 @@ export const apiSymbolSets: Readonly< signature: 'hoverable: ({ disabled, onEnter, onLeave }: HoverableOptions) => HoverableResult', typeOnly: true, + summary: + 'Produce pointer enter/leave props that call `onEnter`/`onLeave` unless disabled.', }, { name: 'HoverableOptions', anchor: 'hoverable-options', signature: 'HoverableOptions: any', typeOnly: true, - summary: - 'hoverable\n\nProduces props for pointer enter/leave handling. Pure and deterministic.', + summary: 'Options for {@link hoverable}.', members: [ { name: 'disabled', @@ -1184,6 +1327,7 @@ export const apiSymbolSets: Readonly< anchor: 'hoverable-result', signature: 'HoverableResult: any', typeOnly: true, + summary: 'Element props returned by {@link hoverable}.', members: [ { name: 'onPointerEnter', @@ -1202,8 +1346,7 @@ export const apiSymbolSets: Readonly< anchor: 'interaction-policy-input', signature: 'InteractionPolicyInput: any', typeOnly: true, - summary: - "USAGE EXAMPLE:\n\nfunction Menu() {\n const [focusIndex, setFocusIndex] = state(0);\n const items = ['File', 'Edit', 'View'];\n\n const navigation = rovingFocus({\n currentIndex: focusIndex(),\n itemCount: items.length,\n orientation: 'horizontal',\n loop: true,\n onNavigate: setFocusIndex,\n });\n\n return (\n
\n {items.map((label, index) => (\n \n ))}\n
\n );\n}", + summary: 'Input to {@link applyInteractionPolicy}.', members: [ { name: 'isNative', @@ -1243,6 +1386,7 @@ export const apiSymbolSets: Readonly< anchor: 'orientation', signature: 'Orientation: any', typeOnly: true, + summary: 'Arrow-key axis for {@link rovingFocus}.', }, { name: 'pressable', @@ -1250,14 +1394,15 @@ export const apiSymbolSets: Readonly< signature: 'pressable: ({ disabled, onPress, isNativeButton }: PressableOptions) => PressableResult', typeOnly: true, + summary: + "Produce click/keyboard props implementing 'press' semantics for an element.", }, { name: 'PressableOptions', anchor: 'pressable-options', signature: 'PressableOptions: any', typeOnly: true, - summary: - 'pressable\n\nInteraction helper that produces VNode props for \'press\' semantics.\n- Pure and deterministic: no DOM construction or mutation here\n- The runtime owns event attachment and scheduling\n- This helper returns plain props (handlers) intended to be attached by the runtime\n\nBehaviour:\n- For native buttons: only an `onClick` prop is provided (no ARIA or keyboard shims)\n- For non-button elements: add `role="button"` and `tabIndex` and keyboard handlers\n- Activation: `Enter` activates on keydown, `Space` activates on keyup (matches native button)\n- Disabled: handlers short-circuit and `aria-disabled` is set for all hosts\n\nPOLICY DECISIONS (LOCKED):\n\n1. Activation Timing (Platform Parity)\n - Enter fires on keydown (immediate response)\n - Space fires on keyup (allows cancel by moving focus, matches native)\n - Space keydown prevents scroll (matches native button behavior)\n\n2. Disabled Enforcement Strategy\n - Native buttons: Use HTML `disabled` attribute (platform-enforced non-interactivity)\n AND `aria-disabled` (consistent a11y signaling)\n - Non-native: Use `tabIndex=-1` (removes from tab order)\n AND `aria-disabled` (signals disabled state to AT)\n - Click handler short-circuits as defense-in-depth (prevents leaked focus issues)\n\n3. Key Repeat Behavior\n - Held Enter/Space will fire onPress repeatedly (matches native button)\n - No debouncing or repeat prevention (platform parity)', + summary: 'Options for {@link pressable}.', members: [ { name: 'disabled', @@ -1281,6 +1426,7 @@ export const apiSymbolSets: Readonly< anchor: 'pressable-result', signature: 'PressableResult: any', typeOnly: true, + summary: 'Element props returned by {@link pressable}.', members: [ { name: 'onClick', @@ -1320,12 +1466,15 @@ export const apiSymbolSets: Readonly< signature: 'rovingFocus: (options: RovingFocusOptions) => RovingFocusResult', typeOnly: true, + summary: + 'Implement arrow-key roving tabindex navigation over a set of items.', }, { name: 'RovingFocusOptions', anchor: 'roving-focus-options', signature: 'RovingFocusOptions: any', typeOnly: true, + summary: 'Options for {@link rovingFocus}.', members: [ { name: 'currentIndex', @@ -1365,6 +1514,7 @@ export const apiSymbolSets: Readonly< anchor: 'roving-focus-result', signature: 'RovingFocusResult: any', typeOnly: true, + summary: 'Container and per-item props returned by {@link rovingFocus}.', members: [ { name: 'container', @@ -1397,12 +1547,15 @@ export const apiSymbolSets: Readonly< anchor: 'controllable-state', signature: 'ControllableState: any', typeOnly: true, + summary: + 'A {@link State} accessor that also reports whether it is controlled.', }, { name: 'isControlled', anchor: 'is-controlled', signature: 'isControlled: (value: T | undefined) => value is T', typeOnly: true, + summary: 'Whether `value` represents controlled mode (not `undefined`).', }, { name: 'makeControllable', @@ -1410,6 +1563,8 @@ export const apiSymbolSets: Readonly< signature: 'makeControllable: (options: { value: T | undefined; defaultValue: T; onChange?: (next: T) => void; setInternal?: (next: T) => void; }) => { set: (next: T) => void; isControlled: boolean; }', typeOnly: true, + summary: + 'Build a `set` function that calls `onChange` in controlled mode, or\nupdates internal state and then calls `onChange` in uncontrolled mode.', }, { name: 'resolveControllable', @@ -1417,6 +1572,8 @@ export const apiSymbolSets: Readonly< signature: 'resolveControllable: (value: T | undefined, defaultValue: T) => { value: T; isControlled: boolean; }', typeOnly: true, + summary: + 'Resolve the effective value and controlled-ness for a controllable prop.', }, ], symbols8: [ @@ -1426,12 +1583,16 @@ export const apiSymbolSets: Readonly< signature: 'cloneElement: (element: JSXElement, props: Record) => JSXElement', typeOnly: true, + summary: + 'Clone a JSX element, shallow-merging `props` over its existing props.', }, { name: 'Collection', anchor: 'collection', signature: 'Collection: any', typeOnly: true, + summary: + 'Ordered descendant registry returned by {@link createCollection}.', members: [ { name: 'register', @@ -1463,7 +1624,7 @@ export const apiSymbolSets: Readonly< signature: 'CollectionItem: any', typeOnly: true, summary: - 'createCollection\n\nOrdered descendant registry for coordinating items without DOM queries.\n\nINVARIANTS:\n1. Registration order determines item order (no DOM queries)\n2. Stable ordering across renders (insertion order preserved)\n3. Each item may have metadata (type-safe, user-defined)\n4. No implicit global state (explicit collection instances)\n5. No automatic cleanup (caller controls lifecycle)\n\nDESIGN:\n- Returns a registry API ({ register, items, clear })\n- Items are stored in insertion order\n- Registration returns an unregister function\n- No side effects on registration (pure data structure)\n\nUSAGE:\n const collection = createCollection();\n const unregister = collection.register(element, { disabled: false });\n const allItems = collection.items();\n unregister();', + 'A registered node paired with its metadata inside a {@link Collection}.', }, { name: 'createCollection', @@ -1471,18 +1632,24 @@ export const apiSymbolSets: Readonly< signature: 'createCollection: () => Collection', typeOnly: true, + summary: + 'Create an empty, insertion-ordered {@link Collection} registry.', }, { name: 'createLayer', anchor: 'create-layer', signature: 'createLayer: () => LayerManager', typeOnly: true, + summary: + 'Create a new, empty {@link LayerManager} for coordinating overlay stacking.', }, { name: 'DefaultPortal', anchor: 'default-portal', signature: 'DefaultPortal: Portal', typeOnly: true, + summary: + 'The implicit portal channel that {@link Portal} writes to and that any\nhost rendered without an explicit portal falls back to.', }, { name: 'definePortal', @@ -1490,18 +1657,22 @@ export const apiSymbolSets: Readonly< signature: 'definePortal: () => Portal', typeOnly: true, + summary: + 'Create a new named {@link Portal} channel with its own host and content.', }, { name: 'isElement', anchor: 'is-element', signature: 'isElement: (value: unknown) => value is JSXElement', typeOnly: true, + summary: 'Check whether `value` is a JSX element vnode.', }, { name: 'JSXElement', anchor: 'jsxelement', signature: 'JSXElement: any', typeOnly: true, + summary: 'The vnode shape produced by JSX/`jsx()` calls.', members: [ { name: '$$typeof', @@ -1530,6 +1701,8 @@ export const apiSymbolSets: Readonly< anchor: 'layer', signature: 'Layer: any', typeOnly: true, + summary: + 'A registered layer entry returned by {@link LayerManager.register}.', members: [ { name: 'id', @@ -1553,6 +1726,7 @@ export const apiSymbolSets: Readonly< anchor: 'layer-manager', signature: 'LayerManager: any', typeOnly: true, + summary: 'Stacking coordinator returned by {@link createLayer}.', members: [ { name: 'register', @@ -1582,7 +1756,7 @@ export const apiSymbolSets: Readonly< signature: 'LayerOptions: any', typeOnly: true, summary: - "createLayer\n\nManages stacking order and coordination for overlays (modals, popovers, etc).\n\nINVARIANTS:\n1. Layers are ordered by registration time (FIFO)\n2. Only the top layer handles Escape key\n3. Only the top layer handles outside pointer events\n4. Nested layers are supported\n5. Does not implement portals (orthogonal concern)\n6. No automatic DOM insertion (caller controls mounting)\n\nDESIGN:\n- Returns a layer manager with register/unregister API\n- Each layer has a unique ID and can query if it's the top layer\n- Escape and outside pointer coordination via callbacks\n- No z-index management (CSS concern)\n\nUSAGE:\n const manager = createLayer();\n\n const layer = manager.register({\n onEscape: () => { ... },\n onOutsidePointer: () => { ... }\n });\n\n layer.isTop(); // true if this is the topmost layer\n layer.unregister();", + 'Options for registering a layer with {@link LayerManager.register}.', members: [ { name: 'onEscape', @@ -1608,6 +1782,8 @@ export const apiSymbolSets: Readonly< signature: 'layout:

(Layout: LayoutComponent

) => (children?: RenderableChild, props?: P) => unknown', typeOnly: true, + summary: + 'Wrap a {@link LayoutComponent} so it can be invoked as `(children, props)`,\nmatching route layout conventions.', }, { name: 'LayoutComponent', @@ -1615,19 +1791,22 @@ export const apiSymbolSets: Readonly< signature: 'LayoutComponent: any', typeOnly: true, summary: - 'Layout helper.\n\nA layout is just a normal component that wraps children.\nPersistence and reuse are handled by the runtime via component identity.\n\nThis helper exists purely for readability and convention.\n\nPOLICY DECISIONS (LOCKED):\n\n1. Return Type is Opaque (unknown)\n Layout components return `unknown` to remain runtime-agnostic.\n The runtime owns concrete JSX element types.\n\n2. Children Positioning\n Layout receives children as first argument (router-friendly).\n Props come second. This matches route layout conventions where\n children represent the nested route content.\n\n3. Props Spreading\n Props are spread into the layout component. This is intentional\n and deterministic — no merging or composition.', + 'A component that receives its route children via `props.children`.', }, { name: 'Portal', anchor: 'portal', signature: 'Portal: (props: PortalProps) => JSXElement | null', typeOnly: true, + summary: + 'Write children to the {@link DefaultPortal} host wherever it is rendered.\nA named portal channel created by {@link definePortal}: call it as a\ncomponent to render the host, and call `.render(props)` to write content.', }, { name: 'PortalProps', anchor: 'portal-props', signature: 'PortalProps: any', typeOnly: true, + summary: 'Props for the {@link Portal} component.', members: [ { name: 'children', @@ -1650,10 +1829,12 @@ export const apiSymbolSets: Readonly< anchor: 'presence-props', signature: 'PresenceProps: any', typeOnly: true, + summary: 'Props for {@link Presence}.', members: [ { name: 'present', - summary: '', + summary: + 'Whether the children should be mounted, or a function returning it.', signature: 'present: boolean | (() => boolean);', }, { @@ -1676,6 +1857,8 @@ export const apiSymbolSets: Readonly< anchor: 'slot-props', signature: 'SlotProps: any', typeOnly: true, + summary: + 'Props for {@link Slot}: `asChild` selects prop-merging vs. fragment mode.', }, ], symbols9: [ @@ -1685,6 +1868,8 @@ export const apiSymbolSets: Readonly< signature: 'getIconContractProps: ({ size, strokeWidth, color, title, style, iconName }: Pick) => { sizeToken: IconSizeToken | undefined; decorative: string | undefined; iconStyle: string | undefined; attrs: { xmlns: string; width: string; height: string; fill: string; stroke: string; "stroke-width": string; role: string; "aria-hidden": string | undefined; style: string | undefined; "data-slot": string; "data-icon": string | undefined; "data-size": IconSizeToken | undefined; "data-decorative": string | undefined; "data-color": string | undefined; }; }', typeOnly: true, + summary: + 'Compute the shared SVG attributes and inline style implementing the icon size/stroke/color contract.', }, { name: 'IconBase', @@ -1692,36 +1877,47 @@ export const apiSymbolSets: Readonly< signature: 'IconBase: ({ size, strokeWidth, color, title, class: className, style, iconName, children, ref, ...rest }: IconProps) => JSXElement', typeOnly: true, + summary: + 'Base `` wrapper implementing the icon contract; generated icon components render into it.', }, { name: 'IconOwnProps', anchor: 'icon-own-props', signature: 'IconOwnProps: any', typeOnly: true, + summary: + 'Props specific to the icon contract, independent of the underlying `` props.', }, { name: 'IconProps', anchor: 'icon-props', signature: 'IconProps: any', typeOnly: true, + summary: + 'Full prop set accepted by {@link IconBase} and generated icon components.', }, { name: 'IconSizeToken', anchor: 'icon-size-token', signature: 'IconSizeToken: any', typeOnly: true, + summary: + 'Named icon size presets, mapped to CSS variables at render time.', }, { name: 'IconStyleObject', anchor: 'icon-style-object', signature: 'IconStyleObject: any', typeOnly: true, + summary: 'Camel-cased CSS style object accepted by icon `style` props.', }, { name: 'isIconSizeToken', anchor: 'is-icon-size-token', signature: 'isIconSizeToken: (value: unknown) => value is IconSizeToken', typeOnly: true, + summary: + "Check whether `value` is one of the named icon size tokens ('sm'|'md'|'lg'|'xl').", }, { name: 'joinIconStyle', @@ -1729,18 +1925,24 @@ export const apiSymbolSets: Readonly< signature: 'joinIconStyle: (...styles: Array) => string | undefined', typeOnly: true, + summary: + 'Join non-empty CSS declaration fragments with `;`, dropping any that are blank.', }, { name: 'normalizeIconSizeValue', anchor: 'normalize-icon-size-value', signature: 'normalizeIconSizeValue: (size: number | string) => string', typeOnly: true, + summary: + 'Normalize a numeric icon size to a `px` string; strings pass through unchanged.', }, { name: 'resolveIconSizeVariable', anchor: 'resolve-icon-size-variable', signature: 'resolveIconSizeVariable: (size: number | string) => string', typeOnly: true, + summary: + 'Resolve a size (token or literal) to a CSS `var(--ak-icon-size-*, ...)` expression or literal value.', }, { name: 'resolveIconStrokeWidthVariable', @@ -1748,6 +1950,8 @@ export const apiSymbolSets: Readonly< signature: 'resolveIconStrokeWidthVariable: (strokeWidth: number, sizeToken: IconSizeToken | undefined) => string', typeOnly: true, + summary: + 'Resolve a stroke width to a CSS `var(--ak-icon-stroke-width-*, ...)` expression, scoped to `sizeToken` when given.', }, { name: 'serializeIconStyle', @@ -1755,6 +1959,8 @@ export const apiSymbolSets: Readonly< signature: 'serializeIconStyle: (style: string | IconStyleObject | undefined) => string', typeOnly: true, + summary: + 'Serialize an inline style object (or pass through a string) to a CSS declaration string.', }, ], symbols10: [ @@ -1763,6 +1969,8 @@ export const apiSymbolSets: Readonly< anchor: 'activity-predicate', signature: 'ActivityPredicate: any', typeOnly: true, + summary: + 'A gating condition for lifecycle primitives like {@link timer}; `true` means active.', }, { name: 'capture', @@ -1777,6 +1985,8 @@ export const apiSymbolSets: Readonly< anchor: 'document-visible', signature: 'documentVisible: () => ActivityPredicate', typeOnly: true, + summary: + '{@link ActivityPredicate} that is true while the document is visible.', }, { name: 'getSignal', @@ -1791,6 +2001,8 @@ export const apiSymbolSets: Readonly< anchor: 'listener-target', signature: 'ListenerTarget: any', typeOnly: true, + summary: + 'An event target, or a function resolving one, accepted by {@link on}.', }, { name: 'on', @@ -1798,6 +2010,8 @@ export const apiSymbolSets: Readonly< signature: 'on: (target: ListenerTarget, event: string, handler: EventListener, options?: ListenerOptions) => void', typeOnly: true, + summary: + "Attach an owned event listener to `target` for the current component's lifetime.", }, { name: 'onRouteChange', @@ -1805,6 +2019,8 @@ export const apiSymbolSets: Readonly< signature: 'onRouteChange: (fn: (current: RouteSnapshot, previous: RouteSnapshot | null) => RouteChangeCleanup, options?: RouteChangeOptions) => void', typeOnly: true, + summary: + 'Register a callback to run whenever the active route changes, with optional cleanup.', }, { name: 'resource', @@ -1820,6 +2036,8 @@ export const apiSymbolSets: Readonly< anchor: 'resource-result', signature: 'ResourceResult: any', typeOnly: true, + summary: + 'Reactive result of a {@link resource}: current value, loading state, and controls.', members: [ { name: 'value', @@ -1849,18 +2067,23 @@ export const apiSymbolSets: Readonly< signature: 'routeActive: (pathOrPaths: string | readonly string[]) => ActivityPredicate', typeOnly: true, + summary: + '{@link ActivityPredicate} that is true while the current route matches `pathOrPaths`.', }, { name: 'RouteChangeCleanup', anchor: 'route-change-cleanup', signature: 'RouteChangeCleanup: any', typeOnly: true, + summary: + 'Optional cleanup returned by an {@link onRouteChange} callback, run before the next change.', }, { name: 'RouteChangeOptions', anchor: 'route-change-options', signature: 'RouteChangeOptions: any', typeOnly: true, + summary: 'Options for {@link onRouteChange}.', members: [ { name: 'immediate', @@ -1875,12 +2098,15 @@ export const apiSymbolSets: Readonly< signature: 'stream: (source: StreamSource, options?: StreamOptions) => StreamResult', typeOnly: true, + summary: + "Subscribe to a streaming data source for the current component's lifetime, with auto reconnect/cleanup.", }, { name: 'StreamOptions', anchor: 'stream-options', signature: 'StreamOptions: any', typeOnly: true, + summary: 'Options for {@link stream}.', members: [ { name: 'deps', @@ -1899,6 +2125,8 @@ export const apiSymbolSets: Readonly< anchor: 'stream-result', signature: 'StreamResult: any', typeOnly: true, + summary: + 'Reactive result of a {@link stream}: current value, connection status, and controls.', members: [ { name: 'value', @@ -1942,6 +2170,7 @@ export const apiSymbolSets: Readonly< anchor: 'stream-status', signature: 'StreamStatus: any', typeOnly: true, + summary: 'Connection status of a {@link stream}.', }, { name: 'task', @@ -1957,12 +2186,15 @@ export const apiSymbolSets: Readonly< signature: 'timer: (intervalMs: number, fn: () => void, options?: TimerOptions) => void', typeOnly: true, + summary: + "Run `fn` on an owned interval for the current component's lifetime, optionally gated by `options.when`.", }, { name: 'TimerOptions', anchor: 'timer-options', signature: 'TimerOptions: any', typeOnly: true, + summary: 'Options for {@link timer}.', members: [ { name: 'when', @@ -1976,6 +2208,8 @@ export const apiSymbolSets: Readonly< anchor: 'window-focused', signature: 'windowFocused: () => ActivityPredicate', typeOnly: true, + summary: + '{@link ActivityPredicate} that is true while the window has focus.', }, ], symbols11: [ @@ -1985,6 +2219,8 @@ export const apiSymbolSets: Readonly< signature: 'createDataRuntime: (options?: DataRuntimeOptions) => DataRuntime', typeOnly: true, + summary: + 'Create a new, isolated {@link DataRuntime} with its own query/mutation caches.', }, { name: 'createMutation', @@ -1992,6 +2228,8 @@ export const apiSymbolSets: Readonly< signature: 'createMutation: (options: MutationOptions) => Mutation', typeOnly: true, + summary: + 'Create a reactive {@link Mutation} cell bound to the current component,\nrunning `options.action` on `execute()` and optionally invalidating\naffected query prefixes on success.', }, { name: 'createQuery', @@ -1999,6 +2237,8 @@ export const apiSymbolSets: Readonly< signature: 'createQuery: { (options: QueryOptions): Query; (definition: QueryDefinition, input: TInput, options?: Omit, "key" | "fetch">): Query; }', typeOnly: true, + summary: + 'Create a reactive {@link Query} cell bound to the current component, either\nfrom inline `options` (key + fetch) or a reusable {@link QueryDefinition}\nplus its input.', }, { name: 'createQueryPrefetchContext', @@ -2006,12 +2246,16 @@ export const apiSymbolSets: Readonly< signature: 'createQueryPrefetchContext: (options?: { runtime?: DataRuntime; registry?: ServerQueryRegistry; request?: Request; signal?: AbortSignal; mode?: "ssr" | "spa"; telemetry?: CoreTelemetry; }) => QueryPrefetchContext', typeOnly: true, + summary: + 'Create a {@link QueryPrefetchContext} for prefetching query data ahead of\nrender, e.g. during SSR route resolution.', }, { name: 'DataRuntime', anchor: 'data-runtime', signature: 'DataRuntime: any', typeOnly: true, + summary: + 'Isolated cache/state container backing queries and mutations, e.g. one per test or request.', members: [ { name: 'queryCache', @@ -2042,6 +2286,7 @@ export const apiSymbolSets: Readonly< anchor: 'data-runtime-options', signature: 'DataRuntimeOptions: any', typeOnly: true, + summary: 'Options for {@link createDataRuntime}.', members: [ { name: 'queryCache', @@ -2071,6 +2316,7 @@ export const apiSymbolSets: Readonly< signature: 'defineQuery: (definition: QueryDefinition) => QueryDefinition', typeOnly: true, + summary: 'Freeze and return a reusable {@link QueryDefinition}.', }, { name: 'defineServerQueries', @@ -2078,6 +2324,8 @@ export const apiSymbolSets: Readonly< signature: 'defineServerQueries: (...entries: readonly ServerQueryEntry[]) => ServerQueryRegistry', typeOnly: true, + summary: + 'Build a {@link ServerQueryRegistry} from one or more {@link serveQuery} entries.', }, { name: 'dehydrateDataRuntime', @@ -2085,12 +2333,16 @@ export const apiSymbolSets: Readonly< signature: 'dehydrateDataRuntime: (runtime: DataRuntime) => Record', typeOnly: true, + summary: + "Extract a runtime's cached query data into a JSON-serializable snapshot, dropping non-serializable values.", }, { name: 'getDefaultDataRuntime', anchor: 'get-default-data-runtime', signature: 'getDefaultDataRuntime: () => DataRuntime', typeOnly: true, + summary: + 'Get the process-wide default {@link DataRuntime} used when none is provided explicitly.', }, { name: 'hydrateDataRuntime', @@ -2098,6 +2350,8 @@ export const apiSymbolSets: Readonly< signature: 'hydrateDataRuntime: (runtime: DataRuntime, data: unknown) => void', typeOnly: true, + summary: + "Load a {@link dehydrateDataRuntime} snapshot back into a runtime's query cache.", }, { name: 'invalidate', @@ -2105,6 +2359,8 @@ export const apiSymbolSets: Readonly< signature: 'invalidate: (prefix: string, options?: InvalidateOptions) => void', typeOnly: true, + summary: + 'Mark all cached queries whose key starts with `prefix` as stale, triggering a refresh.', }, { name: 'invalidateOnInterval', @@ -2112,12 +2368,15 @@ export const apiSymbolSets: Readonly< signature: 'invalidateOnInterval: (prefix: string, options: InvalidateOnIntervalOptions) => void', typeOnly: true, + summary: + 'Periodically invalidate queries matching `prefix` on a fixed interval,\noptionally gated by active route, document visibility, or window focus.', }, { name: 'InvalidateOnIntervalOptions', anchor: 'invalidate-on-interval-options', signature: 'InvalidateOnIntervalOptions: any', typeOnly: true, + summary: 'Options for {@link invalidateOnInterval}.', members: [ { name: 'intervalMs', @@ -2146,6 +2405,8 @@ export const apiSymbolSets: Readonly< anchor: 'invalidate-options', signature: 'InvalidateOptions: any', typeOnly: true, + summary: + 'Options for {@link invalidate} and {@link QueryScope.invalidate}.', members: [ { name: 'markPendingWrite', @@ -2164,12 +2425,15 @@ export const apiSymbolSets: Readonly< anchor: 'mutation', signature: 'Mutation: any', typeOnly: true, + summary: + 'Reactive state for a mutation cell: status, error/result, and execute/abort/reset controls.', }, { name: 'MutationOptions', anchor: 'mutation-options', signature: 'MutationOptions: any', typeOnly: true, + summary: 'Options for {@link createMutation}.', }, { name: 'prefetchQuery', @@ -2177,24 +2441,31 @@ export const apiSymbolSets: Readonly< signature: 'prefetchQuery: (context: QueryPrefetchContext, query: QueryDefinition, input: TInput) => Promise', typeOnly: true, + summary: + "Prefetch `query` with `input` into a {@link QueryPrefetchContext}'s runtime.", }, { name: 'Query', anchor: 'query', signature: 'Query: any', typeOnly: true, + summary: + 'Reactive read state for a query cell: data, loading/refresh flags, and freshness.', }, { name: 'QueryConsistency', anchor: 'query-consistency', signature: 'QueryConsistency: any', typeOnly: true, + summary: "Freshness classification for a {@link Query}'s current data.", }, { name: 'QueryDefinition', anchor: 'query-definition', signature: 'QueryDefinition: any', typeOnly: true, + summary: + 'Reusable query definition for {@link defineQuery}: key, fetcher, and freshness checks.', members: [ { name: 'key', @@ -2225,12 +2496,16 @@ export const apiSymbolSets: Readonly< anchor: 'query-key-part', signature: 'QueryKeyPart: any', typeOnly: true, + summary: + 'A JSON-serializable value usable as part of a query key or invalidation prefix.', }, { name: 'QueryPrefetchContext', anchor: 'query-prefetch-context', signature: 'QueryPrefetchContext: any', typeOnly: true, + summary: + 'Context passed to server prefetch callbacks, exposing a scoped `prefetch` helper.', members: [ { name: 'runtime', @@ -2265,12 +2540,16 @@ export const apiSymbolSets: Readonly< anchor: 'query-scope-2', signature: 'queryScope: (namespace: string) => QueryScope', typeOnly: true, + summary: + 'Create a {@link QueryScope} that namespaces keys and invalidations under `namespace`.', }, { name: 'QueryScope', anchor: 'query-scope', signature: 'QueryScope: any', typeOnly: true, + summary: + 'Namespaced key-building and invalidation helper returned by {@link queryScope}.', members: [ { name: 'key', @@ -2295,6 +2574,7 @@ export const apiSymbolSets: Readonly< anchor: 'query-stale-reason', signature: 'QueryStaleReason: any', typeOnly: true, + summary: 'Why a {@link Query} is stale.', }, { name: 'serveQuery', @@ -2302,12 +2582,16 @@ export const apiSymbolSets: Readonly< signature: 'serveQuery: (query: QueryDefinition, handler: ServerQueryHandler) => ServerQueryEntry', typeOnly: true, + summary: + 'Pair a {@link QueryDefinition} with the server-side handler that resolves it.', }, { name: 'ServerQueryEntry', anchor: 'server-query-entry', signature: 'ServerQueryEntry: any', typeOnly: true, + summary: + 'A query paired with the server handler that resolves it, produced by {@link serveQuery}.', members: [ { name: 'query', @@ -2326,12 +2610,16 @@ export const apiSymbolSets: Readonly< anchor: 'server-query-handler', signature: 'ServerQueryHandler: any', typeOnly: true, + summary: + "Server-side handler that resolves a {@link QueryDefinition}'s data for `serveQuery`.", }, { name: 'ServerQueryRegistry', anchor: 'server-query-registry', signature: 'ServerQueryRegistry: any', typeOnly: true, + summary: + 'Lookup table of server handlers keyed by their {@link QueryDefinition}, built by {@link defineServerQueries}.', members: [ { name: 'entries', @@ -2354,6 +2642,8 @@ export const apiSymbolSets: Readonly< anchor: 'cleanup', signature: 'cleanup: (target: RenderResult | HTMLElement) => void', typeOnly: true, + summary: + 'Tear down a test render, given either its {@link RenderResult} or container element.', }, { name: 'click', @@ -2368,6 +2658,8 @@ export const apiSymbolSets: Readonly< anchor: 'create-invalidation-recorder', signature: 'createInvalidationRecorder: () => InvalidationRecorder', typeOnly: true, + summary: + 'Start recording {@link invalidate } calls for assertions; call `stop()` when done.', }, { name: 'createMutationTestRegistry', @@ -2391,12 +2683,16 @@ export const apiSymbolSets: Readonly< signature: 'dispatch: (target: EventTarget, event: Event | string, init?: DispatchEventInit) => boolean', typeOnly: true, + summary: + 'Dispatch an event (constructed from a type string, or given directly) on `target`.', }, { name: 'flush', anchor: 'flush', signature: 'flush: () => void', typeOnly: true, + summary: + "Synchronously flush the runtime's scheduled work (renders, effects).", }, { name: 'getRouteWarnings', @@ -2404,12 +2700,16 @@ export const apiSymbolSets: Readonly< signature: 'getRouteWarnings: (options: MatchRouteOptions) => RoutePatternWarning[]', typeOnly: true, + summary: + 'Find named-splat routes whose reserved segments collide with sibling static routes.', }, { name: 'InvalidationRecord', anchor: 'invalidation-record', signature: 'InvalidationRecord: any', typeOnly: true, + summary: + 'A single recorded call to {@link invalidate }, captured by {@link createInvalidationRecorder}.', members: [ { name: 'prefix', @@ -2428,6 +2728,7 @@ export const apiSymbolSets: Readonly< anchor: 'invalidation-recorder', signature: 'InvalidationRecorder: any', typeOnly: true, + summary: 'Recorder returned by {@link createInvalidationRecorder}.', members: [ { name: 'calls', @@ -2457,6 +2758,8 @@ export const apiSymbolSets: Readonly< signature: 'matchRoute: (path: string, options: MatchRouteOptions) => RouteMatch | null', typeOnly: true, + summary: + 'Match `path` against a route registry for tests, without mounting the app.', }, { name: 'mockQuery', @@ -2464,12 +2767,15 @@ export const apiSymbolSets: Readonly< signature: 'mockQuery: ((data: T, options?: MockQueryOptions) => Query) & { loading(options?: MockQueryOptions): Query; error(error: {}, previousData?: T, options?: MockQueryOptions): Query; refreshing(data: T, options?: MockQueryOptions): Query; stale(data: T, reason?: StaleValueReason, options?: MockQueryOptions): Query; pendingWrite(data: T, options?: MockQueryOptions): Query; }', typeOnly: true, + summary: + 'Build a fresh {@link Query} fixture for tests: call directly with data, or\nuse `.loading()`/`.error()`/`.refreshing()`/`.stale()`/`.pendingWrite()`.', }, { name: 'MockQueryOptions', anchor: 'mock-query-options', signature: 'MockQueryOptions: any', typeOnly: true, + summary: 'Options for {@link mockQuery} fixtures.', members: [ { name: 'refresh', @@ -2483,6 +2789,8 @@ export const apiSymbolSets: Readonly< anchor: 'mock-refresh', signature: 'MockRefresh: any', typeOnly: true, + summary: + "Refresh callback for a {@link mockQuery} fixture, invoked by the query's `refresh()`.", }, { name: 'mount', @@ -2490,18 +2798,23 @@ export const apiSymbolSets: Readonly< signature: 'mount: (component: ComponentFunction, options?: RenderOptions) => RenderResult', typeOnly: true, + summary: 'Alias for {@link render}.', }, { name: 'MutationFixture', anchor: 'mutation-fixture', signature: 'MutationFixture: any', typeOnly: true, + summary: + 'A {@link Mutation} whose state is driven manually via `setPending`/`succeed`/`fail`.', }, { name: 'MutationFixtureInitial', anchor: 'mutation-fixture-initial', signature: 'MutationFixtureInitial: any', typeOnly: true, + summary: + 'Initial state for {@link mutationState}; exactly one of `pending`/`error`/`result` may be set.', }, { name: 'mutationState', @@ -2509,12 +2822,16 @@ export const apiSymbolSets: Readonly< signature: 'mutationState: ((initial?: MutationFixtureInitial) => MutationFixture) & { idle(): MutationFixture; pending(): MutationFixture; success(result: TResult): MutationFixture; error(error: {}): MutationFixture; }', typeOnly: true, + summary: + 'Build a {@link MutationFixture} for tests: call directly with initial\nstate, or use `.idle()`/`.pending()`/`.success(result)`/`.error(error)`.', }, { name: 'MutationTestRegistry', anchor: 'mutation-test-registry', signature: 'MutationTestRegistry: any', typeOnly: true, + summary: + 'Keyed mutation fixture registry returned by {@link createMutationTestRegistry}.', members: [ { name: 'runtime', @@ -2545,12 +2862,16 @@ export const apiSymbolSets: Readonly< signature: 'queryState: { fresh: typeof createFreshQuery; loading: (options?: MockQueryOptions) => Query; error: (error: {}, previousData?: T, options?: MockQueryOptions) => Query; refreshing: (data: T, options?: MockQueryOptions) => Query; stale: (data: T, reason?: StaleValueReason, options?: MockQueryOptions) => Query; pendingWrite: (data: T, options?: MockQueryOptions) => Query; }', typeOnly: true, + summary: + "Alias table mirroring {@link mockQuery}'s state builders (`fresh`, `loading`, `error`, ...).", }, { name: 'QueryTestRegistry', anchor: 'query-test-registry', signature: 'QueryTestRegistry: any', typeOnly: true, + summary: + 'Keyed query fixture registry returned by {@link createQueryTestRegistry}.', members: [ { name: 'runtime', @@ -2580,12 +2901,15 @@ export const apiSymbolSets: Readonly< signature: 'render: (component: ComponentFunction, options?: RenderOptions) => RenderResult', typeOnly: true, + summary: + 'Mount `component` as an island into a test container and flush pending work.', }, { name: 'RenderOptions', anchor: 'render-options', signature: 'RenderOptions: any', typeOnly: true, + summary: 'Options for {@link render} and {@link mount}.', members: [ { name: 'container', @@ -2605,6 +2929,8 @@ export const apiSymbolSets: Readonly< anchor: 'render-result', signature: 'RenderResult: any', typeOnly: true, + summary: + 'Handle to a mounted test render, returned by {@link render}/{@link mount}/{@link renderRoute}.', members: [ { name: 'container', @@ -2645,12 +2971,16 @@ export const apiSymbolSets: Readonly< signature: 'renderRoute: (options: RouteRenderOptions) => Promise', typeOnly: true, + summary: + 'Mount a routed app (via {@link createSPA }) into a test container for the given route registry.', }, { name: 'RoutePatternWarning', anchor: 'route-pattern-warning', signature: 'RoutePatternWarning: any', typeOnly: true, + summary: + 'A splat-route/static-route path collision reported by {@link getRouteWarnings}.', members: [ { name: 'kind', @@ -2689,6 +3019,7 @@ export const apiSymbolSets: Readonly< anchor: 'route-render-options', signature: 'RouteRenderOptions: any', typeOnly: true, + summary: 'Options for {@link renderRoute}.', members: [ { name: 'registry', @@ -2756,14 +3087,15 @@ export const apiSymbolSets: Readonly< signature: 'debounceEvent: (ms: number, handler: EventListener, options?: { leading?: boolean; trailing?: boolean; }) => EventListener & { cancel(): void; flush(): void; }', typeOnly: true, + summary: + 'Wrap an event handler so rapid events are coalesced and delayed by `ms`.', }, { name: 'DebounceOptions', anchor: 'debounce-options', signature: 'DebounceOptions: any', typeOnly: true, - summary: - 'Timing utilities — pure helpers for common async patterns\nNo framework coupling. No lifecycle awareness.', + summary: 'Options for {@link debounce}.', members: [ { name: 'leading', @@ -2843,6 +3175,8 @@ export const apiSymbolSets: Readonly< signature: 'rafEvent: (handler: EventListener) => EventListener & { cancel(): void; }', typeOnly: true, + summary: + 'Wrap an event handler so it runs at most once per animation frame, using the latest event.', }, { name: 'retry', @@ -2868,6 +3202,7 @@ export const apiSymbolSets: Readonly< anchor: 'retry-options', signature: 'RetryOptions: any', typeOnly: true, + summary: 'Options for {@link retry}.', members: [ { name: 'maxAttempts', @@ -2899,6 +3234,8 @@ export const apiSymbolSets: Readonly< signature: 'scheduleIdle: (fn: () => void, options?: { timeout?: number; }) => CancelFn', typeOnly: true, + summary: + 'Schedule `fn` during browser idle time, auto-cancelling on component cleanup.', }, { name: 'scheduleRetry', @@ -2906,12 +3243,16 @@ export const apiSymbolSets: Readonly< signature: 'scheduleRetry: (fn: () => Promise, options?: RetryOptions$1) => { cancel(): void; }', typeOnly: true, + summary: + 'Run `fn`, retrying with backoff on failure, auto-cancelling on component cleanup.', }, { name: 'scheduleTimeout', anchor: 'schedule-timeout', signature: 'scheduleTimeout: (ms: number, fn: () => void) => CancelFn', typeOnly: true, + summary: + 'Schedule `fn` after `ms`, auto-cancelling on component cleanup; returns a cancel function.', }, { name: 'throttle', @@ -2939,12 +3280,15 @@ export const apiSymbolSets: Readonly< signature: 'throttleEvent: (ms: number, handler: EventListener, options?: { leading?: boolean; trailing?: boolean; }) => EventListener & { cancel(): void; }', typeOnly: true, + summary: + 'Wrap an event handler so it runs at most once per `ms` interval.', }, { name: 'ThrottleOptions', anchor: 'throttle-options', signature: 'ThrottleOptions: any', typeOnly: true, + summary: 'Options for {@link throttle}.', members: [ { name: 'leading', @@ -2980,12 +3324,16 @@ export const apiSymbolSets: Readonly< anchor: 'access-decision', signature: 'AccessDecision: any', typeOnly: true, + summary: + 'Outcome of a {@link RoutePolicy} evaluation: allow, redirect, or deny.', }, { name: 'AccessDenyDecision', anchor: 'access-deny-decision', signature: 'AccessDenyDecision: any', typeOnly: true, + summary: + 'Policy decision produced by {@link deny }/{@link unauthorized }/{@link forbidden }/{@link notFound }.', members: [ { name: 'kind', @@ -3004,6 +3352,8 @@ export const apiSymbolSets: Readonly< anchor: 'access-redirect-decision', signature: 'AccessRedirectDecision: any', typeOnly: true, + summary: + 'Policy decision produced by {@link redirect }: sends the visitor to another URL.', members: [ { name: 'kind', @@ -3032,36 +3382,38 @@ export const apiSymbolSets: Readonly< anchor: 'allow', signature: 'allow: () => AccessAllowDecision', typeOnly: true, + summary: 'Policy decision: allow the route to render.', }, { name: 'AuthContext', anchor: 'auth-context', signature: 'AuthContext: any', typeOnly: true, + summary: 'Authentication state resolved for one request.', members: [ { name: 'authenticated', - summary: '', + summary: 'Whether a valid principal was resolved.', signature: 'authenticated: boolean;', }, { name: 'principal', - summary: '', + summary: 'Resolved principal, or null for anonymous requests.', signature: 'principal: P | null;', }, { name: 'session', - summary: '', + summary: 'Resolved session, or null when no session is active.', signature: 'session: S | null;', }, { name: 'tenant', - summary: '', + summary: 'Resolved tenant identifier, or null when unavailable.', signature: 'tenant: string | null;', }, { name: 'scopes', - summary: '', + summary: 'Optional scopes carried by the credential.', signature: 'scopes?: readonly string[];', }, ], @@ -3071,6 +3423,7 @@ export const apiSymbolSets: Readonly< anchor: 'auth-requirement', signature: 'AuthRequirement: any', typeOnly: true, + summary: 'Predicate that allows or rejects an authentication context.', }, { name: 'createRouteRegistry', @@ -3078,6 +3431,8 @@ export const apiSymbolSets: Readonly< signature: 'createRouteRegistry: (definition: RouteDefinition, options?: RouteRegistryOptions) => RouteRegistry', typeOnly: true, + summary: + 'Run `definition` to declare routes (via `route`/`page`/`group`/`fallback`)\nand build a {@link RouteRegistry} to pass to `createSPA`/`hydrateSPA`.', }, { name: 'currentAuth', @@ -3093,18 +3448,24 @@ export const apiSymbolSets: Readonly< signature: 'currentRoute: () => RouteSnapshot', typeOnly: true, + summary: + "Read the currently active route's {@link RouteSnapshot}; reactive during component render.", }, { name: 'defer', anchor: 'defer', signature: 'defer: (promise: PromiseLike) => Deferred', typeOnly: true, + summary: + 'Wrap a promise as a {@link Deferred} value that tracks its settled state and result.', }, { name: 'Deferred', anchor: 'deferred', signature: 'Deferred: any', typeOnly: true, + summary: + 'A promise-backed value that can be read synchronously once settled, produced by {@link defer}.', members: [ { name: 'state', @@ -3133,24 +3494,29 @@ export const apiSymbolSets: Readonly< anchor: 'deferred-state', signature: 'DeferredState: any', typeOnly: true, + summary: 'Lifecycle state of a {@link Deferred} value.', }, { name: 'deny', anchor: 'deny', signature: 'deny: (status: AccessDenyStatus) => AccessDenyDecision', typeOnly: true, + summary: 'Policy decision: deny the request with the given HTTP status.', }, { name: 'fallback', anchor: 'fallback', signature: 'fallback: (Component: RouteComponent) => void', typeOnly: true, + summary: + 'Declare the catch-all `/*` fallback route for the enclosing scope.', }, { name: 'forbidden', anchor: 'forbidden', signature: 'forbidden: () => AccessDenyDecision', typeOnly: true, + summary: 'Policy decision: deny with 403 Forbidden.', }, { name: 'group', @@ -3158,12 +3524,15 @@ export const apiSymbolSets: Readonly< signature: 'group: (options: GroupHelperOptions, fn: RouteDefinition) => void', typeOnly: true, + summary: + 'Declare a group of routes sharing `options` (auth, policies, layout, meta).', }, { name: 'GroupHelperOptions', anchor: 'group-helper-options', signature: 'GroupHelperOptions: any', typeOnly: true, + summary: 'Options accepted by the `group()` route-declaration helper.', members: [ { name: 'layout', @@ -3183,6 +3552,8 @@ export const apiSymbolSets: Readonly< anchor: 'history-scroll-behavior', signature: 'HistoryScrollBehavior: any', typeOnly: true, + summary: + 'Scroll behavior for browser back/forward (popstate) navigations.', }, { name: 'index', @@ -3190,6 +3561,7 @@ export const apiSymbolSets: Readonly< signature: 'index: (Component: RouteComponent, options?: RouteOptions) => void', typeOnly: true, + summary: 'Declare the index route for the enclosing `page()` scope.', }, { name: 'isDeferred', @@ -3197,6 +3569,8 @@ export const apiSymbolSets: Readonly< signature: 'isDeferred: (value: unknown) => value is Deferred', typeOnly: true, + summary: + 'Check whether `value` is a {@link Deferred} produced by {@link defer}.', }, { name: 'LayoutScopeRecord', @@ -3220,12 +3594,16 @@ export const apiSymbolSets: Readonly< signature: 'lazy: (factory: () => Promise<{ default: TComponent; } | TComponent>) => LazyRouteComponent', typeOnly: true, + summary: + 'Wrap a dynamic-import factory as a {@link LazyRouteComponent}, loaded on first use.', }, { name: 'LazyRouteComponent', anchor: 'lazy-route-component', signature: 'LazyRouteComponent: any', typeOnly: true, + summary: + 'A route component loaded on demand via {@link lazy}, with an explicit `preload()`.', }, { name: 'lazyRouteData', @@ -3241,6 +3619,8 @@ export const apiSymbolSets: Readonly< anchor: 'lazy-route-data-loader', signature: 'LazyRouteDataLoader: any', typeOnly: true, + summary: + 'A route data loader loaded on demand via {@link lazyRouteData}, with an explicit `preload()`.', }, { name: 'Link', @@ -3256,30 +3636,37 @@ export const apiSymbolSets: Readonly< anchor: 'link-props', signature: 'LinkProps: any', typeOnly: true, + summary: + 'Props for {@link Link}: either a raw `href` or a typed route `to` destination.', }, { name: 'navigate', anchor: 'navigate', signature: 'navigate: (path: string, options?: NavigateOptions) => void', typeOnly: true, + summary: + 'Navigate the client-side router to `path` using the History API.', }, { name: 'NavigateOptions', anchor: 'navigate-options', signature: 'NavigateOptions: any', typeOnly: true, + summary: 'Options for {@link navigate}.', }, { name: 'NavigationScrollBehavior', anchor: 'navigation-scroll-behavior', signature: 'NavigationScrollBehavior: any', typeOnly: true, + summary: 'Scroll behavior for programmatic navigations (`navigate()`).', }, { name: 'notFound', anchor: 'not-found', signature: 'notFound: () => AccessDenyDecision', typeOnly: true, + summary: 'Policy decision: deny with 404 Not Found.', }, { name: 'onRouteChange', @@ -3287,12 +3674,16 @@ export const apiSymbolSets: Readonly< signature: 'onRouteChange: (fn: (current: RouteSnapshot, previous: RouteSnapshot | null) => RouteChangeCleanup, options?: RouteChangeOptions) => void', typeOnly: true, + summary: + 'Register a callback to run whenever the active route changes, with optional cleanup.', }, { name: 'Outlet', anchor: 'outlet', signature: 'Outlet: () => JSXElement', typeOnly: true, + summary: + 'Renders the nested route content for the enclosing layout or page scope.', }, { name: 'page', @@ -3300,12 +3691,15 @@ export const apiSymbolSets: Readonly< signature: 'page: { (path: TPath, Component: RouteComponent>, fn: RouteDefinition): void; (path: TPath, Component: CompatibleRouteComponent, fn: RouteDefinition): void; (path: TPath, Component: RouteComponent>, options: PageHelperOptions, fn: RouteDefinition): void; (path: TPath, Component: CompatibleRouteComponent, options: PageHelperOptions, fn: RouteDefinition): void; }', typeOnly: true, + summary: + 'Declare a route page at `path`, nesting a sub-scope for `index`/`page`/`fallback`\ndeclarations and options like `preload`/`meta`/`auth`.', }, { name: 'PageHelperOptions', anchor: 'page-helper-options', signature: 'PageHelperOptions: any', typeOnly: true, + summary: 'Options accepted by the `page()` route-declaration helper.', members: [ { name: 'preload', @@ -3372,12 +3766,15 @@ export const apiSymbolSets: Readonly< signature: 'redirect: (to: string, init?: { status?: AccessRedirectStatus; replace?: boolean; }) => AccessRedirectDecision', typeOnly: true, + summary: 'Policy decision: redirect the visitor to `to`.', }, { name: 'Resolve', anchor: 'resolve', signature: 'Resolve: (props: ResolveProps) => JSXElement', typeOnly: true, + summary: + "Render a {@link Deferred} value's fulfilled state, a pending placeholder, or a rejected fallback.", }, { name: 'resolveDeferredValues', @@ -3385,12 +3782,15 @@ export const apiSymbolSets: Readonly< signature: 'resolveDeferredValues: (input: T, signal?: AbortSignal) => Promise', typeOnly: true, + summary: + 'Recursively await any {@link Deferred} values nested within `input`, returning it once fully resolved.', }, { name: 'ResolveProps', anchor: 'resolve-props', signature: 'ResolveProps: any', typeOnly: true, + summary: 'Props for {@link Resolve}.', members: [ { name: 'value', @@ -3421,6 +3821,8 @@ export const apiSymbolSets: Readonly< signature: 'resolveRouteMeta: (record: RouteRecord, context: RouteContext) => Promise>', typeOnly: true, + summary: + "Resolve a route's merged {@link RouteMeta} by running its metadata chain against `context`.", }, { name: 'resolveRouteRequest', @@ -3428,6 +3830,8 @@ export const apiSymbolSets: Readonly< signature: 'resolveRouteRequest: (target: string, options: RouteRequestOptions) => RouteRequestResult | Promise', typeOnly: true, + summary: + 'Resolve `target` against a route registry, applying auth/policies to produce a render/redirect/deny result.', }, { name: 'route', @@ -3435,12 +3839,16 @@ export const apiSymbolSets: Readonly< signature: 'route: { | undefined = undefined, TLoaderData = unknown, TDehydratedData = TLoaderData>(path: TPath, Component: RouteComponent>, options?: RouteOptions, TSearchSchema, TLoaderData, TDehydratedData>): RouteRef, RouteRefSearch>; | undefined = undefined, TLoaderData = unknown, TDehydratedData = TLoaderData>(path: TPath, Component: CompatibleRouteComponent, options?: RouteOptionsForComponent): RouteRef, RouteRefSearch>; }', typeOnly: true, + summary: + 'Declare a route at `path` rendering `Component`, returning a typed {@link RouteRef} for building destinations.', }, { name: 'Route', anchor: 'route', signature: 'Route: any', typeOnly: true, + summary: + 'A single path-to-handler binding as seen by low-level navigation code.', members: [ { name: 'path', @@ -3464,6 +3872,8 @@ export const apiSymbolSets: Readonly< anchor: 'route-auth-options', signature: 'RouteAuthOptions: any', typeOnly: true, + summary: + 'Auth configuration shared across a route registry or a single route.', members: [ { name: 'resolve', @@ -3489,18 +3899,22 @@ export const apiSymbolSets: Readonly< anchor: 'route-auth-resolver', signature: 'RouteAuthResolver: any', typeOnly: true, + summary: 'Resolves the {@link AuthContext} for a route request.', }, { name: 'RouteChangeCleanup', anchor: 'route-change-cleanup', signature: 'RouteChangeCleanup: any', typeOnly: true, + summary: + 'Optional cleanup returned by an {@link onRouteChange} callback, run before the next change.', }, { name: 'RouteChangeOptions', anchor: 'route-change-options', signature: 'RouteChangeOptions: any', typeOnly: true, + summary: 'Options for {@link onRouteChange}.', members: [ { name: 'immediate', @@ -3522,6 +3936,7 @@ export const apiSymbolSets: Readonly< anchor: 'route-context', signature: 'RouteContext: any', typeOnly: true, + summary: 'Context passed to route policies, auth resolvers, and loaders.', members: [ { name: 'mode', @@ -3570,12 +3985,16 @@ export const apiSymbolSets: Readonly< anchor: 'route-data', signature: 'routeData: () => T', typeOnly: true, + summary: + "Read the current route's server loader data during render or hydration.", }, { name: 'RouteDataLoadError', anchor: 'route-data-load-error', signature: 'RouteDataLoadError: typeof RouteDataLoadError', typeOnly: true, + summary: + "Thrown when a route's `loader` rejects; wraps the original `cause`.", members: [ { name: 'route', @@ -3599,18 +4018,23 @@ export const apiSymbolSets: Readonly< anchor: 'route-data-load-phase', signature: 'RouteDataLoadPhase: any', typeOnly: true, + summary: "Which environment a route's data loader ran (or failed) in.", }, { name: 'RouteDefinition', anchor: 'route-definition', signature: 'RouteDefinition: any', typeOnly: true, + summary: + 'A callback that declares routes via `route()`/`page()`/`group()`, passed to {@link createRouteRegistry }.', }, { name: 'RouteDestination', anchor: 'route-destination', signature: 'RouteDestination: any', typeOnly: true, + summary: + 'A resolved navigation target with a computed `href`, produced by {@link to }.', members: [ { name: 'href', @@ -3624,6 +4048,8 @@ export const apiSymbolSets: Readonly< anchor: 'route-handler', signature: 'RouteHandler: any', typeOnly: true, + summary: + "A function rendering a matched route's page content, with layouts already composed.", }, { name: 'RouteManifest', @@ -3656,6 +4082,8 @@ export const apiSymbolSets: Readonly< anchor: 'route-match', signature: 'RouteMatch: any', typeOnly: true, + summary: + 'A single matched route, as reported by {@link currentRoute } and activity predicates.', members: [ { name: 'path', @@ -3734,12 +4162,15 @@ export const apiSymbolSets: Readonly< anchor: 'route-meta-source', signature: 'RouteMetaSource: any', typeOnly: true, + summary: + "A route's metadata, or a function computing it from the resolved context.", }, { name: 'RouteMode', anchor: 'route-mode', signature: 'RouteMode: any', typeOnly: true, + summary: 'The rendering mode a route is currently being evaluated under.', }, { name: 'RouteOptions', @@ -3812,25 +4243,32 @@ export const apiSymbolSets: Readonly< anchor: 'route-params', signature: 'RouteParams: any', typeOnly: true, - summary: 'Common call contracts: Router types', + summary: + 'Path parameters captured for a matched route, keyed by parameter name.', }, { name: 'RoutePathParams', anchor: 'route-path-params', signature: 'RoutePathParams: any', typeOnly: true, + summary: + 'Statically infers the param record shape from a route path string literal, e.g. `/posts/{id}`.', }, { name: 'RoutePolicy', anchor: 'route-policy', signature: 'RoutePolicy: any', typeOnly: true, + summary: + 'A route access-control check, evaluated against {@link RouteContext} to produce an {@link AccessDecision}.', }, { name: 'RouteQuery', anchor: 'route-query', signature: 'RouteQuery: any', typeOnly: true, + summary: + "Read-only accessor for the current route's query-string parameters.", members: [ { name: 'get', @@ -3859,24 +4297,32 @@ export const apiSymbolSets: Readonly< anchor: 'route-query-param-input', signature: 'RouteQueryParamInput: any', typeOnly: true, + summary: + 'A query-string value, or an array of them for a repeated param.', }, { name: 'RouteQueryParamValue', anchor: 'route-query-param-value', signature: 'RouteQueryParamValue: any', typeOnly: true, + summary: + 'A single query-string value accepted by {@link updateRouteQuery}.', }, { name: 'RouteQueryUpdater', anchor: 'route-query-updater', signature: 'RouteQueryUpdater: any', typeOnly: true, + summary: + 'A function that mutates a `URLSearchParams` directly, for {@link updateRouteQuery}.', }, { name: 'RouteQueryUpdates', anchor: 'route-query-updates', signature: 'RouteQueryUpdates: any', typeOnly: true, + summary: + 'A map of query param updates for {@link updateRouteQuery}; `null`/`undefined` removes the key.', }, { name: 'RouteRecord', @@ -3949,6 +4395,8 @@ export const apiSymbolSets: Readonly< anchor: 'route-ref', signature: 'RouteRef: any', typeOnly: true, + summary: + 'Stable, typed reference to a route returned by `route()`, used to build destinations.', members: [ { name: 'path', @@ -3991,6 +4439,8 @@ export const apiSymbolSets: Readonly< anchor: 'route-registry', signature: 'RouteRegistry: any', typeOnly: true, + summary: + 'Opaque handle produced by {@link createRouteRegistry }, required by `createSPA`/`hydrateSPA`.', members: [ { name: 'manifest', @@ -4009,6 +4459,7 @@ export const apiSymbolSets: Readonly< anchor: 'route-registry-options', signature: 'RouteRegistryOptions: any', typeOnly: true, + summary: 'Options for {@link createRouteRegistry }.', members: [ { name: 'auth', @@ -4028,6 +4479,8 @@ export const apiSymbolSets: Readonly< anchor: 'route-render-result', signature: 'RouteRenderResult: any', typeOnly: true, + summary: + 'A resolved route request that should render `handler` with `params`.', members: [ { name: 'kind', @@ -4056,6 +4509,8 @@ export const apiSymbolSets: Readonly< anchor: 'route-request-options', signature: 'RouteRequestOptions: any', typeOnly: true, + summary: + 'Options for resolving a route request (used internally by `createSPA`/`hydrateSPA`/SSR).', members: [ { name: 'registry', @@ -4109,12 +4564,15 @@ export const apiSymbolSets: Readonly< anchor: 'route-request-result', signature: 'RouteRequestResult: any', typeOnly: true, + summary: + 'Outcome of resolving a route request: render, redirect, deny, or no match.', }, { name: 'RouteSearch', anchor: 'route-search', signature: 'RouteSearch: any', typeOnly: true, + summary: "A route's query-string parameters, keyed by name.", }, { name: 'RouteSearchValue', @@ -4129,6 +4587,8 @@ export const apiSymbolSets: Readonly< anchor: 'route-snapshot', signature: 'RouteSnapshot: any', typeOnly: true, + summary: + 'Full description of the currently active route, returned by {@link currentRoute }.', members: [ { name: 'path', @@ -4172,12 +4632,15 @@ export const apiSymbolSets: Readonly< anchor: 'scroll-restoration-options', signature: 'ScrollRestorationOptions: any', typeOnly: true, + summary: 'Options for {@link configureScrollRestoration }.', }, { name: 'serializeRouteMeta', anchor: 'serialize-route-meta', signature: 'serializeRouteMeta: (meta: RouteMeta) => string', typeOnly: true, + summary: + 'Render a {@link RouteMeta} to the ``/``/``/JSON-LD markup for the document ``.', }, { name: 'to', @@ -4185,12 +4648,15 @@ export const apiSymbolSets: Readonly< signature: 'to: (route: RouteRef, params: TParams, search?: TSearch) => RouteDestination', typeOnly: true, + summary: + 'Build a {@link RouteDestination} (with a computed `href`) for a {@link RouteRef} and params/search.', }, { name: 'unauthorized', anchor: 'unauthorized', signature: 'unauthorized: () => AccessDenyDecision', typeOnly: true, + summary: 'Policy decision: deny with 401 Unauthorized.', }, { name: 'updateRouteQuery', @@ -4204,6 +4670,7 @@ export const apiSymbolSets: Readonly< anchor: 'update-route-query-options', signature: 'UpdateRouteQueryOptions: any', typeOnly: true, + summary: 'Options for {@link updateRouteQuery}.', }, ], symbols15: [ @@ -4220,6 +4687,8 @@ export const apiSymbolSets: Readonly< anchor: 'action-descriptor', signature: 'ActionDescriptor: any', typeOnly: true, + summary: + 'A declared server action, built by {@link defineAction}, bound to a form via {@link ActionForm}.', members: [ { name: 'id', @@ -4252,6 +4721,8 @@ export const apiSymbolSets: Readonly< anchor: 'action-status', signature: 'ActionStatus: any', typeOnly: true, + summary: + 'Pending/result/error status for an action, as reported by the `action()` hook.', members: [ { name: 'pending', @@ -4275,6 +4746,8 @@ export const apiSymbolSets: Readonly< anchor: 'action-validation-error', signature: 'ActionValidationError: any', typeOnly: true, + summary: + 'Server-replayed validation failure for an {@link ActionForm} submission.', members: [ { name: 'kind', @@ -4310,6 +4783,8 @@ export const apiSymbolSets: Readonly< signature: 'defineAction: >(options: { readonly id: string; readonly input: ObjectSchema; readonly invalidates?: readonly string[]; }) => ActionDescriptor', typeOnly: true, + summary: + 'Declare a server action with a stable id, input schema, and query prefixes to invalidate on success.', }, ], symbols16: [ @@ -4319,12 +4794,16 @@ export const apiSymbolSets: Readonly< signature: 'createRenderContext: (seed?: number, opts?: { url?: string; data?: SSRData; params?: Record; routes?: readonly Route[]; routeAuth?: RouteAuthOptions; basePath?: string; signal?: AbortSignal; dataRuntime?: unknown; mode?: "ssr" | "spa"; queryPrefetch?: QueryPrefetchContext; framework?: Readonly>; envelope?: PageRenderEnvelope; cspNonce?: string; }) => RenderContext', typeOnly: true, + summary: + 'Build a fresh SSR render context (data cache, routes, seed) for a render pass.', }, { name: 'DocumentRenderArgs', anchor: 'document-render-args', signature: 'DocumentRenderArgs: any', typeOnly: true, + summary: + 'Arguments passed to a {@link DocumentRenderer}: the rendered app HTML and its context.', members: [ { name: 'appHtml', @@ -4343,6 +4822,7 @@ export const apiSymbolSets: Readonly< anchor: 'document-render-context', signature: 'DocumentRenderContext: any', typeOnly: true, + summary: 'Request/render metadata passed to a {@link DocumentRenderer}.', members: [ { name: 'mode', @@ -4406,6 +4886,8 @@ export const apiSymbolSets: Readonly< anchor: 'document-renderer', signature: 'DocumentRenderer: any', typeOnly: true, + summary: + 'Wraps rendered app HTML in a full document (``, ``, etc.) for SSR/SSG output.', }, { name: 'getRenderContext', @@ -4421,6 +4903,8 @@ export const apiSymbolSets: Readonly< signature: 'renderResolvedToStringSync: (opts: { url: string; registry: RouteRegistry; handler: RouteHandler; params?: Record; options?: { seed?: number; data?: SSRData; dataRuntime?: DataRuntime; envelope?: PageRenderEnvelope; cspNonce?: string; }; }) => string', typeOnly: true, + summary: + 'Synchronously render an already-resolved route handler to an HTML string.', }, { name: 'renderRouteRequest', @@ -4428,12 +4912,16 @@ export const apiSymbolSets: Readonly< signature: 'renderRouteRequest: (options: RenderRouteRequestOptions) => Promise', typeOnly: true, + summary: + 'Resolve and render a route request for SSR, streaming the body when possible.', }, { name: 'RenderRouteRequestOptions', anchor: 'render-route-request-options', signature: 'RenderRouteRequestOptions: any', typeOnly: true, + summary: + 'Options for {@link renderRouteRequest} and {@link renderRouteRequestToString}.', members: [ { name: 'url', @@ -4513,6 +5001,8 @@ export const apiSymbolSets: Readonly< anchor: 'render-route-request-result', signature: 'RenderRouteRequestResult: any', typeOnly: true, + summary: + 'Outcome of rendering a route request for SSR: a render, redirect, deny, or no-match.', }, { name: 'renderRouteRequestToString', @@ -4520,12 +5010,16 @@ export const apiSymbolSets: Readonly< signature: 'renderRouteRequestToString: (options: RenderRouteRequestOptions) => Promise', typeOnly: true, + summary: + 'Resolve and render a route request for SSR, always fully buffering the HTML.', }, { name: 'renderToStream', anchor: 'render-to-stream', signature: 'renderToStream: (opts: RouteStreamOptions) => void', typeOnly: true, + summary: + "Stream a route request's rendered HTML to the response sink described by `opts`.", }, { name: 'renderToString', @@ -4533,6 +5027,8 @@ export const apiSymbolSets: Readonly< signature: 'renderToString: { (component: (props?: Record) => VNode | JSXElement | string | number | null): string; (opts: RouteRenderOptions): string; }', typeOnly: true, + summary: + 'Render a component or route request to a complete HTML string, synchronously.', }, { name: 'renderToStringSync', @@ -4540,6 +5036,8 @@ export const apiSymbolSets: Readonly< signature: 'renderToStringSync: (component: (props?: Record) => VNode | JSXElement | string | number | boolean | null | undefined, props?: Record, options?: { seed?: number; data?: SSRData; envelope?: PageRenderEnvelope; cspNonce?: string; onContext?: (ctx: RenderContext) => void; }) => string', typeOnly: true, + summary: + 'Synchronously render a component to an HTML string, without route resolution.', }, { name: 'resolveRequest', @@ -4547,6 +5045,8 @@ export const apiSymbolSets: Readonly< signature: 'resolveRequest: (opts: { url: string; registry: RouteRegistry; auth?: RouteAuthOptions; authContext?: AuthContext; request?: Request; signal?: AbortSignal; }) => Promise', typeOnly: true, + summary: + 'Resolve a URL against a route registry for SSR, applying auth/policies before render.', }, { name: 'SSRComponent', @@ -4575,6 +5075,8 @@ export const apiSymbolSets: Readonly< anchor: 'ssrroute', signature: 'SSRRoute: any', typeOnly: true, + summary: + 'A single path-to-handler route binding accepted by low-level SSR route rendering.', }, { name: 'SSRStyleRegistration', @@ -4601,6 +5103,8 @@ export const apiSymbolSets: Readonly< anchor: 'ssrstyle-registration-validation', signature: 'SSRStyleRegistrationValidation: any', typeOnly: true, + summary: + 'How to react when SSR styles were registered but not included in the rendered document.', }, { name: 'VNode', @@ -4623,6 +5127,8 @@ export const apiSymbolSets: Readonly< signature: 'withRenderContextAsync: (ctx: RenderContext, fn: () => T | PromiseLike) => Promise', typeOnly: true, + summary: + 'Run `fn` with `ctx` as the active SSR render context, using async-local storage.', }, ], symbols17: [ @@ -4647,6 +5153,8 @@ export const apiSymbolSets: Readonly< anchor: 'document-render-args', signature: 'DocumentRenderArgs: any', typeOnly: true, + summary: + 'Arguments passed to a {@link DocumentRenderer}: the rendered app HTML and its context.', members: [ { name: 'appHtml', @@ -4665,6 +5173,7 @@ export const apiSymbolSets: Readonly< anchor: 'document-render-context', signature: 'DocumentRenderContext: any', typeOnly: true, + summary: 'Request/render metadata passed to a {@link DocumentRenderer}.', members: [ { name: 'mode', @@ -4728,6 +5237,8 @@ export const apiSymbolSets: Readonly< anchor: 'document-renderer', signature: 'DocumentRenderer: any', typeOnly: true, + summary: + 'Wraps rendered app HTML in a full document (``, ``, etc.) for SSR/SSG output.', }, { name: 'RouteConfig', @@ -4816,6 +5327,8 @@ export const apiSymbolSets: Readonly< anchor: 'route-render-reason', signature: 'RouteRenderReason: any', typeOnly: true, + summary: + 'Why a route was rendered, skipped, or removed during generation.', }, { name: 'RouteRenderResult', @@ -4892,12 +5405,14 @@ export const apiSymbolSets: Readonly< anchor: 'route-render-status', signature: 'RouteRenderStatus: any', typeOnly: true, + summary: "Outcome of generating a single route's static HTML.", }, { name: 'SSGAssetSource', anchor: 'ssgasset-source', signature: 'SSGAssetSource: any', typeOnly: true, + summary: 'A static file or directory to copy alongside generated routes.', members: [ { name: 'from', @@ -5023,6 +5538,8 @@ export const apiSymbolSets: Readonly< anchor: 'ssgmode', signature: 'SSGMode: any', typeOnly: true, + summary: + 'Whether an SSG run rebuilds every route (`full`) or only changed ones (`incremental`).', }, { name: 'SSGOptions', @@ -5110,6 +5627,8 @@ export const apiSymbolSets: Readonly< anchor: 'ssrstyle-registration-validation', signature: 'SSRStyleRegistrationValidation: any', typeOnly: true, + summary: + 'How to react when SSR styles were registered but not included in the rendered document.', }, ], symbols18: [ @@ -5118,6 +5637,8 @@ export const apiSymbolSets: Readonly< anchor: 'fragment', signature: 'Fragment: typeof Fragment', typeOnly: true, + summary: + 'The element type marker for JSX fragments (`<>...`), groups children without a wrapper element.', }, { name: 'jsx', @@ -5125,6 +5646,8 @@ export const apiSymbolSets: Readonly< signature: 'jsx: { (type: EagerControlPrimitive, props: Props | null, key?: string | number): unknown; (type: TTag, props: KnownIntrinsicElementProps[TTag] | null, key?: string | number): JSXElement; (type: Exclude, props: IntrinsicFallbackProps | null, key?: string | number): JSXElement; (type: (props: TProps) => unknown, props: TProps | null, key?: string | number): JSXElement; (type: symbol, props: Props | null, key?: string | number): JSXElement; }', typeOnly: true, + summary: + 'JSX factory for elements with a single or no child, used by the `jsxImportSource` transform.', }, { name: 'JSX', @@ -5137,6 +5660,8 @@ export const apiSymbolSets: Readonly< anchor: 'jsxcomponent', signature: 'JSXComponent: any', typeOnly: true, + summary: + "A component function accepting `TProps`, usable as a JSX element's `type`.", }, { name: 'jsxDEV', @@ -5150,6 +5675,7 @@ export const apiSymbolSets: Readonly< anchor: 'jsxelement', signature: 'JSXElement: any', typeOnly: true, + summary: 'The vnode shape produced by JSX/`jsx()` calls.', members: [ { name: '$$typeof', @@ -5178,6 +5704,8 @@ export const apiSymbolSets: Readonly< anchor: 'jsxelement-type', signature: 'JSXElementType: any', typeOnly: true, + summary: + 'Valid `type` values for a JSX element: a tag name, a component, or a symbol (e.g. `Fragment`).', }, { name: 'jsxs', @@ -5185,6 +5713,8 @@ export const apiSymbolSets: Readonly< signature: 'jsxs: { (type: EagerControlPrimitive, props: Props | null, key?: string | number): unknown; (type: TTag, props: KnownIntrinsicElementProps[TTag] | null, key?: string | number): JSXElement; (type: Exclude, props: IntrinsicFallbackProps | null, key?: string | number): JSXElement; (type: (props: TProps) => unknown, props: TProps | null, key?: string | number): JSXElement; (type: symbol, props: Props | null, key?: string | number): JSXElement; }', typeOnly: true, + summary: + 'JSX factory for elements with multiple static children, used by the `jsxImportSource` transform.', }, ], symbols19: [ @@ -5193,6 +5723,8 @@ export const apiSymbolSets: Readonly< anchor: 'fragment', signature: 'Fragment: typeof Fragment', typeOnly: true, + summary: + 'The element type marker for JSX fragments (`<>...`), groups children without a wrapper element.', }, { name: 'JSX', @@ -5205,6 +5737,8 @@ export const apiSymbolSets: Readonly< anchor: 'jsxcomponent', signature: 'JSXComponent: any', typeOnly: true, + summary: + "A component function accepting `TProps`, usable as a JSX element's `type`.", }, { name: 'jsxDEV', @@ -5218,6 +5752,7 @@ export const apiSymbolSets: Readonly< anchor: 'jsxelement', signature: 'JSXElement: any', typeOnly: true, + summary: 'The vnode shape produced by JSX/`jsx()` calls.', members: [ { name: '$$typeof', @@ -5246,6 +5781,8 @@ export const apiSymbolSets: Readonly< anchor: 'jsxelement-type', signature: 'JSXElementType: any', typeOnly: true, + summary: + 'Valid `type` values for a JSX element: a tag name, a component, or a symbol (e.g. `Fragment`).', }, ], symbols20: [ @@ -5255,6 +5792,12 @@ export const apiSymbolSets: Readonly< signature: 'allOf: (...requirements: readonly AuthRequirement[]) => AuthRequirement', typeOnly: true, + summary: + 'Combine requirements so every requirement must allow the request.', + tags: { + param: ['requirements Requirements evaluated in order.'], + returns: ['A requirement that requires every input to allow.'], + }, }, { name: 'anyOf', @@ -5262,36 +5805,43 @@ export const apiSymbolSets: Readonly< signature: 'anyOf: (...requirements: readonly AuthRequirement[]) => AuthRequirement', typeOnly: true, + summary: + 'Combine requirements so at least one requirement must allow the request.', + tags: { + param: ['requirements Requirements evaluated in order.'], + returns: ['A requirement that requires one input to allow.'], + }, }, { name: 'AuthContext', anchor: 'auth-context', signature: 'AuthContext: any', typeOnly: true, + summary: 'Authentication state resolved for one request.', members: [ { name: 'authenticated', - summary: '', + summary: 'Whether a valid principal was resolved.', signature: 'authenticated: boolean;', }, { name: 'principal', - summary: '', + summary: 'Resolved principal, or null for anonymous requests.', signature: 'principal: P | null;', }, { name: 'session', - summary: '', + summary: 'Resolved session, or null when no session is active.', signature: 'session: S | null;', }, { name: 'tenant', - summary: '', + summary: 'Resolved tenant identifier, or null when unavailable.', signature: 'tenant: string | null;', }, { name: 'scopes', - summary: '', + summary: 'Optional scopes carried by the credential.', signature: 'scopes?: readonly string[];', }, ], @@ -5301,47 +5851,50 @@ export const apiSymbolSets: Readonly< anchor: 'auth-decision', signature: 'AuthDecision: any', typeOnly: true, + summary: 'Result returned by an authorization requirement.', }, { name: 'AuthOptions', anchor: 'auth-options', signature: 'AuthOptions: any', typeOnly: true, + summary: + 'Dependencies and policies used by the request authentication resolver.', members: [ { name: 'sessions', - summary: '', + summary: 'Session lookup implementation.', signature: 'sessions?: SessionStore;', }, { name: 'principals', - summary: '', + summary: 'Principal lookup implementation.', signature: 'principals?: PrincipalStore

;', }, { name: 'jwt', - summary: '', + summary: 'Validator for bearer JWTs.', signature: 'jwt?: JwtValidator

;', }, { name: 'jwtCookie', - summary: '', + summary: 'Optional cookie name and validator for browser sessions.', signature: 'jwtCookie?: {\n name: string;\n validator: JwtValidator

;\n };', }, { name: 'tenant', - summary: '', + summary: 'Resolves the tenant associated with a request.', signature: 'tenant?: TenantResolver;', }, { name: 'sessionCookie', - summary: '', + summary: 'Cookie name used to identify a session.', signature: 'sessionCookie?: string;', }, { name: 'clock', - summary: '', + summary: 'Clock returning Unix time in milliseconds.', signature: 'clock?: () => number;', }, ], @@ -5351,18 +5904,28 @@ export const apiSymbolSets: Readonly< anchor: 'auth-requirement', signature: 'AuthRequirement: any', typeOnly: true, + summary: 'Predicate that allows or rejects an authentication context.', }, { name: 'AuthResolver', anchor: 'auth-resolver', signature: 'AuthResolver: any', typeOnly: true, + summary: 'Resolves authentication context from an incoming request.', members: [ { name: 'resolve', - summary: '', + summary: + 'Resolve the principal, session, tenant, and authorization state.', signature: 'resolve(request: Request, options?: {\n signal?: AbortSignal;\n }): Promise>;', + tags: { + param: [ + 'request Incoming request.', + 'options Optional cancellation signal.', + ], + returns: ['Resolved authentication context.'], + }, }, ], }, @@ -5371,25 +5934,26 @@ export const apiSymbolSets: Readonly< anchor: 'auth-session', signature: 'AuthSession: any', typeOnly: true, + summary: 'Persisted login session associated with a principal.', members: [ { name: 'id', - summary: '', + summary: 'Stable session identifier.', signature: 'id: string;', }, { name: 'subject', - summary: '', + summary: 'Subject owning the session.', signature: 'subject: string;', }, { name: 'expiresAt', - summary: '', + summary: 'Expiration time as Unix milliseconds.', signature: 'expiresAt?: number;', }, { name: 'revokedAt', - summary: '', + summary: 'Revocation time as Unix milliseconds.', signature: 'revokedAt?: number;', }, ], @@ -5399,6 +5963,8 @@ export const apiSymbolSets: Readonly< anchor: 'claim', signature: 'Claim: any', typeOnly: true, + summary: + 'Additional application-defined claims carried by an authenticated principal or session.', }, { name: 'createAuth', @@ -5406,31 +5972,39 @@ export const apiSymbolSets: Readonly< signature: 'createAuth:

(options?: AuthOptions) => AuthResolver', typeOnly: true, + summary: + 'Create a request authentication resolver for bearer tokens, cookies, and sessions.', + tags: { + param: ['options Authentication dependencies and policy.'], + returns: ['Configured request resolver.'], + }, }, { name: 'Principal', anchor: 'principal', signature: 'Principal: any', typeOnly: true, + summary: 'Stable identity and authorization attributes for a caller.', members: [ { name: 'id', - summary: '', + summary: 'Application-specific principal identifier.', signature: 'id: string;', }, { name: 'subject', - summary: '', + summary: + 'External subject identifier, when supplied by an identity provider.', signature: 'subject?: string;', }, { name: 'roles', - summary: '', + summary: 'Roles granted to the principal.', signature: 'roles?: readonly string[];', }, { name: 'permissions', - summary: '', + summary: 'Fine-grained permissions granted to the principal.', signature: 'permissions?: readonly string[];', }, ], @@ -5440,12 +6014,20 @@ export const apiSymbolSets: Readonly< anchor: 'principal-store', signature: 'PrincipalStore: any', typeOnly: true, + summary: 'Resolves an authenticated principal by subject.', members: [ { name: 'get', - summary: '', + summary: 'Load a principal by subject.', signature: 'get(subject: string, options?: {\n request: Request;\n signal: AbortSignal;\n }): P | null | PromiseLike

;', + tags: { + param: [ + 'subject Principal subject.', + 'options Request context and cancellation signal.', + ], + returns: ['The matching principal or null.'], + }, }, ], }, @@ -5454,42 +6036,74 @@ export const apiSymbolSets: Readonly< anchor: 'require-anonymous', signature: 'requireAnonymous: () => AuthRequirement', typeOnly: true, + summary: 'Require that the request is not already authenticated.', + tags: { + returns: ['A reusable authorization requirement.'], + }, }, { name: 'requirePermission', anchor: 'require-permission', signature: 'requirePermission: (permission: string) => AuthRequirement', typeOnly: true, + summary: + 'Require an authenticated principal carrying a specific permission.', + tags: { + param: ['permission Required permission.'], + returns: ['A reusable authorization requirement.'], + }, }, { name: 'requireRole', anchor: 'require-role', signature: 'requireRole: (role: string) => AuthRequirement', typeOnly: true, + summary: 'Require an authenticated principal carrying a specific role.', + tags: { + param: ['role Required role.'], + returns: ['A reusable authorization requirement.'], + }, }, { name: 'requireScope', anchor: 'require-scope', signature: 'requireScope: (scope: string) => AuthRequirement', typeOnly: true, + summary: 'Require an authenticated principal carrying a specific scope.', + tags: { + param: ['scope Required scope.'], + returns: ['A reusable authorization requirement.'], + }, }, { name: 'requireUser', anchor: 'require-user', signature: 'requireUser: () => AuthRequirement', typeOnly: true, + summary: 'Require an authenticated principal.', + tags: { + returns: ['A reusable authorization requirement.'], + }, }, { name: 'SessionStore', anchor: 'session-store', signature: 'SessionStore: any', typeOnly: true, + summary: 'Resolves a persisted session by its identifier.', members: [ { name: 'get', - summary: '', + summary: 'Load a session by identifier.', signature: 'get(id: string, options?: {\n request: Request;\n signal: AbortSignal;\n }): S | null | PromiseLike;', + tags: { + param: [ + 'id Session identifier.', + 'options Request context and cancellation signal.', + ], + returns: ['The matching session or null.'], + }, }, ], }, @@ -5498,6 +6112,7 @@ export const apiSymbolSets: Readonly< anchor: 'tenant-resolver', signature: 'TenantResolver: any', typeOnly: true, + summary: 'Supplies the tenant identifier for an incoming request.', }, ], symbols21: [ @@ -5506,20 +6121,21 @@ export const apiSymbolSets: Readonly< anchor: 'askr-json-web-key', signature: 'AskrJsonWebKey: any', typeOnly: true, + summary: 'JSON Web Key with the metadata used by Askr token validation.', members: [ { name: 'kid', - summary: '', + summary: 'Key identifier advertised by the issuer.', signature: 'kid?: string;', }, { name: 'alg', - summary: '', + summary: 'JOSE algorithm identifier.', signature: 'alg?: string;', }, { name: 'use', - summary: '', + summary: 'Intended key use, such as signing.', signature: 'use?: string;', }, ], @@ -5529,12 +6145,22 @@ export const apiSymbolSets: Readonly< anchor: 'create-jwt-issuer', signature: 'createJwtIssuer: (options: JwtIssuerOptions) => JwtIssuer', typeOnly: true, + summary: 'Create an issuer that signs and validates its own JWTs.', + tags: { + param: ['options Issuer key and claim configuration.'], + returns: ['Configured JWT issuer.'], + }, }, { name: 'createJwtSigner', anchor: 'create-jwt-signer', signature: 'createJwtSigner: (options: JwtSignerOptions) => JwtSigner', typeOnly: true, + summary: 'Create a signer that enforces Askr-owned JWT headers.', + tags: { + param: ['options Signer key configuration.'], + returns: ['A JWT signer.'], + }, }, { name: 'createJwtValidator', @@ -5542,6 +6168,12 @@ export const apiSymbolSets: Readonly< signature: 'createJwtValidator: (options: JwtValidatorOptions) => JwtValidator', typeOnly: true, + summary: + 'Create a JWT validator with issuer, audience, key-refresh, and clock policy.', + tags: { + param: ['options Validation policy.'], + returns: ['Configured JWT validator.'], + }, }, { name: 'issueTimedJwt', @@ -5549,16 +6181,23 @@ export const apiSymbolSets: Readonly< signature: 'issueTimedJwt: (signer: JwtSigner, input: TimedJwtInput) => Promise', typeOnly: true, + summary: + 'Issue a JWT with validated time, issuer, subject, and audience claims.', + tags: { + param: ['signer JWT signer.', 'input Timed token claims.'], + returns: ['Compact serialized JWT.'], + }, }, { name: 'JsonWebKeySet', anchor: 'json-web-key-set', signature: 'JsonWebKeySet: any', typeOnly: true, + summary: 'Set of public keys used to validate JWT signatures.', members: [ { name: 'keys', - summary: '', + summary: 'Public keys indexed by their JOSE metadata.', signature: 'keys: readonly AskrJsonWebKey[];', }, ], @@ -5568,16 +6207,18 @@ export const apiSymbolSets: Readonly< anchor: 'jwks-provider', signature: 'JwksProvider: any', typeOnly: true, + summary: 'Static or asynchronously refreshed JSON Web Key provider.', }, { name: 'JwtIssueInput', anchor: 'jwt-issue-input', signature: 'JwtIssueInput: any', typeOnly: true, + summary: 'Principal claims and subject used to issue a JWT.', members: [ { name: 'subject', - summary: '', + summary: 'Subject claim to encode.', signature: 'subject: string;', }, ], @@ -5587,15 +6228,20 @@ export const apiSymbolSets: Readonly< anchor: 'jwt-issuer', signature: 'JwtIssuer: any', typeOnly: true, + summary: 'JWT issuer and its matching validator.', members: [ { name: 'issue', - summary: '', + summary: 'Issue a compact JWT.', signature: 'issue(principal: JwtIssueInput): Promise;', + tags: { + param: ['principal Subject and claims to encode.'], + returns: ['Compact serialized JWT.'], + }, }, { name: 'validator', - summary: '', + summary: "Validator configured with this issuer's public-key policy.", signature: 'readonly validator: JwtValidator

;', }, ], @@ -5605,35 +6251,36 @@ export const apiSymbolSets: Readonly< anchor: 'jwt-issuer-options', signature: 'JwtIssuerOptions: any', typeOnly: true, + summary: 'Configuration for issuing signed JWTs.', members: [ { name: 'privateKey', - summary: '', + summary: 'Private signing key.', signature: 'privateKey: JsonWebKey;', }, { name: 'kid', - summary: '', + summary: 'JOSE key identifier.', signature: 'kid: string;', }, { name: 'issuer', - summary: '', + summary: 'Issuer claim.', signature: 'issuer: string;', }, { name: 'audience', - summary: '', + summary: 'Audience claim or claims.', signature: 'audience: string | readonly string[];', }, { name: 'ttlSeconds', - summary: '', + summary: 'Token lifetime in seconds.', signature: 'ttlSeconds: number;', }, { name: 'clock', - summary: '', + summary: 'Clock returning Unix time in seconds.', signature: 'clock?: () => number;', }, ], @@ -5643,11 +6290,16 @@ export const apiSymbolSets: Readonly< anchor: 'jwt-signer', signature: 'JwtSigner: any', typeOnly: true, + summary: 'Signs JWT payloads with a configured private key.', members: [ { name: 'sign', - summary: '', + summary: 'Sign claims with the configured key.', signature: 'sign(input: JwtSignInput): Promise;', + tags: { + param: ['input Claims and headers to sign.'], + returns: ['Compact serialized JWT.'], + }, }, ], }, @@ -5656,15 +6308,16 @@ export const apiSymbolSets: Readonly< anchor: 'jwt-signer-options', signature: 'JwtSignerOptions: any', typeOnly: true, + summary: 'Private-key configuration for a JWT signer.', members: [ { name: 'privateKey', - summary: '', + summary: 'Private signing key in Web Crypto JWK form.', signature: 'readonly privateKey: JsonWebKey;', }, { name: 'kid', - summary: '', + summary: 'JOSE key identifier included in protected headers.', signature: 'readonly kid: string;', }, ], @@ -5674,15 +6327,17 @@ export const apiSymbolSets: Readonly< anchor: 'jwt-sign-input', signature: 'JwtSignInput: any', typeOnly: true, + summary: 'Claims and optional protected headers for one JWT.', members: [ { name: 'claims', - summary: '', + summary: 'Payload claims to encode.', signature: 'readonly claims: Readonly>;', }, { name: 'protectedHeader', - summary: '', + summary: + 'Additional protected headers; `alg` and `kid` are managed by Askr.', signature: 'readonly protectedHeader?: Readonly>;', }, @@ -5693,10 +6348,11 @@ export const apiSymbolSets: Readonly< anchor: 'jwt-validation-error', signature: 'JwtValidationError: typeof JwtValidationError', typeOnly: true, + summary: 'Error raised when a JWT cannot be validated.', members: [ { name: 'code', - summary: '', + summary: 'Error category used for programmatic handling.', signature: 'readonly code: JwtValidationErrorCode;', }, ], @@ -5706,17 +6362,23 @@ export const apiSymbolSets: Readonly< anchor: 'jwt-validation-error-code', signature: 'JwtValidationErrorCode: any', typeOnly: true, + summary: 'Stable failure codes returned by JWT validation.', }, { name: 'JwtValidator', anchor: 'jwt-validator', signature: 'JwtValidator: any', typeOnly: true, + summary: 'Verifies a JWT and returns its typed principal claims.', members: [ { name: 'validate', - summary: '', + summary: 'Validate a compact JWT.', signature: 'validate(token: string): Promise

;', + tags: { + param: ['token Compact serialized JWT.'], + returns: ['Validated principal claims.'], + }, }, ], }, @@ -5725,30 +6387,31 @@ export const apiSymbolSets: Readonly< anchor: 'jwt-validator-options', signature: 'JwtValidatorOptions: any', typeOnly: true, + summary: 'Validation policy for signed JWTs.', members: [ { name: 'issuer', - summary: '', + summary: 'Expected issuer claim.', signature: 'issuer: string;', }, { name: 'audience', - summary: '', + summary: 'Expected audience claim or accepted audience values.', signature: 'audience?: string | readonly string[];', }, { name: 'jwks', - summary: '', + summary: 'Public keys used to verify signatures.', signature: 'jwks: JwksProvider;', }, { name: 'clock', - summary: '', + summary: 'Clock returning Unix time in seconds.', signature: 'clock?: () => number;', }, { name: 'clockSkewSeconds', - summary: '', + summary: 'Allowed clock skew in seconds.', signature: 'clockSkewSeconds?: number;', }, { @@ -5765,12 +6428,12 @@ export const apiSymbolSets: Readonly< }, { name: 'jwksRefreshCooldownSeconds', - summary: '', + summary: 'Minimum interval between refreshes after an unknown key.', signature: 'jwksRefreshCooldownSeconds?: number;', }, { name: 'unknownKeyCacheSeconds', - summary: '', + summary: 'Duration for caching unknown-key failures.', signature: 'unknownKeyCacheSeconds?: number;', }, ], @@ -5780,10 +6443,11 @@ export const apiSymbolSets: Readonly< anchor: 'oidc-id-token-options', signature: 'OidcIdTokenOptions: any', typeOnly: true, + summary: 'OIDC-specific JWT validation options.', members: [ { name: 'nonce', - summary: '', + summary: 'Expected OIDC nonce claim.', signature: 'nonce: string;', }, ], @@ -5793,40 +6457,41 @@ export const apiSymbolSets: Readonly< anchor: 'timed-jwt-input', signature: 'TimedJwtInput: any', typeOnly: true, + summary: 'Standard claims used to issue a short-lived JWT.', members: [ { name: 'issuer', - summary: '', + summary: 'Issuer claim.', signature: 'readonly issuer: string;', }, { name: 'subject', - summary: '', + summary: 'Subject claim.', signature: 'readonly subject: string;', }, { name: 'audience', - summary: '', + summary: 'Audience claim or claims.', signature: 'readonly audience: string | readonly string[];', }, { name: 'ttlSeconds', - summary: '', + summary: 'Lifetime in seconds.', signature: 'readonly ttlSeconds: number;', }, { name: 'typ', - summary: '', + summary: 'Protected JOSE type header.', signature: 'readonly typ: string;', }, { name: 'claims', - summary: '', + summary: 'Additional application claims.', signature: 'readonly claims?: Readonly>;', }, { name: 'clock', - summary: '', + summary: 'Clock returning Unix time in seconds.', signature: 'readonly clock?: () => number;', }, ], @@ -5837,6 +6502,14 @@ export const apiSymbolSets: Readonly< signature: 'validateOidcIdToken: (token: string, options: OidcIdTokenOptions) => Promise', typeOnly: true, + summary: 'Validate an OIDC ID token, including its nonce claim.', + tags: { + param: [ + 'token Compact serialized ID token.', + 'options OIDC validation policy.', + ], + returns: ['Validated principal claims.'], + }, }, ], symbols22: [ @@ -5845,31 +6518,38 @@ export const apiSymbolSets: Readonly< anchor: 'create-oidc-client', signature: 'createOidcClient: (options: OidcClientOptions) => OidcClient', typeOnly: true, + summary: + 'Create an OIDC client with discovery caching and ID-token validation.', + tags: { + param: ['options Provider and client configuration.'], + returns: ['Configured OIDC client.'], + }, }, { name: 'OidcAuthorizationRequest', anchor: 'oidc-authorization-request', signature: 'OidcAuthorizationRequest: any', typeOnly: true, + summary: 'Generated authorization URL and callback values.', members: [ { name: 'url', - summary: '', + summary: 'Provider authorization URL.', signature: 'url: string;', }, { name: 'state', - summary: '', + summary: 'CSRF state value.', signature: 'state: string;', }, { name: 'nonce', - summary: '', + summary: 'Replay-protection nonce.', signature: 'nonce: string;', }, { name: 'codeVerifier', - summary: '', + summary: 'PKCE verifier retained for callback exchange.', signature: 'codeVerifier: string;', }, ], @@ -5879,25 +6559,27 @@ export const apiSymbolSets: Readonly< anchor: 'oidc-authorization-request-options', signature: 'OidcAuthorizationRequestOptions: any', typeOnly: true, + summary: + 'Optional state, nonce, and PKCE values for an authorization request.', members: [ { name: 'state', - summary: '', + summary: 'CSRF state value.', signature: 'state?: string;', }, { name: 'nonce', - summary: '', + summary: 'Replay-protection nonce.', signature: 'nonce?: string;', }, { name: 'codeVerifier', - summary: '', + summary: 'PKCE verifier.', signature: 'codeVerifier?: string;', }, { name: 'loginHint', - summary: '', + summary: 'Optional provider login hint.', signature: 'loginHint?: string;', }, ], @@ -5907,23 +6589,35 @@ export const apiSymbolSets: Readonly< anchor: 'oidc-client', signature: 'OidcClient: any', typeOnly: true, + summary: 'High-level OIDC discovery, authorization, and callback client.', members: [ { name: 'discover', - summary: '', + summary: 'Discover and cache provider metadata.', signature: 'discover(): Promise;', + tags: { + returns: ['Provider discovery metadata.'], + }, }, { name: 'createAuthorizationRequest', - summary: '', + summary: 'Build an authorization URL and callback state.', signature: 'createAuthorizationRequest(options?: OidcAuthorizationRequestOptions): Promise;', + tags: { + param: ['options Optional state, nonce, and PKCE overrides.'], + returns: ['Authorization request details.'], + }, }, { name: 'exchangeCode', - summary: '', + summary: 'Exchange an authorization code and validate its ID token.', signature: 'exchangeCode(input: OidcCodeExchange): Promise;', + tags: { + param: ['input Authorization code and stored request.'], + returns: ['Tokens and validated principal.'], + }, }, ], }, @@ -5932,15 +6626,17 @@ export const apiSymbolSets: Readonly< anchor: 'oidc-client-error', signature: 'OidcClientError: typeof OidcClientError', typeOnly: true, + summary: + 'Error raised while discovering, exchanging, or validating OIDC tokens.', members: [ { name: 'code', - summary: '', + summary: 'Error category used for programmatic handling.', signature: 'readonly code: OidcClientErrorCode;', }, { name: 'name', - summary: '', + summary: 'Error category used for programmatic handling.', signature: 'readonly name = "OidcClientError";', }, ], @@ -5950,41 +6646,43 @@ export const apiSymbolSets: Readonly< anchor: 'oidc-client-error-code', signature: 'OidcClientErrorCode: any', typeOnly: true, + summary: 'Stable failure codes for OIDC client operations.', }, { name: 'OidcClientOptions', anchor: 'oidc-client-options', signature: 'OidcClientOptions: any', typeOnly: true, + summary: 'Client credentials and callback settings for OIDC.', members: [ { name: 'issuer', - summary: '', + summary: 'Provider issuer URL.', signature: 'issuer: string;', }, { name: 'clientId', - summary: '', + summary: 'Registered client identifier.', signature: 'clientId: string;', }, { name: 'clientSecret', - summary: '', + summary: 'Optional confidential-client secret.', signature: 'clientSecret?: string;', }, { name: 'redirectUri', - summary: '', + summary: 'Registered redirect URI.', signature: 'redirectUri: string;', }, { name: 'scopes', - summary: '', + summary: 'Requested scopes.', signature: 'scopes?: readonly string[];', }, { name: 'fetch', - summary: '', + summary: 'Fetch implementation for provider requests.', signature: 'fetch?: typeof fetch;', }, ], @@ -5994,20 +6692,21 @@ export const apiSymbolSets: Readonly< anchor: 'oidc-code-exchange', signature: 'OidcCodeExchange: any', typeOnly: true, + summary: 'Callback code and original authorization request values.', members: [ { name: 'code', - summary: '', + summary: 'Authorization code.', signature: 'code: string;', }, { name: 'state', - summary: '', + summary: 'Returned CSRF state.', signature: 'state: string;', }, { name: 'request', - summary: '', + summary: 'Stored authorization request values.', signature: 'request: Pick;', }, @@ -6018,15 +6717,16 @@ export const apiSymbolSets: Readonly< anchor: 'oidc-code-exchange-result', signature: 'OidcCodeExchangeResult: any', typeOnly: true, + summary: 'Result of exchanging an authorization code.', members: [ { name: 'tokens', - summary: '', + summary: 'Provider tokens.', signature: 'tokens: OidcTokenResponse;', }, { name: 'principal', - summary: '', + summary: 'Principal derived from the validated ID token.', signature: 'principal: Principal;', }, ], @@ -6036,35 +6736,36 @@ export const apiSymbolSets: Readonly< anchor: 'oidc-provider-metadata', signature: 'OidcProviderMetadata: any', typeOnly: true, + summary: 'Discovery metadata published by an OpenID Connect provider.', members: [ { name: 'issuer', - summary: '', + summary: 'Provider issuer URL.', signature: 'issuer: string;', }, { name: 'authorization_endpoint', - summary: '', + summary: 'Authorization endpoint URL.', signature: 'authorization_endpoint: string;', }, { name: 'token_endpoint', - summary: '', + summary: 'Token endpoint URL.', signature: 'token_endpoint: string;', }, { name: 'jwks_uri', - summary: '', + summary: 'JWKS endpoint URL.', signature: 'jwks_uri: string;', }, { name: 'userinfo_endpoint', - summary: '', + summary: 'Optional user-info endpoint URL.', signature: 'userinfo_endpoint?: string;', }, { name: 'end_session_endpoint', - summary: '', + summary: 'Optional end-session endpoint URL.', signature: 'end_session_endpoint?: string;', }, ], @@ -6074,30 +6775,31 @@ export const apiSymbolSets: Readonly< anchor: 'oidc-token-response', signature: 'OidcTokenResponse: any', typeOnly: true, + summary: 'Token response returned by an OIDC provider.', members: [ { name: 'access_token', - summary: '', + summary: 'Access token.', signature: 'access_token: string;', }, { name: 'token_type', - summary: '', + summary: 'Token type, normally Bearer.', signature: 'token_type: string;', }, { name: 'id_token', - summary: '', + summary: 'Optional ID token.', signature: 'id_token?: string;', }, { name: 'refresh_token', - summary: '', + summary: 'Optional refresh token.', signature: 'refresh_token?: string;', }, { name: 'expires_in', - summary: '', + summary: 'Optional lifetime in seconds.', signature: 'expires_in?: number;', }, ], @@ -6110,18 +6812,25 @@ export const apiSymbolSets: Readonly< signature: 'createSamlServiceProvider: (options: SamlServiceProviderOptions) => SamlServiceProvider', typeOnly: true, + summary: + 'Create a SAML service provider for metadata, login requests, and response validation.', + tags: { + param: ['options Service-provider configuration.'], + returns: ['Configured SAML service provider.'], + }, }, { name: 'SamlPrincipal', anchor: 'saml-principal', signature: 'SamlPrincipal: any', typeOnly: true, + summary: 'Principal claims extracted from a validated SAML assertion.', members: [ { name: 'saml', - summary: '', + summary: 'SAML issuer, subject, session, and attributes.', signature: - 'saml: {\n issuer: string;\n nameId: string;\n nameIdFormat?: string;\n sessionIndex?: string;\n attributes: Readonly>;\n };', + 'saml: {\n /** Identity-provider issuer. */\n issuer: string;\n /** Assertion NameID. */\n nameId: string;\n /** Optional NameID format. */\n nameIdFormat?: string;\n /** Optional provider session index. */\n sessionIndex?: string;\n /** Assertion attributes grouped by name. */\n attributes: Readonly>;\n };', }, ], }, @@ -6130,21 +6839,33 @@ export const apiSymbolSets: Readonly< anchor: 'saml-request-store', signature: 'SamlRequestStore: any', typeOnly: true, + summary: 'Persistence contract for pending SAML requests.', members: [ { name: 'save', - summary: '', + summary: 'Persist a pending authentication request.', signature: 'save(request: SamlStoredRequest): Promise;', + tags: { + param: ['request Request to persist.'], + }, }, { name: 'get', - summary: '', + summary: 'Load a pending authentication request.', signature: 'get(id: string): Promise;', + tags: { + param: ['id Request identifier.'], + returns: ['Stored request or null.'], + }, }, { name: 'consume', - summary: '', + summary: 'Consume a pending request exactly once.', signature: 'consume(id: string): Promise;', + tags: { + param: ['id Request identifier.'], + returns: ['Whether a request was consumed.'], + }, }, ], }, @@ -6153,23 +6874,35 @@ export const apiSymbolSets: Readonly< anchor: 'saml-service-provider', signature: 'SamlServiceProvider: any', typeOnly: true, + summary: 'SAML service-provider operations.', members: [ { name: 'metadata', - summary: '', + summary: 'Render SAML metadata XML.', signature: 'metadata(): string;', + tags: { + returns: ['SAML metadata XML.'], + }, }, { name: 'createAuthnRequest', - summary: '', + summary: 'Create a signed authentication request.', signature: 'createAuthnRequest(options?: {\n relayState?: string;\n }): Promise<{\n url: string;\n requestId: string;\n }>;', + tags: { + param: ['options Optional relay state.'], + returns: ['Redirect URL and pending request ID.'], + }, }, { name: 'validateResponse', - summary: '', + summary: 'Validate an encoded SAML response.', signature: 'validateResponse(input: {\n samlResponse: string;\n relayState?: string;\n }): Promise;', + tags: { + param: ['input Encoded SAML response and optional relay state.'], + returns: ['Validated SAML principal.'], + }, }, ], }, @@ -6178,63 +6911,66 @@ export const apiSymbolSets: Readonly< anchor: 'saml-service-provider-options', signature: 'SamlServiceProviderOptions: any', typeOnly: true, + summary: + 'Service-provider metadata, identity-provider details, and validation policy.', members: [ { name: 'entityId', - summary: '', + summary: 'Service-provider entity ID.', signature: 'entityId: string;', }, { name: 'acsUrl', - summary: '', + summary: 'Assertion-consumer service URL.', signature: 'acsUrl: string;', }, { name: 'idp', - summary: '', + summary: + 'Identity-provider entity ID, SSO URL, and signing certificates.', signature: 'idp: {\n entityId: string;\n ssoUrl: string;\n certificates: readonly string[];\n };', }, { name: 'requestStore', - summary: '', + summary: 'Store for pending authentication requests.', signature: 'requestStore: SamlRequestStore;', }, { name: 'signRequests', - summary: '', + summary: 'Optional request-signing key pair.', signature: 'signRequests?: {\n privateKey: JsonWebKey;\n certificate: string;\n };', }, { name: 'decryptAssertions', - summary: '', + summary: 'Optional assertion-decryption key pair.', signature: 'decryptAssertions?: {\n privateKey: JsonWebKey;\n certificate: string;\n };', }, { name: 'requireSignedResponse', - summary: '', + summary: 'Require a valid XML signature on responses.', signature: 'requireSignedResponse?: boolean;', }, { name: 'requestTtlSeconds', - summary: '', + summary: 'Pending-request lifetime in seconds.', signature: 'requestTtlSeconds?: number;', }, { name: 'maxAssertionAgeSeconds', - summary: '', + summary: 'Maximum assertion age in seconds.', signature: 'maxAssertionAgeSeconds?: number;', }, { name: 'clockSkewSeconds', - summary: '', + summary: 'Allowed clock skew in seconds.', signature: 'clockSkewSeconds?: number;', }, { name: 'clock', - summary: '', + summary: 'Clock returning Unix time in milliseconds.', signature: 'clock?: () => number;', }, ], @@ -6244,25 +6980,27 @@ export const apiSymbolSets: Readonly< anchor: 'saml-stored-request', signature: 'SamlStoredRequest: any', typeOnly: true, + summary: + 'Pending SAML authentication request retained for callback validation.', members: [ { name: 'id', - summary: '', + summary: 'Request identifier.', signature: 'id: string;', }, { name: 'createdAt', - summary: '', + summary: 'Creation time in Unix milliseconds.', signature: 'createdAt: number;', }, { name: 'expiresAt', - summary: '', + summary: 'Expiration time in Unix milliseconds.', signature: 'expiresAt: number;', }, { name: 'relayState', - summary: '', + summary: 'Optional relay state returned by the identity provider.', signature: 'relayState?: string;', }, ], @@ -6272,10 +7010,11 @@ export const apiSymbolSets: Readonly< anchor: 'saml-validation-error', signature: 'SamlValidationError: typeof SamlValidationError', typeOnly: true, + summary: 'Error raised when a SAML response fails validation.', members: [ { name: 'code', - summary: '', + summary: 'Error category used for programmatic handling.', signature: 'readonly code: SamlValidationErrorCode;', }, ], @@ -6285,6 +7024,7 @@ export const apiSymbolSets: Readonly< anchor: 'saml-validation-error-code', signature: 'SamlValidationErrorCode: any', typeOnly: true, + summary: 'Stable failure codes for SAML validation.', }, ], symbols24: [ @@ -6293,20 +7033,21 @@ export const apiSymbolSets: Readonly< anchor: 'cbor-decode-options', signature: 'CborDecodeOptions: any', typeOnly: true, + summary: 'Resource limits applied while decoding CBOR.', members: [ { name: 'maxBytes', - summary: '', + summary: 'Maximum encoded input bytes.', signature: 'maxBytes?: number;', }, { name: 'maxDepth', - summary: '', + summary: 'Maximum nesting depth.', signature: 'maxDepth?: number;', }, { name: 'maxCollectionLength', - summary: '', + summary: 'Maximum array or map entries.', signature: 'maxCollectionLength?: number;', }, ], @@ -6316,15 +7057,16 @@ export const apiSymbolSets: Readonly< anchor: 'cbor-first-result', signature: 'CborFirstResult: any', typeOnly: true, + summary: 'Decoded CBOR value and the number of consumed bytes.', members: [ { name: 'value', - summary: '', + summary: 'Decoded value.', signature: 'value: unknown;', }, { name: 'bytesRead', - summary: '', + summary: 'Number of bytes consumed from the input.', signature: 'bytesRead: number;', }, ], @@ -6334,6 +7076,7 @@ export const apiSymbolSets: Readonly< anchor: 'cose-algorithm', signature: 'CoseAlgorithm: any', typeOnly: true, + summary: 'COSE algorithm identifiers supported for WebAuthn public keys.', }, { name: 'createTotpProvisioningUri', @@ -6341,6 +7084,11 @@ export const apiSymbolSets: Readonly< signature: 'createTotpProvisioningUri: (input: { secret: string; issuer: string; account: string; } & TotpOptions) => string', typeOnly: true, + summary: 'Build an `otpauth://` URI for authenticator enrollment.', + tags: { + param: ['input Secret, issuer, account, and TOTP settings.'], + returns: ['Authenticator provisioning URI.'], + }, }, { name: 'decodeCbor', @@ -6348,6 +7096,14 @@ export const apiSymbolSets: Readonly< signature: 'decodeCbor: (input: Uint8Array, options?: CborDecodeOptions) => unknown', typeOnly: true, + summary: 'Decode one complete CBOR value.', + tags: { + param: [ + 'input Encoded CBOR bytes.', + 'options Decoder resource limits.', + ], + returns: ['Decoded value.'], + }, }, { name: 'decodeCborFirst', @@ -6355,6 +7111,14 @@ export const apiSymbolSets: Readonly< signature: 'decodeCborFirst: (input: Uint8Array, options?: CborDecodeOptions) => CborFirstResult', typeOnly: true, + summary: 'Decode the first CBOR value, allowing trailing bytes.', + tags: { + param: [ + 'input Encoded CBOR bytes.', + 'options Decoder resource limits.', + ], + returns: ['Decoded value and consumed byte count.'], + }, }, { name: 'decodeCosePublicKey', @@ -6362,21 +7126,28 @@ export const apiSymbolSets: Readonly< signature: 'decodeCosePublicKey: (input: Uint8Array) => DecodedCosePublicKey', typeOnly: true, + summary: 'Decode a COSE public key into an algorithm and Web Crypto JWK.', + tags: { + param: ['input Encoded COSE key.'], + returns: ['Decoded public-key information.'], + }, }, { name: 'DecodedCosePublicKey', anchor: 'decoded-cose-public-key', signature: 'DecodedCosePublicKey: any', typeOnly: true, + summary: + 'Public-key algorithm and Web Crypto representation decoded from COSE.', members: [ { name: 'algorithm', - summary: '', + summary: 'COSE algorithm identifier.', signature: 'algorithm: CoseAlgorithm;', }, { name: 'publicKeyJwk', - summary: '', + summary: 'Equivalent Web Crypto JWK.', signature: 'publicKeyJwk: JsonWebKey;', }, ], @@ -6387,21 +7158,27 @@ export const apiSymbolSets: Readonly< signature: 'generateTotpSecret: (options?: { byteLength?: number; }) => string', typeOnly: true, + summary: 'Generate a cryptographically random Base32 TOTP secret.', + tags: { + param: ['options Secret byte length, from 16 through 128.'], + returns: ['Base32-encoded secret.'], + }, }, { name: 'MfaValidationError', anchor: 'mfa-validation-error', signature: 'MfaValidationError: typeof MfaValidationError', typeOnly: true, + summary: 'Error raised when MFA input or credentials fail validation.', members: [ { name: 'code', - summary: '', + summary: 'Error category used for programmatic handling.', signature: 'readonly code: MfaValidationErrorCode;', }, { name: 'name', - summary: '', + summary: 'Error category used for programmatic handling.', signature: 'readonly name = "MfaValidationError";', }, ], @@ -6411,32 +7188,35 @@ export const apiSymbolSets: Readonly< anchor: 'mfa-validation-error-code', signature: 'MfaValidationErrorCode: any', typeOnly: true, + summary: 'Stable failure codes for MFA and WebAuthn validation.', }, { name: 'TotpAlgorithm', anchor: 'totp-algorithm', signature: 'TotpAlgorithm: any', typeOnly: true, + summary: 'Hash algorithms supported by TOTP.', }, { name: 'TotpOptions', anchor: 'totp-options', signature: 'TotpOptions: any', typeOnly: true, + summary: 'Shared TOTP generation and verification settings.', members: [ { name: 'algorithm', - summary: '', + summary: 'HMAC hash algorithm. Defaults to SHA-1.', signature: 'algorithm?: TotpAlgorithm;', }, { name: 'digits', - summary: '', + summary: 'Number of digits in generated codes.', signature: 'digits?: 6 | 8;', }, { name: 'periodSeconds', - summary: '', + summary: 'Validity period in seconds.', signature: 'periodSeconds?: number;', }, ], @@ -6447,31 +7227,39 @@ export const apiSymbolSets: Readonly< signature: 'verifyTotpCode: (input: VerifyTotpOptions) => Promise<{ valid: boolean; counter?: number; drift?: number; }>', typeOnly: true, + summary: 'Verify a TOTP code with a bounded clock-drift window.', + tags: { + param: ['input Verification input and settings.'], + returns: [ + 'Whether the code is valid and its matched counter when valid.', + ], + }, }, { name: 'VerifyTotpOptions', anchor: 'verify-totp-options', signature: 'VerifyTotpOptions: any', typeOnly: true, + summary: 'Input required to verify one TOTP code.', members: [ { name: 'secret', - summary: '', + summary: 'Base32-encoded shared secret.', signature: 'secret: string;', }, { name: 'code', - summary: '', + summary: 'User-entered one-time code.', signature: 'code: string;', }, { name: 'at', - summary: '', + summary: 'Verification time; defaults to the current time.', signature: 'at?: number | Date;', }, { name: 'window', - summary: '', + summary: 'Number of adjacent periods accepted on either side.', signature: 'window?: number;', }, ], @@ -6482,6 +7270,11 @@ export const apiSymbolSets: Readonly< signature: 'verifyWebAuthnAuthentication: (input: WebAuthnAuthenticationInput) => Promise<{ signCount: number; backupEligible: boolean; backedUp: boolean; }>', typeOnly: true, + summary: 'Verify a WebAuthn assertion against a stored credential.', + tags: { + param: ['input Authentication ceremony data.'], + returns: ['Whether the assertion is valid.'], + }, }, { name: 'verifyWebAuthnRegistration', @@ -6489,66 +7282,73 @@ export const apiSymbolSets: Readonly< signature: 'verifyWebAuthnRegistration: (input: WebAuthnRegistrationInput) => Promise', typeOnly: true, + summary: + 'Verify a WebAuthn registration ceremony and decode its public key.', + tags: { + param: ['input Registration ceremony data.'], + returns: ['Persistable credential information.'], + }, }, { name: 'WebAuthnAuthenticationInput', anchor: 'web-authn-authentication-input', signature: 'WebAuthnAuthenticationInput: any', typeOnly: true, + summary: 'Server-side WebAuthn authentication ceremony data.', members: [ { name: 'credentialId', - summary: '', + summary: 'Credential identifier returned by the browser.', signature: 'credentialId: Uint8Array;', }, { name: 'storedCredentialId', - summary: '', + summary: 'Credential identifier stored during registration.', signature: 'storedCredentialId: Uint8Array;', }, { name: 'publicKeyJwk', - summary: '', + summary: 'Stored public-key JWK.', signature: 'publicKeyJwk: JsonWebKey;', }, { name: 'authenticatorData', - summary: '', + summary: 'Authenticator data bytes.', signature: 'authenticatorData: Uint8Array;', }, { name: 'clientDataJSON', - summary: '', + summary: 'Browser client-data JSON bytes.', signature: 'clientDataJSON: Uint8Array;', }, { name: 'signature', - summary: '', + summary: 'Assertion signature bytes.', signature: 'signature: Uint8Array;', }, { name: 'expectedChallenge', - summary: '', + summary: 'Challenge originally issued by the server.', signature: 'expectedChallenge: Uint8Array;', }, { name: 'allowedOrigins', - summary: '', + summary: 'Allowed origins for this ceremony.', signature: 'allowedOrigins: readonly string[];', }, { name: 'rpId', - summary: '', + summary: 'Relying-party identifier.', signature: 'rpId: string;', }, { name: 'signCount', - summary: '', + summary: 'Previously stored signature counter.', signature: 'signCount: number;', }, { name: 'requireUserVerification', - summary: '', + summary: 'Require user verification.', signature: 'requireUserVerification?: boolean;', }, ], @@ -6558,40 +7358,41 @@ export const apiSymbolSets: Readonly< anchor: 'web-authn-registration-input', signature: 'WebAuthnRegistrationInput: any', typeOnly: true, + summary: 'Server-side WebAuthn registration ceremony data.', members: [ { name: 'credentialId', - summary: '', + summary: 'Credential identifier returned by the browser.', signature: 'credentialId: Uint8Array;', }, { name: 'clientDataJSON', - summary: '', + summary: 'Browser client-data JSON bytes.', signature: 'clientDataJSON: Uint8Array;', }, { name: 'attestationObject', - summary: '', + summary: 'Browser attestation object bytes.', signature: 'attestationObject: Uint8Array;', }, { name: 'expectedChallenge', - summary: '', + summary: 'Challenge originally issued by the server.', signature: 'expectedChallenge: Uint8Array;', }, { name: 'allowedOrigins', - summary: '', + summary: 'Allowed origins for this ceremony.', signature: 'allowedOrigins: readonly string[];', }, { name: 'rpId', - summary: '', + summary: 'Relying-party identifier.', signature: 'rpId: string;', }, { name: 'requireUserVerification', - summary: '', + summary: 'Require user verification.', signature: 'requireUserVerification?: boolean;', }, ], @@ -6601,40 +7402,41 @@ export const apiSymbolSets: Readonly< anchor: 'web-authn-registration-result', signature: 'WebAuthnRegistrationResult: any', typeOnly: true, + summary: 'Verified credential data persisted after registration.', members: [ { name: 'credentialId', - summary: '', + summary: 'Credential identifier to persist.', signature: 'credentialId: Uint8Array;', }, { name: 'publicKeyJwk', - summary: '', + summary: 'Public key to persist.', signature: 'publicKeyJwk: JsonWebKey;', }, { name: 'algorithm', - summary: '', + summary: 'COSE algorithm identifier.', signature: 'algorithm: CoseAlgorithm;', }, { name: 'signCount', - summary: '', + summary: 'Initial signature counter.', signature: 'signCount: number;', }, { name: 'aaguid', - summary: '', + summary: 'Authenticator AAGUID.', signature: 'aaguid: Uint8Array;', }, { name: 'backupEligible', - summary: '', + summary: 'Whether the credential may be backed up.', signature: 'backupEligible: boolean;', }, { name: 'backedUp', - summary: '', + summary: 'Whether the credential is currently backed up.', signature: 'backedUp: boolean;', }, ], @@ -6647,46 +7449,52 @@ export const apiSymbolSets: Readonly< signature: 'createPasskey: (options: CreatePasskeyOptions) => Promise', typeOnly: true, + summary: 'Create a passkey through the browser WebAuthn API.', + tags: { + param: ['options Registration ceremony options.'], + returns: ['Credential data suitable for server registration.'], + }, }, { name: 'CreatePasskeyOptions', anchor: 'create-passkey-options', signature: 'CreatePasskeyOptions: any', typeOnly: true, + summary: 'Registration ceremony inputs for creating a passkey.', members: [ { name: 'challenge', - summary: '', + summary: 'Base64url challenge from the server.', signature: 'readonly challenge: string;', }, { name: 'rpId', - summary: '', + summary: 'Relying-party identifier.', signature: 'readonly rpId: string;', }, { name: 'rpName', - summary: '', + summary: 'Human-readable relying-party name.', signature: 'readonly rpName: string;', }, { name: 'userId', - summary: '', + summary: 'Base64url user identifier.', signature: 'readonly userId: string;', }, { name: 'userName', - summary: '', + summary: 'User name displayed by the authenticator.', signature: 'readonly userName: string;', }, { name: 'userDisplayName', - summary: '', + summary: 'Human-readable user display name.', signature: 'readonly userDisplayName: string;', }, { name: 'userVerification', - summary: '', + summary: 'Required user-verification policy.', signature: 'readonly userVerification?: UserVerificationRequirement;', }, ], @@ -6696,12 +7504,22 @@ export const apiSymbolSets: Readonly< anchor: 'decode-base64-url', signature: 'decodeBase64Url: (value: string) => ArrayBuffer', typeOnly: true, + summary: 'Decode canonical unpadded base64url.', + tags: { + param: ['value Base64url text.'], + returns: ['Decoded bytes.'], + }, }, { name: 'encodeBase64Url', anchor: 'encode-base64-url', signature: 'encodeBase64Url: (buffer: ArrayBuffer) => string', typeOnly: true, + summary: 'Encode binary data as unpadded base64url.', + tags: { + param: ['buffer Bytes to encode.'], + returns: ['Canonical base64url text.'], + }, }, { name: 'getPasskeyAssertion', @@ -6709,31 +7527,38 @@ export const apiSymbolSets: Readonly< signature: 'getPasskeyAssertion: (options: GetPasskeyAssertionOptions) => Promise', typeOnly: true, + summary: 'Request a passkey assertion through the browser WebAuthn API.', + tags: { + param: ['options Authentication ceremony options.'], + returns: ['Assertion data suitable for server verification.'], + }, }, { name: 'GetPasskeyAssertionOptions', anchor: 'get-passkey-assertion-options', signature: 'GetPasskeyAssertionOptions: any', typeOnly: true, + summary: + 'Authentication ceremony inputs for requesting a passkey assertion.', members: [ { name: 'challenge', - summary: '', + summary: 'Base64url challenge from the server.', signature: 'readonly challenge: string;', }, { name: 'rpId', - summary: '', + summary: 'Relying-party identifier.', signature: 'readonly rpId: string;', }, { name: 'allowCredentials', - summary: '', + summary: 'Optional allow-list of credential identifiers.', signature: 'readonly allowCredentials?: readonly string[];', }, { name: 'userVerification', - summary: '', + summary: 'Required user-verification policy.', signature: 'readonly userVerification?: UserVerificationRequirement;', }, ], @@ -6743,25 +7568,26 @@ export const apiSymbolSets: Readonly< anchor: 'passkey-assertion', signature: 'PasskeyAssertion: any', typeOnly: true, + summary: 'Client-safe assertion returned to the server.', members: [ { name: 'credentialId', - summary: '', + summary: 'Base64url credential identifier.', signature: 'readonly credentialId: string;', }, { name: 'clientDataJSON', - summary: '', + summary: 'Browser client-data JSON.', signature: 'readonly clientDataJSON: string;', }, { name: 'authenticatorData', - summary: '', + summary: 'Authenticator data.', signature: 'readonly authenticatorData: string;', }, { name: 'signature', - summary: '', + summary: 'Assertion signature.', signature: 'readonly signature: string;', }, ], @@ -6771,20 +7597,21 @@ export const apiSymbolSets: Readonly< anchor: 'passkey-registration', signature: 'PasskeyRegistration: any', typeOnly: true, + summary: 'Client-safe registration credential returned to the server.', members: [ { name: 'credentialId', - summary: '', + summary: 'Base64url credential identifier.', signature: 'readonly credentialId: string;', }, { name: 'clientDataJSON', - summary: '', + summary: 'Browser client-data JSON.', signature: 'readonly clientDataJSON: string;', }, { name: 'attestationObject', - summary: '', + summary: 'Browser attestation object.', signature: 'readonly attestationObject: string;', }, ], @@ -6796,12 +7623,15 @@ export const apiSymbolSets: Readonly< anchor: 'aggregated-numeric-channel-input', signature: 'AggregatedNumericChannelInput: any', typeOnly: true, + summary: + 'A numeric channel input that may additionally be an aggregate expression.', }, { name: 'AggregateOperation', anchor: 'aggregate-operation', signature: 'AggregateOperation: any', typeOnly: true, + summary: 'Aggregate operations supported by grouping expressions.', }, { name: 'appendPlotRows', @@ -6809,12 +7639,15 @@ export const apiSymbolSets: Readonly< signature: 'appendPlotRows: (rows: readonly Row[], appended: readonly Row[] | Row) => readonly Row[]', typeOnly: true, + summary: + 'Appends one or more rows to `rows`, returning a new frozen array (or `rows` if nothing was added).', }, { name: 'ArcProps', anchor: 'arc-props', signature: 'ArcProps: any', typeOnly: true, + summary: 'Props for `Plot.Arc`.', members: [ { name: 'value', @@ -6873,6 +7706,7 @@ export const apiSymbolSets: Readonly< anchor: 'area-props', signature: 'AreaProps: any', typeOnly: true, + summary: 'Props for `Plot.Area`.', members: [ { name: 'x', @@ -6917,12 +7751,14 @@ export const apiSymbolSets: Readonly< anchor: 'axis-orientation', signature: 'AxisOrientation: any', typeOnly: true, + summary: 'The side of the plot an axis is rendered on.', }, { name: 'AxisProps', anchor: 'axis-props', signature: 'AxisProps: any', typeOnly: true, + summary: 'Props for `Plot.Axis`.', members: [ { name: 'scale', @@ -6966,6 +7802,7 @@ export const apiSymbolSets: Readonly< anchor: 'bar-props', signature: 'BarProps: any', typeOnly: true, + summary: 'Props for `Plot.Bar`.', members: [ { name: 'x', @@ -7021,18 +7858,22 @@ export const apiSymbolSets: Readonly< signature: 'bin: { (input: Field, options?: BinOptions): ChannelExpression; (input: ChannelInput, options?: BinOptions): ChannelExpression; }', typeOnly: true, + summary: 'Bins a numeric or temporal channel into discrete intervals.', }, { name: 'BinnedScaleChannelInput', anchor: 'binned-scale-channel-input', signature: 'BinnedScaleChannelInput: any', typeOnly: true, + summary: + 'A channel input for scales that may be binned, e.g. via {@link bin }.', }, { name: 'BinOptions', anchor: 'bin-options', signature: 'BinOptions: any', typeOnly: true, + summary: 'Options for {@link bin }.', members: [ { name: 'thresholds', @@ -7056,6 +7897,7 @@ export const apiSymbolSets: Readonly< anchor: 'brush-props', signature: 'BrushProps: any', typeOnly: true, + summary: 'Props for `Plot.Brush`.', members: [ { name: 'axis', @@ -7074,12 +7916,14 @@ export const apiSymbolSets: Readonly< anchor: 'cartesian-axis', signature: 'CartesianAxis: any', typeOnly: true, + summary: 'A Cartesian axis identifier.', }, { name: 'CartesianMarkProps', anchor: 'cartesian-mark-props', signature: 'CartesianMarkProps: any', typeOnly: true, + summary: 'Props shared by marks positioned on Cartesian (x/y) axes.', members: [ { name: 'x', @@ -7108,12 +7952,15 @@ export const apiSymbolSets: Readonly< anchor: 'categorical-field', signature: 'CategoricalField: any', typeOnly: true, + summary: + 'Field names of `Row` holding categorical (string, number, or boolean) values.', }, { name: 'CellProps', anchor: 'cell-props', signature: 'CellProps: any', typeOnly: true, + summary: 'Props for `Plot.Cell`.', members: [ { name: 'x', @@ -7142,6 +7989,8 @@ export const apiSymbolSets: Readonly< anchor: 'channel-expression', signature: 'ChannelExpression: any', typeOnly: true, + summary: + 'A serialized channel transform produced by helpers such as {@link bin }, {@link sum },\nor {@link stack }, and consumed by mark channel props (e.g. `x`, `y`).', members: [ { name: '__askrPlotExpression', @@ -7180,18 +8029,23 @@ export const apiSymbolSets: Readonly< anchor: 'channel-expression-kind', signature: 'ChannelExpressionKind: any', typeOnly: true, + summary: + 'The discriminant `kind` values a {@link ChannelExpression} may carry.', }, { name: 'ChannelInput', anchor: 'channel-input', signature: 'ChannelInput: any', typeOnly: true, + summary: + 'Anything usable as a mark channel input: a field name, an accessor, or a channel expression.', }, { name: 'ColorChannelInput', anchor: 'color-channel-input', signature: 'ColorChannelInput: any', typeOnly: true, + summary: 'A channel input resolving to a color-scale-compatible value.', }, { name: 'constant', @@ -7199,24 +8053,35 @@ export const apiSymbolSets: Readonly< signature: 'constant: (value: Value) => ChannelExpression', typeOnly: true, + summary: + 'A channel expression that always resolves to the same fixed value for every row.', }, { name: 'count', anchor: 'count', signature: 'count: () => ChannelExpression', typeOnly: true, + summary: 'Counts the number of rows in each group.', }, { name: 'createPlot', anchor: 'create-plot', signature: 'createPlot: () => PlotFactory', typeOnly: true, + summary: + 'Creates a self-contained set of plot components (`Root`, marks, scales, and\nannotations) bound to a single row type.', + tags: { + example: [ + 'const Plot = createPlot<{ x: number; y: number }>();\n\n \n', + ], + }, }, { name: 'CrosshairProps', anchor: 'crosshair-props', signature: 'CrosshairProps: any', typeOnly: true, + summary: 'Props for `Plot.Crosshair`.', members: [ { name: 'axes', @@ -7230,6 +8095,8 @@ export const apiSymbolSets: Readonly< anchor: 'field-of-type', signature: 'FieldOfType: any', typeOnly: true, + summary: + 'The field names of `Row` whose (non-nullable) value type is assignable to `Value`.', }, { name: 'filterRows', @@ -7237,18 +8104,23 @@ export const apiSymbolSets: Readonly< signature: 'filterRows: (predicate: (row: Readonly, index: number) => boolean) => RowTransform', typeOnly: true, + summary: + 'A row transform that keeps only rows for which `predicate` returns true.', }, { name: 'FollowLatest', anchor: 'follow-latest', signature: 'FollowLatest: any', typeOnly: true, + summary: + '`RootProps.followLatest` shorthand: a bare number is treated as a row count\n(equivalent to `{ rows: n }`).', }, { name: 'FollowLatestRows', anchor: 'follow-latest-rows', signature: 'FollowLatestRows: any', typeOnly: true, + summary: 'Keep only the most recent N rows; see {@link FollowLatest}.', members: [ { name: 'rows', @@ -7262,6 +8134,8 @@ export const apiSymbolSets: Readonly< anchor: 'follow-latest-time', signature: 'FollowLatestTime: any', typeOnly: true, + summary: + 'Keep only rows within a trailing time window of a temporal field; see {@link FollowLatest}.', members: [ { name: 'durationMs', @@ -7280,6 +8154,7 @@ export const apiSymbolSets: Readonly< anchor: 'grid-props', signature: 'GridProps: any', typeOnly: true, + summary: 'Props for `Plot.Grid`.', members: [ { name: 'scale', @@ -7304,12 +8179,14 @@ export const apiSymbolSets: Readonly< signature: 'group: { (input: Field): ChannelExpression; (input: ChannelInput): ChannelExpression; }', typeOnly: true, + summary: "Groups rows by a channel's distinct values.", }, { name: 'LegendProps', anchor: 'legend-props', signature: 'LegendProps: any', typeOnly: true, + summary: 'Props for `Plot.Legend`.', members: [ { name: 'scale', @@ -7338,6 +8215,7 @@ export const apiSymbolSets: Readonly< anchor: 'line-props', signature: 'LineProps: any', typeOnly: true, + summary: 'Props for `Plot.Line`.', members: [ { name: 'x', @@ -7359,6 +8237,12 @@ export const apiSymbolSets: Readonly< summary: '', signature: 'strokeWidth?: number;', }, + { + name: 'dash', + summary: + 'Explicit stroke dash pattern. When omitted, a multi-series line mark cycles\naccessible dash patterns; pass an empty array to keep every series solid.', + signature: 'dash?: readonly number[];', + }, { name: 'defined', summary: '', @@ -7371,6 +8255,7 @@ export const apiSymbolSets: Readonly< anchor: 'mark-base-props', signature: 'MarkBaseProps: any', typeOnly: true, + summary: 'Props shared by all mark components.', members: [ { name: 'data', @@ -7436,12 +8321,15 @@ export const apiSymbolSets: Readonly< signature: 'mean: { (input: Field): ChannelExpression; (input: NumericChannelInput): ChannelExpression; }', typeOnly: true, + summary: 'Averages a numeric channel across each group.', }, { name: 'MeterSemantics', anchor: 'meter-semantics', signature: 'MeterSemantics: any', typeOnly: true, + summary: + "ARIA `meter` role semantics applied to the plot's graphic region.", members: [ { name: 'role', @@ -7476,6 +8364,7 @@ export const apiSymbolSets: Readonly< signature: 'movingAverage: { (input: Field, options: Omit): ChannelExpression; (input: NumericChannelInput, options: Omit): ChannelExpression; }', typeOnly: true, + summary: 'Shorthand for {@link movingWindow} with `operation: "mean"`.', }, { name: 'movingWindow', @@ -7483,12 +8372,15 @@ export const apiSymbolSets: Readonly< signature: 'movingWindow: { (input: Field, options: MovingWindowOptions): ChannelExpression; (input: NumericChannelInput, options: MovingWindowOptions): ChannelExpression; }', typeOnly: true, + summary: + 'Applies a sliding-window aggregate (sum, mean, min, or max) to a numeric channel.', }, { name: 'MovingWindowOptions', anchor: 'moving-window-options', signature: 'MovingWindowOptions: any', typeOnly: true, + summary: 'Options for {@link movingWindow } and {@link movingAverage }.', members: [ { name: 'window', @@ -7513,18 +8405,22 @@ export const apiSymbolSets: Readonly< signature: 'normalize: { (input: Field): ChannelExpression; (input: NumericChannelInput): ChannelExpression; }', typeOnly: true, + summary: + "Normalizes a numeric channel's values within each group to a 0–1 (or proportional) range.", }, { name: 'NumericChannelInput', anchor: 'numeric-channel-input', signature: 'NumericChannelInput: any', typeOnly: true, + summary: 'A channel input resolving to a number.', }, { name: 'NumericField', anchor: 'numeric-field', signature: 'NumericField: any', typeOnly: true, + summary: 'Field names of `Row` holding numbers.', }, { name: 'partition', @@ -7532,12 +8428,15 @@ export const apiSymbolSets: Readonly< signature: 'partition: (options: PartitionOptions) => RowTransform', typeOnly: true, + summary: + 'A row transform that builds a hierarchy (e.g. for treemap/icicle-style marks) from flat rows.', }, { name: 'PartitionOptions', anchor: 'partition-options', signature: 'PartitionOptions: any', typeOnly: true, + summary: 'Options for {@link partition }.', members: [ { name: 'id', @@ -7573,6 +8472,8 @@ export const apiSymbolSets: Readonly< anchor: 'plot-api', signature: 'PlotApi: any', typeOnly: true, + summary: + 'The imperative API exposed for a rendered plot, delivered via `RootProps.onApiChange`.', members: [ { name: 'resetView', @@ -7612,18 +8513,22 @@ export const apiSymbolSets: Readonly< anchor: 'plot-channel-value', signature: 'PlotChannelValue: any', typeOnly: true, + summary: 'A channel value, allowing for missing data.', }, { name: 'PlotData', anchor: 'plot-data', signature: 'PlotData: any', typeOnly: true, + summary: + 'The data a plot consumes: a readonly array of rows, or a function producing one.', }, { name: 'PlotDataExportOptions', anchor: 'plot-data-export-options', signature: 'PlotDataExportOptions: any', typeOnly: true, + summary: 'Options for {@link PlotApi.exportData}.', members: [ { name: 'view', @@ -7652,6 +8557,8 @@ export const apiSymbolSets: Readonly< anchor: 'plot-export-view-options', signature: 'PlotExportViewOptions: any', typeOnly: true, + summary: + 'Options shared by the plot export methods that capture a rendered view.', members: [ { name: 'view', @@ -7670,6 +8577,8 @@ export const apiSymbolSets: Readonly< anchor: 'plot-factory', signature: 'PlotFactory: any', typeOnly: true, + summary: + 'The set of components returned by {@link createPlot } for a given row type.', members: [ { name: 'Root', @@ -7773,18 +8682,22 @@ export const apiSymbolSets: Readonly< anchor: 'plot-heading-level', signature: 'PlotHeadingLevel: any', typeOnly: true, + summary: + 'A valid heading level (`h1`–`h6`) for `RootProps.headingLevel`.', }, { name: 'PlotInteractionOrigin', anchor: 'plot-interaction-origin', signature: 'PlotInteractionOrigin: any', typeOnly: true, + summary: 'How a plot interaction was triggered.', }, { name: 'PlotInteractionTarget', anchor: 'plot-interaction-target', signature: 'PlotInteractionTarget: any', typeOnly: true, + summary: 'The mark instance a pointer/keyboard interaction resolved to.', members: [ { name: 'row', @@ -7834,12 +8747,15 @@ export const apiSymbolSets: Readonly< anchor: 'plot-key', signature: 'PlotKey: any', typeOnly: true, + summary: + 'A row identity: any string or number usable as a stable key for a plot row.', }, { name: 'PlotPngExportOptions', anchor: 'plot-png-export-options', signature: 'PlotPngExportOptions: any', typeOnly: true, + summary: 'Options for {@link PlotApi.exportPng}.', members: [ { name: 'pixelRatio', @@ -7858,18 +8774,22 @@ export const apiSymbolSets: Readonly< anchor: 'plot-row-key', signature: 'PlotRowKey: any', typeOnly: true, + summary: + "How to derive a row's stable {@link PlotKey}: a field name or an accessor function.", }, { name: 'PlotScalar', anchor: 'plot-scalar', signature: 'PlotScalar: any', typeOnly: true, + summary: 'A primitive value a plot channel may resolve to.', }, { name: 'PlotSelection', anchor: 'plot-selection', signature: 'PlotSelection: any', typeOnly: true, + summary: 'The set of row keys currently selected via `Plot.Select`.', members: [ { name: 'keys', @@ -7883,6 +8803,8 @@ export const apiSymbolSets: Readonly< anchor: 'plot-summary-context', signature: 'PlotSummaryContext: any', typeOnly: true, + summary: + "Context passed to a `RootProps.summary` function to compute the plot's summary text.", members: [ { name: 'rows', @@ -7916,6 +8838,7 @@ export const apiSymbolSets: Readonly< anchor: 'plot-svg-export-options', signature: 'PlotSvgExportOptions: any', typeOnly: true, + summary: 'Options for {@link PlotApi.exportSvg}.', members: [ { name: 'includeOverlays', @@ -7929,6 +8852,8 @@ export const apiSymbolSets: Readonly< anchor: 'plot-view', signature: 'PlotView: any', typeOnly: true, + summary: + "The visible domain of a plot's scales, used for `view`/`defaultView`.", members: [ { name: 'x', @@ -7953,6 +8878,7 @@ export const apiSymbolSets: Readonly< anchor: 'point-props', signature: 'PointProps: any', typeOnly: true, + summary: 'Props for `Plot.Point`.', members: [ { name: 'x', @@ -7971,7 +8897,8 @@ export const apiSymbolSets: Readonly< }, { name: 'shape', - summary: '', + summary: + 'Explicit point shape. When omitted, a multi-series point mark cycles shapes\nso color is not the only default series encoding.', signature: 'shape?: "circle" | "square" | "diamond";', }, ], @@ -7981,18 +8908,22 @@ export const apiSymbolSets: Readonly< anchor: 'primitive-component', signature: 'PrimitiveComponent: any', typeOnly: true, + summary: 'A plot component that renders `Props` to a `JSXElement`.', }, { name: 'PrimitiveKind', anchor: 'primitive-kind', signature: 'PrimitiveKind: any', typeOnly: true, + summary: + 'The keys of {@link PlotFactory} that identify a mark/annotation primitive (excludes `Root`).', }, { name: 'RectProps', anchor: 'rect-props', signature: 'RectProps: any', typeOnly: true, + summary: 'Props for `Plot.Rect`.', members: [ { name: 'x', @@ -8027,12 +8958,15 @@ export const apiSymbolSets: Readonly< signature: 'regression: { (input: Field, options?: { x?: string; method?: "linear"; }): ChannelExpression; (input: NumericChannelInput, options?: RegressionOptions): ChannelExpression; }', typeOnly: true, + summary: + 'Fits a regression curve (currently linear) to a numeric channel against an x channel.', }, { name: 'RegressionOptions', anchor: 'regression-options', signature: 'RegressionOptions: any', typeOnly: true, + summary: 'Options for {@link regression }.', members: [ { name: 'x', @@ -8052,12 +8986,15 @@ export const apiSymbolSets: Readonly< signature: 'removePlotRows: (rows: readonly Row[], keys: readonly PlotKey[] | ReadonlySet | ((row: Readonly, index: number) => boolean), rowKey?: PlotRowKey) => readonly Row[]', typeOnly: true, + summary: + 'Removes rows matching a predicate, or by key (requires `rowKey` when `keys` is an array/set).\nReturns the original `rows` reference unchanged if nothing was removed.', }, { name: 'RootProps', anchor: 'root-props', signature: 'RootProps: any', typeOnly: true, + summary: "Props accepted by a plot factory's `Root` component.", members: [ { name: 'data', @@ -8199,48 +9136,60 @@ export const apiSymbolSets: Readonly< anchor: 'row-accessor', signature: 'RowAccessor: any', typeOnly: true, + summary: + 'A function that reads a channel value from a row and its index.', }, { name: 'RowChannelInput', anchor: 'row-channel-input', signature: 'RowChannelInput: any', typeOnly: true, + summary: + 'A channel input restricted to row-level (non-aggregating) expression kinds.', }, { name: 'RowColorChannelInput', anchor: 'row-color-channel-input', signature: 'RowColorChannelInput: any', typeOnly: true, + summary: + '{@link RowChannelInput} resolving to a color-scale-compatible value.', }, { name: 'RowField', anchor: 'row-field', signature: 'RowField: any', typeOnly: true, + summary: 'The string-keyed field names of a row type.', }, { name: 'RowNumericChannelInput', anchor: 'row-numeric-channel-input', signature: 'RowNumericChannelInput: any', typeOnly: true, + summary: '{@link RowChannelInput} resolving to a number.', }, { name: 'RowScaleChannelInput', anchor: 'row-scale-channel-input', signature: 'RowScaleChannelInput: any', typeOnly: true, + summary: '{@link RowChannelInput} for a positional/categorical scale.', }, { name: 'RowTextChannelInput', anchor: 'row-text-channel-input', signature: 'RowTextChannelInput: any', typeOnly: true, + summary: '{@link RowChannelInput} resolving to a displayable text value.', }, { name: 'RowTransform', anchor: 'row-transform', signature: 'RowTransform: any', typeOnly: true, + summary: + "A serialized row-level transform produced by helpers such as {@link filterRows },\n{@link sortRows }, or {@link partition }, and applied to a mark's `data` via `transform`.", members: [ { name: '__askrPlotTransform', @@ -8269,12 +9218,15 @@ export const apiSymbolSets: Readonly< anchor: 'row-transform-kind', signature: 'RowTransformKind: any', typeOnly: true, + summary: + 'The discriminant `kind` values a {@link RowTransform} may carry.', }, { name: 'RuleProps', anchor: 'rule-props', signature: 'RuleProps: any', typeOnly: true, + summary: 'Props for `Plot.Rule`.', members: [ { name: 'x', @@ -8313,24 +9265,30 @@ export const apiSymbolSets: Readonly< anchor: 'scale-channel-input', signature: 'ScaleChannelInput: any', typeOnly: true, + summary: 'A channel input for a positional/categorical scale.', }, { name: 'ScaleDomainValue', anchor: 'scale-domain-value', signature: 'ScaleDomainValue: any', typeOnly: true, + summary: + 'A scale domain value, including booleans (for ordinal/color scales).', }, { name: 'ScaleField', anchor: 'scale-field', signature: 'ScaleField: any', typeOnly: true, + summary: + 'Field names of `Row` usable as a scale channel (string, number, or Date).', }, { name: 'ScaleProps', anchor: 'scale-props', signature: 'ScaleProps: any', typeOnly: true, + summary: 'Props for `Plot.Scale`.', members: [ { name: 'name', @@ -8414,18 +9372,21 @@ export const apiSymbolSets: Readonly< anchor: 'scale-type', signature: 'ScaleType: any', typeOnly: true, + summary: 'The scale types supported by `Plot.Scale`.', }, { name: 'ScaleValue', anchor: 'scale-value', signature: 'ScaleValue: any', typeOnly: true, + summary: 'A value usable as a scale domain/range endpoint.', }, { name: 'SelectProps', anchor: 'select-props', signature: 'SelectProps: any', typeOnly: true, + summary: 'Props for `Plot.Select`.', members: [ { name: 'mode', @@ -8440,12 +9401,14 @@ export const apiSymbolSets: Readonly< signature: 'sortRows: (options: SortRowsOptions) => RowTransform', typeOnly: true, + summary: 'A row transform that sorts rows by a field or accessor.', }, { name: 'SortRowsOptions', anchor: 'sort-rows-options', signature: 'SortRowsOptions: any', typeOnly: true, + summary: 'Options for {@link sortRows }.', members: [ { name: 'by', @@ -8465,12 +9428,15 @@ export const apiSymbolSets: Readonly< signature: 'stack: { (input: Field, options?: StackOptions): ChannelExpression; (input: NumericChannelInput, options?: StackOptions): ChannelExpression; }', typeOnly: true, + summary: + "Stacks a numeric channel's values within each group, e.g. for stacked bar/area charts.", }, { name: 'StackOptions', anchor: 'stack-options', signature: 'StackOptions: any', typeOnly: true, + summary: 'Options for {@link stack }.', members: [ { name: 'offset', @@ -8491,24 +9457,28 @@ export const apiSymbolSets: Readonly< signature: 'sum: { (input: Field): ChannelExpression; (input: NumericChannelInput): ChannelExpression; }', typeOnly: true, + summary: 'Sums a numeric channel across each group.', }, { name: 'TemporalField', anchor: 'temporal-field', signature: 'TemporalField: any', typeOnly: true, + summary: 'Field names of `Row` holding `Date` values.', }, { name: 'TextChannelInput', anchor: 'text-channel-input', signature: 'TextChannelInput: any', typeOnly: true, + summary: 'A channel input resolving to a displayable text value.', }, { name: 'TextProps', anchor: 'text-props', signature: 'TextProps: any', typeOnly: true, + summary: 'Props for `Plot.Text`.', members: [ { name: 'x', @@ -8547,6 +9517,7 @@ export const apiSymbolSets: Readonly< anchor: 'tooltip-props', signature: 'TooltipProps: any', typeOnly: true, + summary: 'Props for `Plot.Tooltip`.', members: [ { name: 'channels', @@ -8572,12 +9543,16 @@ export const apiSymbolSets: Readonly< signature: 'trimPlotRows: (rows: readonly Row[], options: number | TrimPlotRowsOptions) => readonly Row[]', typeOnly: true, + summary: + 'Trims `rows` down to a trailing window, either by row count or by a duration relative to a\ntemporal field. A bare number is shorthand for `{ rows: number }`. Returns the original `rows`\nreference unchanged if nothing was trimmed.', }, { name: 'TrimPlotRowsOptions', anchor: 'trim-plot-rows-options', signature: 'TrimPlotRowsOptions: any', typeOnly: true, + summary: + 'Options for {@link trimPlotRows}: keep the last `rows` rows, or rows within `durationMs` of `now`.', }, { name: 'upsertPlotRows', @@ -8585,18 +9560,22 @@ export const apiSymbolSets: Readonly< signature: 'upsertPlotRows: (rows: readonly Row[], updates: readonly Row[] | Row, rowKey: PlotRowKey) => readonly Row[]', typeOnly: true, + summary: + 'Inserts or updates rows by key: rows whose key matches an existing row replace it in place,\nand new keys are appended. Throws if `updates` or the existing `rows` contain duplicate keys.', }, { name: 'WindowOperation', anchor: 'window-operation', signature: 'WindowOperation: any', typeOnly: true, + summary: 'Operations supported by moving-window expressions.', }, { name: 'ZoomProps', anchor: 'zoom-props', signature: 'ZoomProps: any', typeOnly: true, + summary: 'Props for `Plot.Zoom`.', members: [ { name: 'axes', @@ -8638,6 +9617,8 @@ export const apiSymbolSets: Readonly< anchor: 'ad-hoc-call', signature: 'AdHocCall: any', typeOnly: true, + summary: + "A one-off, untyped request description accepted by {@link createFetch}'s returned function.", members: [ { name: 'url', @@ -8716,18 +9697,24 @@ export const apiSymbolSets: Readonly< anchor: 'any-endpoint-descriptor', signature: 'AnyEndpointDescriptor: any', typeOnly: true, + summary: + 'An {@link EndpointDescriptor} with its type parameters erased, for use in generic contexts.', }, { name: 'ApiClient', anchor: 'api-client', signature: 'ApiClient: any', typeOnly: true, + summary: + 'A fully-typed client for an {@link ApiDefinition}, with one method per endpoint.', }, { name: 'ApiDefinition', anchor: 'api-definition', signature: 'ApiDefinition: any', typeOnly: true, + summary: + 'A named collection of endpoints plus optional API metadata, as produced by {@link defineApi }.', members: [ { name: 'endpoints', @@ -8746,6 +9733,8 @@ export const apiSymbolSets: Readonly< anchor: 'api-metadata', signature: 'ApiMetadata: any', typeOnly: true, + summary: + 'API-level (rather than per-endpoint) metadata, such as servers and security schemes.', members: [ { name: 'servers', @@ -8771,18 +9760,23 @@ export const apiSymbolSets: Readonly< anchor: 'array-buffer', signature: 'arrayBuffer: () => Codec', typeOnly: true, + summary: + 'Creates a codec that decodes any response body as an `ArrayBuffer`.', }, { name: 'blob', anchor: 'blob', signature: 'blob: () => Codec', typeOnly: true, + summary: 'Creates a codec that decodes any response body as a `Blob`.', }, { name: 'ClientOptions', anchor: 'client-options', signature: 'ClientOptions: any', typeOnly: true, + summary: + 'Options controlling how a {@link createClient } or {@link createFetch } client makes requests.', members: [ { name: 'baseUrl', @@ -8791,7 +9785,7 @@ export const apiSymbolSets: Readonly< }, { name: 'fetch', - summary: '', + summary: 'Custom transport, defaulting to the global `fetch`.', signature: 'fetch?: (request: Request) => Promise;', }, { @@ -8806,12 +9800,12 @@ export const apiSymbolSets: Readonly< }, { name: 'timeout', - summary: '', + summary: 'Request timeout in milliseconds.', signature: 'timeout?: number;', }, { name: 'middleware', - summary: '', + summary: 'Middleware chain applied to every request, in order.', signature: 'middleware?: readonly Middleware[];', }, ], @@ -8821,12 +9815,16 @@ export const apiSymbolSets: Readonly< anchor: 'client-result', signature: 'ClientResult: any', typeOnly: true, + summary: + 'The possible results of calling a typed client method for endpoint descriptor `D`.', }, { name: 'Codec', anchor: 'codec', signature: 'Codec: any', typeOnly: true, + summary: + 'Describes how a request or response body is serialized/deserialized:\nwhich wire format (`kind`), which media types it matches, and optionally\na {@link Validator} to parse/validate the decoded value.', members: [ { name: 'kind', @@ -8846,7 +9844,7 @@ export const apiSymbolSets: Readonly< }, { name: 'variants', - summary: '', + summary: 'For `kind: "content"`, the per-media-type codec variants.', signature: 'readonly variants?: Readonly>>;', }, @@ -8858,6 +9856,8 @@ export const apiSymbolSets: Readonly< signature: 'content: >(variants: T) => Codec<{ [K in keyof T]: T[K] extends Codec ? V : never; }[keyof T]>', typeOnly: true, + summary: + "Creates a content-negotiated codec that selects among `variants` by the response's\nmedia type, decoding with whichever variant matches.", }, { name: 'createClient', @@ -8865,6 +9865,8 @@ export const apiSymbolSets: Readonly< signature: 'createClient: (api: A, options?: ClientOptions) => ApiClient', typeOnly: true, + summary: + 'Builds a typed {@link ApiClient} from an {@link ApiDefinition}. Each endpoint becomes\na method that fills in the path, query, header, and body parameters, executes the\nrequest via {@link createFetch}, and returns a {@link ClientResult}.', }, { name: 'createFetch', @@ -8872,6 +9874,8 @@ export const apiSymbolSets: Readonly< signature: 'createFetch: (options?: ClientOptions) => (call: AdHocCall) => Promise', typeOnly: true, + summary: + 'Creates a low-level fetch function that builds a `Request` from an {@link AdHocCall},\nruns it through the configured middleware chain, and decodes the response with the\nmatching codec. Used internally by {@link createClient}, and usable directly for\nrequests without a full {@link EndpointDescriptor}.', }, { name: 'defineApi', @@ -8879,6 +9883,13 @@ export const apiSymbolSets: Readonly< signature: 'defineApi: >(endpoints: E, metadata?: ApiMetadata) => ApiDefinition>', typeOnly: true, + summary: + "Finalizes a map of {@link EndpointBuilder}s and/or raw {@link EndpointDescriptor}s into\na frozen {@link ApiDefinition}, stamping each endpoint's `operationId` from its key and\ndeep-freezing its parameters, security, responses, and errors.", + tags: { + example: [ + 'const api = defineApi({\n getUser: get("/users/{id}").returns(json()),\n});', + ], + }, }, { name: 'del', @@ -8886,18 +9897,23 @@ export const apiSymbolSets: Readonly< signature: 'del: (path: string) => EndpointBuilder', typeOnly: true, + summary: 'Starts building a DELETE endpoint at the given path.', }, { name: 'empty', anchor: 'empty', signature: 'empty: () => Codec', typeOnly: true, + summary: + 'Creates a codec for bodies expected to be empty (e.g. 204 No Content), decoded as `undefined`.', }, { name: 'EndpointBuilder', anchor: 'endpoint-builder', signature: 'EndpointBuilder: any', typeOnly: true, + summary: + "Fluent, immutable builder for describing a single endpoint's params, query,\nheaders, body, responses, errors, and security requirements. Each method\nreturns a new builder reflecting the added configuration; the accumulated\nstate is finalized into an {@link EndpointDescriptor} by {@link defineApi}.", members: [ { name: 'params', @@ -8954,6 +9970,8 @@ export const apiSymbolSets: Readonly< anchor: 'endpoint-descriptor', signature: 'EndpointDescriptor: any', typeOnly: true, + summary: + 'Describes a single API endpoint: its method, path, parameters, body, and possible responses.', members: [ { name: 'method', @@ -9019,18 +10037,24 @@ export const apiSymbolSets: Readonly< anchor: 'failure-kind', signature: 'FailureKind: any', typeOnly: true, + summary: + 'Categorizes why a fetch could not produce an {@link HttpResult} or {@link SuccessResult}.', }, { name: 'FailureResult', anchor: 'failure-result', signature: 'FailureResult: any', typeOnly: true, + summary: + 'A fetch outcome that failed before or independently of receiving a decodable HTTP response.', }, { name: 'FetchError', anchor: 'fetch-error', signature: 'FetchError: typeof FetchError', typeOnly: true, + summary: + 'An `Error` thrown by {@link unwrap} that wraps a failed (non-`ok`) {@link FetchResult}.', members: [ { name: 'result', @@ -9045,6 +10069,8 @@ export const apiSymbolSets: Readonly< anchor: 'fetch-result', signature: 'FetchResult: any', typeOnly: true, + summary: + 'The outcome of a fetch call: success, an HTTP-level error, or another kind of failure.', }, { name: 'get', @@ -9052,6 +10078,7 @@ export const apiSymbolSets: Readonly< signature: 'get: (path: string) => EndpointBuilder', typeOnly: true, + summary: 'Starts building a GET endpoint at the given path.', }, { name: 'head', @@ -9059,30 +10086,36 @@ export const apiSymbolSets: Readonly< signature: 'head: (path: string) => EndpointBuilder', typeOnly: true, + summary: 'Starts building a HEAD endpoint at the given path.', }, { name: 'HttpMethod', anchor: 'http-method', signature: 'HttpMethod: any', typeOnly: true, + summary: 'The set of HTTP methods supported by endpoint descriptors.', }, { name: 'HttpResult', anchor: 'http-result', signature: 'HttpResult: any', typeOnly: true, + summary: + 'A non-2xx fetch outcome where the server responded with a decodable error body.', }, { name: 'InferCodec', anchor: 'infer-codec', signature: 'InferCodec: any', typeOnly: true, + summary: 'Infers the decoded value type `T` from a {@link Codec}.', }, { name: 'InferValidator', anchor: 'infer-validator', signature: 'InferValidator: any', typeOnly: true, + summary: 'Infers the parsed output type `T` from a {@link Validator}.', }, { name: 'json', @@ -9090,24 +10123,32 @@ export const apiSymbolSets: Readonly< signature: 'json: { (): Codec; (schema: V): Codec ? T : never>; }', typeOnly: true, + summary: + 'Creates a JSON codec, matching `application/json` and `+json` suffixed media types.\nCreates a JSON codec that validates/parses the decoded value with the given schema.', }, { name: 'Middleware', anchor: 'middleware', signature: 'Middleware: any', typeOnly: true, + summary: + 'A function that can inspect/replace the request context and/or the result of calling `next`.', }, { name: 'multipart', anchor: 'multipart', signature: 'multipart: () => Codec', typeOnly: true, + summary: + 'Creates a codec for `multipart/form-data` bodies, decoded as `FormData`.', }, { name: 'Next', anchor: 'next', signature: 'Next: any', typeOnly: true, + summary: + 'Invokes the next middleware in the chain, optionally passing a replacement context.', }, { name: 'options', @@ -9115,18 +10156,23 @@ export const apiSymbolSets: Readonly< signature: 'options: (path: string) => EndpointBuilder', typeOnly: true, + summary: 'Starts building an OPTIONS endpoint at the given path.', }, { name: 'ParameterMap', anchor: 'parameter-map', signature: 'ParameterMap: any', typeOnly: true, + summary: + 'Maps parameter names to either a bare {@link Validator} or a full\n{@link ParameterSpec} describing serialization and validation.', }, { name: 'ParameterSpec', anchor: 'parameter-spec', signature: 'ParameterSpec: any', typeOnly: true, + summary: + 'Serialization and validation settings for a single path, query, or header parameter.', members: [ { name: 'validator', @@ -9150,6 +10196,8 @@ export const apiSymbolSets: Readonly< anchor: 'parameter-style', signature: 'ParameterStyle: any', typeOnly: true, + summary: + 'OpenAPI-style serialization styles for path, query, and header parameters.', }, { name: 'patch', @@ -9157,12 +10205,20 @@ export const apiSymbolSets: Readonly< signature: 'patch: (path: string) => EndpointBuilder', typeOnly: true, + summary: 'Starts building a PATCH endpoint at the given path.', }, { name: 'pathNames', anchor: 'path-names', signature: 'pathNames: (path: string) => string[]', typeOnly: true, + summary: + 'Extracts the ordered list of `{param}` placeholder names from an endpoint path.', + tags: { + throws: [ + '{TypeError} If the path uses colon/wildcard syntax, has malformed\n`{...}` placeholders, or contains a duplicate parameter name.', + ], + }, }, { name: 'post', @@ -9170,6 +10226,7 @@ export const apiSymbolSets: Readonly< signature: 'post: (path: string) => EndpointBuilder', typeOnly: true, + summary: 'Starts building a POST endpoint at the given path.', }, { name: 'put', @@ -9177,12 +10234,15 @@ export const apiSymbolSets: Readonly< signature: 'put: (path: string) => EndpointBuilder', typeOnly: true, + summary: 'Starts building a PUT endpoint at the given path.', }, { name: 'RequestContext', anchor: 'request-context', signature: 'RequestContext: any', typeOnly: true, + summary: + 'The mutable-by-replacement state threaded through the middleware chain for a single request.', members: [ { name: 'request', @@ -9206,12 +10266,20 @@ export const apiSymbolSets: Readonly< }, { name: 'attempt', - summary: '', + summary: + '1 on the first attempt, incremented by middleware (e.g. {@link retry }) on subsequent attempts.', signature: 'readonly attempt: number;', }, + { + name: 'replayableBody', + summary: + 'Whether a body was encoded from a replayable value; streaming bodies set this to `false`.', + signature: 'readonly replayableBody?: boolean;', + }, { name: 'deadline', - summary: '', + summary: + 'Absolute timestamp (ms since epoch) by which the request must complete, if a timeout is set.', signature: 'readonly deadline?: number;', }, ], @@ -9221,36 +10289,48 @@ export const apiSymbolSets: Readonly< anchor: 'stream', signature: 'stream: () => Codec>', typeOnly: true, + summary: + 'Creates a codec that exposes the raw response body as a `ReadableStream`, without buffering it.', }, { name: 'SuccessResult', anchor: 'success-result', signature: 'SuccessResult: any', typeOnly: true, + summary: + 'A successful (2xx) fetch outcome, carrying the decoded response data.', }, { name: 'text', anchor: 'text', signature: 'text: () => Codec', typeOnly: true, + summary: + 'Creates a codec for plain text bodies (`text/*`), decoded as a string.', }, { name: 'unwrap', anchor: 'unwrap', signature: 'unwrap: (result: FetchResult) => T', typeOnly: true, + summary: + 'Returns the data of a successful {@link FetchResult}, or throws a {@link FetchError}\nwrapping the result if it was not `ok`.', }, { name: 'urlEncoded', anchor: 'url-encoded', signature: 'urlEncoded: () => Codec', typeOnly: true, + summary: + 'Creates a codec for `application/x-www-form-urlencoded` bodies, decoded as `URLSearchParams`.', }, { name: 'Validator', anchor: 'validator', signature: 'Validator: any', typeOnly: true, + summary: + 'A minimal schema-validation contract, compatible with libraries such as Zod\nthat expose a `safeParse` method (e.g. via a thin adapter).', members: [ { name: 'safeParse', @@ -9268,6 +10348,8 @@ export const apiSymbolSets: Readonly< signature: 'apiKeyAuth: ({ key, value, in: location }: { key: string; value: string | (() => string | Promise); in?: "header" | "query"; }) => Middleware', typeOnly: true, + summary: + 'Middleware that attaches an API key to every request, either as a header or a query\nparameter (`in`, default `"header"`). `value` may be a static string or a (possibly\nasync) function resolved on each request. The key is marked sensitive so the\n{@link logging} middleware redacts it.', }, { name: 'bearerAuth', @@ -9275,6 +10357,8 @@ export const apiSymbolSets: Readonly< signature: 'bearerAuth: ({ token }: { token: string | (() => string | Promise); }) => Middleware', typeOnly: true, + summary: + 'Middleware that attaches an `Authorization: Bearer ` header to every request.\n`token` may be a static string or a (possibly async) function resolved on each request.', }, { name: 'logging', @@ -9282,37 +10366,46 @@ export const apiSymbolSets: Readonly< signature: 'logging: (logger?: { log(event: Record): void; }) => Middleware', typeOnly: true, + summary: + 'Middleware that logs a `"request"` event before and a `"response"` event after each\nrequest, via the given logger (defaults to `console`). Headers and query parameters\nmarked sensitive (e.g. by {@link apiKeyAuth}) or matching common sensitive-name\npatterns (authorization, cookie, token, secret, password, api key) are redacted.', }, { name: 'retry', anchor: 'retry', signature: 'retry: (options?: RetryOptions) => Middleware', typeOnly: true, + summary: + "Middleware that retries failed requests. Retries eligible methods on network failures\nor eligible response statuses, honoring a `Retry-After` header when present and\nstopping early if the request's deadline would be exceeded. A non-streaming request body\nis replayed only when it can be cloned before the first attempt; streaming, already-consumed,\nor otherwise non-cloneable bodies are sent once without retrying.", }, { name: 'RetryOptions', anchor: 'retry-options', signature: 'RetryOptions: any', typeOnly: true, + summary: "Options controlling the {@link retry} middleware's behavior.", members: [ { name: 'attempts', - summary: '', + summary: + 'Maximum number of attempts, including the first. Defaults to 3.', signature: 'attempts?: number;', }, { name: 'methods', - summary: '', + summary: + 'HTTP methods eligible for retry. Defaults to idempotent-by-convention methods.', signature: 'methods?: readonly string[];', }, { name: 'statuses', - summary: '', + summary: + 'Response statuses that trigger a retry. Defaults to common transient failure codes.', signature: 'statuses?: readonly number[];', }, { name: 'delay', - summary: '', + summary: + 'Computes the delay (ms) before the given retry attempt, if no `Retry-After` header is present.', signature: 'delay?: (attempt: number) => number;', }, ], @@ -9322,26 +10415,32 @@ export const apiSymbolSets: Readonly< anchor: 'telemetry', signature: 'telemetry: (hooks: TelemetryHooks) => Middleware', typeOnly: true, + summary: + 'Middleware that wraps each request with {@link TelemetryHooks}, calling `start` before\nthe request, `end` after it completes, and `error` (then rethrowing) if it throws.', }, { name: 'TelemetryHooks', anchor: 'telemetry-hooks', signature: 'TelemetryHooks: any', typeOnly: true, + summary: + 'Hooks invoked by the {@link telemetry} middleware around each request.', members: [ { name: 'start', - summary: '', + summary: + 'Called before the request proceeds; its return value (a "span") is passed to `end`/`error`.', signature: 'start?(context: RequestContext): unknown;', }, { name: 'end', - summary: '', + summary: + "Called after the request completes successfully (from this middleware's perspective).", signature: 'end?(span: unknown, result: FetchResult): void;', }, { name: 'error', - summary: '', + summary: 'Called if a downstream middleware or the transport throws.', signature: 'error?(span: unknown, error: unknown): void;', }, ], @@ -9353,12 +10452,14 @@ export const apiSymbolSets: Readonly< anchor: 'catalog', signature: 'Catalog: any', typeOnly: true, + summary: 'Read-only map of message keys to typed message functions.', }, { name: 'CatalogMessage', anchor: 'catalog-message', signature: 'CatalogMessage: any', typeOnly: true, + summary: 'Typed message function in a locale catalog.', }, { name: 'createI18n', @@ -9368,54 +10469,63 @@ export const apiSymbolSets: Readonly< typeOnly: true, summary: 'Creates an application-owned internationalization service.\n\nCatalog values are ordinary typed TypeScript functions. Locale selection is\nintentionally left to the application and installed lexically through Scope.', + tags: { + param: [ + 'sourceLocale Locale whose message keys and argument tuples define the contract.', + 'catalogs Complete, argument-compatible catalogs for every locale.', + ], + returns: ['A typed internationalization service.'], + }, }, { name: 'I18n', anchor: 'i18n', signature: 'I18n: any', typeOnly: true, + summary: + 'Typed internationalization service backed by aligned locale catalogs.', members: [ { name: 'catalogs', - summary: '', + summary: 'Frozen catalogs supplied at creation time.', signature: 'readonly catalogs: Readonly;', }, { name: 'Scope', - summary: '', + summary: 'JSX scope component that installs the active locale.', signature: 'readonly Scope: (props: I18nScopeProps>) => JSXElement;', }, { name: 'text', - summary: '', + summary: 'Format a message in the active locale.', signature: 'text>(key: Key, ...args: MessageArgs>): string;', }, { name: 'format', - summary: '', + summary: 'Format a message in an explicitly selected locale.', signature: 'format, Key extends keyof Catalogs[Locale] & string>(locale: Locale, key: Key, ...args: MessageArgs): string;', }, { name: 'locale', - summary: '', + summary: 'Read the active locale.', signature: 'locale(): LocaleOf;', }, { name: 'direction', - summary: '', + summary: "Read the active locale's text direction.", signature: 'direction(): TextDirection;', }, { name: 'catalog', - summary: '', + summary: 'Read the active catalog identifier.', signature: 'catalog(): LocaleOf;', }, { name: 'dehydrate', - summary: '', + summary: 'Serialize the active locale state for hydration.', signature: 'dehydrate(): I18nHydration>;', }, ], @@ -9425,18 +10535,21 @@ export const apiSymbolSets: Readonly< anchor: 'i18n-hydration', signature: 'I18nHydration: any', typeOnly: true, + summary: 'Serializable locale state for SSR hydration.', }, { name: 'I18nScopeProps', anchor: 'i18n-scope-props', signature: 'I18nScopeProps: any', typeOnly: true, + summary: 'Props for installing locale state through the Scope component.', }, { name: 'TextDirection', anchor: 'text-direction', signature: 'TextDirection: any', typeOnly: true, + summary: 'Text direction used by a locale.', }, ], symbols31: [ @@ -9446,6 +10559,7 @@ export const apiSymbolSets: Readonly< signature: 'AppleLogo: { (props: LogoProps): import("@askrjs/askr/foundations").JSXElement; displayName: string; }', typeOnly: true, + summary: 'Apple logo icon component.', }, { name: 'createLogo', @@ -9453,6 +10567,20 @@ export const apiSymbolSets: Readonly< signature: 'createLogo: (displayName: string, logoNode: LogoNode) => { (props: LogoProps): JSXElement; displayName: string; }', typeOnly: true, + summary: + 'Builds a brand logo icon component from a set of SVG shape descriptors.\n\nValidates the given `logoNode` against an allow-list of safe SVG tags and\nattributes (rejecting any `url(...)` references in `fill`/`stroke`), then\nreturns a component that renders those shapes wrapped in `IconBase`,\nmatching the sizing/color conventions of other Askr icons.', + tags: { + param: [ + "displayName - Name used for the icon (`iconName`) and set as the\nreturned component's `displayName`.", + "logoNode - Read-only list of `[tag, attributes]` pairs describing\nthe logo's SVG shapes.", + ], + returns: [ + 'A component accepting {@link LogoProps} that renders the logo.', + ], + throws: [ + '{TypeError} If `logoNode` contains an unsupported tag/attribute,\na non-string attribute value, or a `url(...)` reference in `fill`/`stroke`.', + ], + }, }, { name: 'FacebookLogo', @@ -9460,6 +10588,7 @@ export const apiSymbolSets: Readonly< signature: 'FacebookLogo: { (props: LogoProps): import("@askrjs/askr/foundations").JSXElement; displayName: string; }', typeOnly: true, + summary: 'Facebook logo icon component.', }, { name: 'GitHubLogo', @@ -9467,6 +10596,7 @@ export const apiSymbolSets: Readonly< signature: 'GitHubLogo: { (props: LogoProps): import("@askrjs/askr/foundations").JSXElement; displayName: string; }', typeOnly: true, + summary: 'GitHub logo icon component.', }, { name: 'GoogleLogo', @@ -9474,36 +10604,46 @@ export const apiSymbolSets: Readonly< signature: 'GoogleLogo: { (props: LogoProps): import("@askrjs/askr/foundations").JSXElement; displayName: string; }', typeOnly: true, + summary: 'Google logo icon component.', }, { name: 'LogoAttribute', anchor: 'logo-attribute', signature: 'LogoAttribute: any', typeOnly: true, + summary: + 'SVG attribute names permitted on the elements of a {@link LogoNode}.', }, { name: 'LogoAttributes', anchor: 'logo-attributes', signature: 'LogoAttributes: any', typeOnly: true, + summary: + 'Map of allowed SVG attribute values, keyed by {@link LogoAttribute}.', }, { name: 'LogoNode', anchor: 'logo-node', signature: 'LogoNode: any', typeOnly: true, + summary: + "Ordered list of `[tag, attributes]` pairs describing a logo's SVG shapes.", }, { name: 'LogoProps', anchor: 'logo-props', signature: 'LogoProps: any', typeOnly: true, + summary: + 'Props accepted by logo components; identical to {@link IconProps}.', }, { name: 'LogoTag', anchor: 'logo-tag', signature: 'LogoTag: any', typeOnly: true, + summary: 'SVG element tags permitted inside a {@link LogoNode}.', }, { name: 'MicrosoftLogo', @@ -9511,6 +10651,7 @@ export const apiSymbolSets: Readonly< signature: 'MicrosoftLogo: { (props: LogoProps): import("@askrjs/askr/foundations").JSXElement; displayName: string; }', typeOnly: true, + summary: 'Microsoft logo icon component.', }, ], symbols32: [ @@ -16392,12 +17533,16 @@ export const apiSymbolSets: Readonly< anchor: 'icon-props', signature: 'IconProps: any', typeOnly: true, + summary: + 'Full prop set accepted by {@link IconBase} and generated icon components.', }, { name: 'IconSizeToken', anchor: 'icon-size-token', signature: 'IconSizeToken: any', typeOnly: true, + summary: + 'Named icon size presets, mapped to CSS variables at render time.', }, { name: 'IdCardIcon', @@ -23672,6 +24817,8 @@ export const apiSymbolSets: Readonly< anchor: 'monaco-before-mount', signature: 'MonacoBeforeMount: any', typeOnly: true, + summary: + 'Hook run after Monaco loads but before the editor instance is created.', }, { name: 'MonacoEditor', @@ -23686,12 +24833,15 @@ export const apiSymbolSets: Readonly< anchor: 'monaco-editor-instance', signature: 'MonacoEditorInstance: any', typeOnly: true, + summary: 'A live Monaco standalone code editor instance.', }, { name: 'MonacoEditorOptions', anchor: 'monaco-editor-options', signature: 'MonacoEditorOptions: any', typeOnly: true, + summary: + 'Monaco standalone editor construction options, excluding the fields that\n`MonacoEditorProps` manages directly (`model`, `value`, `language`, `theme`).', }, { name: 'MonacoEditorProps', @@ -23706,36 +24856,45 @@ export const apiSymbolSets: Readonly< anchor: 'monaco-error-handler', signature: 'MonacoErrorHandler: any', typeOnly: true, + summary: 'Handler invoked when loading Monaco or applying an edit fails.', }, { name: 'MonacoLoader', anchor: 'monaco-loader', signature: 'MonacoLoader: any', typeOnly: true, + summary: + "Loader invoked to resolve the Monaco namespace when `monaco` isn't provided directly.", }, { name: 'MonacoMountHandler', anchor: 'monaco-mount-handler', signature: 'MonacoMountHandler: any', typeOnly: true, + summary: + 'Handler invoked with the editor and Monaco namespace on mount or unmount.', }, { name: 'MonacoNamespace', anchor: 'monaco-namespace', signature: 'MonacoNamespace: any', typeOnly: true, + summary: + 'The `monaco-editor` module namespace, either provided directly or resolved by `loadMonaco`.', }, { name: 'MonacoTextModel', anchor: 'monaco-text-model', signature: 'MonacoTextModel: any', typeOnly: true, + summary: 'A Monaco text model backing an editor instance.', }, { name: 'MonacoUri', anchor: 'monaco-uri', signature: 'MonacoUri: any', typeOnly: true, + summary: "A Monaco URI, used to identify a text model's path.", }, ], symbols34: [ @@ -23744,6 +24903,8 @@ export const apiSymbolSets: Readonly< anchor: 'monaco-before-mount', signature: 'MonacoBeforeMount: any', typeOnly: true, + summary: + 'Hook run after Monaco loads but before the editor instance is created.', }, { name: 'MonacoEditor', @@ -23758,12 +24919,15 @@ export const apiSymbolSets: Readonly< anchor: 'monaco-editor-instance', signature: 'MonacoEditorInstance: any', typeOnly: true, + summary: 'A live Monaco standalone code editor instance.', }, { name: 'MonacoEditorOptions', anchor: 'monaco-editor-options', signature: 'MonacoEditorOptions: any', typeOnly: true, + summary: + 'Monaco standalone editor construction options, excluding the fields that\n`MonacoEditorProps` manages directly (`model`, `value`, `language`, `theme`).', }, { name: 'MonacoEditorProps', @@ -23778,36 +24942,45 @@ export const apiSymbolSets: Readonly< anchor: 'monaco-error-handler', signature: 'MonacoErrorHandler: any', typeOnly: true, + summary: 'Handler invoked when loading Monaco or applying an edit fails.', }, { name: 'MonacoLoader', anchor: 'monaco-loader', signature: 'MonacoLoader: any', typeOnly: true, + summary: + "Loader invoked to resolve the Monaco namespace when `monaco` isn't provided directly.", }, { name: 'MonacoMountHandler', anchor: 'monaco-mount-handler', signature: 'MonacoMountHandler: any', typeOnly: true, + summary: + 'Handler invoked with the editor and Monaco namespace on mount or unmount.', }, { name: 'MonacoNamespace', anchor: 'monaco-namespace', signature: 'MonacoNamespace: any', typeOnly: true, + summary: + 'The `monaco-editor` module namespace, either provided directly or resolved by `loadMonaco`.', }, { name: 'MonacoTextModel', anchor: 'monaco-text-model', signature: 'MonacoTextModel: any', typeOnly: true, + summary: 'A Monaco text model backing an editor instance.', }, { name: 'MonacoUri', anchor: 'monaco-uri', signature: 'MonacoUri: any', typeOnly: true, + summary: "A Monaco URI, used to identify a text model's path.", }, ], symbols35: [ @@ -23862,11 +25035,21 @@ export const apiSymbolSets: Readonly< }, ], symbols36: [ + { + name: 'CLIENT_ADDRESS_HEADER', + anchor: 'client-address-header', + signature: 'CLIENT_ADDRESS_HEADER: "x-askr-client-address"', + typeOnly: true, + summary: + 'Reserved request header containing the TCP peer address authenticated by the Node adapter.\nAny value supplied by the HTTP client is overwritten before application dispatch.', + }, { name: 'ConnectNext', anchor: 'connect-next', signature: 'ConnectNext: any', typeOnly: true, + summary: + 'Connect/Express-style `next` callback used to hand off unhandled requests.', }, { name: 'createNodeHandler', @@ -23874,6 +25057,17 @@ export const apiSymbolSets: Readonly< signature: 'createNodeHandler: (app: ServerApp, options: NodeHandlerOptions) => NodeHandler', typeOnly: true, + summary: + 'Wraps an `@askrjs/server` application as a Node-style request handler.\n\nConverts each incoming `IncomingMessage`/`ServerResponse` pair into a web\n`Request`, dispatches it through `app.fetch`, and writes the resulting web\n`Response` back to Node. Errors are reported to `next` when provided,\notherwise a minimal 400/500 response is written directly.', + tags: { + param: [ + 'app - The application to dispatch requests to.', + 'options - Options controlling base URL resolution and host validation.', + ], + returns: [ + 'A handler usable with `http.createServer` or Connect-style middleware.', + ], + }, }, { name: 'listen', @@ -23881,62 +25075,83 @@ export const apiSymbolSets: Readonly< signature: 'listen: (app: ServerApp, options?: ListenOptions) => Promise', typeOnly: true, + summary: + 'Starts a Node HTTP server for an `@askrjs/server` application and resolves once it is listening.\n\nOptionally installs WebSocket support and wires up graceful shutdown on\n`options.signal`. Unlike {@link serve}, this does not serve static assets\nor install OS signal handlers.', + tags: { + param: [ + 'app - The application to serve.', + 'options - Listen options such as port, host, timeouts, and WebSocket support.', + ], + returns: [ + 'A promise resolving to the listening server once it has bound successfully.', + ], + example: ['const server = await listen(app, { port: 3000 });'], + }, }, { name: 'ListeningServer', anchor: 'listening-server', signature: 'ListeningServer: any', typeOnly: true, + summary: + 'A Node HTTP server that is guaranteed to be listening for connections.', }, { name: 'ListenOptions', anchor: 'listen-options', signature: 'ListenOptions: any', typeOnly: true, + summary: + 'Options for {@link listen}, controlling how the Node HTTP server binds and behaves.', members: [ { name: 'port', - summary: '', + summary: + 'Port to listen on; defaults to an ephemeral port when omitted.', signature: 'port?: number;', }, { name: 'host', - summary: '', + summary: 'Host/address to bind to.', signature: 'host?: string;', }, { name: 'allowPublicBind', - summary: '', + summary: + 'Allows binding to a non-loopback host without the usual safety check.', signature: 'allowPublicBind?: boolean;', }, { name: 'backlog', - summary: '', + summary: 'Maximum length of the queue of pending connections.', signature: 'backlog?: number;', }, { name: 'signal', - summary: '', + summary: 'Aborting this signal stops the server.', signature: 'signal?: AbortSignal;', }, { name: 'requestTimeout', - summary: '', + summary: + 'Node HTTP server `requestTimeout`, enforced from server construction, in milliseconds.', signature: 'requestTimeout?: number;', }, { name: 'headersTimeout', - summary: '', + summary: + 'Node HTTP server `headersTimeout`, enforced from server construction, in milliseconds.', signature: 'headersTimeout?: number;', }, { name: 'keepAliveTimeout', - summary: '', + summary: 'Node HTTP server `keepAliveTimeout`, in milliseconds.', signature: 'keepAliveTimeout?: number;', }, { name: 'websocket', - summary: '', + summary: + 'Enables WebSocket support, optionally with detailed options.', signature: 'websocket?: boolean | NodeWebSocketOptions;', }, ], @@ -23946,21 +25161,26 @@ export const apiSymbolSets: Readonly< anchor: 'node-handler', signature: 'NodeHandler: any', typeOnly: true, + summary: + 'A Node-style request handler compatible with `http.Server` and Connect-style middleware chains.', }, { name: 'NodeHandlerOptions', anchor: 'node-handler-options', signature: 'NodeHandlerOptions: any', typeOnly: true, + summary: + 'Options shared by anything that turns Node HTTP requests into `@askrjs/server` fetch calls.', members: [ { name: 'baseUrl', - summary: '', + summary: 'Base URL used to resolve request paths into absolute URLs.', signature: 'readonly baseUrl?: string;', }, { name: 'allowedHosts', - summary: '', + summary: + "Hosts allowed in the request's `Host` header; requests for other hosts are rejected.", signature: 'readonly allowedHosts?: readonly string[];', }, ], @@ -23970,61 +25190,93 @@ export const apiSymbolSets: Readonly< anchor: 'node-web-socket-options', signature: 'NodeWebSocketOptions: any', typeOnly: true, + summary: + 'Options controlling how WebSocket upgrades are handled on a Node server.', members: [ { name: 'closeTimeout', - summary: '', + summary: + 'Milliseconds to wait for a peer to acknowledge a close handshake before the socket is force-closed.', signature: 'readonly closeTimeout?: number;', }, { name: 'maxPayload', - summary: '', + summary: + 'Maximum allowed size, in bytes, of a single WebSocket message.', signature: 'readonly maxPayload?: number;', }, { name: 'maxRejectionBodyBytes', - summary: '', + summary: + 'Maximum number of body bytes read from a rejected upgrade request before the connection is destroyed.', signature: 'readonly maxRejectionBodyBytes?: number;', }, { name: 'perMessageDeflate', - summary: '', + summary: + 'Enables or configures the permessage-deflate WebSocket extension.', signature: 'readonly perMessageDeflate?: boolean | PerMessageDeflateOptions;', }, { name: 'allowedOrigins', - summary: '', + summary: + 'Origins allowed to open a WebSocket connection; when omitted, all origins are allowed.', signature: 'readonly allowedOrigins?: readonly string[];', }, ], }, + { + name: 'normalizeClientAddress', + anchor: 'normalize-client-address', + signature: + 'normalizeClientAddress: (address: string | undefined) => string', + typeOnly: true, + summary: + 'Normalizes the socket peer address used for the adapter-authenticated request header.', + }, { name: 'serve', anchor: 'serve', signature: 'serve: (app: ServerApp & { close?: () => void | Promise; }, options?: ServeOptions) => Promise', typeOnly: true, + summary: + "Serves an `@askrjs/server` application over Node HTTP, with optional static\nasset serving, WebSocket support, and graceful shutdown on OS signals or an\nabort signal.\n\nRequests for paths with a file extension are first checked against\n`options.assets.root` (path-traversal safe, following symlinks) and served\ndirectly with appropriate `content-type`/`cache-control` headers before\nfalling back to the application handler. HTML responses from the\napplication get a `no-cache` header when they don't already set\n`cache-control`.", + tags: { + param: [ + 'app - The application to serve; may expose an optional `close()` for cleanup.', + 'options - Serve options such as port, host, static assets, and shutdown signals.', + ], + returns: [ + 'The served application, including its bound `url` and a `close()` for shutdown.', + ], + example: [ + 'const app = await serve(myApp, { port: 3000, assets: { root: "./public" } });\n// ...\nawait app.close();', + ], + }, }, { name: 'ServedApplication', anchor: 'served-application', signature: 'ServedApplication: any', typeOnly: true, + summary: 'A running application returned by {@link serve}.', members: [ { name: 'server', - summary: '', + summary: 'The underlying Node HTTP server.', signature: 'readonly server: import("node:http").Server;', }, { name: 'url', - summary: '', + summary: 'The base URL the server is listening on.', signature: 'readonly url: string;', }, { name: 'close', - summary: '', + summary: + 'Gracefully shuts down the server, any WebSocket connections, and the application.', signature: 'close(): Promise;', }, ], @@ -24034,15 +25286,19 @@ export const apiSymbolSets: Readonly< anchor: 'serve-options', signature: 'ServeOptions: any', typeOnly: true, + summary: + 'Options for {@link serve}, extending {@link ListenOptions} with static asset serving and shutdown behavior.', members: [ { name: 'assets', - summary: '', + summary: + 'Serves static files from this directory before falling back to the application.', signature: 'readonly assets?: {\n readonly root: string;\n };', }, { name: 'signals', - summary: '', + summary: + 'OS signals that trigger a graceful shutdown; pass `false` to disable automatic shutdown handling.', signature: 'readonly signals?: false | readonly NodeJS.Signals[];', }, ], @@ -24055,21 +25311,35 @@ export const apiSymbolSets: Readonly< signature: 'connectMcpStdio: (mcp: McpServer, options: McpStdioOptions) => McpStdioConnection', typeOnly: true, + summary: + 'Connects an MCP server to newline-delimited JSON-RPC over stdio (or any\npair of readable/writable streams).\n\nReads one JSON-RPC message per line, dispatches it to `mcp.handle`, and\nwrites the response back as a line of JSON. Handles request cancellation\nnotifications, enforces `maxConcurrency` and `maxLineBytes`, and cleans up\nthe MCP session when the connection closes.', + tags: { + param: [ + 'mcp - The MCP server to dispatch requests to.', + 'options - Stdio connection options, including dependencies and stream overrides.', + ], + returns: [ + "A handle exposing `closed` and `close()` for the connection's lifecycle.", + ], + }, }, { name: 'McpStdioConnection', anchor: 'mcp-stdio-connection', signature: 'McpStdioConnection: any', typeOnly: true, + summary: + 'A live MCP stdio connection returned by {@link connectMcpStdio}.', members: [ { name: 'closed', - summary: '', + summary: 'Resolves once the connection has fully closed.', signature: 'readonly closed: Promise;', }, { name: 'close', - summary: '', + summary: + 'Closes the connection, aborting in-flight requests and terminating the MCP session.', signature: 'close(): Promise;', }, ], @@ -24079,51 +25349,60 @@ export const apiSymbolSets: Readonly< anchor: 'mcp-stdio-options', signature: 'McpStdioOptions: any', typeOnly: true, + summary: 'Options for {@link connectMcpStdio}.', members: [ { name: 'dependencies', - summary: '', + summary: + 'Application dependencies passed through to each MCP request.', signature: 'dependencies: Dependencies;', }, { name: 'input', - summary: '', + summary: + 'Stream to read newline-delimited JSON-RPC requests from; defaults to `process.stdin`.', signature: 'input?: Readable;', }, { name: 'output', - summary: '', + summary: + 'Stream to write newline-delimited JSON-RPC responses to; defaults to `process.stdout`.', signature: 'output?: Writable;', }, { name: 'diagnostics', - summary: '', + summary: + 'Stream that non-protocol errors are reported to; defaults to `process.stderr`.', signature: 'diagnostics?: Writable;', }, { name: 'signal', - summary: '', + summary: 'Aborting this signal closes the connection.', signature: 'signal?: AbortSignal;', }, { name: 'auth', - summary: '', + summary: + 'Auth context to use for requests, or a function that derives one from the environment.', signature: 'auth?: AuthContext | ((environment: NodeJS.ProcessEnv) => AuthContext | Promise);', }, { name: 'environment', - summary: '', + summary: + 'Environment passed to the `auth` function; defaults to `process.env`.', signature: 'environment?: NodeJS.ProcessEnv;', }, { name: 'maxLineBytes', - summary: '', + summary: + 'Maximum size, in bytes, of a single input line before it is rejected; defaults to 1 MiB.', signature: 'maxLineBytes?: number;', }, { name: 'maxConcurrency', - summary: '', + summary: + 'Maximum number of requests handled concurrently; defaults to 16.', signature: 'maxConcurrency?: number;', }, ], @@ -24143,83 +25422,98 @@ export const apiSymbolSets: Readonly< anchor: 'telemetry', signature: 'Telemetry: any', typeOnly: true, + summary: + "Function-first bridge to the application's installed OpenTelemetry provider.\nEvery method wraps a unit of work in a span (or emits a log line) and never\nthrows on account of tracing/logging failures — application behavior is\nalways isolated from observability failures.", members: [ { name: 'span', - summary: '', + summary: + 'Wraps `work` in a span for the given `operation`, recording `fields` as attributes.', signature: 'span(operation: TelemetryOperation, fields: TelemetryFields, work: () => T): T;', }, { name: 'request', - summary: '', + summary: + 'Convenience wrapper for {@link Telemetry.span} with operation `"askr.request"`.', signature: 'request(fields: TelemetryFields, work: () => T): T;', }, { name: 'routeMatch', - summary: '', + summary: + 'Convenience wrapper for {@link Telemetry.span} with operation `"askr.route.match"`.', signature: 'routeMatch(fields: TelemetryFields, work: () => T): T;', }, { name: 'loader', - summary: '', + summary: + 'Convenience wrapper for {@link Telemetry.span} with operation `"askr.loader"`.', signature: 'loader(fields: TelemetryFields, work: () => T): T;', }, { name: 'action', - summary: '', + summary: + 'Convenience wrapper for {@link Telemetry.span} with operation `"askr.action"`.', signature: 'action(fields: TelemetryFields, work: () => T): T;', }, { name: 'apiOperation', - summary: '', + summary: + 'Convenience wrapper for {@link Telemetry.span} with operation `"askr.api.operation"`.', signature: 'apiOperation(fields: TelemetryFields, work: () => T): T;', }, { name: 'queryPrefetch', - summary: '', + summary: + 'Convenience wrapper for {@link Telemetry.span} with operation `"askr.query.prefetch"`.', signature: 'queryPrefetch(fields: TelemetryFields, work: () => T): T;', }, { name: 'ssrRender', - summary: '', + summary: + 'Convenience wrapper for {@link Telemetry.span} with operation `"askr.ssr.render"`.', signature: 'ssrRender(fields: TelemetryFields, work: () => T): T;', }, { name: 'viteDocument', - summary: '', + summary: + 'Convenience wrapper for {@link Telemetry.span} with operation `"askr.vite.document"`.', signature: 'viteDocument(fields: TelemetryFields, work: () => T): T;', }, { name: 'log', - summary: '', + summary: 'Emits a single sanitized log line without opening a span.', signature: 'log(level: TelemetryLevel, event: TelemetryOperation, fields?: TelemetryFields): void;', }, { name: 'extract', - summary: '', + summary: + 'Extracts a trace {@link Context} from a carrier (e.g. incoming request headers) using `getter`.', signature: 'extract(carrier: Carrier, getter: TextMapGetter): Context;', }, { name: 'inject', - summary: '', + summary: + 'Injects the active (or given) {@link Context} into `carrier` using `setter`, returning the carrier.', signature: 'inject(carrier: Carrier, setter: TextMapSetter, value?: Context): Carrier;', }, { name: 'withContext', - summary: '', + summary: + 'Runs `work` with `value` as the active OpenTelemetry context.', signature: 'withContext(value: Context, work: () => T): T;', }, { name: 'traceId', - summary: '', + summary: + 'Returns the trace ID of the currently active span, if any and if valid.', signature: 'traceId(): string | undefined;', }, ], @@ -24229,6 +25523,8 @@ export const apiSymbolSets: Readonly< anchor: 'telemetry-fields', signature: 'TelemetryFields: any', typeOnly: true, + summary: + 'Structured fields attached to a span or log line. Only these known keys are\never sanitized and forwarded; unknown keys on a passed-in object are dropped.', members: [ { name: 'requestId', @@ -24272,53 +25568,63 @@ export const apiSymbolSets: Readonly< anchor: 'telemetry-level', signature: 'TelemetryLevel: any', typeOnly: true, + summary: + 'Severity of a telemetry log line, mirrored from common structured-logging conventions.', }, { name: 'TelemetryLogger', anchor: 'telemetry-logger', signature: 'TelemetryLogger: any', typeOnly: true, + summary: 'Callback invoked with each sanitized telemetry log line.', }, { name: 'TelemetryOperation', anchor: 'telemetry-operation', signature: 'TelemetryOperation: any', typeOnly: true, + summary: + 'The set of Askr lifecycle stages that {@link Telemetry} can wrap with a span.', }, { name: 'TelemetryOptions', anchor: 'telemetry-options', signature: 'TelemetryOptions: any', typeOnly: true, + summary: 'Configuration accepted by {@link createTelemetry}.', members: [ { name: 'tracerName', - summary: '', + summary: + 'Name passed to `trace.getTracer`. Defaults to `"@askrjs/otel"`.', signature: 'tracerName?: string;', }, { name: 'tracerVersion', - summary: '', + summary: 'Version passed to `trace.getTracer`.', signature: 'tracerVersion?: string;', }, { name: 'logger', - summary: '', + summary: 'Sink for sanitized log lines. Defaults to a no-op.', signature: 'logger?: TelemetryLogger;', }, { name: 'now', - summary: '', + summary: + 'Clock used for span durations. Defaults to `performance.now`.', signature: 'now?: () => number;', }, { name: 'maxFieldLength', - summary: '', + summary: + 'Maximum length, in characters, retained for any string field. Defaults to 256.', signature: 'maxFieldLength?: number;', }, { name: 'sanitizeField', - summary: '', + summary: + 'Per-field hook to redact or transform a field before it is logged or attached to a span; return `undefined` to drop it.', signature: 'sanitizeField?: (name: keyof TelemetryFields, value: string | number) => string | number | undefined;', }, @@ -24338,26 +25644,31 @@ export const apiSymbolSets: Readonly< anchor: 'infer-schema', signature: 'InferSchema: any', typeOnly: true, + summary: 'Infers the parsed value type of a {@link Schema}.', }, { name: 'Issue', anchor: 'issue', signature: 'Issue: any', typeOnly: true, + summary: + 'A single validation failure produced by {@link Schema.safeParse}.', members: [ { name: 'path', - summary: '', + summary: + 'Location of the offending value, as a sequence of object keys and/or array indices.', signature: 'readonly path: readonly (string | number)[];', }, { name: 'message', - summary: '', + summary: 'Human-readable description of the failure.', signature: 'readonly message: string;', }, { name: 'code', - summary: '', + summary: + 'Stable machine-readable failure code, e.g. `"invalid_type"` or `"too_small"`.', signature: 'readonly code: string;', }, ], @@ -24367,6 +25678,8 @@ export const apiSymbolSets: Readonly< anchor: 'json-schema', signature: 'JsonSchema: any', typeOnly: true, + summary: + 'A frozen, deterministic JSON Schema (draft 2020-12) object produced by a {@link Schema}.', }, { name: 'ObjectSchema', @@ -24388,6 +25701,8 @@ export const apiSymbolSets: Readonly< anchor: 'optional-schema', signature: 'OptionalSchema: any', typeOnly: true, + summary: + 'A {@link Schema} produced by {@link schema.optional} that permits `undefined` values.', members: [ { name: '__optional', @@ -24401,33 +25716,46 @@ export const apiSymbolSets: Readonly< anchor: 'safe-parse-result', signature: 'SafeParseResult: any', typeOnly: true, + summary: + 'The outcome of parsing a value: either the validated data, or the list of issues found.', }, { name: 'schema', anchor: 'schema-2', signature: - 'schema: Readonly<{ string: typeof string; uuid: (options?: StringOptions) => Schema; email: (options?: StringOptions) => Schema; uri: (options?: StringOptions) => Schema; date: (options?: StringOptions) => Schema; dateTime: (options?: StringOptions) => Schema; byte: (options?: StringOptions) => Schema; binary: (options?: StringOptions) => Schema; number: (options?: NumberOptions) => Schema; integer: (options?: NumberOptions) => Schema; boolean: (options?: CommonOptions) => Schema; null: (options?: CommonOptions) => Schema; object: typeof object; array: typeof array; record: (values: Schema, options?: CommonOptions) => ObjectSchema>; enum: (values: T, options?: CommonOptions) => Schema; literal: (value: T, options?: CommonOptions) => Schema; optional: (value: Schema) => OptionalSchema; nullable: (value: Schema) => Schema; oneOf: (...values: T) => Schema>; anyOf: (...values: T) => Schema>; allOf: (...values: T) => Schema>>; raw: (jsonSchema: JsonSchema, safeParse: (value: unknown) => SafeParseResult) => Schema; }>', + 'schema: Readonly<{ string: typeof string; uuid: (options?: StringOptions) => Schema; email: (options?: StringOptions) => Schema; uri: (options?: StringOptions) => Schema; date: (options?: StringOptions) => Schema; dateTime: (options?: StringOptions) => Schema; byte: (options?: StringOptions) => Schema; binary: (options?: StringOptions) => Schema; number: (options?: NumberOptions) => Schema; integer: (options?: NumberOptions) => Schema; boolean: (options?: CommonOptions) => Schema; null: (options?: CommonOptions) => Schema; object: typeof object; array: typeof array; record: (values: Schema, options?: CommonOptions) => ObjectSchema>; enum: (values: T, options?: CommonOptions) => Schema; literal: (value: T, options?: CommonOptions) => Schema; optional: (value: Schema) => OptionalSchema; nullable: (value: T) => NullableSchema; oneOf: (...values: T) => Schema>; anyOf: (...values: T) => Schema>; allOf: (...values: T) => Schema>>; raw: (jsonSchema: JsonSchema, safeParse: (value: unknown) => SafeParseResult) => Schema; }>', typeOnly: true, + summary: + 'The public schema builder namespace: create executable schemas whose {@link Schema.safeParse}\nvalidates a value and whose `jsonSchema` field is a deterministic JSON Schema (draft 2020-12)\nprojection suitable for OpenAPI documents.', + tags: { + example: [ + 'const user = schema.object({ id: schema.uuid(), name: schema.string({ minLength: 1 }) });\nconst result = user.safeParse({ id: "...", name: "Ada" });', + ], + }, }, { name: 'Schema', anchor: 'schema', signature: 'Schema: any', typeOnly: true, + summary: + 'An executable schema: carries its JSON Schema projection and a runtime parser.', members: [ { name: 'jsonSchema', - summary: '', + summary: + 'The deterministic JSON Schema (draft 2020-12) projection of this schema.', signature: 'readonly jsonSchema: JsonSchema;', }, { name: '__type', - summary: '', + summary: 'Phantom type marker only; never set at runtime.', signature: 'readonly __type?: T;', }, { name: 'safeParse', - summary: '', + summary: + 'Validates `value`, returning either the parsed data or a list of issues.', signature: 'safeParse(value: unknown): SafeParseResult;', }, ], @@ -24437,6 +25765,8 @@ export const apiSymbolSets: Readonly< anchor: 'string-format', signature: 'StringFormat: any', typeOnly: true, + summary: + 'Supported `format` values for {@link schema.string} and its format-specific shorthands.', }, ], symbols40: [ @@ -24446,18 +25776,24 @@ export const apiSymbolSets: Readonly< signature: 'accepted: (value?: JsonValue, init?: ResponseInit) => Response', typeOnly: true, + summary: + 'Builds a `202 Accepted` response; JSON-serializes `value` if given, otherwise an empty body.', }, { name: 'AccessDeniedHandler', anchor: 'access-denied-handler', signature: 'AccessDeniedHandler: any', typeOnly: true, + summary: + 'Handler invoked to produce a response when an auth decision denies access.', }, { name: 'ApiRoute', anchor: 'api-route', signature: 'ApiRoute: any', typeOnly: true, + summary: + 'A single registered route: a path/method pattern paired with a handler (or WebSocket upgrade handler).', members: [ { name: 'path', @@ -24486,6 +25822,7 @@ export const apiSymbolSets: Readonly< anchor: 'api-route-options', signature: 'ApiRouteOptions: any', typeOnly: true, + summary: 'Per-route configuration shared by {@link ApiRoute}.', members: [ { name: 'auth', @@ -24509,6 +25846,8 @@ export const apiSymbolSets: Readonly< anchor: 'auth-credentials', signature: 'AuthCredentials: any', typeOnly: true, + summary: + 'Email/password credentials submitted to the register or authenticate endpoints.', members: [ { name: 'email', @@ -24527,6 +25866,8 @@ export const apiSymbolSets: Readonly< anchor: 'auth-route-error', signature: 'AuthRouteError: typeof AuthRouteError', typeOnly: true, + summary: + 'Error thrown from `register`/`authenticate`/etc. callbacks to short-circuit an auth route with a specific status.', members: [ { name: 'status', @@ -24540,6 +25881,7 @@ export const apiSymbolSets: Readonly< anchor: 'auth-route-options', signature: 'AuthRouteOptions: any', typeOnly: true, + summary: 'Configuration for {@link registerAuthRoutes}.', members: [ { name: 'issuer', @@ -24592,6 +25934,7 @@ export const apiSymbolSets: Readonly< anchor: 'bad', signature: 'bad: (detail?: string, init?: ResponseInit) => Response', typeOnly: true, + summary: 'Alias for {@link badRequest}.', }, { name: 'badRequest', @@ -24599,6 +25942,7 @@ export const apiSymbolSets: Readonly< signature: 'badRequest: (detail?: string, init?: ResponseInit) => Response', typeOnly: true, + summary: 'Builds a `400 Bad Request` Problem Details response.', }, { name: 'bind', @@ -24606,12 +25950,25 @@ export const apiSymbolSets: Readonly< signature: 'bind: >(context: BindContext) => Promise', typeOnly: true, + summary: + "Merges a request's body, query string, and path parameters into a single object, in that\nprecedence order (path parameters win, then query string, then body). Supports JSON,\nURL-encoded, and multipart/form-data bodies; unrecognized content types yield an empty body.", + tags: { + param: [ + 'context - The request, URL, query, and path parameters to bind from.', + ], + returns: ['The merged values, cast to `T`.'], + throws: [ + '{BindingError} If the body cannot be read or parsed for its declared content type.', + ], + }, }, { name: 'BindContext', anchor: 'bind-context', signature: 'BindContext: any', typeOnly: true, + summary: + 'Minimal request context required by {@link bind} to gather body, query, and path values.', members: [ { name: 'request', @@ -24640,6 +25997,8 @@ export const apiSymbolSets: Readonly< anchor: 'binding-error', signature: 'BindingError: typeof BindingError', typeOnly: true, + summary: + 'Error thrown when request data cannot be bound, e.g. an unreadable or malformed body.', members: [ { name: 'field', @@ -24658,12 +26017,16 @@ export const apiSymbolSets: Readonly< anchor: 'challenge', signature: 'challenge: (options?: ChallengeOptions) => Response', typeOnly: true, + summary: + 'Builds a `401`/`407` Problem Details response with a `WWW-Authenticate` (or\n`Proxy-Authenticate` for `407`) challenge header.', }, { name: 'ChallengeOptions', anchor: 'challenge-options', signature: 'ChallengeOptions: any', typeOnly: true, + summary: + 'Options for building a `WWW-Authenticate` challenge response via {@link ServerContext.challenge}.', members: [ { name: 'scheme', @@ -24698,18 +26061,23 @@ export const apiSymbolSets: Readonly< signature: 'clearCookie: (response: Response, name: string, options?: CookieOptions) => Response', typeOnly: true, + summary: + 'Returns a clone of `response` with a `Set-Cookie` header that expires and clears `name`.', }, { name: 'conflict', anchor: 'conflict', signature: 'conflict: (detail?: string, init?: ResponseInit) => Response', typeOnly: true, + summary: 'Builds a `409 Conflict` Problem Details response.', }, { name: 'CookieOptions', anchor: 'cookie-options', signature: 'CookieOptions: any', typeOnly: true, + summary: + 'Options controlling how a cookie is set via {@link ServerContext.setCookie}.', members: [ { name: 'domain', @@ -24753,12 +26121,18 @@ export const apiSymbolSets: Readonly< anchor: 'cookie-same-site', signature: 'CookieSameSite: any', typeOnly: true, + summary: 'Valid values for the `SameSite` cookie attribute.', }, { name: 'createCspNonce', anchor: 'create-csp-nonce', signature: 'createCspNonce: () => CspNonceProvider', typeOnly: true, + summary: + 'Creates a {@link CspNonceProvider} that lazily generates a cryptographically random,\nURL-safe base64 nonce per {@link ServerContext} and caches it for the lifetime of that\ncontext, so repeated calls within the same request return the same value.', + tags: { + returns: ['A provider function `(context) => nonce`.'], + }, }, { name: 'created', @@ -24766,6 +26140,8 @@ export const apiSymbolSets: Readonly< signature: 'created: (value?: JsonValue, init?: ResponseInit) => Response', typeOnly: true, + summary: + 'Builds a `201 Created` response; JSON-serializes `value` if given, otherwise an empty body.', }, { name: 'createEventStream', @@ -24773,12 +26149,30 @@ export const apiSymbolSets: Readonly< signature: 'createEventStream: (options?: EventStreamOptions) => EventStream', typeOnly: true, + summary: + 'Creates a Server-Sent Events stream backed by a `text/event-stream` `Response`, with\nbounded backpressure-aware writes, optional heartbeat comments, and automatic closing when\n`options.signal` aborts or `close()` is called.', + tags: { + param: [ + 'options - Stream configuration (abort signal, heartbeat interval, backpressure, headers).', + ], + returns: [ + 'An {@link EventStream} exposing the response plus `send`/`comment`/`close` methods.', + ], + throws: [ + '{TypeError} If `highWaterMark` or `heartbeatInterval` are not positive safe integers.', + ], + }, }, { name: 'createRouter', anchor: 'create-router', signature: 'createRouter: () => Router', typeOnly: true, + summary: + 'Creates an empty, mutable {@link Router} with chainable HTTP-method route builders\n(`get`, `post`, `put`, `patch`, `delete`, `options`, `head`, `trace`, `connect`, `ws`) and a\n`use` method for registering middleware.', + tags: { + returns: ['A new router instance.'], + }, }, { name: 'createServerApp', @@ -24786,18 +26180,37 @@ export const apiSymbolSets: Readonly< signature: 'createServerApp: { (router: Router): ServerApp; (options?: ServerAppOptions): ServerApp; }', typeOnly: true, + summary: + "Creates a transport-neutral server application that dispatches Web `Request`s to a\nrouter's routes and middleware, returning Web `Response`s.\n\nAccepts either a bare {@link Router} or a full {@link ServerAppOptions} object (which\nmay itself reference a router). Builds a path matcher from the combined routes, validates\nrequest-size limits, and wraps dispatch with auth resolution, telemetry, and error handling\n(payload-too-large, malformed path parameters, binding errors, and a fallback `onError`).\nCreates a transport-neutral server application. See the {@link Router} overload for details.", + tags: { + param: [ + 'router - A router whose routes and middleware should back the application.', + 'options - Configuration including router, routes, middleware, auth, telemetry,\nerror handling, and request-size limits.', + ], + returns: [ + 'A {@link ServerApp} exposing a `fetch(request, dispatchOptions)` method.', + 'A {@link ServerApp} exposing a `fetch(request, dispatchOptions)` method.', + ], + example: [ + 'const app = createServerApp(router);\nexport default { fetch: app.fetch };', + ], + }, }, { name: 'CspNonceProvider', anchor: 'csp-nonce-provider', signature: 'CspNonceProvider: any', typeOnly: true, + summary: + 'A function that returns a CSP nonce for a given request context, stable across calls for the same context.', }, { name: 'DEFAULT_MAX_REQUEST_BYTES', anchor: 'default-max-request-bytes', signature: 'DEFAULT_MAX_REQUEST_BYTES: 1048576', typeOnly: true, + summary: + 'Default maximum request body size, in bytes (1 MiB), used when no limit is configured.', }, { name: 'defineRoutes', @@ -24805,6 +26218,14 @@ export const apiSymbolSets: Readonly< signature: 'defineRoutes: (definition: (route: RouteBuilder) => void) => ApiRoute[]', typeOnly: true, + summary: + 'Builds a flat list of {@link ApiRoute}s by invoking `definition` with a {@link RouteBuilder}.\nUseful for defining a set of routes without a full {@link Router} (e.g. to compose into one).', + tags: { + param: [ + 'definition - Callback that registers routes via the provided builder.', + ], + returns: ['The collected routes.'], + }, }, { name: 'error', @@ -24812,12 +26233,16 @@ export const apiSymbolSets: Readonly< signature: 'error: (status?: number, detail?: string, init?: ResponseInit) => Response', typeOnly: true, + summary: + 'Builds a Problem Details error response with a configurable status (default `500`).', }, { name: 'EventStream', anchor: 'event-stream', signature: 'EventStream: any', typeOnly: true, + summary: + 'A live Server-Sent Events stream, backed by a streaming `Response`.', members: [ { name: 'response', @@ -24831,12 +26256,14 @@ export const apiSymbolSets: Readonly< }, { name: 'send', - summary: '', + summary: + 'Queues an event in order. Await or otherwise handle the returned promise before producing\nwithout bound. Rejects with `QuotaExceededError` when the pending-write limit is full.', signature: 'send(event: ServerSentEvent): Promise;', }, { name: 'comment', - summary: '', + summary: + 'Queues an SSE comment in order. Rejects with `QuotaExceededError` when the pending-write\nlimit is full.', signature: 'comment(value: string): Promise;', }, { @@ -24851,20 +26278,23 @@ export const apiSymbolSets: Readonly< anchor: 'event-stream-options', signature: 'EventStreamOptions: any', typeOnly: true, + summary: 'Options for {@link createEventStream}.', members: [ { name: 'signal', - summary: '', + summary: 'Aborting this signal closes the stream.', signature: 'signal?: AbortSignal;', }, { name: 'heartbeatInterval', - summary: '', + summary: + 'If set, sends a `heartbeat` comment on this interval (in ms) to keep the connection alive.', signature: 'heartbeatInterval?: number;', }, { name: 'highWaterMark', - summary: '', + summary: + 'Backpressure threshold for the underlying `ReadableStream` and maximum number of\nunresolved `send()`/`comment()` calls admitted at once. Defaults to 16.', signature: 'highWaterMark?: number;', }, { @@ -24880,18 +26310,28 @@ export const apiSymbolSets: Readonly< signature: 'forbidden: (detail?: string, init?: ResponseInit) => Response', typeOnly: true, + summary: 'Builds a `403 Forbidden` Problem Details response.', }, { name: 'formatServerSentEvent', anchor: 'format-server-sent-event', signature: 'formatServerSentEvent: (event: ServerSentEvent) => string', typeOnly: true, + summary: + 'Serializes a {@link ServerSentEvent} to the `text/event-stream` wire format, escaping\nmulti-line data/comment fields and validating that `event`/`id` contain no line breaks.', + tags: { + throws: [ + '{TypeError} If `event`, `id`, or `retry` contain invalid characters/values.', + ], + }, }, { name: 'Handler', anchor: 'handler', signature: 'Handler: any', typeOnly: true, + summary: + 'A route handler function that produces a response for a given {@link ServerContext}.', }, { name: 'internalServerError', @@ -24899,18 +26339,22 @@ export const apiSymbolSets: Readonly< signature: 'internalServerError: (detail?: string, init?: ResponseInit) => Response', typeOnly: true, + summary: 'Builds a `500 Internal Server Error` Problem Details response.', }, { name: 'json', anchor: 'json', signature: 'json: (value: JsonValue, init?: ResponseInit) => Response', typeOnly: true, + summary: + 'Builds a `200 OK`-shaped JSON response, serializing `value` and setting the JSON content type.', }, { name: 'JsonValue', anchor: 'json-value', signature: 'JsonValue: any', typeOnly: true, + summary: 'A value that can be serialized as JSON.', }, { name: 'methodNotAllowed', @@ -24918,30 +26362,38 @@ export const apiSymbolSets: Readonly< signature: 'methodNotAllowed: (allow?: string | readonly string[], init?: ResponseInit) => Response', typeOnly: true, + summary: + 'Builds a `405 Method Not Allowed` Problem Details response, setting the `Allow` header if given.', }, { name: 'Middleware', anchor: 'middleware', signature: 'Middleware: any', typeOnly: true, + summary: + 'A middleware function that may short-circuit or delegate to `next` to produce a response.', }, { name: 'Next', anchor: 'next', signature: 'Next: any', typeOnly: true, + summary: + 'Continuation function passed to a {@link Middleware}, invoking the next handler in the chain.', }, { name: 'noContent', anchor: 'no-content', signature: 'noContent: (init?: ResponseInit) => Response', typeOnly: true, + summary: 'Builds a `204 No Content` response with an empty body.', }, { name: 'notFound', anchor: 'not-found', signature: 'notFound: (detail?: string, init?: ResponseInit) => Response', typeOnly: true, + summary: 'Builds a `404 Not Found` Problem Details response.', }, { name: 'notImplemented', @@ -24949,30 +26401,38 @@ export const apiSymbolSets: Readonly< signature: 'notImplemented: (detail?: string, init?: ResponseInit) => Response', typeOnly: true, + summary: 'Builds a `501 Not Implemented` Problem Details response.', }, { name: 'ok', anchor: 'ok', signature: 'ok: (value?: JsonValue, init?: ResponseInit) => Response', typeOnly: true, + summary: + 'Builds a `200 OK` response; JSON-serializes `value` if given, otherwise an empty body.', }, { name: 'Params', anchor: 'params', signature: 'Params: any', typeOnly: true, + summary: 'A map of route path parameter names to their string values.', }, { name: 'PathParams', anchor: 'path-params', signature: 'PathParams: any', typeOnly: true, + summary: + 'Infers a {@link Params}-shaped object type from a route path pattern, extracting the names\nof `{param}` and `{*param}` segments as required string keys.', }, { name: 'PayloadTooLargeError', anchor: 'payload-too-large-error', signature: 'PayloadTooLargeError: typeof PayloadTooLargeError', typeOnly: true, + summary: + 'Error thrown when a request body exceeds the configured maximum size.', members: [ { name: 'status', @@ -24986,12 +26446,16 @@ export const apiSymbolSets: Readonly< anchor: 'probe-handler', signature: 'ProbeHandler: any', typeOnly: true, + summary: + 'A health-check handler used for liveness/readiness/startup probes.', }, { name: 'ProbeOptions', anchor: 'probe-options', signature: 'ProbeOptions: any', typeOnly: true, + summary: + 'Optional handlers for the built-in `livez`/`readyz`/`startupz`/`targetz` health probe routes.', members: [ { name: 'livez', @@ -25020,6 +26484,8 @@ export const apiSymbolSets: Readonly< anchor: 'probe-result', signature: 'ProbeResult: any', typeOnly: true, + summary: + 'Result of a health probe: `true`/`false` for pass/fail, a `Response` to return as-is, or `void` for pass.', }, { name: 'problem', @@ -25027,12 +26493,16 @@ export const apiSymbolSets: Readonly< signature: 'problem: (status: number, detail?: string, options?: ProblemOptions & { init?: ResponseInit; }) => Response', typeOnly: true, + summary: + 'Builds an RFC 9457 `application/problem+json` response, defaulting `type` to `about:blank`\nand `title` to a standard reason phrase for the given `status` (falling back to "HTTP Error").', }, { name: 'Problem', anchor: 'problem', signature: 'Problem: any', typeOnly: true, + summary: + 'An RFC 9457 Problem Details object, as produced by {@link ServerContext.problem}.', members: [ { name: 'type', @@ -25066,6 +26536,7 @@ export const apiSymbolSets: Readonly< anchor: 'problem-options', signature: 'ProblemOptions: any', typeOnly: true, + summary: 'Optional fields used to customize a {@link Problem} response.', members: [ { name: 'type', @@ -25095,6 +26566,16 @@ export const apiSymbolSets: Readonly< signature: 'readRequestBytes: (request: Request, maximum?: number) => Promise', typeOnly: true, + summary: + 'Reads a request body into memory as raw bytes, enforcing a maximum size. The result is\ncached per-request so subsequent reads (e.g. for JSON, text, or form data) reuse the same\nbuffered bytes instead of re-reading the stream.', + tags: { + param: [ + 'request - The request whose body to read.', + "maximum - Maximum allowed size in bytes; defaults to the request's configured limit.", + ], + returns: ['The full body as a `Uint8Array`.'], + throws: ['{PayloadTooLargeError} If the body exceeds `maximum`.'], + }, }, { name: 'readRequestFormData', @@ -25102,6 +26583,16 @@ export const apiSymbolSets: Readonly< signature: 'readRequestFormData: (request: Request, maximum?: number) => Promise', typeOnly: true, + summary: + 'Reads a request body and parses it as `multipart/form-data`, enforcing a maximum size.', + tags: { + param: [ + 'request - The request whose body to read.', + "maximum - Maximum allowed size in bytes; defaults to the request's configured limit.", + ], + returns: ['The parsed form data.'], + throws: ['{PayloadTooLargeError} If the body exceeds `maximum`.'], + }, }, { name: 'readRequestText', @@ -25109,6 +26600,15 @@ export const apiSymbolSets: Readonly< signature: 'readRequestText: (request: Request, maximum?: number) => Promise', typeOnly: true, + summary: + 'Reads and decodes a request body as UTF-8 text, enforcing a maximum size.', + tags: { + param: [ + 'request - The request whose body to read.', + "maximum - Maximum allowed size in bytes; defaults to the request's configured limit.", + ], + throws: ['{PayloadTooLargeError} If the body exceeds `maximum`.'], + }, }, { name: 'redirect', @@ -25116,6 +26616,8 @@ export const apiSymbolSets: Readonly< signature: 'redirect: (location: string, status?: 301 | 302 | 303 | 307 | 308) => Response', typeOnly: true, + summary: + 'Builds a redirect response with an empty body and a `Location` header. Defaults to `302 Found`.', }, { name: 'registerAuthRoutes', @@ -25123,18 +26625,30 @@ export const apiSymbolSets: Readonly< signature: 'registerAuthRoutes: (api: Pick, "group">, options: AuthRouteOptions

) => void', typeOnly: true, + summary: + 'Registers a standard set of authentication routes (`POST /auth/v1/accounts`,\n`GET/POST /auth/v1/session`, `DELETE /auth/v1/session`) on an OpenAPI-style API/group,\nhandling registration, login, session lookup, and logout with CSRF protection via a\nsame-origin `Origin` header check, per-attempt rate limiting, and cookie-based token storage.', + tags: { + param: [ + 'api - The API or group to register routes on (only its `group` method is used).', + 'options - Issuer, cookie configuration, principal schema, and register/authenticate/\nallowAttempt/revoke/redirect callbacks.', + ], + }, }, { name: 'RequestState', anchor: 'request-state', signature: 'RequestState: any', typeOnly: true, + summary: + 'Arbitrary per-request state bag attached to a {@link ServerContext}.', }, { name: 'RouteBuilder', anchor: 'route-builder', signature: 'RouteBuilder: any', typeOnly: true, + summary: + 'Chainable, per-HTTP-method route registration methods, one per method plus `ws` for WebSockets.', members: [ { name: 'route', @@ -25209,6 +26723,8 @@ export const apiSymbolSets: Readonly< anchor: 'router', signature: 'Router: any', typeOnly: true, + summary: + 'A mutable collection of routes and middleware, built with chainable per-method registration\nmethods (each returning the router itself for chaining) and a `use` method for middleware.', members: [ { name: 'routes', @@ -25299,16 +26815,30 @@ export const apiSymbolSets: Readonly< signature: 'safeRedirect: (fallback: string, options?: SafeRedirectOptions) => (value: unknown) => string', typeOnly: true, + summary: + 'Creates a validator that resolves an untrusted redirect target to a safe, same-origin,\nrelative path — or to `fallback` if the value is unsafe (absolute, protocol-relative,\ncontains a scheme, control characters, `..` traversal, backslashes, or an unwanted hash).', + tags: { + param: [ + 'fallback - The safe path to use when the requested value is not itself safe. Must\nitself pass the safety check, or this function throws.', + 'options - Redirect validation options.', + ], + returns: [ + 'A function `(value) => path` that returns `value` if safe, otherwise `fallback`.', + ], + throws: ['{Error} If `fallback` is not itself a safe path.'], + }, }, { name: 'SafeRedirectOptions', anchor: 'safe-redirect-options', signature: 'SafeRedirectOptions: any', typeOnly: true, + summary: 'Options for {@link safeRedirect}.', members: [ { name: 'allowHash', - summary: '', + summary: + 'Allow redirect targets that include a URL fragment (`#...`). Defaults to disallowed.', signature: 'readonly allowHash?: boolean;', }, ], @@ -25318,6 +26848,8 @@ export const apiSymbolSets: Readonly< anchor: 'server-app', signature: 'ServerApp: any', typeOnly: true, + summary: + 'A configured server application, as returned by {@link createServerApp }.', members: [ { name: 'fetch', @@ -25332,6 +26864,8 @@ export const apiSymbolSets: Readonly< anchor: 'server-app-options', signature: 'ServerAppOptions: any', typeOnly: true, + summary: + 'Options accepted by {@link createServerApp } to configure a server application.', members: [ { name: 'router', @@ -25396,6 +26930,8 @@ export const apiSymbolSets: Readonly< anchor: 'server-context', signature: 'ServerContext: any', typeOnly: true, + summary: + 'The per-request context passed to handlers and middleware, bundling the incoming request,\nparsed URL/params/query, auth state, and a family of response-building helper methods\n(`json`, `ok`, `notFound`, `problem`, `setCookie`, `upgrade`, etc.).', members: [ { name: 'request', @@ -25611,6 +27147,7 @@ export const apiSymbolSets: Readonly< anchor: 'server-dispatch-options', signature: 'ServerDispatchOptions: any', typeOnly: true, + summary: 'Per-request options passed to {@link ServerApp.fetch}.', members: [ { name: 'websocket', @@ -25625,12 +27162,15 @@ export const apiSymbolSets: Readonly< signature: 'serverError: (detail?: string, init?: ResponseInit) => Response', typeOnly: true, + summary: 'Alias for {@link internalServerError}.', }, { name: 'ServerSentEvent', anchor: 'server-sent-event', signature: 'ServerSentEvent: any', typeOnly: true, + summary: + 'A single Server-Sent Event; `data` is JSON-serialized unless already a string.', members: [ { name: 'data', @@ -25659,6 +27199,8 @@ export const apiSymbolSets: Readonly< anchor: 'server-telemetry', signature: 'ServerTelemetry: any', typeOnly: true, + summary: + 'Telemetry hooks that a {@link ServerAppOptions.telemetry} implementation provides. Each\n`work`-wrapping method should run `work` inside an appropriately named span, propagating its\nreturn value.', members: [ { name: 'request', @@ -25731,6 +27273,7 @@ export const apiSymbolSets: Readonly< anchor: 'server-telemetry-fields', signature: 'ServerTelemetryFields: any', typeOnly: true, + summary: 'Contextual fields attached to a telemetry span or log entry.', members: [ { name: 'requestId', @@ -25774,6 +27317,8 @@ export const apiSymbolSets: Readonly< anchor: 'server-telemetry-operation', signature: 'ServerTelemetryOperation: any', typeOnly: true, + summary: + 'Identifies the kind of operation a {@link ServerTelemetry} call is instrumenting.', }, { name: 'serviceUnavailable', @@ -25781,6 +27326,7 @@ export const apiSymbolSets: Readonly< signature: 'serviceUnavailable: (detail?: string, init?: ResponseInit) => Response', typeOnly: true, + summary: 'Builds a `503 Service Unavailable` Problem Details response.', }, { name: 'setCookie', @@ -25788,18 +27334,24 @@ export const apiSymbolSets: Readonly< signature: 'setCookie: (response: Response, name: string, value: string, options?: CookieOptions) => Response', typeOnly: true, + summary: + 'Returns a clone of `response` with an additional `Set-Cookie` header appended, serialized\nfrom `name`, `value`, and `options`.', }, { name: 'text', anchor: 'text', signature: 'text: (value: string, init?: ResponseInit) => Response', typeOnly: true, + summary: + 'Builds a plain-text response, setting the `text/plain; charset=utf-8` content type.', }, { name: 'TokenIssuer', anchor: 'token-issuer', signature: 'TokenIssuer: any', typeOnly: true, + summary: + 'Issues auth tokens for a principal, used by {@link registerAuthRoutes} to mint session tokens.', members: [ { name: 'issue', @@ -25815,6 +27367,7 @@ export const apiSymbolSets: Readonly< signature: 'tooManyRequests: (detail?: string, init?: ResponseInit) => Response', typeOnly: true, + summary: 'Builds a `429 Too Many Requests` Problem Details response.', }, { name: 'unauthorized', @@ -25822,6 +27375,7 @@ export const apiSymbolSets: Readonly< signature: 'unauthorized: (detail?: string, init?: ResponseInit) => Response', typeOnly: true, + summary: 'Builds a `401 Unauthorized` Problem Details response.', }, { name: 'unprocessableEntity', @@ -25829,12 +27383,15 @@ export const apiSymbolSets: Readonly< signature: 'unprocessableEntity: (detail?: string, init?: ResponseInit) => Response', typeOnly: true, + summary: 'Builds a `422 Unprocessable Entity` Problem Details response.', }, { name: 'WebSocketAdapter', anchor: 'web-socket-adapter', signature: 'WebSocketAdapter: any', typeOnly: true, + summary: + 'Adapter that performs the transport-specific work of upgrading a request to a WebSocket.', members: [ { name: 'upgrade', @@ -25849,6 +27406,8 @@ export const apiSymbolSets: Readonly< anchor: 'web-socket-close-event', signature: 'WebSocketCloseEvent: any', typeOnly: true, + summary: + 'Details of a WebSocket close event, mirroring the DOM `CloseEvent` fields used here.', members: [ { name: 'code', @@ -25872,12 +27431,16 @@ export const apiSymbolSets: Readonly< anchor: 'web-socket-handler', signature: 'WebSocketHandler: any', typeOnly: true, + summary: + 'Handler invoked with a live {@link WebSocketLike} once a connection has been upgraded.', }, { name: 'WebSocketLike', anchor: 'web-socket-like', signature: 'WebSocketLike: any', typeOnly: true, + summary: + 'Transport-neutral interface for an upgraded WebSocket connection.', members: [ { name: 'send', @@ -25916,6 +27479,8 @@ export const apiSymbolSets: Readonly< anchor: 'api-route', signature: 'ApiRoute: any', typeOnly: true, + summary: + 'A single registered route: a path/method pattern paired with a handler (or WebSocket upgrade handler).', members: [ { name: 'path', @@ -25944,6 +27509,7 @@ export const apiSymbolSets: Readonly< anchor: 'api-route-options', signature: 'ApiRouteOptions: any', typeOnly: true, + summary: 'Per-route configuration shared by {@link ApiRoute}.', members: [ { name: 'auth', @@ -25967,6 +27533,11 @@ export const apiSymbolSets: Readonly< anchor: 'create-router', signature: 'createRouter: () => Router', typeOnly: true, + summary: + 'Creates an empty, mutable {@link Router} with chainable HTTP-method route builders\n(`get`, `post`, `put`, `patch`, `delete`, `options`, `head`, `trace`, `connect`, `ws`) and a\n`use` method for registering middleware.', + tags: { + returns: ['A new router instance.'], + }, }, { name: 'defineRoutes', @@ -25974,24 +27545,38 @@ export const apiSymbolSets: Readonly< signature: 'defineRoutes: (definition: (route: RouteBuilder) => void) => ApiRoute[]', typeOnly: true, + summary: + 'Builds a flat list of {@link ApiRoute}s by invoking `definition` with a {@link RouteBuilder}.\nUseful for defining a set of routes without a full {@link Router} (e.g. to compose into one).', + tags: { + param: [ + 'definition - Callback that registers routes via the provided builder.', + ], + returns: ['The collected routes.'], + }, }, { name: 'Handler', anchor: 'handler', signature: 'Handler: any', typeOnly: true, + summary: + 'A route handler function that produces a response for a given {@link ServerContext}.', }, { name: 'Middleware', anchor: 'middleware', signature: 'Middleware: any', typeOnly: true, + summary: + 'A middleware function that may short-circuit or delegate to `next` to produce a response.', }, { name: 'RouteBuilder', anchor: 'route-builder', signature: 'RouteBuilder: any', typeOnly: true, + summary: + 'Chainable, per-HTTP-method route registration methods, one per method plus `ws` for WebSockets.', members: [ { name: 'route', @@ -26066,6 +27651,8 @@ export const apiSymbolSets: Readonly< anchor: 'router', signature: 'Router: any', typeOnly: true, + summary: + 'A mutable collection of routes and middleware, built with chainable per-method registration\nmethods (each returning the router itself for chaining) and a `use` method for middleware.', members: [ { name: 'routes', @@ -26155,6 +27742,8 @@ export const apiSymbolSets: Readonly< anchor: 'web-socket-handler', signature: 'WebSocketHandler: any', typeOnly: true, + summary: + 'Handler invoked with a live {@link WebSocketLike} once a connection has been upgraded.', }, ], symbols42: [ @@ -26164,12 +27753,15 @@ export const apiSymbolSets: Readonly< signature: 'accepted: (value?: JsonValue, init?: ResponseInit) => Response', typeOnly: true, + summary: + 'Builds a `202 Accepted` response; JSON-serializes `value` if given, otherwise an empty body.', }, { name: 'bad', anchor: 'bad', signature: 'bad: (detail?: string, init?: ResponseInit) => Response', typeOnly: true, + summary: 'Alias for {@link badRequest}.', }, { name: 'badRequest', @@ -26177,12 +27769,15 @@ export const apiSymbolSets: Readonly< signature: 'badRequest: (detail?: string, init?: ResponseInit) => Response', typeOnly: true, + summary: 'Builds a `400 Bad Request` Problem Details response.', }, { name: 'challenge', anchor: 'challenge', signature: 'challenge: (options?: ChallengeOptions) => Response', typeOnly: true, + summary: + 'Builds a `401`/`407` Problem Details response with a `WWW-Authenticate` (or\n`Proxy-Authenticate` for `407`) challenge header.', }, { name: 'clearCookie', @@ -26190,12 +27785,15 @@ export const apiSymbolSets: Readonly< signature: 'clearCookie: (response: Response, name: string, options?: CookieOptions) => Response', typeOnly: true, + summary: + 'Returns a clone of `response` with a `Set-Cookie` header that expires and clears `name`.', }, { name: 'conflict', anchor: 'conflict', signature: 'conflict: (detail?: string, init?: ResponseInit) => Response', typeOnly: true, + summary: 'Builds a `409 Conflict` Problem Details response.', }, { name: 'created', @@ -26203,6 +27801,8 @@ export const apiSymbolSets: Readonly< signature: 'created: (value?: JsonValue, init?: ResponseInit) => Response', typeOnly: true, + summary: + 'Builds a `201 Created` response; JSON-serializes `value` if given, otherwise an empty body.', }, { name: 'createEventStream', @@ -26210,6 +27810,19 @@ export const apiSymbolSets: Readonly< signature: 'createEventStream: (options?: EventStreamOptions) => EventStream', typeOnly: true, + summary: + 'Creates a Server-Sent Events stream backed by a `text/event-stream` `Response`, with\nbounded backpressure-aware writes, optional heartbeat comments, and automatic closing when\n`options.signal` aborts or `close()` is called.', + tags: { + param: [ + 'options - Stream configuration (abort signal, heartbeat interval, backpressure, headers).', + ], + returns: [ + 'An {@link EventStream} exposing the response plus `send`/`comment`/`close` methods.', + ], + throws: [ + '{TypeError} If `highWaterMark` or `heartbeatInterval` are not positive safe integers.', + ], + }, }, { name: 'error', @@ -26217,12 +27830,16 @@ export const apiSymbolSets: Readonly< signature: 'error: (status?: number, detail?: string, init?: ResponseInit) => Response', typeOnly: true, + summary: + 'Builds a Problem Details error response with a configurable status (default `500`).', }, { name: 'EventStream', anchor: 'event-stream', signature: 'EventStream: any', typeOnly: true, + summary: + 'A live Server-Sent Events stream, backed by a streaming `Response`.', members: [ { name: 'response', @@ -26236,12 +27853,14 @@ export const apiSymbolSets: Readonly< }, { name: 'send', - summary: '', + summary: + 'Queues an event in order. Await or otherwise handle the returned promise before producing\nwithout bound. Rejects with `QuotaExceededError` when the pending-write limit is full.', signature: 'send(event: ServerSentEvent): Promise;', }, { name: 'comment', - summary: '', + summary: + 'Queues an SSE comment in order. Rejects with `QuotaExceededError` when the pending-write\nlimit is full.', signature: 'comment(value: string): Promise;', }, { @@ -26256,20 +27875,23 @@ export const apiSymbolSets: Readonly< anchor: 'event-stream-options', signature: 'EventStreamOptions: any', typeOnly: true, + summary: 'Options for {@link createEventStream}.', members: [ { name: 'signal', - summary: '', + summary: 'Aborting this signal closes the stream.', signature: 'signal?: AbortSignal;', }, { name: 'heartbeatInterval', - summary: '', + summary: + 'If set, sends a `heartbeat` comment on this interval (in ms) to keep the connection alive.', signature: 'heartbeatInterval?: number;', }, { name: 'highWaterMark', - summary: '', + summary: + 'Backpressure threshold for the underlying `ReadableStream` and maximum number of\nunresolved `send()`/`comment()` calls admitted at once. Defaults to 16.', signature: 'highWaterMark?: number;', }, { @@ -26285,12 +27907,20 @@ export const apiSymbolSets: Readonly< signature: 'forbidden: (detail?: string, init?: ResponseInit) => Response', typeOnly: true, + summary: 'Builds a `403 Forbidden` Problem Details response.', }, { name: 'formatServerSentEvent', anchor: 'format-server-sent-event', signature: 'formatServerSentEvent: (event: ServerSentEvent) => string', typeOnly: true, + summary: + 'Serializes a {@link ServerSentEvent} to the `text/event-stream` wire format, escaping\nmulti-line data/comment fields and validating that `event`/`id` contain no line breaks.', + tags: { + throws: [ + '{TypeError} If `event`, `id`, or `retry` contain invalid characters/values.', + ], + }, }, { name: 'internalServerError', @@ -26298,12 +27928,15 @@ export const apiSymbolSets: Readonly< signature: 'internalServerError: (detail?: string, init?: ResponseInit) => Response', typeOnly: true, + summary: 'Builds a `500 Internal Server Error` Problem Details response.', }, { name: 'json', anchor: 'json', signature: 'json: (value: JsonValue, init?: ResponseInit) => Response', typeOnly: true, + summary: + 'Builds a `200 OK`-shaped JSON response, serializing `value` and setting the JSON content type.', }, { name: 'methodNotAllowed', @@ -26311,18 +27944,22 @@ export const apiSymbolSets: Readonly< signature: 'methodNotAllowed: (allow?: string | readonly string[], init?: ResponseInit) => Response', typeOnly: true, + summary: + 'Builds a `405 Method Not Allowed` Problem Details response, setting the `Allow` header if given.', }, { name: 'noContent', anchor: 'no-content', signature: 'noContent: (init?: ResponseInit) => Response', typeOnly: true, + summary: 'Builds a `204 No Content` response with an empty body.', }, { name: 'notFound', anchor: 'not-found', signature: 'notFound: (detail?: string, init?: ResponseInit) => Response', typeOnly: true, + summary: 'Builds a `404 Not Found` Problem Details response.', }, { name: 'notImplemented', @@ -26330,12 +27967,15 @@ export const apiSymbolSets: Readonly< signature: 'notImplemented: (detail?: string, init?: ResponseInit) => Response', typeOnly: true, + summary: 'Builds a `501 Not Implemented` Problem Details response.', }, { name: 'ok', anchor: 'ok', signature: 'ok: (value?: JsonValue, init?: ResponseInit) => Response', typeOnly: true, + summary: + 'Builds a `200 OK` response; JSON-serializes `value` if given, otherwise an empty body.', }, { name: 'problem', @@ -26343,6 +27983,8 @@ export const apiSymbolSets: Readonly< signature: 'problem: (status: number, detail?: string, options?: ProblemOptions & { init?: ResponseInit; }) => Response', typeOnly: true, + summary: + 'Builds an RFC 9457 `application/problem+json` response, defaulting `type` to `about:blank`\nand `title` to a standard reason phrase for the given `status` (falling back to "HTTP Error").', }, { name: 'redirect', @@ -26350,6 +27992,8 @@ export const apiSymbolSets: Readonly< signature: 'redirect: (location: string, status?: 301 | 302 | 303 | 307 | 308) => Response', typeOnly: true, + summary: + 'Builds a redirect response with an empty body and a `Location` header. Defaults to `302 Found`.', }, { name: 'serverError', @@ -26357,12 +28001,15 @@ export const apiSymbolSets: Readonly< signature: 'serverError: (detail?: string, init?: ResponseInit) => Response', typeOnly: true, + summary: 'Alias for {@link internalServerError}.', }, { name: 'ServerSentEvent', anchor: 'server-sent-event', signature: 'ServerSentEvent: any', typeOnly: true, + summary: + 'A single Server-Sent Event; `data` is JSON-serialized unless already a string.', members: [ { name: 'data', @@ -26392,6 +28039,7 @@ export const apiSymbolSets: Readonly< signature: 'serviceUnavailable: (detail?: string, init?: ResponseInit) => Response', typeOnly: true, + summary: 'Builds a `503 Service Unavailable` Problem Details response.', }, { name: 'setCookie', @@ -26399,12 +28047,16 @@ export const apiSymbolSets: Readonly< signature: 'setCookie: (response: Response, name: string, value: string, options?: CookieOptions) => Response', typeOnly: true, + summary: + 'Returns a clone of `response` with an additional `Set-Cookie` header appended, serialized\nfrom `name`, `value`, and `options`.', }, { name: 'text', anchor: 'text', signature: 'text: (value: string, init?: ResponseInit) => Response', typeOnly: true, + summary: + 'Builds a plain-text response, setting the `text/plain; charset=utf-8` content type.', }, { name: 'tooManyRequests', @@ -26412,6 +28064,7 @@ export const apiSymbolSets: Readonly< signature: 'tooManyRequests: (detail?: string, init?: ResponseInit) => Response', typeOnly: true, + summary: 'Builds a `429 Too Many Requests` Problem Details response.', }, { name: 'unauthorized', @@ -26419,6 +28072,7 @@ export const apiSymbolSets: Readonly< signature: 'unauthorized: (detail?: string, init?: ResponseInit) => Response', typeOnly: true, + summary: 'Builds a `401 Unauthorized` Problem Details response.', }, { name: 'unprocessableEntity', @@ -26426,6 +28080,7 @@ export const apiSymbolSets: Readonly< signature: 'unprocessableEntity: (detail?: string, init?: ResponseInit) => Response', typeOnly: true, + summary: 'Builds a `422 Unprocessable Entity` Problem Details response.', }, ], symbols43: [ @@ -26434,18 +28089,34 @@ export const apiSymbolSets: Readonly< anchor: 'access-log', signature: 'accessLog: (logger: ResponseLogger) => Middleware', typeOnly: true, + summary: + 'Creates middleware that times each request and invokes `logger` with the request, response,\nduration, and (if present) request ID after the downstream chain resolves.', + tags: { + param: ['logger - Called once per request with the completed entry.'], + }, }, { name: 'cors', anchor: 'cors', signature: 'cors: (options?: CorsOptions) => Middleware', typeOnly: true, + summary: + 'Creates CORS middleware that validates the request origin, answers preflight `OPTIONS`\nrequests with `204` and the appropriate `Access-Control-*` headers, and adds\n`Access-Control-Allow-Origin`/`Vary: Origin` (plus exposed headers) to actual responses.\nGenuine preflight is quota-neutral in {@link rateLimit } regardless of middleware order.', + tags: { + param: [ + 'options - Allowed origin(s)/methods/headers, credential support, and preflight max-age.', + ], + throws: [ + '{TypeError} If `credentials` is combined with a wildcard origin, or `maxAgeSeconds`\nis not a non-negative safe integer.', + ], + }, }, { name: 'CorsOptions', anchor: 'cors-options', signature: 'CorsOptions: any', typeOnly: true, + summary: 'Options for {@link cors}.', members: [ { name: 'origin', @@ -26486,6 +28157,14 @@ export const apiSymbolSets: Readonly< signature: 'createCsrfToken: (secret: string, sessionId: string) => Promise', typeOnly: true, + summary: + 'Creates a CSRF token bound to a session ID, as an HMAC-SHA256 signature encoded base64url.', + tags: { + param: [ + 'secret - The HMAC secret; must match what {@link verifyCsrfToken} uses.', + 'sessionId - The session ID to bind the token to.', + ], + }, }, { name: 'createMemoryRateLimitStore', @@ -26493,18 +28172,34 @@ export const apiSymbolSets: Readonly< signature: 'createMemoryRateLimitStore: (options?: MemoryRateLimitStoreOptions) => RateLimitStore', typeOnly: true, + summary: + 'Creates an in-memory {@link RateLimitStore} backed by a `Map`, suitable for single-process\ndeployments. Periodically prunes expired entries as a side effect of `consume` calls.', + tags: { + param: [ + 'options.now - Clock function used to determine window boundaries. Defaults to `Date.now`.', + ], + }, }, { name: 'csrf', anchor: 'csrf', signature: 'csrf: (options: CsrfOptions) => Middleware', typeOnly: true, + summary: + 'Creates middleware that enforces CSRF protection on state-changing requests (all methods\nexcept `GET`/`HEAD`/`OPTIONS`/`TRACE`) by requiring a valid token bound to the current\nsession, supplied via a request header or (for form-encoded bodies) a form field.', + tags: { + param: [ + 'options - HMAC secret, session ID resolver, and header/form field names.', + ], + throws: ['{Error} If `options.secret` is empty.'], + }, }, { name: 'CsrfOptions', anchor: 'csrf-options', signature: 'CsrfOptions: any', typeOnly: true, + summary: 'Options for {@link csrf}.', members: [ { name: 'secret', @@ -26535,12 +28230,21 @@ export const apiSymbolSets: Readonly< signature: 'enforceHttps: (options?: { trustProxy?: boolean; status?: 301 | 302 | 307 | 308; }) => Middleware', typeOnly: true, + summary: + 'Creates middleware that redirects non-HTTPS requests to their HTTPS equivalent.', + tags: { + param: [ + "options.trustProxy - When true, honors the `X-Forwarded-Proto` header (first value)\ninstead of the request's own scheme, for use behind a TLS-terminating proxy.", + 'options.status - Redirect status code to use. Defaults to `308` (permanent, method-preserving).', + ], + }, }, { name: 'MemoryRateLimitStoreOptions', anchor: 'memory-rate-limit-store-options', signature: 'MemoryRateLimitStoreOptions: any', typeOnly: true, + summary: 'Options for {@link createMemoryRateLimitStore}.', members: [ { name: 'now', @@ -26554,12 +28258,23 @@ export const apiSymbolSets: Readonly< anchor: 'rate-limit', signature: 'rateLimit: (options: RateLimitOptions) => Middleware', typeOnly: true, + summary: + 'Creates middleware that enforces a request-rate limit per key (e.g. per client), adding\n`RateLimit-*` response headers and returning `429 Too Many Requests` with `Retry-After`\nwhen the limit is exceeded. Genuine CORS preflight requests (`OPTIONS` with both `Origin`\nand `Access-Control-Request-Method`) are quota-neutral regardless of middleware order.', + tags: { + param: [ + 'options - Limit, window, key resolver, and optional store/clock.', + ], + throws: [ + '{Error} If `limit` is not a positive integer or `windowMs` is not positive.', + ], + }, }, { name: 'RateLimitOptions', anchor: 'rate-limit-options', signature: 'RateLimitOptions: any', typeOnly: true, + summary: 'Options for {@link rateLimit}.', members: [ { name: 'store', @@ -26595,6 +28310,8 @@ export const apiSymbolSets: Readonly< anchor: 'rate-limit-store', signature: 'RateLimitStore: any', typeOnly: true, + summary: + 'Pluggable backing store for {@link rateLimit}, tracking request counts per key/window.', members: [ { name: 'consume', @@ -26610,12 +28327,22 @@ export const apiSymbolSets: Readonly< signature: 'requestId: (options?: { header?: string; generate?: () => string; }) => Middleware', typeOnly: true, + summary: + 'Creates middleware that reads a request ID from an incoming header (generating one if\nabsent), stores it on `ctx.state.requestId`, and echoes it back on the response header.', + tags: { + param: [ + 'options.header - Header name to read/write. Defaults to `x-request-id`.', + 'options.generate - ID generator used when the header is absent. Defaults to `crypto.randomUUID()`.', + ], + }, }, { name: 'ResponseLogger', anchor: 'response-logger', signature: 'ResponseLogger: any', typeOnly: true, + summary: + 'Callback invoked by {@link accessLog} with details of a completed request.', }, { name: 'securityHeaders', @@ -26623,6 +28350,15 @@ export const apiSymbolSets: Readonly< signature: 'securityHeaders: (options?: { contentSecurityPolicy?: string | ((context: ServerContext) => string); referrerPolicy?: string; frameOptions?: string; }) => Middleware', typeOnly: true, + summary: + 'Creates middleware that adds standard security headers to every response:\n`X-Content-Type-Options: nosniff`, `Referrer-Policy`, `X-Frame-Options`, and (if configured)\n`Content-Security-Policy`.', + tags: { + param: [ + 'options.contentSecurityPolicy - A static CSP string, or a function of the request\ncontext (e.g. to embed a per-request nonce). Omitted if not set.', + 'options.referrerPolicy - Defaults to `strict-origin-when-cross-origin`.', + 'options.frameOptions - Defaults to `DENY`.', + ], + }, }, { name: 'trace', @@ -26630,6 +28366,13 @@ export const apiSymbolSets: Readonly< signature: 'trace: (start: (context: ServerContext) => void | (() => void | Promise)) => Middleware', typeOnly: true, + summary: + 'Creates middleware that invokes `start` at the beginning of each request and, if it returns\na function, invokes that function after the downstream chain settles (success or throw) —\ne.g. to open and close a tracing span around the request.', + tags: { + param: [ + 'start - Called with the request context; may return a cleanup/finish callback.', + ], + }, }, { name: 'verifyCsrfToken', @@ -26637,6 +28380,18 @@ export const apiSymbolSets: Readonly< signature: 'verifyCsrfToken: (secret: string, sessionId: string, token: string) => Promise', typeOnly: true, + summary: + 'Verifies a CSRF token against a session ID using an HMAC-SHA256 signature.', + tags: { + param: [ + 'secret - The HMAC secret used to sign tokens.', + 'sessionId - The session ID the token should be bound to.', + 'token - The base64url-encoded token to verify.', + ], + returns: [ + '`true` if the token is a valid signature of `sessionId` under `secret`.', + ], + }, }, ], symbols44: [ @@ -26645,12 +28400,15 @@ export const apiSymbolSets: Readonly< anchor: 'action-cookie-instruction', signature: 'ActionCookieInstruction: any', typeOnly: true, + summary: 'A cookie to set or clear as part of an {@link ActionOutcome}.', }, { name: 'ActionEntry', anchor: 'action-entry', signature: 'ActionEntry: any', typeOnly: true, + summary: + 'A registered action: its descriptor (schema/id) paired with its handler, as produced by {@link handleAction }.', members: [ { name: 'descriptor', @@ -26670,12 +28428,16 @@ export const apiSymbolSets: Readonly< anchor: 'action-execution', signature: 'ActionExecution: any', typeOnly: true, + summary: + 'Result of {@link ActionRegistry.execute}: either a final response, or invalid-input details to re-render the page with.', }, { name: 'ActionExecutionOptions', anchor: 'action-execution-options', signature: 'ActionExecutionOptions: any', typeOnly: true, + summary: + "Options passed to {@link ActionRegistry.execute} describing the current page's allowed actions.", members: [ { name: 'authorized', @@ -26704,12 +28466,15 @@ export const apiSymbolSets: Readonly< anchor: 'action-handler', signature: 'ActionHandler: any', typeOnly: true, + summary: + "A server action's business logic: validated `input` in, an {@link ActionOutcome} out.", }, { name: 'ActionHandlerContext', anchor: 'action-handler-context', signature: 'ActionHandlerContext: any', typeOnly: true, + summary: 'Request-derived context passed to an {@link ActionHandler}.', members: [ { name: 'request', @@ -26748,6 +28513,8 @@ export const apiSymbolSets: Readonly< anchor: 'action-outcome', signature: 'ActionOutcome: any', typeOnly: true, + summary: + 'The result of a successful {@link ActionHandler} invocation: an optional redirect, result payload, and cookies.', members: [ { name: 'redirect', @@ -26771,6 +28538,8 @@ export const apiSymbolSets: Readonly< anchor: 'action-registration', signature: 'ActionRegistration: any', typeOnly: true, + summary: + 'A type-erased {@link ActionEntry}, as accepted by {@link defineServerActions }.', members: [ { name: 'descriptor', @@ -26790,6 +28559,8 @@ export const apiSymbolSets: Readonly< anchor: 'action-registry', signature: 'ActionRegistry: any', typeOnly: true, + summary: + 'A registry of server actions, as created by {@link defineServerActions }, used by {@link createAskrPageHandler }.', members: [ { name: 'entries', @@ -26816,6 +28587,7 @@ export const apiSymbolSets: Readonly< anchor: 'action-registry-options', signature: 'ActionRegistryOptions: any', typeOnly: true, + summary: 'CSRF configuration shared by {@link ServerActionsOptions }.', members: [ { name: 'csrf', @@ -26836,6 +28608,8 @@ export const apiSymbolSets: Readonly< anchor: 'askr-app', signature: 'AskrApp: any', typeOnly: true, + summary: + 'A configured Askr application, as returned by {@link createAskrApp}.', members: [ { name: 'fetch', @@ -26859,6 +28633,8 @@ export const apiSymbolSets: Readonly< anchor: 'askr-app-api', signature: 'AskrAppApi: any', typeOnly: true, + summary: + 'The API group passed to {@link AskrAppApiOptions.define}, extended with a `schema` helper.', members: [ { name: 'schema', @@ -26872,6 +28648,8 @@ export const apiSymbolSets: Readonly< anchor: 'askr-app-api-options', signature: 'AskrAppApiOptions: any', typeOnly: true, + summary: + 'Options for the OpenAPI-backed API portion of an {@link AskrApp}.', members: [ { name: 'prefix', @@ -26902,6 +28680,8 @@ export const apiSymbolSets: Readonly< anchor: 'askr-app-auth-options', signature: 'AskrAppAuthOptions: any', typeOnly: true, + summary: + 'Authentication configuration for an {@link AskrApp}: request resolver, optional auth routes, and page auth policy.', members: [ { name: 'resolver', @@ -26925,6 +28705,7 @@ export const apiSymbolSets: Readonly< anchor: 'askr-app-options', signature: 'AskrAppOptions: any', typeOnly: true, + summary: 'Options for {@link createAskrApp}.', members: [ { name: 'name', @@ -27011,6 +28792,7 @@ export const apiSymbolSets: Readonly< anchor: 'askr-page-handler-options', signature: 'AskrPageHandlerOptions: any', typeOnly: true, + summary: 'Options for {@link createAskrPageHandler}.', members: [ { name: 'registry', @@ -27050,6 +28832,19 @@ export const apiSymbolSets: Readonly< signature: 'createAskrApp: (options: AskrAppOptions) => AskrApp', typeOnly: true, + summary: + 'Assembles a complete Askr application from page routes, an optional OpenAPI-described API,\noptional server actions, and optional authentication — wiring an API router (mounted at\n`options.api?.prefix`, default `/api`), auth routes, and a page-rendering fallback handler\ninto a single {@link ServerApp }-like object.', + tags: { + param: [ + 'options - Pages registry, dependencies, API/auth/action configuration, and lifecycle hooks.', + ], + returns: [ + 'An {@link AskrApp} exposing `fetch`, `toOpenApiDocument`, and `close`.', + ], + throws: [ + '{Error} If `options.api.prefix` is invalid, or collides with the reserved `/auth` prefix.', + ], + }, }, { name: 'createAskrPageHandler', @@ -27057,6 +28852,14 @@ export const apiSymbolSets: Readonly< signature: 'createAskrPageHandler: (options: AskrPageHandlerOptions) => Handler', typeOnly: true, + summary: + "Creates a catch-all route {@link Handler} that server-renders Askr framework pages: routes\n`GET`/`HEAD` requests through Askr's SSR pipeline, and (if `options.actions` is provided)\ndispatches `POST` requests as form actions, re-rendering the page with validation errors on\nfailure or following a redirect/response on success.", + tags: { + param: [ + 'options - Route registry, auth policy, query registry, action registry, and CSP nonce provider.', + ], + throws: ['{Error} If `options.registry` is not provided.'], + }, }, { name: 'defineServerActions', @@ -27064,6 +28867,15 @@ export const apiSymbolSets: Readonly< signature: 'defineServerActions: (options: ServerActionsOptions, ...entries: readonly ActionRegistration[]) => ActionRegistry', typeOnly: true, + summary: + 'Builds an {@link ActionRegistry} from a set of {@link ActionEntry}s (via {@link handleAction}),\nwiring up CSRF token issuance/verification (unless `options.csrf` is `false`), submission\nparsing (JSON or form-encoded), input validation, telemetry, and response negotiation\n(redirect vs. JSON envelope) for each action invocation.', + tags: { + param: [ + 'options - Dependencies to inject into handlers, plus CSRF configuration.', + 'entries - The registered actions.', + ], + throws: ['{Error} If two entries share the same action ID.'], + }, }, { name: 'handleAction', @@ -27071,12 +28883,15 @@ export const apiSymbolSets: Readonly< signature: 'handleAction: , Result = unknown>(descriptor: ActionDescriptor, handler: ActionHandler) => ActionEntry', typeOnly: true, + summary: + 'Pairs an action descriptor (its ID and input schema) with a typed handler, ready to pass to\n{@link defineServerActions}.', }, { name: 'ServerActionsOptions', anchor: 'server-actions-options', signature: 'ServerActionsOptions: any', typeOnly: true, + summary: 'Options for {@link defineServerActions }.', members: [ { name: 'dependencies', @@ -27092,6 +28907,8 @@ export const apiSymbolSets: Readonly< anchor: 'auth-credentials', signature: 'AuthCredentials: any', typeOnly: true, + summary: + 'Email/password credentials submitted to the register or authenticate endpoints.', members: [ { name: 'email', @@ -27110,6 +28927,8 @@ export const apiSymbolSets: Readonly< anchor: 'auth-route-error', signature: 'AuthRouteError: typeof AuthRouteError', typeOnly: true, + summary: + 'Error thrown from `register`/`authenticate`/etc. callbacks to short-circuit an auth route with a specific status.', members: [ { name: 'status', @@ -27123,6 +28942,7 @@ export const apiSymbolSets: Readonly< anchor: 'auth-route-options', signature: 'AuthRouteOptions: any', typeOnly: true, + summary: 'Configuration for {@link registerAuthRoutes}.', members: [ { name: 'issuer', @@ -27176,6 +28996,14 @@ export const apiSymbolSets: Readonly< signature: 'registerAuthRoutes: (api: Pick, "group">, options: AuthRouteOptions

) => void', typeOnly: true, + summary: + 'Registers a standard set of authentication routes (`POST /auth/v1/accounts`,\n`GET/POST /auth/v1/session`, `DELETE /auth/v1/session`) on an OpenAPI-style API/group,\nhandling registration, login, session lookup, and logout with CSRF protection via a\nsame-origin `Origin` header check, per-attempt rate limiting, and cookie-based token storage.', + tags: { + param: [ + 'api - The API or group to register routes on (only its `group` method is used).', + 'options - Issuer, cookie configuration, principal schema, and register/authenticate/\nallowAttempt/revoke/redirect callbacks.', + ], + }, }, { name: 'safeRedirect', @@ -27183,16 +29011,30 @@ export const apiSymbolSets: Readonly< signature: 'safeRedirect: (fallback: string, options?: SafeRedirectOptions) => (value: unknown) => string', typeOnly: true, + summary: + 'Creates a validator that resolves an untrusted redirect target to a safe, same-origin,\nrelative path — or to `fallback` if the value is unsafe (absolute, protocol-relative,\ncontains a scheme, control characters, `..` traversal, backslashes, or an unwanted hash).', + tags: { + param: [ + 'fallback - The safe path to use when the requested value is not itself safe. Must\nitself pass the safety check, or this function throws.', + 'options - Redirect validation options.', + ], + returns: [ + 'A function `(value) => path` that returns `value` if safe, otherwise `fallback`.', + ], + throws: ['{Error} If `fallback` is not itself a safe path.'], + }, }, { name: 'SafeRedirectOptions', anchor: 'safe-redirect-options', signature: 'SafeRedirectOptions: any', typeOnly: true, + summary: 'Options for {@link safeRedirect}.', members: [ { name: 'allowHash', - summary: '', + summary: + 'Allow redirect targets that include a URL fragment (`#...`). Defaults to disallowed.', signature: 'readonly allowHash?: boolean;', }, ], @@ -27202,6 +29044,8 @@ export const apiSymbolSets: Readonly< anchor: 'token-issuer', signature: 'TokenIssuer: any', typeOnly: true, + summary: + 'Issues auth tokens for a principal, used by {@link registerAuthRoutes} to mint session tokens.', members: [ { name: 'issue', @@ -27218,6 +29062,8 @@ export const apiSymbolSets: Readonly< anchor: 'api-definition', signature: 'ApiDefinition: any', typeOnly: true, + summary: + 'The root API definition returned by {@link createApi }: a top-level {@link ApiGroup} that can\nalso register reusable named schemas, build a concrete {@link Router} from its routes, and\nrender an {@link OpenApiDocument}.', members: [ { name: 'schema', @@ -27243,6 +29089,8 @@ export const apiSymbolSets: Readonly< anchor: 'api-group', signature: 'ApiGroup: any', typeOnly: true, + summary: + 'A prefixed group of routes within an {@link ApiDefinition}, supporting nested sub-groups,\nshared tags/middleware/auth/params, and per-HTTP-method route registration.', members: [ { name: 'tags', @@ -27338,12 +29186,16 @@ export const apiSymbolSets: Readonly< anchor: 'api-handler', signature: 'ApiHandler: any', typeOnly: true, + summary: + 'A plain route handler registered via an {@link ApiGroup } method, receiving the resolved `dependencies`.', }, { name: 'ApiInfo', anchor: 'api-info', signature: 'ApiInfo: any', typeOnly: true, + summary: + 'The OpenAPI `info` object: title, version, and descriptive metadata for the API.', members: [ { name: 'title', @@ -27387,6 +29239,8 @@ export const apiSymbolSets: Readonly< anchor: 'api-input', signature: 'ApiInput: any', typeOnly: true, + summary: + "Declares the schemas for a route's inputs (path params, query, headers, body).", members: [ { name: 'params', @@ -27415,6 +29269,8 @@ export const apiSymbolSets: Readonly< anchor: 'api-operation', signature: 'ApiOperation: any', typeOnly: true, + summary: + 'A schema-typed route registered via an {@link ApiGroup } method: declares its `input` schemas\n(validated and bound before `handler` runs, with results typed via {@link InferApiInput}) and\noptional extra `documentation` for parameters/body not otherwise inferable.', members: [ { name: 'input', @@ -27439,6 +29295,7 @@ export const apiSymbolSets: Readonly< anchor: 'api-options', signature: 'ApiOptions: any', typeOnly: true, + summary: 'Options for {@link createApi }.', members: [ { name: 'info', @@ -27480,6 +29337,8 @@ export const apiSymbolSets: Readonly< anchor: 'body-options', signature: 'BodyOptions: any', typeOnly: true, + summary: + 'Metadata for a request body, used to enrich the generated OpenAPI document.', members: [ { name: 'required', @@ -27504,18 +29363,29 @@ export const apiSymbolSets: Readonly< signature: 'createApi: (options: ApiOptions) => ApiDefinition', typeOnly: true, + summary: + 'Creates an OpenAPI-aware {@link ApiDefinition}: a schema-typed route builder that records\noperation metadata and input/response schemas as routes are registered, then can render the\nroutes as a concrete {@link Router } (`createRouter`) or as an OpenAPI document\n(`toOpenApiDocument`).', + tags: { + param: [ + 'options - API-level metadata (title, version, servers, etc.) and validation settings.', + ], + returns: ['The root {@link ApiDefinition}.'], + }, }, { name: 'InferSchema', anchor: 'infer-schema', signature: 'InferSchema: any', typeOnly: true, + summary: 'Infers the parsed value type of a {@link Schema}.', }, { name: 'OpenApiDocument', anchor: 'open-api-document', signature: 'OpenApiDocument: any', typeOnly: true, + summary: + 'A complete OpenAPI 3.1 document, as produced by {@link ApiDefinition.toOpenApiDocument }.', members: [ { name: 'openapi', @@ -27555,6 +29425,8 @@ export const apiSymbolSets: Readonly< anchor: 'parameter-options', signature: 'ParameterOptions: any', typeOnly: true, + summary: + 'Metadata for a path/query/header/cookie parameter, used to enrich the generated OpenAPI document.', members: [ { name: 'description', @@ -27583,6 +29455,8 @@ export const apiSymbolSets: Readonly< anchor: 'response-options', signature: 'ResponseOptions: any', typeOnly: true, + summary: + 'Metadata for a response, used to enrich the generated OpenAPI document.', members: [ { name: 'description', @@ -27611,6 +29485,8 @@ export const apiSymbolSets: Readonly< anchor: 'route-builder', signature: 'RouteBuilder: any', typeOnly: true, + summary: + "Fluent builder for describing a single route's OpenAPI operation: metadata (operation ID,\nsummary, tags), request inputs (path/query/header/cookie params and body), and possible\nresponses (both status-coded shorthand methods like `ok`/`notFound` and the generic `response`).", members: [ { name: 'operationId', @@ -27841,28 +29717,39 @@ export const apiSymbolSets: Readonly< name: 'schema', anchor: 'schema-2', signature: - 'schema: Readonly<{ string: (options?: StringOptions) => Schema; uuid: (options?: StringOptions) => Schema; email: (options?: StringOptions) => Schema; uri: (options?: StringOptions) => Schema; date: (options?: StringOptions) => Schema; dateTime: (options?: StringOptions) => Schema; byte: (options?: StringOptions) => Schema; binary: (options?: StringOptions) => Schema; number: (options?: NumberOptions) => Schema; integer: (options?: NumberOptions) => Schema; boolean: (options?: CommonOptions) => Schema; null: (options?: CommonOptions) => Schema; object: >(properties: T, options?: ObjectOptions) => ObjectSchema>; array: (items: Schema, options?: ArrayOptions) => Schema; record: (values: Schema, options?: CommonOptions) => ObjectSchema>; enum: (values: T, options?: CommonOptions) => Schema; literal: (value: T, options?: CommonOptions) => Schema; optional: (value: Schema) => OptionalSchema; nullable: (value: Schema) => Schema; oneOf: (...values: T) => Schema>; anyOf: (...values: T) => Schema>; allOf: (...values: T) => Schema>>; raw: (jsonSchema: JsonSchema, safeParse: (value: unknown) => SafeParseResult) => Schema; }>', + 'schema: Readonly<{ string: (options?: StringOptions) => Schema; uuid: (options?: StringOptions) => Schema; email: (options?: StringOptions) => Schema; uri: (options?: StringOptions) => Schema; date: (options?: StringOptions) => Schema; dateTime: (options?: StringOptions) => Schema; byte: (options?: StringOptions) => Schema; binary: (options?: StringOptions) => Schema; number: (options?: NumberOptions) => Schema; integer: (options?: NumberOptions) => Schema; boolean: (options?: CommonOptions) => Schema; null: (options?: CommonOptions) => Schema; object: >(properties: T, options?: ObjectOptions) => ObjectSchema>; array: (items: Schema, options?: ArrayOptions) => Schema; record: (values: Schema, options?: CommonOptions) => ObjectSchema>; enum: (values: T, options?: CommonOptions) => Schema; literal: (value: T, options?: CommonOptions) => Schema; optional: (value: Schema) => OptionalSchema; nullable: (value: T) => NullableSchema; oneOf: (...values: T) => Schema>; anyOf: (...values: T) => Schema>; allOf: (...values: T) => Schema>>; raw: (jsonSchema: JsonSchema, safeParse: (value: unknown) => SafeParseResult) => Schema; }>', typeOnly: true, + summary: + 'The public schema builder namespace: create executable schemas whose {@link Schema.safeParse}\nvalidates a value and whose `jsonSchema` field is a deterministic JSON Schema (draft 2020-12)\nprojection suitable for OpenAPI documents.', + tags: { + example: [ + 'const user = schema.object({ id: schema.uuid(), name: schema.string({ minLength: 1 }) });\nconst result = user.safeParse({ id: "...", name: "Ada" });', + ], + }, }, { name: 'Schema', anchor: 'schema', signature: 'Schema: any', typeOnly: true, + summary: + 'An executable schema: carries its JSON Schema projection and a runtime parser.', members: [ { name: 'jsonSchema', - summary: '', + summary: + 'The deterministic JSON Schema (draft 2020-12) projection of this schema.', signature: 'readonly jsonSchema: JsonSchema;', }, { name: '__type', - summary: '', + summary: 'Phantom type marker only; never set at runtime.', signature: 'readonly __type?: T;', }, { name: 'safeParse', - summary: '', + summary: + 'Validates `value`, returning either the parsed data or a list of issues.', signature: 'safeParse(value: unknown): SafeParseResult;', }, ], @@ -27873,18 +29760,24 @@ export const apiSymbolSets: Readonly< signature: 'security: Readonly<{ httpBearer(options?: { bearerFormat?: string; description?: string; }): SecurityScheme; httpBasic(options?: { description?: string; }): SecurityScheme; apiKey(name: string, location?: "header" | "query" | "cookie", options?: { description?: string; }): SecurityScheme; oauth2(flows: Record, description?: string): SecurityScheme; openIdConnect(openIdConnectUrl: string, description?: string): SecurityScheme; require(name: string, scopes?: readonly string[]): SecurityRequirement; any(...requirements: readonly SecurityRequirement[]): SecurityRequirement; none(): SecurityRequirement; }>', typeOnly: true, + summary: + "Helpers for building OpenAPI security schemes and requirements, used with\n`ApiGroup.access`/`RouteBuilder.access` to describe an operation's authentication needs.", }, { name: 'SecurityRequirement', anchor: 'security-requirement', signature: 'SecurityRequirement: any', typeOnly: true, + summary: + 'An OpenAPI security requirement (a list of alternative scheme+scopes requirements), as built by the {@link security } helpers.', }, { name: 'SecurityScheme', anchor: 'security-scheme', signature: 'SecurityScheme: any', typeOnly: true, + summary: + 'An OpenAPI security scheme definition, as built by the {@link security } helpers.', }, ], symbols47: [ @@ -27894,12 +29787,27 @@ export const apiSymbolSets: Readonly< signature: 'createMcpServer: (options: McpServerOptions) => McpServer', typeOnly: true, + summary: + 'Creates a transport-neutral Model Context Protocol server: register tools, resources,\nresource templates, and prompts, then feed it JSON-RPC messages via `handle` (e.g. from\n{@link registerMcpRoutes }). Manages session negotiation, protocol version selection, and\nlist-changed notifications to subscribed clients.', + tags: { + param: [ + 'options - Server name/version/instructions and pagination settings.', + ], + returns: [ + 'An {@link McpServer} exposing registration methods, notification methods, and `handle`.', + ], + throws: [ + '{TypeError} If `name`/`version` are blank, `pageSize` is invalid, or a duplicate\ntool/resource/template/prompt is registered.', + ], + }, }, { name: 'McpContent', anchor: 'mcp-content', signature: 'McpContent: any', typeOnly: true, + summary: + 'A single piece of MCP content (text, image, resource link, etc.), keyed by `type`.', members: [ { name: 'type', @@ -27913,6 +29821,8 @@ export const apiSymbolSets: Readonly< anchor: 'mcp-context', signature: 'McpContext: any', typeOnly: true, + summary: + 'The per-request context passed to tool/resource/prompt handlers, exposing client info,\nnegotiated protocol/transport details, and `progress`/`log` callbacks for sending\nnotifications back to the client.', members: [ { name: 'dependencies', @@ -27975,12 +29885,15 @@ export const apiSymbolSets: Readonly< anchor: 'mcp-log-level', signature: 'McpLogLevel: any', typeOnly: true, + summary: + 'Severity level for {@link McpContext.log}, following syslog conventions.', }, { name: 'McpPrimitiveOptions', anchor: 'mcp-primitive-options', signature: 'McpPrimitiveOptions: any', typeOnly: true, + summary: 'Metadata shared by tools, resources, and prompts.', members: [ { name: 'title', @@ -28009,6 +29922,7 @@ export const apiSymbolSets: Readonly< anchor: 'mcp-prompt-options', signature: 'McpPromptOptions: any', typeOnly: true, + summary: 'Options for registering a prompt via {@link McpServer.prompt}.', members: [ { name: 'arguments', @@ -28022,12 +29936,15 @@ export const apiSymbolSets: Readonly< anchor: 'mcp-protocol-revision', signature: 'McpProtocolRevision: any', typeOnly: true, + summary: 'MCP protocol version negotiated between client and server.', }, { name: 'McpRequestEnvironment', anchor: 'mcp-request-environment', signature: 'McpRequestEnvironment: any', typeOnly: true, + summary: + 'Transport-provided context for a single inbound MCP message, passed to\n{@link McpServer.handle}. `send` (if provided) delivers server-to-client notifications for\npush-capable transports.', members: [ { name: 'dependencies', @@ -28071,6 +29988,8 @@ export const apiSymbolSets: Readonly< anchor: 'mcp-resource-options', signature: 'McpResourceOptions: any', typeOnly: true, + summary: + 'Options for registering a resource via {@link McpServer.resource}.', members: [ { name: 'name', @@ -28089,6 +30008,8 @@ export const apiSymbolSets: Readonly< anchor: 'mcp-server', signature: 'McpServer: any', typeOnly: true, + summary: + 'A Model Context Protocol server, as created by {@link createMcpServer }: register tools,\nresources, resource templates, and prompts; push list-changed notifications; and dispatch\ninbound JSON-RPC messages via `handle`.', members: [ { name: 'tool', @@ -28147,6 +30068,7 @@ export const apiSymbolSets: Readonly< anchor: 'mcp-server-options', signature: 'McpServerOptions: any', typeOnly: true, + summary: 'Options for {@link createMcpServer }.', members: [ { name: 'name', @@ -28180,6 +30102,8 @@ export const apiSymbolSets: Readonly< anchor: 'mcp-session-store', signature: 'McpSessionStore: any', typeOnly: true, + summary: + 'Pluggable backing store for stateful MCP session IDs, used by the HTTP transport.', members: [ { name: 'create', @@ -28203,6 +30127,7 @@ export const apiSymbolSets: Readonly< anchor: 'mcp-tool-options', signature: 'McpToolOptions: any', typeOnly: true, + summary: 'Options for registering a tool via {@link McpServer.tool}.', members: [ { name: 'input', @@ -28221,12 +30146,15 @@ export const apiSymbolSets: Readonly< anchor: 'mcp-tool-result', signature: 'McpToolResult: any', typeOnly: true, + summary: + 'The result returned by a tool handler: content blocks and/or a typed structured result.', }, { name: 'McpTransportKind', anchor: 'mcp-transport-kind', signature: 'McpTransportKind: any', typeOnly: true, + summary: 'The transport an MCP session is communicating over.', }, { name: 'protectedResourceMetadata', @@ -28234,6 +30162,8 @@ export const apiSymbolSets: Readonly< signature: 'protectedResourceMetadata: (resource: string, authorizationServers?: readonly string[]) => Readonly>', typeOnly: true, + summary: + 'Builds an OAuth 2.0 Protected Resource Metadata document (RFC 9728) advertising `resource`\nand its authorization servers, as served at `/.well-known/oauth-protected-resource` by\n{@link registerMcpRoutes} when `options.resource` is configured.', }, { name: 'registerMcpRoutes', @@ -28241,14 +30171,127 @@ export const apiSymbolSets: Readonly< signature: 'registerMcpRoutes: (router: Router, path: string, mcp: McpServer, options: McpHttpOptions) => Router', typeOnly: true, + summary: + 'Registers the streamable-HTTP transport for an {@link McpServer} on a router: `POST` for\nJSON-RPC requests (with optional stateful session creation), `GET` for the Server-Sent\nEvents notification stream, and `DELETE` for session termination. Validates the `Origin` and\n`Host` headers against allowlists, enforces a max request size, and optionally serves\nOAuth protected-resource metadata.', + tags: { + param: [ + 'router - The router to register routes on.', + 'path - The MCP endpoint path.', + 'mcp - The MCP server instance to dispatch messages to.', + 'options - Origin/host allowlists, statefulness, session store, and size/timing limits.', + ], + returns: ['The same `router`, for chaining.'], + throws: [ + '{TypeError} If `heartbeatInterval`, `sessionTtlMs`, or `maxSessions` are invalid.', + ], + }, }, ], symbols48: [ + { + name: 'AdapterConformanceError', + anchor: 'adapter-conformance-error', + signature: 'AdapterConformanceError: typeof AdapterConformanceError', + typeOnly: true, + summary: + 'A failed adapter-conformance guarantee with a stable machine-readable {@link code}.', + members: [ + { + name: 'code', + summary: '', + signature: 'readonly code: AdapterConformanceErrorCode;', + }, + { + name: 'name', + summary: '', + signature: 'readonly name = "AdapterConformanceError";', + }, + ], + }, + { + name: 'AdapterConformanceErrorCode', + anchor: 'adapter-conformance-error-code', + signature: 'AdapterConformanceErrorCode: any', + typeOnly: true, + summary: + 'Stable diagnostic codes produced by {@link runAdapterConformance}.', + }, + { + name: 'AdapterConformanceExercises', + anchor: 'adapter-conformance-exercises', + signature: 'AdapterConformanceExercises: any', + typeOnly: true, + summary: + "Real-transport exercises supplied by an adapter's integration test.", + members: [ + { + name: 'abortStreamingResponse', + summary: + 'Write the supplied infinite response through the real adapter, observe a client chunk,\nthen close/reset the client. Resolve after the transport disconnect is observed.', + signature: + 'abortStreamingResponse(response: Response, cleanup: AbortSignal): Promise;', + }, + { + name: 'enforceRequestTimeout', + summary: + 'Run the supplied body-reading app through the real adapter with finite request/header\ntimeouts, send an incomplete request, and resolve after the transport terminates it.', + signature: + 'enforceRequestTimeout(app: ServerApp, cleanup: AbortSignal): Promise;', + }, + ], + }, + { + name: 'AdapterConformanceOptions', + anchor: 'adapter-conformance-options', + signature: 'AdapterConformanceOptions: any', + typeOnly: true, + summary: 'Options for {@link runAdapterConformance}.', + members: [ + { + name: 'deadlineMs', + summary: 'Per-exercise deadline in milliseconds. Defaults to 1,000.', + signature: 'deadlineMs?: number;', + }, + ], + }, + { + name: 'AdapterConformanceReport', + anchor: 'adapter-conformance-report', + signature: 'AdapterConformanceReport: any', + typeOnly: true, + summary: + 'Frozen success result returned by {@link runAdapterConformance}.', + members: [ + { + name: 'streamingResponseCancellation', + summary: '', + signature: 'readonly streamingResponseCancellation: "passed";', + }, + { + name: 'incompleteRequestTimeout', + summary: '', + signature: 'readonly incompleteRequestTimeout: "passed";', + }, + ], + }, + { + name: 'runAdapterConformance', + anchor: 'run-adapter-conformance', + signature: + 'runAdapterConformance: (exercises: AdapterConformanceExercises, options?: AdapterConformanceOptions) => Promise>', + typeOnly: true, + summary: + 'Runs reusable adapter guardrails against real-transport exercises supplied by the adapter.\nValidation errors throw synchronously; runtime failures reject with {@link AdapterConformanceError}.\nExercise callbacks must honor the cleanup signal and close any sockets/servers they own.', + }, + ], + symbols49: [ { name: 'BodyRequestOptions', anchor: 'body-request-options', signature: 'BodyRequestOptions: any', typeOnly: true, + summary: + 'Options for a request that may carry a body, restricted to methods that support one.', }, { name: 'createTestClient', @@ -28256,12 +30299,33 @@ export const apiSymbolSets: Readonly< signature: 'createTestClient: (target: Injectable, options?: TestClientOptions) => TestClient', typeOnly: true, + summary: + 'Create a {@link TestClient} bound to a target for repeated request injection.\n\nThe returned client applies shared defaults (base URL, headers, cookie jar,\nredirect behavior) to every request made through it, and follows redirects\nautomatically unless `redirect` is overridden.', + tags: { + param: [ + 'target - The handler or {@link RequestTarget} to inject requests into.', + 'options - Default options applied to every request made by this client.', + ], + returns: [ + 'A {@link TestClient} with `request`, `get`, `post`, and other HTTP-method helpers.', + ], + example: [ + 'const client = createTestClient(app, { baseUrl: "https://example.com", cookies: true });\nconst response = await client.get("/users");', + ], + }, }, { name: 'createTestCookieJar', anchor: 'create-test-cookie-jar', signature: 'createTestCookieJar: () => TestCookieJar', typeOnly: true, + summary: + 'Create an in-memory {@link TestCookieJar} backed by `tough-cookie`, suitable\nfor use as the `cookies` option of a {@link TestClient}.', + tags: { + returns: [ + 'A cookie jar that persists cookies across injected requests and\nenforces standard cookie-prefix security.', + ], + }, }, { name: 'createTestRequest', @@ -28269,24 +30333,38 @@ export const apiSymbolSets: Readonly< signature: 'createTestRequest: (input: string | URL, options?: InjectOptions) => Request', typeOnly: true, + summary: + "Build a `Request` for testing from a path or URL and a set of options.\n\nResolves `input` against `options.baseUrl` (defaulting to `https://askr.test/`),\nappends any `query` parameters, and serializes at most one of `body`, `json`,\nor `form` into the request body, setting an appropriate `content-type` header\nwhen one isn't already present. Throws a `TypeError` if more than one body\nmode is supplied, if `json` is `undefined`, or if a `GET`/`HEAD` request is\ngiven a body.", + tags: { + param: [ + 'input - The request path or URL.', + 'options - Request options such as method, headers, query, and body.', + ], + returns: ['A `Request` ready to be dispatched to a test target.'], + }, }, { name: 'Form', anchor: 'form', signature: 'Form: any', typeOnly: true, + summary: + 'URL-encoded form body data, accepted as `URLSearchParams`, an iterable of entries, or a plain record.', }, { name: 'FormValue', anchor: 'form-value', signature: 'FormValue: any', typeOnly: true, + summary: + 'A single form field value, coerced to `string` when serialized.', }, { name: 'GetHeadOptions', anchor: 'get-head-options', signature: 'GetHeadOptions: any', typeOnly: true, + summary: 'Options for a body-less `GET` or `HEAD` request.', }, { name: 'inject', @@ -28294,42 +30372,73 @@ export const apiSymbolSets: Readonly< signature: 'inject: { (target: Injectable, request: Request, options?: Pick): Promise; (target: Injectable, input: string | URL, options?: InjectOptions): Promise; }', typeOnly: true, + summary: + 'Inject a single request into a target and return the resulting response,\nfollowing redirects up to `maxRedirects` hops.\nInject a request built from a path/URL and options into a target and return\nthe resulting response, following redirects up to `maxRedirects` hops.', + tags: { + param: [ + 'target - The handler or {@link RequestTarget} to inject the request into.', + 'request - An existing `Request` to dispatch as-is.', + 'options - Only `maxRedirects` is honored when a `Request` is passed directly.', + 'target - The handler or {@link RequestTarget} to inject the request into.', + 'input - The request path or URL, resolved against `options.baseUrl`.', + 'options - Request options such as method, headers, query, and body.', + ], + returns: [ + 'The final `Response` after any redirects have been followed.', + 'The final `Response` after any redirects have been followed.', + ], + example: [ + 'const response = await inject(app, "/users", { method: "GET" });', + ], + }, }, { name: 'Injectable', anchor: 'injectable', signature: 'Injectable: any', typeOnly: true, + summary: + 'Anything that can receive an injected test request: a {@link RequestTarget} or a {@link RequestHandler}.', }, { name: 'InjectOptions', anchor: 'inject-options', signature: 'InjectOptions: any', typeOnly: true, + summary: + 'Options accepted when injecting a request, covering both body-less and body-carrying methods.', }, { name: 'Query', anchor: 'query', signature: 'Query: any', typeOnly: true, + summary: + 'Query string parameters, accepted as `URLSearchParams`, an iterable of entries, or a plain record.', }, { name: 'QueryValue', anchor: 'query-value', signature: 'QueryValue: any', typeOnly: true, + summary: + 'A single query string value, coerced to `string` when serialized.', }, { name: 'RequestHandler', anchor: 'request-handler', signature: 'RequestHandler: any', typeOnly: true, + summary: + 'A function that handles a `Request` and produces a `Response`, synchronously or asynchronously.', }, { name: 'RequestTarget', anchor: 'request-target', signature: 'RequestTarget: any', typeOnly: true, + summary: + 'A target that can receive an injected request directly via a `fetch`-style method.', members: [ { name: 'fetch', @@ -28343,6 +30452,8 @@ export const apiSymbolSets: Readonly< anchor: 'test-client', signature: 'TestClient: any', typeOnly: true, + summary: + 'A reusable HTTP client that injects requests into a target and follows redirects.', members: [ { name: 'cookies', @@ -28404,6 +30515,7 @@ export const apiSymbolSets: Readonly< anchor: 'test-client-options', signature: 'TestClientOptions: any', typeOnly: true, + summary: 'Options for constructing a {@link TestClient}.', members: [ { name: 'baseUrl', @@ -28417,7 +30529,8 @@ export const apiSymbolSets: Readonly< }, { name: 'cookies', - summary: '', + summary: + 'Enable an automatically managed cookie jar (`true`), or supply an existing {@link TestCookieJar}.', signature: 'cookies?: true | TestCookieJar;', }, { @@ -28437,6 +30550,7 @@ export const apiSymbolSets: Readonly< anchor: 'test-cookie', signature: 'TestCookie: any', typeOnly: true, + summary: 'A cookie as read back from a {@link TestCookieJar}.', members: [ { name: 'name', @@ -28485,6 +30599,8 @@ export const apiSymbolSets: Readonly< anchor: 'test-cookie-jar', signature: 'TestCookieJar: any', typeOnly: true, + summary: + 'A cookie jar used to persist and replay cookies across injected requests.', members: [ { name: 'setCookie', @@ -28505,13 +30621,14 @@ export const apiSymbolSets: Readonly< ], }, ], - symbols49: [], - symbols50: [ + symbols50: [], + symbols51: [ { name: 'Accordion', anchor: 'accordion', signature: 'Accordion: (props: AccordionProps) => JSX.Element', typeOnly: true, + summary: 'Renders a part of `accordion`.', }, { name: 'AccordionContent', @@ -28519,6 +30636,8 @@ export const apiSymbolSets: Readonly< signature: 'AccordionContent: { (props: AccordionContentProps): JSX.Element | null; (props: AccordionContentAsChildProps): JSX.Element | null; }', typeOnly: true, + summary: + 'Renders the `accordion-content` part of `accordion` with `role="region"`.\n\nSupports polymorphic rendering via `asChild`.', }, { name: 'AccordionHeader', @@ -28526,12 +30645,15 @@ export const apiSymbolSets: Readonly< signature: 'AccordionHeader: { (props: AccordionHeaderProps): JSX.Element; (props: AccordionHeaderAsChildProps): JSX.Element; }', typeOnly: true, + summary: + 'Renders the `accordion-header` part of `accordion`.\n\nSupports polymorphic rendering via `asChild`.', }, { name: 'AccordionItem', anchor: 'accordion-item', signature: 'AccordionItem: (props: AccordionItemProps) => JSX.Element', typeOnly: true, + summary: 'Renders the `accordion-item` part of `accordion`.', }, { name: 'AccordionTrigger', @@ -28539,12 +30661,16 @@ export const apiSymbolSets: Readonly< signature: 'AccordionTrigger: { (props: AccordionTriggerProps): JSX.Element; (props: AccordionTriggerAsChildProps): JSX.Element; }', typeOnly: true, + summary: + 'Renders the `accordion-trigger` part of `accordion`.\n\nSupports polymorphic rendering via `asChild`.', }, { name: 'Alert', anchor: 'alert', signature: 'Alert: (props: AlertProps) => JSX.Element', typeOnly: true, + summary: + 'Renders an alert/status banner with an optional icon, title, description,\nactions, and a dismiss button. Automatically picks an "alert" or "status"\nARIA role from `variant` unless `role` is set explicitly.', }, { name: 'AlertDescription', @@ -28552,12 +30678,15 @@ export const apiSymbolSets: Readonly< signature: 'AlertDescription: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, + summary: + 'Renders the `alert-description` part of the shadcn-compatible catalog primitives.', }, { name: 'AlertDialog', anchor: 'alert-dialog', signature: 'AlertDialog: (props: AlertDialogProps) => JSX.Element', typeOnly: true, + summary: 'Renders a part of `alert-dialog`.', }, { name: 'AlertDialogAction', @@ -28565,6 +30694,8 @@ export const apiSymbolSets: Readonly< signature: 'AlertDialogAction: { (props: DialogCloseProps): JSX.Element; (props: DialogCloseAsChildProps): JSX.Element; }', typeOnly: true, + summary: + 'Renders the `dialog-close` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', }, { name: 'AlertDialogCancel', @@ -28572,6 +30703,8 @@ export const apiSymbolSets: Readonly< signature: 'AlertDialogCancel: { (props: DialogCloseProps): JSX.Element; (props: DialogCloseAsChildProps): JSX.Element; }', typeOnly: true, + summary: + 'Renders the `dialog-close` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', }, { name: 'AlertDialogContent', @@ -28579,6 +30712,8 @@ export const apiSymbolSets: Readonly< signature: 'AlertDialogContent: (props: AlertDialogContentProps | AlertDialogContentAsChildProps) => JSX.Element', typeOnly: true, + summary: + 'Renders a part of `alert-dialog`.\n\nSupports polymorphic rendering via `asChild`.', }, { name: 'AlertDialogDescription', @@ -28586,6 +30721,8 @@ export const apiSymbolSets: Readonly< signature: 'AlertDialogDescription: { (props: DialogDescriptionProps): JSX.Element; (props: DialogDescriptionAsChildProps): JSX.Element; }', typeOnly: true, + summary: + 'Renders the `dialog-description` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', }, { name: 'AlertDialogOverlay', @@ -28593,6 +30730,8 @@ export const apiSymbolSets: Readonly< signature: 'AlertDialogOverlay: { (props: DialogOverlayProps): JSX.Element | null; (props: DialogOverlayAsChildProps): JSX.Element | null; }', typeOnly: true, + summary: + 'Renders the `dialog-overlay` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', }, { name: 'AlertDialogPortal', @@ -28600,6 +30739,7 @@ export const apiSymbolSets: Readonly< signature: 'AlertDialogPortal: (props: DialogPortalProps) => JSX.Element | null', typeOnly: true, + summary: 'Renders a part of `dialog`.', }, { name: 'AlertDialogTitle', @@ -28607,6 +30747,8 @@ export const apiSymbolSets: Readonly< signature: 'AlertDialogTitle: { (props: DialogTitleProps): JSX.Element; (props: DialogTitleAsChildProps): JSX.Element; }', typeOnly: true, + summary: + 'Renders the `dialog-title` part of `dialog`.\n\nSupports polymorphic rendering via `asChild`.', }, { name: 'AlertDialogTrigger', @@ -28614,42 +30756,53 @@ export const apiSymbolSets: Readonly< signature: 'AlertDialogTrigger: (props: AlertDialogTriggerProps | AlertDialogTriggerAsChildProps) => JSX.Element', typeOnly: true, + summary: + 'Renders a part of `alert-dialog`.\n\nSupports polymorphic rendering via `asChild`.', }, { name: 'AlertHeadingTag', anchor: 'alert-heading-tag', signature: 'AlertHeadingTag: any', typeOnly: true, + summary: "Heading tag allowed for an alert's title via `titleAs`.", }, { name: 'AlertProps', anchor: 'alert-props', signature: 'AlertProps: any', typeOnly: true, + summary: 'Props for the {@link Alert } component.', }, { name: 'AlertTitle', anchor: 'alert-title', signature: 'AlertTitle: (props: CatalogComponentProps) => JSX.Element', typeOnly: true, + summary: + 'Renders the `alert-title` part of the shadcn-compatible catalog primitives.', }, { name: 'AlertVariant', anchor: 'alert-variant', signature: 'AlertVariant: any', typeOnly: true, + summary: + 'Visual tone of an {@link AlertProps} alert; `"danger"`/`"warning"` render with `role="alert"`.', }, { name: 'Aside', anchor: 'aside', signature: 'Aside: (props: AsideProps) => JSX.Element', typeOnly: true, + summary: + 'Renders a `