feat(plugin): add namespaced hook API (#33416)

This commit is contained in:
Dax 2026-06-22 19:06:57 -04:00 committed by GitHub
commit 909a1a6d78
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
150 changed files with 3276 additions and 3906 deletions

View file

@ -1,11 +1,28 @@
import type { Effect, Scope } from "effect"
import type { PluginHost } from "./host.js"
import type { PluginContext } from "./context.js"
import type { PluginOptions } from "../options.js"
import type { Hooks } from "./registration.js"
export interface Plugin<R = never> {
export interface Plugin {
readonly id: string
readonly effect: (host: PluginHost) => Effect.Effect<void, never, R | Scope.Scope>
readonly effect: (context: PluginContext) => Effect.Effect<void, never, Scope.Scope>
}
export function define<R>(plugin: Plugin<R>) {
export function define(plugin: Plugin) {
return plugin
}
export interface PluginRef {
readonly package: string
readonly options?: PluginOptions
}
export interface PluginDraft {
list(): readonly Plugin[]
add(plugin: Plugin): void
remove(id: string): void
}
export type PluginHooks = Hooks<{
transform: PluginDraft
}>