diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 4bb789d..a191351 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -31,6 +31,7 @@ jobs:
filters: |
docs:
- 'docs/**'
+ - 'packages/**'
appkit:
- '!docs/**'
@@ -97,4 +98,23 @@ jobs:
run: pnpm install --frozen-lockfile
- name: Build Docs
run: pnpm run docs:build
+ - name: Lint Generated Docs
+ run: pnpm run docs:lint
+ - name: Format Generated Docs
+ run: pnpm run docs:format
+ - name: Check for uncommitted docs changes
+ run: |
+ if ! git diff --exit-code docs/docs/api/; then
+ echo "❌ Error: Generated docs are out of sync with the codebase."
+ echo ""
+ echo "The API documentation in docs/docs/api/ has changes after running docs:generate."
+ echo "This means the committed docs don't match the current package code."
+ echo ""
+ echo "To fix this:"
+ echo " 1. Run: pnpm docs:build"
+ echo " 2. Run: pnpm docs:format"
+ echo " 3. Review and commit the changes"
+ echo ""
+ exit 1
+ fi
diff --git a/apps/clean-app/src/main.tsx b/apps/clean-app/src/main.tsx
index eff7ccc..6cfe441 100644
--- a/apps/clean-app/src/main.tsx
+++ b/apps/clean-app/src/main.tsx
@@ -3,7 +3,12 @@ import { createRoot } from "react-dom/client";
import "./index.css";
import App from "./App.tsx";
-createRoot(document.getElementById("root")!).render(
+const rootElement = document.getElementById("root");
+if (!rootElement) {
+ throw new Error("Root element not found");
+}
+
+createRoot(rootElement).render(
,
diff --git a/biome.json b/biome.json
index a1d00a1..cdde150 100644
--- a/biome.json
+++ b/biome.json
@@ -16,7 +16,8 @@
"!**/coverage",
"!packages/appkit-ui/src/react/ui",
"!**/routeTree.gen.ts",
- "!docs/.docusaurus"
+ "!docs/.docusaurus",
+ "!**/typedoc-sidebar.ts"
]
},
"formatter": {
diff --git a/docs/docs/api/appkit/Class.Plugin.md b/docs/docs/api/appkit/Class.Plugin.md
new file mode 100644
index 0000000..29ef6f1
--- /dev/null
+++ b/docs/docs/api/appkit/Class.Plugin.md
@@ -0,0 +1,369 @@
+# Abstract Class: Plugin\
+
+Defined in: [appkit/src/plugin/plugin.ts:33](https://github.com/databricks/appkit/blob/main/packages/appkit/src/plugin/plugin.ts#L33)
+
+## Type Parameters
+
+| Type Parameter | Default type |
+| ------ | ------ |
+| `TConfig` *extends* [`BasePluginConfig`](Interface.BasePluginConfig.md) | [`BasePluginConfig`](Interface.BasePluginConfig.md) |
+
+## Implements
+
+- `BasePlugin`
+
+## Constructors
+
+### Constructor
+
+```ts
+new Plugin(config: TConfig): Plugin;
+```
+
+Defined in: [appkit/src/plugin/plugin.ts:54](https://github.com/databricks/appkit/blob/main/packages/appkit/src/plugin/plugin.ts#L54)
+
+#### Parameters
+
+| Parameter | Type |
+| ------ | ------ |
+| `config` | `TConfig` |
+
+#### Returns
+
+`Plugin`\<`TConfig`\>
+
+## Properties
+
+### app
+
+```ts
+protected app: AppManager;
+```
+
+Defined in: [appkit/src/plugin/plugin.ts:39](https://github.com/databricks/appkit/blob/main/packages/appkit/src/plugin/plugin.ts#L39)
+
+***
+
+### cache
+
+```ts
+protected cache: CacheManager;
+```
+
+Defined in: [appkit/src/plugin/plugin.ts:38](https://github.com/databricks/appkit/blob/main/packages/appkit/src/plugin/plugin.ts#L38)
+
+***
+
+### config
+
+```ts
+protected config: TConfig;
+```
+
+Defined in: [appkit/src/plugin/plugin.ts:54](https://github.com/databricks/appkit/blob/main/packages/appkit/src/plugin/plugin.ts#L54)
+
+***
+
+### devFileReader
+
+```ts
+protected devFileReader: DevFileReader;
+```
+
+Defined in: [appkit/src/plugin/plugin.ts:40](https://github.com/databricks/appkit/blob/main/packages/appkit/src/plugin/plugin.ts#L40)
+
+***
+
+### envVars
+
+```ts
+abstract protected envVars: string[];
+```
+
+Defined in: [appkit/src/plugin/plugin.ts:43](https://github.com/databricks/appkit/blob/main/packages/appkit/src/plugin/plugin.ts#L43)
+
+***
+
+### isReady
+
+```ts
+protected isReady: boolean = false;
+```
+
+Defined in: [appkit/src/plugin/plugin.ts:37](https://github.com/databricks/appkit/blob/main/packages/appkit/src/plugin/plugin.ts#L37)
+
+***
+
+### name
+
+```ts
+name: string;
+```
+
+Defined in: [appkit/src/plugin/plugin.ts:52](https://github.com/databricks/appkit/blob/main/packages/appkit/src/plugin/plugin.ts#L52)
+
+#### Implementation of
+
+```ts
+BasePlugin.name
+```
+
+***
+
+### requiresDatabricksClient
+
+```ts
+requiresDatabricksClient: boolean = false;
+```
+
+Defined in: [appkit/src/plugin/plugin.ts:46](https://github.com/databricks/appkit/blob/main/packages/appkit/src/plugin/plugin.ts#L46)
+
+If the plugin requires the Databricks client to be set in the request context
+
+***
+
+### streamManager
+
+```ts
+protected streamManager: StreamManager;
+```
+
+Defined in: [appkit/src/plugin/plugin.ts:41](https://github.com/databricks/appkit/blob/main/packages/appkit/src/plugin/plugin.ts#L41)
+
+***
+
+### telemetry
+
+```ts
+protected telemetry: ITelemetry;
+```
+
+Defined in: [appkit/src/plugin/plugin.ts:42](https://github.com/databricks/appkit/blob/main/packages/appkit/src/plugin/plugin.ts#L42)
+
+***
+
+### phase
+
+```ts
+static phase: PluginPhase = "normal";
+```
+
+Defined in: [appkit/src/plugin/plugin.ts:51](https://github.com/databricks/appkit/blob/main/packages/appkit/src/plugin/plugin.ts#L51)
+
+## Methods
+
+### abortActiveOperations()
+
+```ts
+abortActiveOperations(): void;
+```
+
+Defined in: [appkit/src/plugin/plugin.ts:79](https://github.com/databricks/appkit/blob/main/packages/appkit/src/plugin/plugin.ts#L79)
+
+#### Returns
+
+`void`
+
+#### Implementation of
+
+```ts
+BasePlugin.abortActiveOperations
+```
+
+***
+
+### execute()
+
+```ts
+protected execute(
+ fn: (signal?: AbortSignal) => Promise,
+ options: PluginExecutionSettings,
+userKey: string): Promise;
+```
+
+Defined in: [appkit/src/plugin/plugin.ts:143](https://github.com/databricks/appkit/blob/main/packages/appkit/src/plugin/plugin.ts#L143)
+
+#### Type Parameters
+
+| Type Parameter |
+| ------ |
+| `T` |
+
+#### Parameters
+
+| Parameter | Type |
+| ------ | ------ |
+| `fn` | (`signal?`: `AbortSignal`) => `Promise`\<`T`\> |
+| `options` | `PluginExecutionSettings` |
+| `userKey` | `string` |
+
+#### Returns
+
+`Promise`\<`T` \| `undefined`\>
+
+***
+
+### executeStream()
+
+```ts
+protected executeStream(
+ res: IAppResponse,
+ fn: StreamExecuteHandler,
+ options: StreamExecutionSettings,
+userKey: string): Promise;
+```
+
+Defined in: [appkit/src/plugin/plugin.ts:84](https://github.com/databricks/appkit/blob/main/packages/appkit/src/plugin/plugin.ts#L84)
+
+#### Type Parameters
+
+| Type Parameter |
+| ------ |
+| `T` |
+
+#### Parameters
+
+| Parameter | Type |
+| ------ | ------ |
+| `res` | `IAppResponse` |
+| `fn` | `StreamExecuteHandler`\<`T`\> |
+| `options` | [`StreamExecutionSettings`](Interface.StreamExecutionSettings.md) |
+| `userKey` | `string` |
+
+#### Returns
+
+`Promise`\<`void`\>
+
+***
+
+### getEndpoints()
+
+```ts
+getEndpoints(): PluginEndpointMap;
+```
+
+Defined in: [appkit/src/plugin/plugin.ts:75](https://github.com/databricks/appkit/blob/main/packages/appkit/src/plugin/plugin.ts#L75)
+
+#### Returns
+
+`PluginEndpointMap`
+
+#### Implementation of
+
+```ts
+BasePlugin.getEndpoints
+```
+
+***
+
+### injectRoutes()
+
+```ts
+injectRoutes(_: Router): void;
+```
+
+Defined in: [appkit/src/plugin/plugin.ts:69](https://github.com/databricks/appkit/blob/main/packages/appkit/src/plugin/plugin.ts#L69)
+
+#### Parameters
+
+| Parameter | Type |
+| ------ | ------ |
+| `_` | `Router` |
+
+#### Returns
+
+`void`
+
+#### Implementation of
+
+```ts
+BasePlugin.injectRoutes
+```
+
+***
+
+### registerEndpoint()
+
+```ts
+protected registerEndpoint(name: string, path: string): void;
+```
+
+Defined in: [appkit/src/plugin/plugin.ts:165](https://github.com/databricks/appkit/blob/main/packages/appkit/src/plugin/plugin.ts#L165)
+
+#### Parameters
+
+| Parameter | Type |
+| ------ | ------ |
+| `name` | `string` |
+| `path` | `string` |
+
+#### Returns
+
+`void`
+
+***
+
+### route()
+
+```ts
+protected route<_TResponse>(router: Router, config: RouteConfig): void;
+```
+
+Defined in: [appkit/src/plugin/plugin.ts:169](https://github.com/databricks/appkit/blob/main/packages/appkit/src/plugin/plugin.ts#L169)
+
+#### Type Parameters
+
+| Type Parameter |
+| ------ |
+| `_TResponse` |
+
+#### Parameters
+
+| Parameter | Type |
+| ------ | ------ |
+| `router` | `Router` |
+| `config` | `RouteConfig` |
+
+#### Returns
+
+`void`
+
+***
+
+### setup()
+
+```ts
+setup(): Promise;
+```
+
+Defined in: [appkit/src/plugin/plugin.ts:73](https://github.com/databricks/appkit/blob/main/packages/appkit/src/plugin/plugin.ts#L73)
+
+#### Returns
+
+`Promise`\<`void`\>
+
+#### Implementation of
+
+```ts
+BasePlugin.setup
+```
+
+***
+
+### validateEnv()
+
+```ts
+validateEnv(): void;
+```
+
+Defined in: [appkit/src/plugin/plugin.ts:65](https://github.com/databricks/appkit/blob/main/packages/appkit/src/plugin/plugin.ts#L65)
+
+#### Returns
+
+`void`
+
+#### Implementation of
+
+```ts
+BasePlugin.validateEnv
+```
diff --git a/docs/docs/api/appkit/Function.appKitTypesPlugin.md b/docs/docs/api/appkit/Function.appKitTypesPlugin.md
new file mode 100644
index 0000000..9cbd64c
--- /dev/null
+++ b/docs/docs/api/appkit/Function.appKitTypesPlugin.md
@@ -0,0 +1,22 @@
+# Function: appKitTypesPlugin()
+
+```ts
+function appKitTypesPlugin(options?: AppKitTypesPluginOptions): Plugin$1;
+```
+
+Defined in: [appkit/src/type-generator/vite-plugin.ts:22](https://github.com/databricks/appkit/blob/main/packages/appkit/src/type-generator/vite-plugin.ts#L22)
+
+Vite plugin to generate types for AppKit queries.
+Calls generateFromEntryPoint under the hood.
+
+## Parameters
+
+| Parameter | Type | Description |
+| ------ | ------ | ------ |
+| `options?` | `AppKitTypesPluginOptions` | Options to override default values. |
+
+## Returns
+
+`Plugin$1`
+
+Vite plugin to generate types for AppKit queries.
diff --git a/docs/docs/api/appkit/Function.createApp.md b/docs/docs/api/appkit/Function.createApp.md
new file mode 100644
index 0000000..8d42369
--- /dev/null
+++ b/docs/docs/api/appkit/Function.createApp.md
@@ -0,0 +1,32 @@
+# Function: createApp()
+
+```ts
+function createApp(config: {
+ cache?: CacheConfig;
+ plugins?: T;
+ telemetry?: TelemetryConfig;
+}): Promise>;
+```
+
+Defined in: [appkit/src/core/appkit.ts:127](https://github.com/databricks/appkit/blob/main/packages/appkit/src/core/appkit.ts#L127)
+
+Bootstraps AppKit with the provided configuration.
+
+## Type Parameters
+
+| Type Parameter |
+| ------ |
+| `T` *extends* `PluginData`\<`PluginConstructor`, `unknown`, `string`\>[] |
+
+## Parameters
+
+| Parameter | Type |
+| ------ | ------ |
+| `config` | \{ `cache?`: [`CacheConfig`](Interface.CacheConfig.md); `plugins?`: `T`; `telemetry?`: [`TelemetryConfig`](Interface.TelemetryConfig.md); \} |
+| `config.cache?` | [`CacheConfig`](Interface.CacheConfig.md) |
+| `config.plugins?` | `T` |
+| `config.telemetry?` | [`TelemetryConfig`](Interface.TelemetryConfig.md) |
+
+## Returns
+
+`Promise`\<`PluginMap`\<`T`\>\>
diff --git a/docs/docs/api/appkit/Function.getRequestContext.md b/docs/docs/api/appkit/Function.getRequestContext.md
new file mode 100644
index 0000000..2878075
--- /dev/null
+++ b/docs/docs/api/appkit/Function.getRequestContext.md
@@ -0,0 +1,14 @@
+# Function: getRequestContext()
+
+```ts
+function getRequestContext(): RequestContext;
+```
+
+Defined in: [appkit/src/utils/databricks-client-middleware.ts:100](https://github.com/databricks/appkit/blob/main/packages/appkit/src/utils/databricks-client-middleware.ts#L100)
+
+Retrieve the request-scoped context populated by `databricksClientMiddleware`.
+Throws when invoked outside of a request lifecycle.
+
+## Returns
+
+[`RequestContext`](TypeAlias.RequestContext.md)
diff --git a/docs/docs/api/appkit/Function.isSQLTypeMarker.md b/docs/docs/api/appkit/Function.isSQLTypeMarker.md
new file mode 100644
index 0000000..08852d9
--- /dev/null
+++ b/docs/docs/api/appkit/Function.isSQLTypeMarker.md
@@ -0,0 +1,32 @@
+# Function: isSQLTypeMarker()
+
+```ts
+function isSQLTypeMarker(value: any): value is SQLTypeMarker;
+```
+
+Defined in: [shared/src/sql/helpers.ts:344](https://github.com/databricks/appkit/blob/main/packages/shared/src/sql/helpers.ts#L344)
+
+Type guard to check if a value is a SQL type marker
+
+## Parameters
+
+| Parameter | Type | Description |
+| ------ | ------ | ------ |
+| `value` | `any` | Value to check |
+
+## Returns
+
+`value is SQLTypeMarker`
+
+True if the value is a SQL type marker, false otherwise
+
+## Example
+
+```typescript
+const value = {
+ __sql_type: "DATE",
+ value: "2024-01-01",
+};
+const isSQLTypeMarker = isSQLTypeMarker(value);
+console.log(isSQLTypeMarker); // true
+```
diff --git a/docs/docs/api/appkit/Interface.BasePluginConfig.md b/docs/docs/api/appkit/Interface.BasePluginConfig.md
new file mode 100644
index 0000000..d47a75c
--- /dev/null
+++ b/docs/docs/api/appkit/Interface.BasePluginConfig.md
@@ -0,0 +1,39 @@
+# Interface: BasePluginConfig
+
+Defined in: [shared/src/plugin.ts:17](https://github.com/databricks/appkit/blob/main/packages/shared/src/plugin.ts#L17)
+
+## Indexable
+
+```ts
+[key: string]: unknown
+```
+
+## Properties
+
+### host?
+
+```ts
+optional host: string;
+```
+
+Defined in: [shared/src/plugin.ts:19](https://github.com/databricks/appkit/blob/main/packages/shared/src/plugin.ts#L19)
+
+***
+
+### name?
+
+```ts
+optional name: string;
+```
+
+Defined in: [shared/src/plugin.ts:18](https://github.com/databricks/appkit/blob/main/packages/shared/src/plugin.ts#L18)
+
+***
+
+### telemetry?
+
+```ts
+optional telemetry: TelemetryOptions;
+```
+
+Defined in: [shared/src/plugin.ts:27](https://github.com/databricks/appkit/blob/main/packages/shared/src/plugin.ts#L27)
diff --git a/docs/docs/api/appkit/Interface.CacheConfig.md b/docs/docs/api/appkit/Interface.CacheConfig.md
new file mode 100644
index 0000000..d1d26dd
--- /dev/null
+++ b/docs/docs/api/appkit/Interface.CacheConfig.md
@@ -0,0 +1,143 @@
+# Interface: CacheConfig
+
+Defined in: [shared/src/cache.ts:36](https://github.com/databricks/appkit/blob/main/packages/shared/src/cache.ts#L36)
+
+Configuration for caching
+
+## Indexable
+
+```ts
+[key: string]: unknown
+```
+
+## Properties
+
+### cacheKey?
+
+```ts
+optional cacheKey: (string | number | object)[];
+```
+
+Defined in: [shared/src/cache.ts:46](https://github.com/databricks/appkit/blob/main/packages/shared/src/cache.ts#L46)
+
+Cache key
+
+***
+
+### cleanupProbability?
+
+```ts
+optional cleanupProbability: number;
+```
+
+Defined in: [shared/src/cache.ts:55](https://github.com/databricks/appkit/blob/main/packages/shared/src/cache.ts#L55)
+
+Probability (0-1) of triggering cleanup on each get operation
+
+***
+
+### enabled?
+
+```ts
+optional enabled: boolean;
+```
+
+Defined in: [shared/src/cache.ts:38](https://github.com/databricks/appkit/blob/main/packages/shared/src/cache.ts#L38)
+
+Whether caching is enabled
+
+***
+
+### evictionCheckProbability?
+
+```ts
+optional evictionCheckProbability: number;
+```
+
+Defined in: [shared/src/cache.ts:58](https://github.com/databricks/appkit/blob/main/packages/shared/src/cache.ts#L58)
+
+Probability (0-1) of checking total bytes on each write operation
+
+***
+
+### maxBytes?
+
+```ts
+optional maxBytes: number;
+```
+
+Defined in: [shared/src/cache.ts:42](https://github.com/databricks/appkit/blob/main/packages/shared/src/cache.ts#L42)
+
+Maximum number of bytes in the cache
+
+***
+
+### maxEntryBytes?
+
+```ts
+optional maxEntryBytes: number;
+```
+
+Defined in: [shared/src/cache.ts:61](https://github.com/databricks/appkit/blob/main/packages/shared/src/cache.ts#L61)
+
+Maximum number of bytes per entry in the cache
+
+***
+
+### maxSize?
+
+```ts
+optional maxSize: number;
+```
+
+Defined in: [shared/src/cache.ts:44](https://github.com/databricks/appkit/blob/main/packages/shared/src/cache.ts#L44)
+
+Maximum number of entries in the cache
+
+***
+
+### storage?
+
+```ts
+optional storage: CacheStorage;
+```
+
+Defined in: [shared/src/cache.ts:48](https://github.com/databricks/appkit/blob/main/packages/shared/src/cache.ts#L48)
+
+Cache Storage provider instance
+
+***
+
+### strictPersistence?
+
+```ts
+optional strictPersistence: boolean;
+```
+
+Defined in: [shared/src/cache.ts:50](https://github.com/databricks/appkit/blob/main/packages/shared/src/cache.ts#L50)
+
+Whether to enforce strict persistence
+
+***
+
+### telemetry?
+
+```ts
+optional telemetry: TelemetryOptions;
+```
+
+Defined in: [shared/src/cache.ts:52](https://github.com/databricks/appkit/blob/main/packages/shared/src/cache.ts#L52)
+
+Telemetry configuration
+
+***
+
+### ttl?
+
+```ts
+optional ttl: number;
+```
+
+Defined in: [shared/src/cache.ts:40](https://github.com/databricks/appkit/blob/main/packages/shared/src/cache.ts#L40)
+
+Time to live in seconds
diff --git a/docs/docs/api/appkit/Interface.ITelemetry.md b/docs/docs/api/appkit/Interface.ITelemetry.md
new file mode 100644
index 0000000..0478778
--- /dev/null
+++ b/docs/docs/api/appkit/Interface.ITelemetry.md
@@ -0,0 +1,157 @@
+# Interface: ITelemetry
+
+Defined in: [appkit/src/telemetry/types.ts:33](https://github.com/databricks/appkit/blob/main/packages/appkit/src/telemetry/types.ts#L33)
+
+Plugin-facing interface for OpenTelemetry instrumentation.
+Provides a thin abstraction over OpenTelemetry APIs for plugins.
+
+## Methods
+
+### emit()
+
+```ts
+emit(logRecord: LogRecord): void;
+```
+
+Defined in: [appkit/src/telemetry/types.ts:57](https://github.com/databricks/appkit/blob/main/packages/appkit/src/telemetry/types.ts#L57)
+
+Emits a log record using the default logger.
+Respects the logs enabled/disabled config.
+
+#### Parameters
+
+| Parameter | Type | Description |
+| ------ | ------ | ------ |
+| `logRecord` | `LogRecord` | The log record to emit |
+
+#### Returns
+
+`void`
+
+***
+
+### getLogger()
+
+```ts
+getLogger(options?: InstrumentConfig): Logger;
+```
+
+Defined in: [appkit/src/telemetry/types.ts:50](https://github.com/databricks/appkit/blob/main/packages/appkit/src/telemetry/types.ts#L50)
+
+Gets a logger for emitting log records.
+
+#### Parameters
+
+| Parameter | Type | Description |
+| ------ | ------ | ------ |
+| `options?` | `InstrumentConfig` | Instrument customization options. |
+
+#### Returns
+
+`Logger`
+
+***
+
+### getMeter()
+
+```ts
+getMeter(options?: InstrumentConfig): Meter;
+```
+
+Defined in: [appkit/src/telemetry/types.ts:44](https://github.com/databricks/appkit/blob/main/packages/appkit/src/telemetry/types.ts#L44)
+
+Gets a meter for recording metrics.
+
+#### Parameters
+
+| Parameter | Type | Description |
+| ------ | ------ | ------ |
+| `options?` | `InstrumentConfig` | Instrument customization options. |
+
+#### Returns
+
+`Meter`
+
+***
+
+### getTracer()
+
+```ts
+getTracer(options?: InstrumentConfig): Tracer;
+```
+
+Defined in: [appkit/src/telemetry/types.ts:38](https://github.com/databricks/appkit/blob/main/packages/appkit/src/telemetry/types.ts#L38)
+
+Gets a tracer for creating spans.
+
+#### Parameters
+
+| Parameter | Type | Description |
+| ------ | ------ | ------ |
+| `options?` | `InstrumentConfig` | Instrument customization options. |
+
+#### Returns
+
+`Tracer`
+
+***
+
+### registerInstrumentations()
+
+```ts
+registerInstrumentations(instrumentations: Instrumentation[]): void;
+```
+
+Defined in: [appkit/src/telemetry/types.ts:81](https://github.com/databricks/appkit/blob/main/packages/appkit/src/telemetry/types.ts#L81)
+
+Register OpenTelemetry instrumentations.
+Can be called at any time, but recommended to call in plugin constructor.
+
+#### Parameters
+
+| Parameter | Type | Description |
+| ------ | ------ | ------ |
+| `instrumentations` | `Instrumentation`\<`InstrumentationConfig`\>[] | Array of OpenTelemetry instrumentations to register |
+
+#### Returns
+
+`void`
+
+***
+
+### startActiveSpan()
+
+```ts
+startActiveSpan(
+ name: string,
+ options: SpanOptions,
+ fn: (span: Span) => Promise,
+tracerOptions?: InstrumentConfig): Promise;
+```
+
+Defined in: [appkit/src/telemetry/types.ts:69](https://github.com/databricks/appkit/blob/main/packages/appkit/src/telemetry/types.ts#L69)
+
+Starts an active span and executes a callback function within its context.
+Respects the traces enabled/disabled config.
+When traces are disabled, executes the callback with a no-op span.
+
+#### Type Parameters
+
+| Type Parameter |
+| ------ |
+| `T` |
+
+#### Parameters
+
+| Parameter | Type | Description |
+| ------ | ------ | ------ |
+| `name` | `string` | The name of the span |
+| `options` | `SpanOptions` | Span options including attributes, kind, etc. |
+| `fn` | (`span`: `Span`) => `Promise`\<`T`\> | Callback function to execute within the span context |
+| `tracerOptions?` | `InstrumentConfig` | Optional tracer configuration (custom name, prefix inclusion) |
+
+#### Returns
+
+`Promise`\<`T`\>
+
+Promise resolving to the callback's return value
diff --git a/docs/docs/api/appkit/Interface.StreamExecutionSettings.md b/docs/docs/api/appkit/Interface.StreamExecutionSettings.md
new file mode 100644
index 0000000..34d3569
--- /dev/null
+++ b/docs/docs/api/appkit/Interface.StreamExecutionSettings.md
@@ -0,0 +1,33 @@
+# Interface: StreamExecutionSettings
+
+Defined in: [shared/src/execute.ts:48](https://github.com/databricks/appkit/blob/main/packages/shared/src/execute.ts#L48)
+
+## Properties
+
+### default
+
+```ts
+default: PluginExecuteConfig;
+```
+
+Defined in: [shared/src/execute.ts:49](https://github.com/databricks/appkit/blob/main/packages/shared/src/execute.ts#L49)
+
+***
+
+### stream?
+
+```ts
+optional stream: StreamConfig;
+```
+
+Defined in: [shared/src/execute.ts:51](https://github.com/databricks/appkit/blob/main/packages/shared/src/execute.ts#L51)
+
+***
+
+### user?
+
+```ts
+optional user: PluginExecuteConfig;
+```
+
+Defined in: [shared/src/execute.ts:50](https://github.com/databricks/appkit/blob/main/packages/shared/src/execute.ts#L50)
diff --git a/docs/docs/api/appkit/Interface.TelemetryConfig.md b/docs/docs/api/appkit/Interface.TelemetryConfig.md
new file mode 100644
index 0000000..89b03fa
--- /dev/null
+++ b/docs/docs/api/appkit/Interface.TelemetryConfig.md
@@ -0,0 +1,53 @@
+# Interface: TelemetryConfig
+
+Defined in: [appkit/src/telemetry/types.ts:5](https://github.com/databricks/appkit/blob/main/packages/appkit/src/telemetry/types.ts#L5)
+
+## Properties
+
+### exportIntervalMs?
+
+```ts
+optional exportIntervalMs: number;
+```
+
+Defined in: [appkit/src/telemetry/types.ts:9](https://github.com/databricks/appkit/blob/main/packages/appkit/src/telemetry/types.ts#L9)
+
+***
+
+### headers?
+
+```ts
+optional headers: Record;
+```
+
+Defined in: [appkit/src/telemetry/types.ts:10](https://github.com/databricks/appkit/blob/main/packages/appkit/src/telemetry/types.ts#L10)
+
+***
+
+### instrumentations?
+
+```ts
+optional instrumentations: Instrumentation[];
+```
+
+Defined in: [appkit/src/telemetry/types.ts:8](https://github.com/databricks/appkit/blob/main/packages/appkit/src/telemetry/types.ts#L8)
+
+***
+
+### serviceName?
+
+```ts
+optional serviceName: string;
+```
+
+Defined in: [appkit/src/telemetry/types.ts:6](https://github.com/databricks/appkit/blob/main/packages/appkit/src/telemetry/types.ts#L6)
+
+***
+
+### serviceVersion?
+
+```ts
+optional serviceVersion: string;
+```
+
+Defined in: [appkit/src/telemetry/types.ts:7](https://github.com/databricks/appkit/blob/main/packages/appkit/src/telemetry/types.ts#L7)
diff --git a/docs/docs/api/appkit/TypeAlias.IAppRouter.md b/docs/docs/api/appkit/TypeAlias.IAppRouter.md
new file mode 100644
index 0000000..08197ba
--- /dev/null
+++ b/docs/docs/api/appkit/TypeAlias.IAppRouter.md
@@ -0,0 +1,7 @@
+# Type Alias: IAppRouter
+
+```ts
+type IAppRouter = express.Router;
+```
+
+Defined in: [shared/src/plugin.ts:94](https://github.com/databricks/appkit/blob/main/packages/shared/src/plugin.ts#L94)
diff --git a/docs/docs/api/appkit/TypeAlias.RequestContext.md b/docs/docs/api/appkit/TypeAlias.RequestContext.md
new file mode 100644
index 0000000..3fd9750
--- /dev/null
+++ b/docs/docs/api/appkit/TypeAlias.RequestContext.md
@@ -0,0 +1,85 @@
+# Type Alias: RequestContext
+
+```ts
+type RequestContext = {
+ serviceDatabricksClient: WorkspaceClient;
+ serviceUserId: string;
+ userDatabricksClient?: WorkspaceClient;
+ userId: string;
+ userName?: string;
+ warehouseId: Promise;
+ workspaceId: Promise;
+};
+```
+
+Defined in: [appkit/src/utils/databricks-client-middleware.ts:13](https://github.com/databricks/appkit/blob/main/packages/appkit/src/utils/databricks-client-middleware.ts#L13)
+
+## Properties
+
+### serviceDatabricksClient
+
+```ts
+serviceDatabricksClient: WorkspaceClient;
+```
+
+Defined in: [appkit/src/utils/databricks-client-middleware.ts:15](https://github.com/databricks/appkit/blob/main/packages/appkit/src/utils/databricks-client-middleware.ts#L15)
+
+***
+
+### serviceUserId
+
+```ts
+serviceUserId: string;
+```
+
+Defined in: [appkit/src/utils/databricks-client-middleware.ts:18](https://github.com/databricks/appkit/blob/main/packages/appkit/src/utils/databricks-client-middleware.ts#L18)
+
+***
+
+### userDatabricksClient?
+
+```ts
+optional userDatabricksClient: WorkspaceClient;
+```
+
+Defined in: [appkit/src/utils/databricks-client-middleware.ts:14](https://github.com/databricks/appkit/blob/main/packages/appkit/src/utils/databricks-client-middleware.ts#L14)
+
+***
+
+### userId
+
+```ts
+userId: string;
+```
+
+Defined in: [appkit/src/utils/databricks-client-middleware.ts:16](https://github.com/databricks/appkit/blob/main/packages/appkit/src/utils/databricks-client-middleware.ts#L16)
+
+***
+
+### userName?
+
+```ts
+optional userName: string;
+```
+
+Defined in: [appkit/src/utils/databricks-client-middleware.ts:17](https://github.com/databricks/appkit/blob/main/packages/appkit/src/utils/databricks-client-middleware.ts#L17)
+
+***
+
+### warehouseId
+
+```ts
+warehouseId: Promise;
+```
+
+Defined in: [appkit/src/utils/databricks-client-middleware.ts:19](https://github.com/databricks/appkit/blob/main/packages/appkit/src/utils/databricks-client-middleware.ts#L19)
+
+***
+
+### workspaceId
+
+```ts
+workspaceId: Promise;
+```
+
+Defined in: [appkit/src/utils/databricks-client-middleware.ts:20](https://github.com/databricks/appkit/blob/main/packages/appkit/src/utils/databricks-client-middleware.ts#L20)
diff --git a/docs/docs/api/appkit/TypeAlias.SQLTypeMarker.md b/docs/docs/api/appkit/TypeAlias.SQLTypeMarker.md
new file mode 100644
index 0000000..3c049b2
--- /dev/null
+++ b/docs/docs/api/appkit/TypeAlias.SQLTypeMarker.md
@@ -0,0 +1,16 @@
+# Type Alias: SQLTypeMarker
+
+```ts
+type SQLTypeMarker =
+ | SQLStringMarker
+ | SQLNumberMarker
+ | SQLBooleanMarker
+ | SQLBinaryMarker
+ | SQLDateMarker
+ | SQLTimestampMarker;
+```
+
+Defined in: [shared/src/sql/types.ts:36](https://github.com/databricks/appkit/blob/main/packages/shared/src/sql/types.ts#L36)
+
+Object that identifies a typed SQL parameter.
+Created using sql.date(), sql.string(), sql.number(), sql.boolean(), sql.timestamp(), sql.binary(), or sql.interval().
diff --git a/docs/docs/api/appkit/Variable.sql.md b/docs/docs/api/appkit/Variable.sql.md
new file mode 100644
index 0000000..8fc3e99
--- /dev/null
+++ b/docs/docs/api/appkit/Variable.sql.md
@@ -0,0 +1,246 @@
+# Variable: sql
+
+```ts
+const sql: {
+ binary: SQLBinaryMarker;
+ boolean: SQLBooleanMarker;
+ date: SQLDateMarker;
+ number: SQLNumberMarker;
+ string: SQLStringMarker;
+ timestamp: SQLTimestampMarker;
+};
+```
+
+Defined in: [shared/src/sql/helpers.ts:14](https://github.com/databricks/appkit/blob/main/packages/shared/src/sql/helpers.ts#L14)
+
+SQL helper namespace
+
+## Type Declaration
+
+### binary()
+
+```ts
+binary(value: string | Uint8Array | ArrayBuffer): SQLBinaryMarker;
+```
+
+Creates a BINARY parameter as hex-encoded STRING
+Accepts Uint8Array, ArrayBuffer, or hex string
+Note: Databricks SQL Warehouse doesn't support BINARY as parameter type,
+so this helper returns a STRING with hex encoding. Use UNHEX(:param) in your SQL.
+
+#### Parameters
+
+| Parameter | Type | Description |
+| ------ | ------ | ------ |
+| `value` | `string` \| `Uint8Array` \| `ArrayBuffer` | Uint8Array, ArrayBuffer, or hex string |
+
+#### Returns
+
+`SQLBinaryMarker`
+
+Marker object with STRING type and hex-encoded value
+
+#### Examples
+
+```typescript
+// From Uint8Array:
+const params = { data: sql.binary(new Uint8Array([0x53, 0x70, 0x61, 0x72, 0x6b])) };
+// Returns: { __sql_type: "STRING", value: "537061726B" }
+// SQL: SELECT UNHEX(:data) as binary_value
+```
+
+```typescript
+// From hex string:
+const params = { data: sql.binary("537061726B") };
+// Returns: { __sql_type: "STRING", value: "537061726B" }
+```
+
+### boolean()
+
+```ts
+boolean(value: string | number | boolean): SQLBooleanMarker;
+```
+
+Create a BOOLEAN type parameter
+Accepts booleans, strings, or numbers
+
+#### Parameters
+
+| Parameter | Type | Description |
+| ------ | ------ | ------ |
+| `value` | `string` \| `number` \| `boolean` | Boolean, string, or number |
+
+#### Returns
+
+`SQLBooleanMarker`
+
+Marker object for BOOLEAN type parameter
+
+#### Examples
+
+```typescript
+const params = { isActive: sql.boolean(true) };
+params = { isActive: "true" }
+```
+
+```typescript
+const params = { isActive: sql.boolean("true") };
+params = { isActive: "true" }
+```
+
+```typescript
+const params = { isActive: sql.boolean(1) };
+params = { isActive: "true" }
+```
+
+```typescript
+const params = { isActive: sql.boolean("false") };
+params = { isActive: "false" }
+```
+
+```typescript
+const params = { isActive: sql.boolean(0) };
+params = { isActive: "false" }
+```
+
+### date()
+
+```ts
+date(value: string | Date): SQLDateMarker;
+```
+
+Creates a DATE type parameter
+Accepts Date objects or ISO date strings (YYYY-MM-DD format)
+
+#### Parameters
+
+| Parameter | Type | Description |
+| ------ | ------ | ------ |
+| `value` | `string` \| `Date` | Date object or ISO date string |
+
+#### Returns
+
+`SQLDateMarker`
+
+Marker object for DATE type parameter
+
+#### Examples
+
+```typescript
+const params = { startDate: sql.date(new Date("2024-01-01")) };
+params = { startDate: "2024-01-01" }
+```
+
+```typescript
+const params = { startDate: sql.date("2024-01-01") };
+params = { startDate: "2024-01-01" }
+```
+
+### number()
+
+```ts
+number(value: string | number): SQLNumberMarker;
+```
+
+Creates a NUMERIC type parameter
+Accepts numbers or numeric strings
+
+#### Parameters
+
+| Parameter | Type | Description |
+| ------ | ------ | ------ |
+| `value` | `string` \| `number` | Number or numeric string |
+
+#### Returns
+
+`SQLNumberMarker`
+
+Marker object for NUMERIC type parameter
+
+#### Examples
+
+```typescript
+const params = { userId: sql.number(123) };
+params = { userId: "123" }
+```
+
+```typescript
+const params = { userId: sql.number("123") };
+params = { userId: "123" }
+```
+
+### string()
+
+```ts
+string(value: string | number | boolean): SQLStringMarker;
+```
+
+Creates a STRING type parameter
+Accepts strings, numbers, or booleans
+
+#### Parameters
+
+| Parameter | Type | Description |
+| ------ | ------ | ------ |
+| `value` | `string` \| `number` \| `boolean` | String, number, or boolean |
+
+#### Returns
+
+`SQLStringMarker`
+
+Marker object for STRING type parameter
+
+#### Examples
+
+```typescript
+const params = { name: sql.string("John") };
+params = { name: "John" }
+```
+
+```typescript
+const params = { name: sql.string(123) };
+params = { name: "123" }
+```
+
+```typescript
+const params = { name: sql.string(true) };
+params = { name: "true" }
+```
+
+### timestamp()
+
+```ts
+timestamp(value: string | number | Date): SQLTimestampMarker;
+```
+
+Creates a TIMESTAMP type parameter
+Accepts Date objects, ISO timestamp strings, or Unix timestamp numbers
+
+#### Parameters
+
+| Parameter | Type | Description |
+| ------ | ------ | ------ |
+| `value` | `string` \| `number` \| `Date` | Date object, ISO timestamp string, or Unix timestamp number |
+
+#### Returns
+
+`SQLTimestampMarker`
+
+Marker object for TIMESTAMP type parameter
+
+#### Examples
+
+```typescript
+const params = { createdTime: sql.timestamp(new Date("2024-01-01T12:00:00Z")) };
+params = { createdTime: "2024-01-01T12:00:00Z" }
+```
+
+```typescript
+const params = { createdTime: sql.timestamp("2024-01-01T12:00:00Z") };
+params = { createdTime: "2024-01-01T12:00:00Z" }
+```
+
+```typescript
+const params = { createdTime: sql.timestamp(1704110400000) };
+params = { createdTime: "2024-01-01T12:00:00Z" }
+```
diff --git a/docs/docs/api/appkit/index.md b/docs/docs/api/appkit/index.md
new file mode 100644
index 0000000..141def8
--- /dev/null
+++ b/docs/docs/api/appkit/index.md
@@ -0,0 +1,40 @@
+# @databricks/appkit
+
+## Classes
+
+| Class | Description |
+| ------ | ------ |
+| [Plugin](Class.Plugin.md) | - |
+
+## Interfaces
+
+| Interface | Description |
+| ------ | ------ |
+| [BasePluginConfig](Interface.BasePluginConfig.md) | - |
+| [CacheConfig](Interface.CacheConfig.md) | Configuration for caching |
+| [ITelemetry](Interface.ITelemetry.md) | Plugin-facing interface for OpenTelemetry instrumentation. Provides a thin abstraction over OpenTelemetry APIs for plugins. |
+| [StreamExecutionSettings](Interface.StreamExecutionSettings.md) | - |
+| [TelemetryConfig](Interface.TelemetryConfig.md) | - |
+
+## Type Aliases
+
+| Type Alias | Description |
+| ------ | ------ |
+| [IAppRouter](TypeAlias.IAppRouter.md) | - |
+| [RequestContext](TypeAlias.RequestContext.md) | - |
+| [SQLTypeMarker](TypeAlias.SQLTypeMarker.md) | Object that identifies a typed SQL parameter. Created using sql.date(), sql.string(), sql.number(), sql.boolean(), sql.timestamp(), sql.binary(), or sql.interval(). |
+
+## Variables
+
+| Variable | Description |
+| ------ | ------ |
+| [sql](Variable.sql.md) | SQL helper namespace |
+
+## Functions
+
+| Function | Description |
+| ------ | ------ |
+| [appKitTypesPlugin](Function.appKitTypesPlugin.md) | Vite plugin to generate types for AppKit queries. Calls generateFromEntryPoint under the hood. |
+| [createApp](Function.createApp.md) | Bootstraps AppKit with the provided configuration. |
+| [getRequestContext](Function.getRequestContext.md) | Retrieve the request-scoped context populated by `databricksClientMiddleware`. Throws when invoked outside of a request lifecycle. |
+| [isSQLTypeMarker](Function.isSQLTypeMarker.md) | Type guard to check if a value is a SQL type marker |
diff --git a/docs/docs/api/appkit/typedoc-sidebar.ts b/docs/docs/api/appkit/typedoc-sidebar.ts
new file mode 100644
index 0000000..eefc780
--- /dev/null
+++ b/docs/docs/api/appkit/typedoc-sidebar.ts
@@ -0,0 +1,106 @@
+import { SidebarsConfig } from "@docusaurus/plugin-content-docs";
+const typedocSidebar: SidebarsConfig = {
+ items: [
+ {
+ type: "category",
+ label: "Classes",
+ items: [
+ {
+ type: "doc",
+ id: "api/appkit/Class.Plugin",
+ label: "Plugin"
+ }
+ ]
+ },
+ {
+ type: "category",
+ label: "Interfaces",
+ items: [
+ {
+ type: "doc",
+ id: "api/appkit/Interface.BasePluginConfig",
+ label: "BasePluginConfig"
+ },
+ {
+ type: "doc",
+ id: "api/appkit/Interface.CacheConfig",
+ label: "CacheConfig"
+ },
+ {
+ type: "doc",
+ id: "api/appkit/Interface.ITelemetry",
+ label: "ITelemetry"
+ },
+ {
+ type: "doc",
+ id: "api/appkit/Interface.StreamExecutionSettings",
+ label: "StreamExecutionSettings"
+ },
+ {
+ type: "doc",
+ id: "api/appkit/Interface.TelemetryConfig",
+ label: "TelemetryConfig"
+ }
+ ]
+ },
+ {
+ type: "category",
+ label: "Type Aliases",
+ items: [
+ {
+ type: "doc",
+ id: "api/appkit/TypeAlias.IAppRouter",
+ label: "IAppRouter"
+ },
+ {
+ type: "doc",
+ id: "api/appkit/TypeAlias.RequestContext",
+ label: "RequestContext"
+ },
+ {
+ type: "doc",
+ id: "api/appkit/TypeAlias.SQLTypeMarker",
+ label: "SQLTypeMarker"
+ }
+ ]
+ },
+ {
+ type: "category",
+ label: "Variables",
+ items: [
+ {
+ type: "doc",
+ id: "api/appkit/Variable.sql",
+ label: "sql"
+ }
+ ]
+ },
+ {
+ type: "category",
+ label: "Functions",
+ items: [
+ {
+ type: "doc",
+ id: "api/appkit/Function.appKitTypesPlugin",
+ label: "appKitTypesPlugin"
+ },
+ {
+ type: "doc",
+ id: "api/appkit/Function.createApp",
+ label: "createApp"
+ },
+ {
+ type: "doc",
+ id: "api/appkit/Function.getRequestContext",
+ label: "getRequestContext"
+ },
+ {
+ type: "doc",
+ id: "api/appkit/Function.isSQLTypeMarker",
+ label: "isSQLTypeMarker"
+ }
+ ]
+ }
+ ]
+};
+export default typedocSidebar;
\ No newline at end of file
diff --git a/docs/docs/api/index.md b/docs/docs/api/index.md
new file mode 100644
index 0000000..01ffcc4
--- /dev/null
+++ b/docs/docs/api/index.md
@@ -0,0 +1,7 @@
+# API Reference
+
+This section contains the API reference for the AppKit packages.
+
+## Modules
+
+- [`appkit`](appkit/index.md) - Core library
diff --git a/docs/docusaurus.config.ts b/docs/docusaurus.config.ts
index 37d33b6..0db3196 100644
--- a/docs/docusaurus.config.ts
+++ b/docs/docusaurus.config.ts
@@ -63,7 +63,37 @@ const config: Config = {
],
],
- plugins: [require.resolve("docusaurus-lunr-search")],
+ plugins: [
+ require.resolve("docusaurus-lunr-search"),
+ [
+ "docusaurus-plugin-typedoc",
+ {
+ id: "appkit",
+ entryPoints: ["../packages/appkit/src/index.ts"],
+ tsconfig: "../packages/appkit/tsconfig.json",
+ out: "docs/api/appkit",
+ gitRevision: "main",
+ useCodeBlocks: true,
+ excludeExternals: true,
+ excludePrivate: true,
+ excludeProtected: false,
+ excludeInternal: true,
+ indexFormat: "table",
+ readme: "none",
+ parametersFormat: "table",
+ categorizeByGroup: true,
+ excludeNotDocumented: false,
+ flattenOutputFiles: true,
+ expandObjects: true,
+ expandParameters: true,
+ sidebar: {
+ autoConfiguration: true,
+ pretty: true,
+ typescript: true,
+ },
+ },
+ ],
+ ],
themeConfig: {
colorMode: {
@@ -116,6 +146,10 @@ const config: Config = {
label: "Getting started",
to: "/docs/",
},
+ {
+ label: "API Reference",
+ to: "/docs/api/",
+ },
],
},
{
diff --git a/docs/package.json b/docs/package.json
index 017893d..db31dcc 100644
--- a/docs/package.json
+++ b/docs/package.json
@@ -29,6 +29,9 @@
"@docusaurus/module-type-aliases": "3.9.2",
"@docusaurus/tsconfig": "3.9.2",
"@docusaurus/types": "3.9.2",
+ "docusaurus-plugin-typedoc": "^1.4.2",
+ "typedoc": "^0.28.15",
+ "typedoc-plugin-markdown": "^4.9.0",
"typescript": "~5.6.2"
},
"browserslist": {
diff --git a/docs/sidebars.ts b/docs/sidebars.ts
index da11c4b..40f5259 100644
--- a/docs/sidebars.ts
+++ b/docs/sidebars.ts
@@ -1,4 +1,5 @@
import type { SidebarsConfig } from "@docusaurus/plugin-content-docs";
+import typedocSidebar from "./docs/api/appkit/typedoc-sidebar";
// This runs in Node.js - Don't use client-side code here (browser APIs, JSX...)
@@ -12,22 +13,70 @@ import type { SidebarsConfig } from "@docusaurus/plugin-content-docs";
Create as many sidebars as you want.
*/
+
+const SUPPORTED_KINDS = new Set([
+ "class",
+ "interface",
+ "typealias",
+ "function",
+ "variable",
+ "enum",
+]);
+
+function flattenSidebarWithKind(sidebarConfig: any): any[] {
+ const flatItems: any[] = [];
+ const items = Array.isArray(sidebarConfig)
+ ? sidebarConfig
+ : sidebarConfig.items || [];
+
+ for (const item of items) {
+ if (item.type === "category" && item.items) {
+ // Extract items from categories
+ for (const subItem of item.items) {
+ // Extract kind from the id (e.g., "Function." from "api/appkit/Function.name")
+ // To get "function", "class", "interface", etc.
+ const idParts = subItem.id.split("/").pop() || "";
+ const rawKind = idParts.split(".")[0].toLowerCase();
+ const kind = SUPPORTED_KINDS.has(rawKind) ? rawKind : "other";
+
+ flatItems.push({
+ ...subItem,
+ className: `api-kind-${kind}`,
+ });
+ }
+ } else {
+ flatItems.push(item);
+ }
+ }
+
+ return flatItems;
+}
const sidebars: SidebarsConfig = {
- // By default, Docusaurus generates a sidebar from the docs folder structure
- docsSidebar: [{ type: "autogenerated", dirName: "." }],
-
- // But you can create a sidebar manually
- /*
- tutorialSidebar: [
- 'intro',
- 'hello',
+ docsSidebar: [
+ {
+ type: "autogenerated",
+ dirName: ".",
+ },
{
- type: 'category',
- label: 'Tutorial',
- items: ['tutorial-basics/create-a-document'],
+ type: "category",
+ label: "API Reference",
+ link: {
+ type: "doc",
+ id: "api/index",
+ },
+ items: [
+ {
+ type: "category",
+ label: "@databricks/appkit",
+ link: {
+ type: "doc",
+ id: "api/appkit/index",
+ },
+ items: flattenSidebarWithKind(typedocSidebar),
+ },
+ ],
},
],
- */
};
export default sidebars;
diff --git a/docs/src/css/custom.css b/docs/src/css/custom.css
index 7dbd4c5..4b83948 100644
--- a/docs/src/css/custom.css
+++ b/docs/src/css/custom.css
@@ -20,6 +20,13 @@
--hero-text-color: #ffffff;
--hero-gradient-dark: #0b2026;
--hero-gradient-accent: #ff3621;
+
+ --api-kind-class-color: #3178c6;
+ --api-kind-interface-color: #8b5cf6;
+ --api-kind-typealias-color: #ec4899;
+ --api-kind-function-color: #10b981;
+ --api-kind-variable-color: #f59e0b;
+ --api-kind-enum-color: #6366f1;
}
[data-theme="light"] {
@@ -48,3 +55,67 @@
display: block;
}
}
+
+.api-kind-class .menu__link::before,
+.api-kind-interface .menu__link::before,
+.api-kind-typealias .menu__link::before,
+.api-kind-function .menu__link::before,
+.api-kind-variable .menu__link::before,
+.api-kind-enum .menu__link::before,
+.api-kind-other .menu__link::before {
+ display: inline-block;
+ width: 1.5em;
+ margin-right: 0.5em;
+ font-size: 0.75em;
+ font-weight: 600;
+ border: 1.5px solid;
+ border-radius: 3px;
+ font-family: var(--ifm-font-family-monospace);
+ line-height: 1;
+ text-align: center;
+ vertical-align: middle;
+ padding: 0.2em;
+ box-sizing: border-box;
+}
+
+.api-kind-class .menu__link::before {
+ content: "C";
+ border-color: var(--api-kind-class-color);
+ color: var(--api-kind-class-color);
+}
+
+.api-kind-interface .menu__link::before {
+ border-color: var(--api-kind-interface-color);
+ color: var(--api-kind-interface-color);
+ content: "I";
+}
+
+.api-kind-typealias .menu__link::before {
+ border-color: var(--api-kind-typealias-color);
+ color: var(--api-kind-typealias-color);
+ content: "T";
+}
+
+.api-kind-function .menu__link::before {
+ border-color: var(--api-kind-function-color);
+ color: var(--api-kind-function-color);
+ content: "F";
+}
+
+.api-kind-variable .menu__link::before {
+ border-color: var(--api-kind-variable-color);
+ color: var(--api-kind-variable-color);
+ content: "V";
+}
+
+.api-kind-enum .menu__link::before {
+ border-color: var(--api-kind-enum-color);
+ color: var(--api-kind-enum-color);
+ content: "E";
+}
+
+.api-kind-other .menu__link::before {
+ border-color: var(--ifm-color-content);
+ color: var(--ifm-color-content);
+ content: "O";
+}
diff --git a/packages/appkit-ui/src/react/charts/normalize.ts b/packages/appkit-ui/src/react/charts/normalize.ts
index abf674e..63a6aca 100644
--- a/packages/appkit-ui/src/react/charts/normalize.ts
+++ b/packages/appkit-ui/src/react/charts/normalize.ts
@@ -316,7 +316,7 @@ export interface NormalizedHeatmapData extends NormalizedChartDataBase {
/**
* Normalizes data specifically for heatmap charts.
- * Expects data in format: { xKey: string, yAxisKey: string, valueKey: number }
+ * Expects data in format: `{ xKey: string, yAxisKey: string, valueKey: number }`
*
* @param data - Raw data (Arrow Table or JSON array)
* @param xKey - Field key for X-axis (columns)
diff --git a/packages/appkit/src/analytics/analytics.ts b/packages/appkit/src/analytics/analytics.ts
index 81d4b12..be2247c 100644
--- a/packages/appkit/src/analytics/analytics.ts
+++ b/packages/appkit/src/analytics/analytics.ts
@@ -240,6 +240,9 @@ export class AnalyticsPlugin extends Plugin {
}
}
+/**
+ * @internal
+ */
export const analytics = toPlugin<
typeof AnalyticsPlugin,
IAnalyticsConfig,
diff --git a/packages/appkit/src/cache/index.ts b/packages/appkit/src/cache/index.ts
index 5f80fbf..ec377f9 100644
--- a/packages/appkit/src/cache/index.ts
+++ b/packages/appkit/src/cache/index.ts
@@ -15,6 +15,7 @@ import { InMemoryStorage, PersistentStorage } from "./storage";
* The cache is automatically initialized by AppKit. Use `getInstanceSync()` to access
* the singleton instance after initialization.
*
+ * @internal
* @example
* ```typescript
* const cache = CacheManager.getInstanceSync();
diff --git a/packages/appkit/src/core/appkit.ts b/packages/appkit/src/core/appkit.ts
index 7aecaf7..4e20a63 100644
--- a/packages/appkit/src/core/appkit.ts
+++ b/packages/appkit/src/core/appkit.ts
@@ -121,6 +121,9 @@ export class AppKit {
}
}
+/**
+ * Bootstraps AppKit with the provided configuration.
+ */
export async function createApp<
T extends PluginData[],
>(
diff --git a/packages/appkit/src/index.ts b/packages/appkit/src/index.ts
index ebb4677..519a9cb 100644
--- a/packages/appkit/src/index.ts
+++ b/packages/appkit/src/index.ts
@@ -1,5 +1,6 @@
export type {
BasePluginConfig,
+ CacheConfig,
IAppRouter,
SQLTypeMarker,
StreamExecutionSettings,
@@ -20,6 +21,7 @@ export {
SeverityNumber,
type Span,
SpanStatusCode,
+ TelemetryConfig,
} from "./telemetry";
export { appKitTypesPlugin } from "./type-generator/vite-plugin";
-export { getRequestContext } from "./utils";
+export { getRequestContext, RequestContext } from "./utils";
diff --git a/packages/appkit/src/plugin/to-plugin.ts b/packages/appkit/src/plugin/to-plugin.ts
index e333025..110664d 100644
--- a/packages/appkit/src/plugin/to-plugin.ts
+++ b/packages/appkit/src/plugin/to-plugin.ts
@@ -1,5 +1,8 @@
import type { PluginData, ToPlugin } from "shared";
+/**
+ * @internal
+ */
export function toPlugin(
plugin: T,
name: N,
diff --git a/packages/appkit/src/server/index.ts b/packages/appkit/src/server/index.ts
index ea837b2..454bd70 100644
--- a/packages/appkit/src/server/index.ts
+++ b/packages/appkit/src/server/index.ts
@@ -329,6 +329,9 @@ export class ServerPlugin extends Plugin {
const EXCLUDED_PLUGINS = [ServerPlugin.name];
+/**
+ * @internal
+ */
export const server = toPlugin(
ServerPlugin,
"server",
diff --git a/packages/appkit/src/utils/databricks-client-middleware.ts b/packages/appkit/src/utils/databricks-client-middleware.ts
index 97dc59b..0783f1c 100644
--- a/packages/appkit/src/utils/databricks-client-middleware.ts
+++ b/packages/appkit/src/utils/databricks-client-middleware.ts
@@ -93,6 +93,10 @@ export async function databricksClientMiddleware(): Promise=12.10.0'}
@@ -2323,8 +2335,8 @@ packages:
'@napi-rs/wasm-runtime@1.0.7':
resolution: {integrity: sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==}
- '@napi-rs/wasm-runtime@1.1.0':
- resolution: {integrity: sha512-Fq6DJW+Bb5jaWE69/qOE0D1TUN9+6uWhCeZpdnSBk14pjLcCWR7Q8n49PTSPHazM37JqrsdpEthXy2xn6jWWiA==}
+ '@napi-rs/wasm-runtime@1.1.1':
+ resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==}
'@nodelib/fs.scandir@2.1.5':
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
@@ -2852,8 +2864,8 @@ packages:
resolution: {integrity: sha512-Z7x2dZOmznihvdvCvLKMl+nswtOSVxS2H2ocar+U9xx6iMfTp0VGIrX6a4xB1v80IwOPC7dT1LXIJrY70Xu3Jw==}
engines: {node: ^20.19.0 || >=22.12.0}
- '@oxc-project/types@0.103.0':
- resolution: {integrity: sha512-bkiYX5kaXWwUessFRSoXFkGIQTmc6dLGdxuRTrC+h8PSnIdZyuXHHlLAeTmOue5Br/a0/a7dHH0Gca6eXn9MKg==}
+ '@oxc-project/types@0.106.0':
+ resolution: {integrity: sha512-QdsH3rZq480VnOHSHgPYOhjL8O8LBdcnSjM408BpPCCUc0JYYZPG9Gafl9i3OcGk/7137o+gweb4cCv3WAUykg==}
'@oxc-project/types@0.93.0':
resolution: {integrity: sha512-yNtwmWZIBtJsMr5TEfoZFDxIWV6OdScOpza/f5YxbqUMJk+j6QX3Cf3jgZShGEFYWQJ5j9mJ6jM0tZHu2J9Yrg==}
@@ -3573,8 +3585,8 @@ packages:
cpu: [arm64]
os: [android]
- '@rolldown/binding-android-arm64@1.0.0-beta.57':
- resolution: {integrity: sha512-GoOVDy8bjw9z1K30Oo803nSzXJS/vWhFijFsW3kzvZCO8IZwFnNa6pGctmbbJstKl3Fv6UBwyjJQN6msejW0IQ==}
+ '@rolldown/binding-android-arm64@1.0.0-beta.58':
+ resolution: {integrity: sha512-mWj5eE4Qc8TbPdGGaaLvBb9XfDPvE1EmZkJQgiGKwchkWH4oAJcRAKMTw7ZHnb1L+t7Ah41sBkAecaIsuUgsug==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [android]
@@ -3585,8 +3597,8 @@ packages:
cpu: [arm64]
os: [darwin]
- '@rolldown/binding-darwin-arm64@1.0.0-beta.57':
- resolution: {integrity: sha512-9c4FOhRGpl+PX7zBK5p17c5efpF9aSpTPgyigv57hXf5NjQUaJOOiejPLAtFiKNBIfm5Uu6yFkvLKzOafNvlTw==}
+ '@rolldown/binding-darwin-arm64@1.0.0-beta.58':
+ resolution: {integrity: sha512-wFxUymI/5R8bH8qZFYDfAxAN9CyISEIYke+95oZPiv6EWo88aa5rskjVcCpKA532R+klFmdqjbbaD56GNmTF4Q==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [darwin]
@@ -3597,8 +3609,8 @@ packages:
cpu: [x64]
os: [darwin]
- '@rolldown/binding-darwin-x64@1.0.0-beta.57':
- resolution: {integrity: sha512-6RsB8Qy4LnGqNGJJC/8uWeLWGOvbRL/KG5aJ8XXpSEupg/KQtlBEiFaYU/Ma5Usj1s+bt3ItkqZYAI50kSplBA==}
+ '@rolldown/binding-darwin-x64@1.0.0-beta.58':
+ resolution: {integrity: sha512-ybp3MkPj23VDV9PhtRwdU5qrGhlViWRV5BjKwO6epaSlUD5lW0WyY+roN3ZAzbma/9RrMTgZ/a/gtQq8YXOcqw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [darwin]
@@ -3609,8 +3621,8 @@ packages:
cpu: [x64]
os: [freebsd]
- '@rolldown/binding-freebsd-x64@1.0.0-beta.57':
- resolution: {integrity: sha512-uA9kG7+MYkHTbqwv67Tx+5GV5YcKd33HCJIi0311iYBd25yuwyIqvJfBdt1VVB8tdOlyTb9cPAgfCki8nhwTQg==}
+ '@rolldown/binding-freebsd-x64@1.0.0-beta.58':
+ resolution: {integrity: sha512-Evxj3yh7FWvyklUYZa0qTVT9N2zX9TPDqGF056hl8hlCZ9/ndQ2xMv6uw9PD1VlLpukbsqL+/C6M0qwipL0QMg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [freebsd]
@@ -3621,8 +3633,8 @@ packages:
cpu: [arm]
os: [linux]
- '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.57':
- resolution: {integrity: sha512-3KkS0cHsllT2T+Te+VZMKHNw6FPQihYsQh+8J4jkzwgvAQpbsbXmrqhkw3YU/QGRrD8qgcOvBr6z5y6Jid+rmw==}
+ '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.58':
+ resolution: {integrity: sha512-tYeXprDOrEgVHUbPXH6MPso4cM/c6RTkmJNICMQlYdki4hGMh92aj3yU6CKs+4X5gfG0yj5kVUw/L4M685SYag==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm]
os: [linux]
@@ -3633,8 +3645,8 @@ packages:
cpu: [arm64]
os: [linux]
- '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.57':
- resolution: {integrity: sha512-A3/wu1RgsHhqP3rVH2+sM81bpk+Qd2XaHTl8LtX5/1LNR7QVBFBCpAoiXwjTdGnI5cMdBVi7Z1pi52euW760Fw==}
+ '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.58':
+ resolution: {integrity: sha512-N78vmZzP6zG967Ohr+MasCjmKtis0geZ1SOVmxrA0/bklTQSzH5kHEjW5Qn+i1taFno6GEre1E40v0wuWsNOQw==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
@@ -3645,8 +3657,8 @@ packages:
cpu: [arm64]
os: [linux]
- '@rolldown/binding-linux-arm64-musl@1.0.0-beta.57':
- resolution: {integrity: sha512-d0kIVezTQtazpyWjiJIn5to8JlwfKITDqwsFv0Xc6s31N16CD2PC/Pl2OtKgS7n8WLOJbfqgIp5ixYzTAxCqMg==}
+ '@rolldown/binding-linux-arm64-musl@1.0.0-beta.58':
+ resolution: {integrity: sha512-l+p4QVtG72C7wI2SIkNQw/KQtSjuYwS3rV6AKcWrRBF62ClsFUcif5vLaZIEbPrCXu5OFRXigXFJnxYsVVZqdQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [linux]
@@ -3657,8 +3669,8 @@ packages:
cpu: [x64]
os: [linux]
- '@rolldown/binding-linux-x64-gnu@1.0.0-beta.57':
- resolution: {integrity: sha512-E199LPijo98yrLjPCmETx8EF43sZf9t3guSrLee/ej1rCCc3zDVTR4xFfN9BRAapGVl7/8hYqbbiQPTkv73kUg==}
+ '@rolldown/binding-linux-x64-gnu@1.0.0-beta.58':
+ resolution: {integrity: sha512-urzJX0HrXxIh0FfxwWRjfPCMeInU9qsImLQxHBgLp5ivji1EEUnOfux8KxPPnRQthJyneBrN2LeqUix9DYrNaQ==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
@@ -3669,8 +3681,8 @@ packages:
cpu: [x64]
os: [linux]
- '@rolldown/binding-linux-x64-musl@1.0.0-beta.57':
- resolution: {integrity: sha512-++EQDpk/UJ33kY/BNsh7A7/P1sr/jbMuQ8cE554ZIy+tCUWCivo9zfyjDUoiMdnxqX6HLJEqqGnbGQOvzm2OMQ==}
+ '@rolldown/binding-linux-x64-musl@1.0.0-beta.58':
+ resolution: {integrity: sha512-7ijfVK3GISnXIwq/1FZo+KyAUJjL3kWPJ7rViAL6MWeEBhEgRzJ0yEd9I8N9aut8Y8ab+EKFJyRNMWZuUBwQ0A==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [linux]
@@ -3681,8 +3693,8 @@ packages:
cpu: [arm64]
os: [openharmony]
- '@rolldown/binding-openharmony-arm64@1.0.0-beta.57':
- resolution: {integrity: sha512-voDEBcNqxbUv/GeXKFtxXVWA+H45P/8Dec4Ii/SbyJyGvCqV1j+nNHfnFUIiRQ2Q40DwPe/djvgYBs9PpETiMA==}
+ '@rolldown/binding-openharmony-arm64@1.0.0-beta.58':
+ resolution: {integrity: sha512-/m7sKZCS+cUULbzyJTIlv8JbjNohxbpAOA6cM+lgWgqVzPee3U6jpwydrib328JFN/gF9A99IZEnuGYqEDJdww==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [openharmony]
@@ -3692,8 +3704,8 @@ packages:
engines: {node: '>=14.0.0'}
cpu: [wasm32]
- '@rolldown/binding-wasm32-wasi@1.0.0-beta.57':
- resolution: {integrity: sha512-bRhcF7NLlCnpkzLVlVhrDEd0KH22VbTPkPTbMjlYvqhSmarxNIq5vtlQS8qmV7LkPKHrNLWyJW/V/sOyFba26Q==}
+ '@rolldown/binding-wasm32-wasi@1.0.0-beta.58':
+ resolution: {integrity: sha512-6SZk7zMgv+y3wFFQ9qE5P9NnRHcRsptL1ypmudD26PDY+PvFCvfHRkJNfclWnvacVGxjowr7JOL3a9fd1wWhUw==}
engines: {node: '>=14.0.0'}
cpu: [wasm32]
@@ -3703,8 +3715,8 @@ packages:
cpu: [arm64]
os: [win32]
- '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.57':
- resolution: {integrity: sha512-rnDVGRks2FQ2hgJ2g15pHtfxqkGFGjJQUDWzYznEkE8Ra2+Vag9OffxdbJMZqBWXHVM0iS4dv8qSiEn7bO+n1Q==}
+ '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.58':
+ resolution: {integrity: sha512-sFqfYPnBZ6xBhMkadB7UD0yjEDRvs7ipR3nCggblN+N4ODCXY6qhg/bKL39+W+dgQybL7ErD4EGERVbW9DAWvg==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [arm64]
os: [win32]
@@ -3721,8 +3733,8 @@ packages:
cpu: [x64]
os: [win32]
- '@rolldown/binding-win32-x64-msvc@1.0.0-beta.57':
- resolution: {integrity: sha512-OqIUyNid1M4xTj6VRXp/Lht/qIP8fo25QyAZlCP+p6D2ATCEhyW4ZIFLnC9zAGN/HMbXoCzvwfa8Jjg/8J4YEg==}
+ '@rolldown/binding-win32-x64-msvc@1.0.0-beta.58':
+ resolution: {integrity: sha512-AnFWJdAqB8+IDPcGrATYs67Kik/6tnndNJV2jGRmwlbeNiQQ8GhRJU8ETRlINfII0pqi9k4WWLnb00p1QCxw/Q==}
engines: {node: ^20.19.0 || >=22.12.0}
cpu: [x64]
os: [win32]
@@ -3736,8 +3748,8 @@ packages:
'@rolldown/pluginutils@1.0.0-beta.47':
resolution: {integrity: sha512-8QagwMH3kNCuzD8EWL8R2YPW5e4OrHNSAHRFDdmFqEwEaD/KcNKjVoumo+gP2vW5eKB2UPbM6vTYiGZX0ixLnw==}
- '@rolldown/pluginutils@1.0.0-beta.57':
- resolution: {integrity: sha512-aQNelgx14tGA+n2tNSa9x6/jeoCL9fkDeCei7nOKnHx0fEFRRMu5ReiITo+zZD5TzWDGGRjbSYCs93IfRIyTuQ==}
+ '@rolldown/pluginutils@1.0.0-beta.58':
+ resolution: {integrity: sha512-qWhDs6yFGR5xDfdrwiSa3CWGIHxD597uGE/A9xGqytBjANvh4rLCTTkq7szhMV4+Ygh+PMS90KVJ8xWG/TkX4w==}
'@rollup/rollup-android-arm-eabi@4.52.4':
resolution: {integrity: sha512-BTm2qKNnWIQ5auf4deoetINJm2JzvihvGb9R6K/ETwKLql/Bb3Eg2H1FBp1gUb4YGbydMA3jcmQTR73q7J+GAA==}
@@ -3849,6 +3861,21 @@ packages:
cpu: [x64]
os: [win32]
+ '@shikijs/engine-oniguruma@3.20.0':
+ resolution: {integrity: sha512-Yx3gy7xLzM0ZOjqoxciHjA7dAt5tyzJE3L4uQoM83agahy+PlW244XJSrmJRSBvGYELDhYXPacD4R/cauV5bzQ==}
+
+ '@shikijs/langs@3.20.0':
+ resolution: {integrity: sha512-le+bssCxcSHrygCWuOrYJHvjus6zhQ2K7q/0mgjiffRbkhM4o1EWu2m+29l0yEsHDbWaWPNnDUTRVVBvBBeKaA==}
+
+ '@shikijs/themes@3.20.0':
+ resolution: {integrity: sha512-U1NSU7Sl26Q7ErRvJUouArxfM2euWqq1xaSrbqMu2iqa+tSp0D1Yah8216sDYbdDHw4C8b75UpE65eWorm2erQ==}
+
+ '@shikijs/types@3.20.0':
+ resolution: {integrity: sha512-lhYAATn10nkZcBQ0BlzSbJA3wcmL5MXUUF8d2Zzon6saZDlToKaiRX60n2+ZaHJCmXEcZRWNzn+k9vplr8Jhsw==}
+
+ '@shikijs/vscode-textmate@10.0.2':
+ resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
+
'@sideway/address@4.1.5':
resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==}
@@ -5684,6 +5711,11 @@ packages:
react: ^16.8.4 || ^17 || ^18 || ^19
react-dom: ^16.8.4 || ^17 || ^18 || ^19
+ docusaurus-plugin-typedoc@1.4.2:
+ resolution: {integrity: sha512-1qerRejLSYxEWdyVPLDMMeKFPLA/37yZAsdwJy9ThHFQR78+v3b5spSbk67VHGLr2mAn4FVHu0aGJ6p7iWotSg==}
+ peerDependencies:
+ typedoc-plugin-markdown: '>=4.8.0'
+
dom-accessibility-api@0.5.16:
resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==}
@@ -7229,6 +7261,9 @@ packages:
lines-and-columns@1.2.4:
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
+ linkify-it@5.0.0:
+ resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==}
+
lint-staged@15.5.2:
resolution: {integrity: sha512-YUSOLq9VeRNAo/CTaVmhGDKG+LBtA8KF1X4K5+ykMSwWST1vDxJRB2kv2COgLb1fvpCo+A/y9A0G0znNVmdx4w==}
engines: {node: '>=18.12.0'}
@@ -7391,6 +7426,10 @@ packages:
resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==}
engines: {node: '>=16'}
+ markdown-it@14.1.0:
+ resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==}
+ hasBin: true
+
markdown-table@2.0.0:
resolution: {integrity: sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==}
@@ -7469,6 +7508,9 @@ packages:
mdn-data@2.12.2:
resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==}
+ mdurl@2.0.0:
+ resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==}
+
media-typer@0.3.0:
resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
engines: {node: '>= 0.6'}
@@ -8661,6 +8703,10 @@ packages:
engines: {node: '>=18'}
hasBin: true
+ punycode.js@2.3.1:
+ resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==}
+ engines: {node: '>=6'}
+
punycode@2.3.1:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
@@ -9100,8 +9146,8 @@ packages:
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
- rolldown@1.0.0-beta.57:
- resolution: {integrity: sha512-lMMxcNN71GMsSko8RyeTaFoATHkCh4IWU7pYF73ziMYjhHZWfVesC6GQ+iaJCvZmVjvgSks9Ks1aaqEkBd8udg==}
+ rolldown@1.0.0-beta.58:
+ resolution: {integrity: sha512-v1FCjMZCan7f+xGAHBi+mqiE4MlH7I+SXEHSQSJoMOGNNB2UYtvMiejsq9YuUOiZjNeUeV/a21nSFbrUR+4ZCQ==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
@@ -9789,6 +9835,24 @@ packages:
typedarray@0.0.6:
resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==}
+ typedoc-docusaurus-theme@1.4.2:
+ resolution: {integrity: sha512-i9YYDcScLD0WUiX8I+LXHX3ZVvRDlJsmRo9l/uWrFT37cHlMz4Ay0GOnWzHUBnnwAo1uzYOw9RjUXznbWozBEA==}
+ peerDependencies:
+ typedoc-plugin-markdown: '>=4.8.0'
+
+ typedoc-plugin-markdown@4.9.0:
+ resolution: {integrity: sha512-9Uu4WR9L7ZBgAl60N/h+jqmPxxvnC9nQAlnnO/OujtG2ubjnKTVUFY1XDhcMY+pCqlX3N2HsQM2QTYZIU9tJuw==}
+ engines: {node: '>= 18'}
+ peerDependencies:
+ typedoc: 0.28.x
+
+ typedoc@0.28.15:
+ resolution: {integrity: sha512-mw2/2vTL7MlT+BVo43lOsufkkd2CJO4zeOSuWQQsiXoV2VuEn7f6IZp2jsUDPmBMABpgR0R5jlcJ2OGEFYmkyg==}
+ engines: {node: '>= 18', pnpm: '>= 10'}
+ hasBin: true
+ peerDependencies:
+ typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x
+
typescript-eslint@8.49.0:
resolution: {integrity: sha512-zRSVH1WXD0uXczCXw+nsdjGPUdx4dfrs5VQoHnUWmv1U3oNlAKv4FUNdLDhVUg+gYn+a5hUESqch//Rv5wVhrg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -9810,6 +9874,9 @@ packages:
resolution: {integrity: sha512-ya4mg/30vm+DOWfBg4YK3j2WD6TWtRkCbasOJr40CseYENzCUby/7rIvXA99JGsQHeNxLbnXdyLLxKSv3tauFw==}
engines: {node: '>=12.17'}
+ uc.micro@2.1.0:
+ resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==}
+
uglify-js@3.19.3:
resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==}
engines: {node: '>=0.8.0'}
@@ -12799,6 +12866,14 @@ snapshots:
'@floating-ui/utils@0.2.10': {}
+ '@gerrit0/mini-shiki@3.20.0':
+ dependencies:
+ '@shikijs/engine-oniguruma': 3.20.0
+ '@shikijs/langs': 3.20.0
+ '@shikijs/themes': 3.20.0
+ '@shikijs/types': 3.20.0
+ '@shikijs/vscode-textmate': 10.0.2
+
'@grpc/grpc-js@1.14.1':
dependencies:
'@grpc/proto-loader': 0.8.0
@@ -13098,7 +13173,7 @@ snapshots:
'@tybys/wasm-util': 0.10.1
optional: true
- '@napi-rs/wasm-runtime@1.1.0':
+ '@napi-rs/wasm-runtime@1.1.1':
dependencies:
'@emnapi/core': 1.7.1
'@emnapi/runtime': 1.7.1
@@ -13853,7 +13928,7 @@ snapshots:
'@oxc-project/runtime@0.92.0': {}
- '@oxc-project/types@0.103.0': {}
+ '@oxc-project/types@0.106.0': {}
'@oxc-project/types@0.93.0': {}
@@ -14597,61 +14672,61 @@ snapshots:
'@rolldown/binding-android-arm64@1.0.0-beta.41':
optional: true
- '@rolldown/binding-android-arm64@1.0.0-beta.57':
+ '@rolldown/binding-android-arm64@1.0.0-beta.58':
optional: true
'@rolldown/binding-darwin-arm64@1.0.0-beta.41':
optional: true
- '@rolldown/binding-darwin-arm64@1.0.0-beta.57':
+ '@rolldown/binding-darwin-arm64@1.0.0-beta.58':
optional: true
'@rolldown/binding-darwin-x64@1.0.0-beta.41':
optional: true
- '@rolldown/binding-darwin-x64@1.0.0-beta.57':
+ '@rolldown/binding-darwin-x64@1.0.0-beta.58':
optional: true
'@rolldown/binding-freebsd-x64@1.0.0-beta.41':
optional: true
- '@rolldown/binding-freebsd-x64@1.0.0-beta.57':
+ '@rolldown/binding-freebsd-x64@1.0.0-beta.58':
optional: true
'@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.41':
optional: true
- '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.57':
+ '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.58':
optional: true
'@rolldown/binding-linux-arm64-gnu@1.0.0-beta.41':
optional: true
- '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.57':
+ '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.58':
optional: true
'@rolldown/binding-linux-arm64-musl@1.0.0-beta.41':
optional: true
- '@rolldown/binding-linux-arm64-musl@1.0.0-beta.57':
+ '@rolldown/binding-linux-arm64-musl@1.0.0-beta.58':
optional: true
'@rolldown/binding-linux-x64-gnu@1.0.0-beta.41':
optional: true
- '@rolldown/binding-linux-x64-gnu@1.0.0-beta.57':
+ '@rolldown/binding-linux-x64-gnu@1.0.0-beta.58':
optional: true
'@rolldown/binding-linux-x64-musl@1.0.0-beta.41':
optional: true
- '@rolldown/binding-linux-x64-musl@1.0.0-beta.57':
+ '@rolldown/binding-linux-x64-musl@1.0.0-beta.58':
optional: true
'@rolldown/binding-openharmony-arm64@1.0.0-beta.41':
optional: true
- '@rolldown/binding-openharmony-arm64@1.0.0-beta.57':
+ '@rolldown/binding-openharmony-arm64@1.0.0-beta.58':
optional: true
'@rolldown/binding-wasm32-wasi@1.0.0-beta.41':
@@ -14659,15 +14734,15 @@ snapshots:
'@napi-rs/wasm-runtime': 1.0.7
optional: true
- '@rolldown/binding-wasm32-wasi@1.0.0-beta.57':
+ '@rolldown/binding-wasm32-wasi@1.0.0-beta.58':
dependencies:
- '@napi-rs/wasm-runtime': 1.1.0
+ '@napi-rs/wasm-runtime': 1.1.1
optional: true
'@rolldown/binding-win32-arm64-msvc@1.0.0-beta.41':
optional: true
- '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.57':
+ '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.58':
optional: true
'@rolldown/binding-win32-ia32-msvc@1.0.0-beta.41':
@@ -14676,7 +14751,7 @@ snapshots:
'@rolldown/binding-win32-x64-msvc@1.0.0-beta.41':
optional: true
- '@rolldown/binding-win32-x64-msvc@1.0.0-beta.57':
+ '@rolldown/binding-win32-x64-msvc@1.0.0-beta.58':
optional: true
'@rolldown/pluginutils@1.0.0-beta.38': {}
@@ -14685,7 +14760,7 @@ snapshots:
'@rolldown/pluginutils@1.0.0-beta.47': {}
- '@rolldown/pluginutils@1.0.0-beta.57': {}
+ '@rolldown/pluginutils@1.0.0-beta.58': {}
'@rollup/rollup-android-arm-eabi@4.52.4':
optional: true
@@ -14753,6 +14828,26 @@ snapshots:
'@rollup/rollup-win32-x64-msvc@4.52.4':
optional: true
+ '@shikijs/engine-oniguruma@3.20.0':
+ dependencies:
+ '@shikijs/types': 3.20.0
+ '@shikijs/vscode-textmate': 10.0.2
+
+ '@shikijs/langs@3.20.0':
+ dependencies:
+ '@shikijs/types': 3.20.0
+
+ '@shikijs/themes@3.20.0':
+ dependencies:
+ '@shikijs/types': 3.20.0
+
+ '@shikijs/types@3.20.0':
+ dependencies:
+ '@shikijs/vscode-textmate': 10.0.2
+ '@types/hast': 3.0.4
+
+ '@shikijs/vscode-textmate@10.0.2': {}
+
'@sideway/address@4.1.5':
dependencies:
'@hapi/hoek': 9.3.0
@@ -16834,6 +16929,11 @@ snapshots:
unified: 9.2.2
unist-util-is: 4.1.0
+ docusaurus-plugin-typedoc@1.4.2(typedoc-plugin-markdown@4.9.0(typedoc@0.28.15(typescript@5.6.3))):
+ dependencies:
+ typedoc-docusaurus-theme: 1.4.2(typedoc-plugin-markdown@4.9.0(typedoc@0.28.15(typescript@5.6.3)))
+ typedoc-plugin-markdown: 4.9.0(typedoc@0.28.15(typescript@5.6.3))
+
dom-accessibility-api@0.5.16: {}
dom-converter@0.2.0:
@@ -18582,6 +18682,10 @@ snapshots:
lines-and-columns@1.2.4: {}
+ linkify-it@5.0.0:
+ dependencies:
+ uc.micro: 2.1.0
+
lint-staged@15.5.2:
dependencies:
chalk: 5.6.2
@@ -18734,6 +18838,15 @@ snapshots:
markdown-extensions@2.0.0: {}
+ markdown-it@14.1.0:
+ dependencies:
+ argparse: 2.0.1
+ entities: 4.5.0
+ linkify-it: 5.0.0
+ mdurl: 2.0.0
+ punycode.js: 2.3.1
+ uc.micro: 2.1.0
+
markdown-table@2.0.0:
dependencies:
repeat-string: 1.6.1
@@ -18938,6 +19051,8 @@ snapshots:
mdn-data@2.12.2: {}
+ mdurl@2.0.0: {}
+
media-typer@0.3.0: {}
memfs@4.51.1:
@@ -20372,6 +20487,8 @@ snapshots:
picocolors: 1.1.1
sade: 1.8.1
+ punycode.js@2.3.1: {}
+
punycode@2.3.1: {}
pupa@3.3.0:
@@ -20838,7 +20955,7 @@ snapshots:
dependencies:
glob: 10.5.0
- rolldown-plugin-dts@0.16.11(rolldown@1.0.0-beta.57)(typescript@5.9.3):
+ rolldown-plugin-dts@0.16.11(rolldown@1.0.0-beta.58)(typescript@5.9.3):
dependencies:
'@babel/generator': 7.28.3
'@babel/parser': 7.28.5
@@ -20849,7 +20966,7 @@ snapshots:
dts-resolver: 2.1.2
get-tsconfig: 4.12.0
magic-string: 0.30.19
- rolldown: 1.0.0-beta.57
+ rolldown: 1.0.0-beta.58
optionalDependencies:
typescript: 5.9.3
transitivePeerDependencies:
@@ -20913,24 +21030,24 @@ snapshots:
'@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.41
'@rolldown/binding-win32-x64-msvc': 1.0.0-beta.41
- rolldown@1.0.0-beta.57:
+ rolldown@1.0.0-beta.58:
dependencies:
- '@oxc-project/types': 0.103.0
- '@rolldown/pluginutils': 1.0.0-beta.57
+ '@oxc-project/types': 0.106.0
+ '@rolldown/pluginutils': 1.0.0-beta.58
optionalDependencies:
- '@rolldown/binding-android-arm64': 1.0.0-beta.57
- '@rolldown/binding-darwin-arm64': 1.0.0-beta.57
- '@rolldown/binding-darwin-x64': 1.0.0-beta.57
- '@rolldown/binding-freebsd-x64': 1.0.0-beta.57
- '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.57
- '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.57
- '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.57
- '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.57
- '@rolldown/binding-linux-x64-musl': 1.0.0-beta.57
- '@rolldown/binding-openharmony-arm64': 1.0.0-beta.57
- '@rolldown/binding-wasm32-wasi': 1.0.0-beta.57
- '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.57
- '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.57
+ '@rolldown/binding-android-arm64': 1.0.0-beta.58
+ '@rolldown/binding-darwin-arm64': 1.0.0-beta.58
+ '@rolldown/binding-darwin-x64': 1.0.0-beta.58
+ '@rolldown/binding-freebsd-x64': 1.0.0-beta.58
+ '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.58
+ '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.58
+ '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.58
+ '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.58
+ '@rolldown/binding-linux-x64-musl': 1.0.0-beta.58
+ '@rolldown/binding-openharmony-arm64': 1.0.0-beta.58
+ '@rolldown/binding-wasm32-wasi': 1.0.0-beta.58
+ '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.58
+ '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.58
rollup@4.52.4:
dependencies:
@@ -21559,8 +21676,8 @@ snapshots:
diff: 8.0.2
empathic: 2.0.0
hookable: 5.5.3
- rolldown: 1.0.0-beta.57
- rolldown-plugin-dts: 0.16.11(rolldown@1.0.0-beta.57)(typescript@5.9.3)
+ rolldown: 1.0.0-beta.58
+ rolldown-plugin-dts: 0.16.11(rolldown@1.0.0-beta.58)(typescript@5.9.3)
semver: 7.7.3
tinyexec: 1.0.1
tinyglobby: 0.2.15
@@ -21637,6 +21754,23 @@ snapshots:
typedarray@0.0.6: {}
+ typedoc-docusaurus-theme@1.4.2(typedoc-plugin-markdown@4.9.0(typedoc@0.28.15(typescript@5.6.3))):
+ dependencies:
+ typedoc-plugin-markdown: 4.9.0(typedoc@0.28.15(typescript@5.6.3))
+
+ typedoc-plugin-markdown@4.9.0(typedoc@0.28.15(typescript@5.6.3)):
+ dependencies:
+ typedoc: 0.28.15(typescript@5.6.3)
+
+ typedoc@0.28.15(typescript@5.6.3):
+ dependencies:
+ '@gerrit0/mini-shiki': 3.20.0
+ lunr: 2.3.9
+ markdown-it: 14.1.0
+ minimatch: 9.0.5
+ typescript: 5.6.3
+ yaml: 2.8.1
+
typescript-eslint@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3):
dependencies:
'@typescript-eslint/eslint-plugin': 8.49.0(@typescript-eslint/parser@8.49.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
@@ -21654,6 +21788,8 @@ snapshots:
typical@7.3.0: {}
+ uc.micro@2.1.0: {}
+
uglify-js@3.19.3:
optional: true