@glint/environment-ember-template-imports
Version:
A Glint environment to support ember-template-imports projects
46 lines (38 loc) • 1.76 kB
TypeScript
export * from '@glint/template/-private/dsl';
export { Globals } from './globals';
import './integration-declarations';
import { ResolveOrReturn } from '@glint/template/-private/dsl';
import {
ComponentReturn,
AnyContext,
AnyFunction,
DirectInvokable,
HasContext,
InvokableInstance,
Invoke,
InvokeDirect,
TemplateContext,
} from '@glint/template/-private/integration';
// Items that can be directly invoked by value
export declare function resolve<T extends DirectInvokable>(item: T): T[typeof InvokeDirect];
// Items whose instance type can be invoked
export declare function resolve<Args extends unknown[], Instance extends InvokableInstance>(
item: (abstract new (...args: Args) => Instance) | null | undefined
): (...args: Parameters<Instance[typeof Invoke]>) => ReturnType<Instance[typeof Invoke]>;
// Plain functions
export declare function resolve<T extends ((...params: any) => any) | null | undefined>(
item: T
): NonNullable<T>;
export declare const resolveOrReturn: ResolveOrReturn<typeof resolve>;
// We customize the top-level `templateExpression` wrapper function for this environment to
// return a type that's assignable to `TemplateOnlyComponent` from '@ember/component/template-only'.
// Longer term we should rationalize this to a type that doesn't carry extra baggage
// and likely comes from a more sensible path.
import { TemplateOnlyComponent } from '@ember/component/template-only';
export declare function templateExpression<
Signature extends AnyFunction = () => ComponentReturn<{}>,
Context extends AnyContext = TemplateContext<void, {}, {}, void>
>(
f: (𝚪: Context, χ: never) => void
): TemplateOnlyComponent<never> &
(abstract new () => InvokableInstance<Signature> & HasContext<Context>);