refactor: split gateway plugin bootstrap and registry surfaces

This commit is contained in:
Peter Steinberger
2026-03-24 22:15:24 -07:00
parent 10161c2d79
commit 46d3617d25
17 changed files with 332 additions and 175 deletions

View File

@@ -1,6 +1,8 @@
import { afterEach, describe, expect, it } from "vitest";
import { createEmptyPluginRegistry } from "./registry.js";
import {
getActivePluginHttpRouteRegistryVersion,
getActivePluginRegistryVersion,
getActivePluginRegistry,
pinActivePluginHttpRouteRegistry,
releasePinnedPluginHttpRouteRegistry,
@@ -32,6 +34,23 @@ describe("plugin runtime route registry", () => {
expect(resolveActivePluginHttpRouteRegistry(laterRegistry)).toBe(startupRegistry);
});
it("tracks route registry repins separately from the active registry version", () => {
const startupRegistry = createEmptyPluginRegistry();
const laterRegistry = createEmptyPluginRegistry();
const repinnedRegistry = createEmptyPluginRegistry();
setActivePluginRegistry(startupRegistry);
pinActivePluginHttpRouteRegistry(laterRegistry);
const activeVersionBeforeRepin = getActivePluginRegistryVersion();
const routeVersionBeforeRepin = getActivePluginHttpRouteRegistryVersion();
pinActivePluginHttpRouteRegistry(repinnedRegistry);
expect(getActivePluginRegistryVersion()).toBe(activeVersionBeforeRepin);
expect(getActivePluginHttpRouteRegistryVersion()).toBe(routeVersionBeforeRepin + 1);
});
it("falls back to the provided registry when the pinned route registry has no routes", () => {
const startupRegistry = createEmptyPluginRegistry();
const explicitRegistry = createEmptyPluginRegistry();