Files
EpicNext-Cms/src/features/housekeeping/foundation/contracts/search.ts
T

35 lines
949 B
TypeScript

import type { HousekeepingDomainId } from "../../migration/types";
import type {
CapabilityRequirement,
HousekeepingCapabilityContext,
} from "./capability";
import type { CanonicalHousekeepingHref } from "./domain";
import type { HousekeepingResult } from "./result";
export interface HousekeepingSearchInput {
term: string;
limit: number;
}
export type HousekeepingSearchResultType = "navigation" | "entity" | "command";
export interface HousekeepingSearchResult {
id: string;
domain: HousekeepingDomainId;
type: HousekeepingSearchResultType;
title: string;
description?: string;
href: CanonicalHousekeepingHref;
capability: CapabilityRequirement;
}
export interface HousekeepingSearchProvider {
id: string;
owner: HousekeepingDomainId;
capability: CapabilityRequirement;
search(
context: HousekeepingCapabilityContext,
input: HousekeepingSearchInput,
): Promise<HousekeepingResult<readonly HousekeepingSearchResult[]>>;
}