ember-auto-import
Version:
Zero-config import from NPM packages
41 lines (40 loc) • 1.6 kB
TypeScript
export type Resolution<T = unknown, E = unknown> = {
type: 'found';
filename: string;
result: T;
} | {
type: 'not_found';
err: E;
};
export type RequestAdapterCreate<Init, Res extends Resolution> = (params: Init) => {
initialState: InitialRequestState;
adapter: RequestAdapter<Res>;
} | undefined;
export interface RequestAdapter<Res extends Resolution> {
readonly debugType: string;
resolve(request: ModuleRequest<Res>): Promise<Res>;
notFoundResponse(request: ModuleRequest<Res>): Res | (() => Promise<Res>);
}
export interface InitialRequestState {
readonly specifier: string;
readonly fromFile: string;
readonly meta: Record<string, unknown> | undefined;
}
export declare class ModuleRequest<Res extends Resolution = Resolution> implements ModuleRequest<Res> {
#private;
static create<Init, Res extends Resolution>(createAdapter: RequestAdapterCreate<Init, Res>, params: Init): ModuleRequest<Res> | undefined;
private constructor();
get specifier(): string;
get fromFile(): string;
get debugType(): string;
get meta(): Record<string, unknown> | undefined;
get resolvedTo(): Res | (() => Promise<Res>) | undefined;
alias(newSpecifier: string): this;
rehome(newFromFile: string): this;
withMeta(meta: Record<string, any> | undefined): this;
notFound(): this;
resolveTo(res: Res | (() => Promise<Res>)): this;
defaultResolve(): Promise<Res>;
clone(): this;
}
export declare function extractResolution<Res extends Resolution = Resolution>(res: Res | (() => Promise<Res>)): Promise<Res>;