@stackend/api
Version:
JS bindings to api.stackend.com
157 lines • 4.65 kB
TypeScript
import { Config, XcapJsonResult, Thunk, XcapOptionalParameters } from '../api';
import * as qnaApi from '../qna';
import { Request } from '../request';
import { PaginatedCollection } from '../api/PaginatedCollection';
import { LikeDataMap } from '../like';
import XcapObject from '../api/XcapObject';
/**
* Search functionality
*
* @since 13 mar 2017
*/
export declare enum OrderBy {
SCORE = "SCORE",
CREATED_DATE = "CREATED_DATE",
VOTE_AVERAGE = "VOTE_AVERAGE",
VIEWS = "VIEWS",
SOLVED_DATE = "SOLVED_DATE",
ANSWERS = "ANSWERS",
DUPLICATES = "DUPLICATES",
HAVE_QUESTION_TOO = "HAVE_QUESTION_TOO"
}
export declare enum Order {
UNORDERED = "UNORDERED",
ASCENDING = "ASCENDING",
DESCENDING = "DESCENDING"
}
/**
* Searchable types
*/
export declare enum SearchAbleType {
ALL = "all",
USER = "user",
ARTICLE = "article",
GROUP = "group",
COMMENT = "comment",
ABUSE = "abuse",
QUESTION = "question",
ANSWER = "answer",
CMS = "cms",
BLOG_GROUP = "blog-group",
BLOG_ARTICLE = "blog-article",
FORUM_THREADS = "forumthreads"
}
interface GetActiveSearchTypes {
qna?: boolean;
group?: boolean;
forum?: boolean;
blog?: boolean;
}
export declare function getActiveSearchTypes({ qna, blog, group, forum }: GetActiveSearchTypes): Array<SearchAbleType>;
export declare const searchableTypeNameConverter: {
all: string;
group: string;
user: string;
article: string;
faq: string;
question: string;
'blog-article': string;
forumthreads: string;
};
export declare const searchType = "/search/search";
export declare function getSearchBaseUrl({ request }: {
request: Request;
}): string;
declare type GetSearchUrl = {
request: Request;
type?: SearchAbleType;
searchType?: qnaApi.QnaSearchType;
filter?: string;
urlArguments?: string;
};
export declare function getSearchUrl({ request, type, searchType, filter, urlArguments }: GetSearchUrl): string;
export declare type Search = {
q?: string;
order?: Order;
orderBy?: OrderBy;
pageSize?: number;
trendingBoost?: boolean;
type?: SearchAbleType;
categoryId?: number;
community?: string;
excludeCurrentUser?: boolean;
} & XcapOptionalParameters;
export interface SearchResult extends XcapJsonResult {
results: PaginatedCollection<XcapObject>;
likes: LikeDataMap;
}
/**
* Search
* @param community
* @param urlArguments
* @returns {Thunk.<*>}
*/
export declare function search({ community, ...urlArguments }: Search): Thunk<Promise<SearchResult>>;
/**
* Get the url to the search api
* @param xcap
* @param type
* @param urlArguments
* @returns {string}
*/
export declare function getSearchApiUrl({ config, community, type, urlArguments }: {
config: Config;
community: any;
type: string;
urlArguments: any;
} & XcapOptionalParameters): string;
/**
* Get statistics.
*
* @param types {String} Comma separated string of xcap object class names.
* @param facetCount {String}
* @param createdStartDate {Date} Iso date format (yyyy-MM-dd)
* @param createdEndDate {Date} Iso date format (yyyy-MM-dd)
* @param aggregateToDays {boolean}
* @param moderationVisibility {boolean}
* @param pageSize {Number}
* @param page {Number}
* @return {Promise}
*/
export declare function getStatistics({ facetCount, createdStartDate, createdEndDate, aggregateToDays, moderationVisibility, pageSize, page }: {
facetCount?: string;
createdStartDate?: string;
createdEndDate?: string;
aggregateToDays?: boolean;
moderationVisibility?: boolean;
pageSize?: number;
page?: number;
} & XcapOptionalParameters): Thunk<Promise<XcapJsonResult>>;
/**
* The available search index populators
* {@see populateSearchIndex}
*/
export declare const SEARCH_INDEX_POPULATORS: Array<{
name: string;
className: string;
}>;
export interface PopulateSearchIndexResult extends XcapJsonResult {
/** Number of objects added/updated to the index */
nIndexed: number;
/** Execution time in ms */
executeTime: number;
}
/**
* Populate the search index
*
* Requires admin privs.
*
* @param modifiedSince Update only objects modified since this date. Otherwise all. ISO Date format (2006-04-07)
* @param populator String array of populator class names to run. {@see SEARCH_INDEX_POPULATORS}.
*/
export declare function populateSearchIndex({ modifiedSince, populator }: {
modifiedSince: string | null;
populator: Array<string> | null;
} & XcapOptionalParameters): Thunk<Promise<PopulateSearchIndexResult>>;
export {};
//# sourceMappingURL=index.d.ts.map