meilisearch
Version:
The Meilisearch JS client for Node.js and the browser.
920 lines (706 loc) • 30.5 kB
text/typescript
// Type definitions for meilisearch
// Project: https://github.com/meilisearch/meilisearch-js
// Definitions by: qdequele <quentin@meilisearch.com> <https://github.com/meilisearch>
// Definitions: https://github.com/meilisearch/meilisearch-js
// TypeScript Version: ^3.8.3
import { Task } from '../task'
export type Config = {
host: string
apiKey?: string
clientAgents?: string[]
requestConfig?: Partial<Omit<RequestInit, 'body' | 'method'>>
httpClient?: (input: string, init?: RequestInit) => Promise<any>
}
///
/// Resources
///
export type Pagination = {
offset?: number
limit?: number
}
export type ResourceQuery = Pagination & {}
export type ResourceResults<T> = Pagination & {
results: T
total: number
}
///
/// Indexes
///
export type IndexOptions = {
primaryKey?: string
}
export type IndexObject = {
uid: string
primaryKey?: string
createdAt: Date
updatedAt: Date
}
export type IndexesQuery = ResourceQuery & {}
export type IndexesResults<T> = ResourceResults<T> & {}
/*
* SEARCH PARAMETERS
*/
export const MatchingStrategies = {
ALL: 'all',
LAST: 'last',
}
export type MatchingStrategies = typeof MatchingStrategies[keyof typeof MatchingStrategies]
export type Filter = string | Array<string | string[]>
export type Query = {
q?: string | null
}
export type Highlight = {
attributesToHighlight?: string[]
highlightPreTag?: string
highlightPostTag?: string
}
export type Crop = {
attributesToCrop?: string[]
cropLength?: number
cropMarker?: string
}
// `facetName` becomes mandatory when using `searchForFacetValues`
export type SearchForFacetValuesParams = Omit<SearchParams, 'facetName'> & {
facetName: string
}
export type FacetHit = {
value: string
count: number
}
export type SearchForFacetValuesResponse = {
facetHits: FacetHit[]
facetQuery: string | null
processingTimeMs: number
}
export type SearchParams = Query &
Pagination &
Highlight &
Crop & {
filter?: Filter
sort?: string[]
facets?: string[]
attributesToRetrieve?: string[]
showMatchesPosition?: boolean
matchingStrategy?: MatchingStrategies
hitsPerPage?: number
page?: number
facetName?: string
facetQuery?: string
vector?: number[] | null
showRankingScore?: boolean
showRankingScoreDetails?: boolean
attributesToSearchOn?: string[] | null
}
// Search parameters for searches made with the GET method
// Are different than the parameters for the POST method
export type SearchRequestGET = Pagination &
Query &
Omit<Highlight, 'attributesToHighlight'> &
Omit<Crop, 'attributesToCrop'> & {
filter?: string
sort?: string
facets?: string
attributesToRetrieve?: string
attributesToHighlight?: string
attributesToCrop?: string
showMatchesPosition?: boolean
vector?: string | null
attributesToSearchOn?: string | null
}
export type MultiSearchQuery = SearchParams & { indexUid: string }
export type MultiSearchParams = {
queries: MultiSearchQuery[]
}
export type CategoriesDistribution = {
[category: string]: number
}
export type Facet = string
export type FacetDistribution = Record<Facet, CategoriesDistribution>
export type MatchesPosition<T> = Partial<
Record<keyof T, Array<{ start: number; length: number }>>
>
export type Hit<T = Record<string, any>> = T & {
_formatted?: Partial<T>
_matchesPosition?: MatchesPosition<T>
_rankingScore?: number
_rankingScoreDetails?: RankingScoreDetails
}
export type RankingScoreDetails = {
words?: {
order: number
matchingWords: number
maxMatchingWords: number
score: number
}
typo?: {
order: number
typoCount: number
maxTypoCount: number
score: number
}
proximity?: {
order: number
score: number
}
attribute?: {
order: number
attributes_ranking_order: number
attributes_query_word_order: number
score: number
}
exactness?: {
order: number
matchType: string
score: number
}
[key: string]: Record<string, any> | undefined
}
export type Hits<T = Record<string, any>> = Array<Hit<T>>
export type FacetStat = { min: number; max: number }
export type FacetStats = Record<string, FacetStat>
export type SearchResponse<
T = Record<string, any>,
S extends SearchParams | undefined = undefined
> = {
hits: Hits<T>
processingTimeMs: number
query: string
facetDistribution?: FacetDistribution
facetStats?: FacetStats
vector?: number[]
} & (undefined extends S
? Partial<FinitePagination & InfinitePagination>
: true extends IsFinitePagination<NonNullable<S>>
? FinitePagination
: InfinitePagination)
type FinitePagination = {
totalHits: number
hitsPerPage: number
page: number
totalPages: number
}
type InfinitePagination = {
offset: number
limit: number
estimatedTotalHits: number
}
type IsFinitePagination<S extends SearchParams> = Or<
HasHitsPerPage<S>,
HasPage<S>
>
type Or<A extends boolean, B extends boolean> = true extends A
? true
: true extends B
? true
: false
type HasHitsPerPage<S extends SearchParams> = undefined extends S['hitsPerPage']
? false
: true
type HasPage<S extends SearchParams> = undefined extends S['page']
? false
: true
export type MultiSearchResult<T> = SearchResponse<T> & { indexUid: string }
export type MultiSearchResponse<T = Record<string, any>> = {
results: Array<MultiSearchResult<T>>
}
export type FieldDistribution = {
[field: string]: number
}
/*
** Documents
*/
type Fields<T = Record<string, any>> =
| Array<Extract<keyof T, string>>
| Extract<keyof T, string>
export type DocumentOptions = {
primaryKey?: string
}
export const ContentTypeEnum: Readonly<Record<string, ContentType>> = {
JSON: 'application/json',
CSV: 'text/csv',
NDJSON: 'application/x-ndjson',
}
export type ContentType =
| 'text/csv'
| 'application/x-ndjson'
| 'application/json'
export type RawDocumentAdditionOptions = DocumentOptions & {
csvDelimiter?: string
}
export type DocumentsQuery<T = Record<string, any>> = ResourceQuery & {
fields?: Fields<T>
filter?: Filter
}
export type DocumentQuery<T = Record<string, any>> = {
fields?: Fields<T>
}
export type DocumentsDeletionQuery = {
filter: Filter
}
export type DocumentsIds = string[] | number[]
/*
** Settings
*/
export type FilterableAttributes = string[] | null
export type DistinctAttribute = string | null
export type SearchableAttributes = string[] | null
export type SortableAttributes = string[] | null
export type DisplayedAttributes = string[] | null
export type RankingRules = string[] | null
export type StopWords = string[] | null
export type Synonyms = {
[field: string]: string[]
} | null
export type TypoTolerance = {
enabled?: boolean | null
disableOnAttributes?: string[] | null
disableOnWords?: string[] | null
minWordSizeForTypos?: {
oneTypo?: number | null
twoTypos?: number | null
}
} | null
export type SeparatorTokens = string[] | null
export type NonSeparatorTokens = string[] | null
export type Dictionary = string[] | null
export type FacetOrder = 'alpha' | 'count'
export type Faceting = {
maxValuesPerFacet?: number | null
sortFacetValuesBy?: Record<string, FacetOrder> | null
}
export type PaginationSettings = {
maxTotalHits?: number | null
}
export type Settings = {
filterableAttributes?: FilterableAttributes
distinctAttribute?: DistinctAttribute
sortableAttributes?: SortableAttributes
searchableAttributes?: SearchableAttributes
displayedAttributes?: DisplayedAttributes
rankingRules?: RankingRules
stopWords?: StopWords
synonyms?: Synonyms
typoTolerance?: TypoTolerance
faceting?: Faceting
pagination?: PaginationSettings
separatorTokens?: SeparatorTokens
nonSeparatorTokens?: NonSeparatorTokens
dictionary?: Dictionary
}
/*
** TASKS
*/
export const enum TaskStatus {
TASK_SUCCEEDED = 'succeeded',
TASK_PROCESSING = 'processing',
TASK_FAILED = 'failed',
TASK_ENQUEUED = 'enqueued',
TASK_CANCELED = 'canceled',
}
export const enum TaskTypes {
DOCUMENTS_ADDITION_OR_UPDATE = 'documentAdditionOrUpdate',
DOCUMENT_DELETION = 'documentDeletion',
DUMP_CREATION = 'dumpCreation',
INDEX_CREATION = 'indexCreation',
INDEX_DELETION = 'indexDeletion',
INDEXES_SWAP = 'indexSwap',
INDEX_UPDATE = 'indexUpdate',
SETTINGS_UPDATE = 'settingsUpdate',
SNAPSHOT_CREATION = 'snapshotCreation',
TASK_CANCELATION = 'taskCancelation',
TASK_DELETION = 'taskDeletion',
}
export type TasksQuery = {
indexUids?: string[]
uids?: number[]
types?: TaskTypes[]
statuses?: TaskStatus[]
canceledBy?: number[]
beforeEnqueuedAt?: Date
afterEnqueuedAt?: Date
beforeStartedAt?: Date
afterStartedAt?: Date
beforeFinishedAt?: Date
afterFinishedAt?: Date
limit?: number
from?: number
}
export type CancelTasksQuery = Omit<TasksQuery, 'limit' | 'from'> & {}
export type DeleteTasksQuery = Omit<TasksQuery, 'limit' | 'from'> & {}
export type EnqueuedTaskObject = {
taskUid: number
indexUid?: string
status: TaskStatus
type: TaskTypes
enqueuedAt: string
canceledBy: number
}
export type TaskObject = Omit<EnqueuedTaskObject, 'taskUid'> & {
uid: number
details: {
// Number of documents sent
receivedDocuments?: number
// Number of documents successfully indexed/updated in Meilisearch
indexedDocuments?: number
// Number of deleted documents
deletedDocuments?: number
// Number of documents found on a batch-delete
providedIds?: number
// Primary key on index creation
primaryKey?: string
// Ranking rules on settings actions
rankingRules?: RankingRules
// Searchable attributes on settings actions
searchableAttributes?: SearchableAttributes
// Displayed attributes on settings actions
displayedAttributes?: DisplayedAttributes
// Filterable attributes on settings actions
filterableAttributes?: FilterableAttributes
// Sortable attributes on settings actions
sortableAttributes?: SortableAttributes
// Stop words on settings actions
stopWords?: StopWords
// Stop words on settings actions
synonyms?: Synonyms
// Distinct attribute on settings actions
distinctAttribute?: DistinctAttribute
// Object containing the payload originating the `indexSwap` task creation
swaps?: SwapIndexesParams
// Number of tasks that matched the originalQuery filter
matchedTasks?: number
// Number of tasks that were canceled
canceledTasks?: number
// Number of tasks that were deleted
deletedTasks?: number
// Query parameters used to filter the tasks
originalFilter?: string
}
error: MeiliSearchErrorInfo | null
duration: string
startedAt: string
finishedAt: string
}
export type SwapIndexesParams = Array<{
indexes: string[]
}>
type CursorResults<T> = {
results: T[]
limit: number
from: number
next: number
total: number
}
export type TasksResults = CursorResults<Task>
export type TasksResultsObject = CursorResults<TaskObject>
export type WaitOptions = {
timeOutMs?: number
intervalMs?: number
}
/*
*** HEALTH
*/
export type Health = {
status: 'available'
}
/*
*** STATS
*/
export type IndexStats = {
numberOfDocuments: number
isIndexing: boolean
fieldDistribution: FieldDistribution
}
export type Stats = {
databaseSize: number
lastUpdate: string
indexes: {
[index: string]: IndexStats
}
}
/*
** Keys
*/
export type Key = {
uid: string
description: string
name: string | null
key: string
actions: string[]
indexes: string[]
expiresAt: Date
createdAt: Date
updatedAt: Date
}
export type KeyCreation = {
uid?: string
name?: string
description?: string
actions: string[]
indexes: string[]
expiresAt: Date | null
}
export type KeyUpdate = {
name?: string
description?: string
}
export type KeysQuery = ResourceQuery & {}
export type KeysResults = ResourceResults<Key[]> & {}
/*
** version
*/
export type Version = {
commitSha: string
commitDate: string
pkgVersion: string
}
/*
** ERROR HANDLER
*/
export interface FetchError extends Error {
type: string
errno: string
code: string
}
export type MeiliSearchErrorInfo = {
code: string
link: string
message: string
type: string
}
export const enum ErrorStatusCode {
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#index_creation_failed */
INDEX_CREATION_FAILED = 'index_creation_failed',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#missing_index_uid */
MISSING_INDEX_UID = 'missing_index_uid',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#index_already_exists */
INDEX_ALREADY_EXISTS = 'index_already_exists',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#index_not_found */
INDEX_NOT_FOUND = 'index_not_found',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_index_uid */
INVALID_INDEX_UID = 'invalid_index_uid',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#index_not_accessible */
INDEX_NOT_ACCESSIBLE = 'index_not_accessible',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_index_offset */
INVALID_INDEX_OFFSET = 'invalid_index_offset',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_index_limit */
INVALID_INDEX_LIMIT = 'invalid_index_limit',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_state */
INVALID_STATE = 'invalid_state',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#primary_key_inference_failed */
PRIMARY_KEY_INFERENCE_FAILED = 'primary_key_inference_failed',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#index_primary_key_already_exists */
INDEX_PRIMARY_KEY_ALREADY_EXISTS = 'index_primary_key_already_exists',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_index_primary_key */
INVALID_INDEX_PRIMARY_KEY = 'invalid_index_primary_key',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#max_fields_limit_exceeded */
DOCUMENTS_FIELDS_LIMIT_REACHED = 'document_fields_limit_reached',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#missing_document_id */
MISSING_DOCUMENT_ID = 'missing_document_id',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#missing_document_id */
INVALID_DOCUMENT_ID = 'invalid_document_id',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_content_type */
INVALID_CONTENT_TYPE = 'invalid_content_type',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#missing_content_type */
MISSING_CONTENT_TYPE = 'missing_content_type',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_document_fields */
INVALID_DOCUMENT_FIELDS = 'invalid_document_fields',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_document_limit */
INVALID_DOCUMENT_LIMIT = 'invalid_document_limit',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_document_offset */
INVALID_DOCUMENT_OFFSET = 'invalid_document_offset',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_document_filter */
INVALID_DOCUMENT_FILTER = 'invalid_document_filter',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#missing_document_filter */
MISSING_DOCUMENT_FILTER = 'missing_document_filter',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_document_vectors_field */
INVALID_DOCUMENT_VECTORS_FIELD = 'invalid_document_vectors_field',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#payload_too_large */
PAYLOAD_TOO_LARGE = 'payload_too_large',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#missing_payload */
MISSING_PAYLOAD = 'missing_payload',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#malformed_payload */
MALFORMED_PAYLOAD = 'malformed_payload',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#no_space_left_on_device */
NO_SPACE_LEFT_ON_DEVICE = 'no_space_left_on_device',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_store_file */
INVALID_STORE_FILE = 'invalid_store_file',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_ranking_rules */
INVALID_RANKING_RULES = 'missing_document_id',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_request */
INVALID_REQUEST = 'invalid_request',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_document_geo_field */
INVALID_DOCUMENT_GEO_FIELD = 'invalid_document_geo_field',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_q */
INVALID_SEARCH_Q = 'invalid_search_q',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_offset */
INVALID_SEARCH_OFFSET = 'invalid_search_offset',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_limit */
INVALID_SEARCH_LIMIT = 'invalid_search_limit',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_page */
INVALID_SEARCH_PAGE = 'invalid_search_page',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_hits_per_page */
INVALID_SEARCH_HITS_PER_PAGE = 'invalid_search_hits_per_page',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_attributes_to_retrieve */
INVALID_SEARCH_ATTRIBUTES_TO_RETRIEVE = 'invalid_search_attributes_to_retrieve',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_attributes_to_crop */
INVALID_SEARCH_ATTRIBUTES_TO_CROP = 'invalid_search_attributes_to_crop',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_crop_length */
INVALID_SEARCH_CROP_LENGTH = 'invalid_search_crop_length',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_attributes_to_highlight */
INVALID_SEARCH_ATTRIBUTES_TO_HIGHLIGHT = 'invalid_search_attributes_to_highlight',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_show_matches_position */
INVALID_SEARCH_SHOW_MATCHES_POSITION = 'invalid_search_show_matches_position',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_filter */
INVALID_SEARCH_FILTER = 'invalid_search_filter',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_sort */
INVALID_SEARCH_SORT = 'invalid_search_sort',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_facets */
INVALID_SEARCH_FACETS = 'invalid_search_facets',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_highlight_pre_tag */
INVALID_SEARCH_HIGHLIGHT_PRE_TAG = 'invalid_search_highlight_pre_tag',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_highlight_post_tag */
INVALID_SEARCH_HIGHLIGHT_POST_TAG = 'invalid_search_highlight_post_tag',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_crop_marker */
INVALID_SEARCH_CROP_MARKER = 'invalid_search_crop_marker',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_matching_strategy */
INVALID_SEARCH_MATCHING_STRATEGY = 'invalid_search_matching_strategy',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_vector */
INVALID_SEARCH_VECTOR = 'invalid_search_vector',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_attributes_to_search_on */
INVALID_SEARCH_ATTRIBUTES_TO_SEARCH_ON = 'invalid_search_attributes_to_search_on',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#bad_request */
BAD_REQUEST = 'bad_request',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#document_not_found */
DOCUMENT_NOT_FOUND = 'document_not_found',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#internal */
INTERNAL = 'internal',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_api_key */
INVALID_API_KEY = 'invalid_api_key',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_api_key_description */
INVALID_API_KEY_DESCRIPTION = 'invalid_api_key_description',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_api_key_actions */
INVALID_API_KEY_ACTIONS = 'invalid_api_key_actions',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_api_key_indexes */
INVALID_API_KEY_INDEXES = 'invalid_api_key_indexes',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_api_key_expires_at */
INVALID_API_KEY_EXPIRES_AT = 'invalid_api_key_expires_at',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#api_key_not_found */
API_KEY_NOT_FOUND = 'api_key_not_found',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#immutable_api_key_uid */
IMMUTABLE_API_KEY_UID = 'immutable_api_key_uid',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#immutable_api_key_actions */
IMMUTABLE_API_KEY_ACTIONS = 'immutable_api_key_actions',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#immutable_api_key_indexes */
IMMUTABLE_API_KEY_INDEXES = 'immutable_api_key_indexes',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#immutable_api_key_expires_at */
IMMUTABLE_API_KEY_EXPIRES_AT = 'immutable_api_key_expires_at',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#immutable_api_key_created_at */
IMMUTABLE_API_KEY_CREATED_AT = 'immutable_api_key_created_at',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#immutable_api_key_updated_at */
IMMUTABLE_API_KEY_UPDATED_AT = 'immutable_api_key_updated_at',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#missing_authorization_header */
MISSING_AUTHORIZATION_HEADER = 'missing_authorization_header',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#unretrievable_document */
UNRETRIEVABLE_DOCUMENT = 'unretrievable_document',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#database_size_limit_reached */
MAX_DATABASE_SIZE_LIMIT_REACHED = 'database_size_limit_reached',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#task_not_found */
TASK_NOT_FOUND = 'task_not_found',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#dump_process_failed */
DUMP_PROCESS_FAILED = 'dump_process_failed',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#dump_not_found */
DUMP_NOT_FOUND = 'dump_not_found',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_swap_duplicate_index_found */
INVALID_SWAP_DUPLICATE_INDEX_FOUND = 'invalid_swap_duplicate_index_found',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_swap_indexes */
INVALID_SWAP_INDEXES = 'invalid_swap_indexes',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#missing_swap_indexes */
MISSING_SWAP_INDEXES = 'missing_swap_indexes',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#missing_master_key */
MISSING_MASTER_KEY = 'missing_master_key',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_task_types */
INVALID_TASK_TYPES = 'invalid_task_types',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_task_uids */
INVALID_TASK_UIDS = 'invalid_task_uids',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_task_statuses */
INVALID_TASK_STATUSES = 'invalid_task_statuses',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_task_limit */
INVALID_TASK_LIMIT = 'invalid_task_limit',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_task_from */
INVALID_TASK_FROM = 'invalid_task_from',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_task_canceled_by */
INVALID_TASK_CANCELED_BY = 'invalid_task_canceled_by',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#missing_task_filters */
MISSING_TASK_FILTERS = 'missing_task_filters',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#too_many_open_files */
TOO_MANY_OPEN_FILES = 'too_many_open_files',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#io_error */
IO_ERROR = 'io_error',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_task_index_uids */
INVALID_TASK_INDEX_UIDS = 'invalid_task_index_uids',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#immutable_index_uid */
IMMUTABLE_INDEX_UID = 'immutable_index_uid',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#immutable_index_created_at */
IMMUTABLE_INDEX_CREATED_AT = 'immutable_index_created_at',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#immutable_index_updated_at */
IMMUTABLE_INDEX_UPDATED_AT = 'immutable_index_updated_at',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_settings_displayed_attributes */
INVALID_SETTINGS_DISPLAYED_ATTRIBUTES = 'invalid_settings_displayed_attributes',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_settings_searchable_attributes */
INVALID_SETTINGS_SEARCHABLE_ATTRIBUTES = 'invalid_settings_searchable_attributes',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_settings_filterable_attributes */
INVALID_SETTINGS_FILTERABLE_ATTRIBUTES = 'invalid_settings_filterable_attributes',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_settings_sortable_attributes */
INVALID_SETTINGS_SORTABLE_ATTRIBUTES = 'invalid_settings_sortable_attributes',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_settings_ranking_rules */
INVALID_SETTINGS_RANKING_RULES = 'invalid_settings_ranking_rules',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_settings_stop_words */
INVALID_SETTINGS_STOP_WORDS = 'invalid_settings_stop_words',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_settings_synonyms */
INVALID_SETTINGS_SYNONYMS = 'invalid_settings_synonyms',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_settings_distinct_attribute */
INVALID_SETTINGS_DISTINCT_ATTRIBUTE = 'invalid_settings_distinct_attribute',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_settings_typo_tolerance */
INVALID_SETTINGS_TYPO_TOLERANCE = 'invalid_settings_typo_tolerance',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_settings_faceting */
INVALID_SETTINGS_FACETING = 'invalid_settings_faceting',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_settings_pagination */
INVALID_SETTINGS_PAGINATION = 'invalid_settings_pagination',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_task_before_enqueued_at */
INVALID_TASK_BEFORE_ENQUEUED_AT = 'invalid_task_before_enqueued_at',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_task_after_enqueued_at */
INVALID_TASK_AFTER_ENQUEUED_AT = 'invalid_task_after_enqueued_at',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_task_before_started_at */
INVALID_TASK_BEFORE_STARTED_AT = 'invalid_task_before_started_at',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_task_after_started_at */
INVALID_TASK_AFTER_STARTED_AT = 'invalid_task_after_started_at',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_task_before_finished_at */
INVALID_TASK_BEFORE_FINISHED_AT = 'invalid_task_before_finished_at',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_task_after_finished_at */
INVALID_TASK_AFTER_FINISHED_AT = 'invalid_task_after_finished_at',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#missing_api_key_actions */
MISSING_API_KEY_ACTIONS = 'missing_api_key_actions',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#missing_api_key_indexes */
MISSING_API_KEY_INDEXES = 'missing_api_key_indexes',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#missing_api_key_expires_at */
MISSING_API_KEY_EXPIRES_AT = 'missing_api_key_expires_at',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_api_key_limit */
INVALID_API_KEY_LIMIT = 'invalid_api_key_limit',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_api_key_offset */
INVALID_API_KEY_OFFSET = 'invalid_api_key_offset',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_facet_search_facet_name */
INVALID_FACET_SEARCH_FACET_NAME = 'invalid_facet_search_facet_name',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#missing_facet_search_facet_name */
MISSING_FACET_SEARCH_FACET_NAME = 'missing_facet_search_facet_name',
/** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_facet_search_facet_query */
INVALID_FACET_SEARCH_FACET_QUERY = 'invalid_facet_search_facet_query',
}
export type TokenIndexRules = {
[field: string]: any
filter?: Filter
}
export type TokenSearchRules = Record<string, TokenIndexRules | null> | string[]
export type TokenOptions = {
apiKey?: string
expiresAt?: Date
}