defineUtility
Allows defining a type-safe function requiring all the params of a given hook.
1import type { InjectedRoute } from "astro";2import { defineUtility } from "astro-integration-kit";3
4export const injectDevRoute = defineUtility("astro:config:setup")(5  ({ command, injectRoute }, injectedRoute: InjectedRoute) => {6    if (command === "dev") {7      injectRoute(injectedRoute);8    }9  },10);Usage
Even though the syntax looks a bit scary, it’s actually very simple!
- 
Call
defineUtilitywith a hook name. That will be used to type the next steps:1import { defineUtility } from "astro-integration-kit";23export const injectDevRoute = defineUtility("astro:config:setup") - 
Using currying, call the returned function with the typed params:
1import { defineUtility } from "astro-integration-kit";23export const injectDevRoute = defineUtility("astro:config:setup")(4// Typed as HookParameters<"astro:config:setup">5(params) => {}6) - 
(Optional) Add your own parameters:
1import type { InjectedRoute } from "astro";2import { defineUtility } from "astro-integration-kit";34export const injectDevRoute = defineUtility("astro:config:setup")(5(params, injectedRoute: InjectedRoute) => {}6) - 
Implement the actual logic:
1import type { InjectedRoute } from "astro";2import { defineUtility } from "astro-integration-kit";34export const injectDevRoute = defineUtility("astro:config:setup")(5({ command, injectRoute }, injectedRoute: InjectedRoute) => {6if (command === "dev") {7injectRoute(injectedRoute);8}9},10); - 
Use the utility in your integration:
1import { defineIntegration, createResolver, injectDevRoute } from "astro-integration-kit"23export const integration = defineIntegration({4name: "my-integration",5setup() {6const { resolve } = createResolver(import.meta.url)78return {9hooks: {10"astro:config:setup": (params) => {11injectDevRoute(params, {12pattern: "/",13entrypoint: resolve("./pages/index.astro")14})15}16}17}18}19})