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