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

This commit is contained in:
Dax
2026-06-22 19:06:57 -04:00
committed by GitHub
parent dc468bdcfd
commit 909a1a6d78
150 changed files with 3286 additions and 3916 deletions
+21 -4
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
}>