Skip to content

ResolverRegistry

Defined in: packages/engine/src/resolvers/ResolverRegistry.ts:72

Registry of async resolvers, keyed by namespace.

Plugins/packages register resolvers alongside their parselets and opcode handlers. The engine calls preflightAll() before VM execution to short-circuit async expressions.

Lifecycle:

  • register(), when a package is loaded
  • unregister(), when a package is unloaded (clears cache entries)
  • clear(), on document switch (clears all resolvers)
new ResolverRegistry(): ResolverRegistry;

ResolverRegistry

get size(): number;

Defined in: packages/engine/src/resolvers/ResolverRegistry.ts:140

Number of registered resolvers.

number

clear(): void;

Defined in: packages/engine/src/resolvers/ResolverRegistry.ts:155

Clear all resolvers (document switch, engine reset). Calls destroy() on each resolver and clears the map.

void


get(namespace):
| IAsyncResolver
| undefined;

Defined in: packages/engine/src/resolvers/ResolverRegistry.ts:135

Get a resolver by namespace. Returns undefined if no resolver is registered for that namespace.

ParameterType
namespacestring

| IAsyncResolver | undefined


has(namespace): boolean;

Defined in: packages/engine/src/resolvers/ResolverRegistry.ts:147

Check if a resolver is registered for the given namespace.

ParameterType
namespacestring

boolean


preflightAll(
tokens,
bytecode,
packageId,
signal,
queryClient):
| AsyncCheckResult
| null;

Defined in: packages/engine/src/resolvers/ResolverRegistry.ts:122

Run all registered resolvers’ preflight checks against compiled bytecode.

Returns the first AsyncCheckResult found, or null if all data is ready. Short-circuits on first pending, subsequent pending ops will be discovered on re-evaluation when the first resolves.

ParameterType
tokensToken[]
bytecodeBytecodeProgram
packageIdstring
signalAbortSignal
queryClientQueryClient

| AsyncCheckResult | null


register(resolver): void;

Defined in: packages/engine/src/resolvers/ResolverRegistry.ts:84

Register an async resolver.

Each resolver must have a unique namespace. If a resolver with the same namespace is already registered, the old one is destroyed and replaced (with a console warning). Packages that need multiple async operations should use asyncResolvers: [...] with distinct namespaces (e.g., "weather:current", "weather:forecast").

ParameterType
resolverIAsyncResolver

void


unregister(namespace, queryClient?): void;

Defined in: packages/engine/src/resolvers/ResolverRegistry.ts:102

Unregister a resolver by namespace. Calls destroy() and clears all cache entries with that namespace prefix.

ParameterType
namespacestring
queryClient?QueryClient

void