interface IKernelApplication
extends IApplication

Kernel application extends IApplication with inject() capability.

Methods

inject(request: InjectRequest): Promise<InjectResponse>

Synthesizes an incoming request and runs it through the full pipeline without requiring a listening server.

Since 0.6.0
unregister(name: string): boolean

Removes a pending plugin by name before the application starts.

Plugins do not run until start(), so removing one here means its register() — and any eager side effect inside it, such as a database adapter's connect() — never happens at all. That is the one thing overriding a capability cannot do: an override replaces what consumers resolve, after the real plugin has already run.

Removing a plugin another plugin declares in dependencies is not refused here; start() reports it — naming the dependent plugin and the unsatisfied capability, though not the removed plugin's own name when the two differ (database-plugin provides database).

Removes every pending plugin carrying the name, not the first. Two may share one — the kernel refuses duplicates at start(), not at register() — and dropping one would leave the other running while the caller was told the name was gone.

Since 0.6.0
hasPlugin(name: string): boolean

Reports whether a plugin carrying this name is pending.

A pure read — it neither resolves nor constructs anything. It exists so a caller applying several exclusions can validate the whole set BEFORE removing any of them: unregister mutates immediately, so removing as you go leaves earlier exclusions applied when a later name turns out to be misspelled, handing a caller that catches the error a silently altered application.

Answers against the registered plugin list, which startup does NOT clear — so after start() it still reports true for a plugin that has already run. Its purpose is pre-start() validation, and unregister throws once any plugin has registered, so a later answer is not actionable either way.

Usage

import { type IKernelApplication } from "testing/src/index.ts";