{"version":3,"file":"index-Sigi_uDU.js","sources":["../../../../../node_modules/.pnpm/meilisearch@0.36.0/node_modules/meilisearch/dist/bundles/meilisearch.esm.js","../../../../../src/utils/index.ts"],"sourcesContent":["import crypto from 'crypto';\n\n// Type definitions for meilisearch\r\n// Project: https://github.com/meilisearch/meilisearch-js\r\n// Definitions by: qdequele \r\n// Definitions: https://github.com/meilisearch/meilisearch-js\r\n// TypeScript Version: ^3.8.3\r\n/*\r\n * SEARCH PARAMETERS\r\n */\r\nconst MatchingStrategies = {\r\n ALL: 'all',\r\n LAST: 'last',\r\n};\r\nconst ContentTypeEnum = {\r\n JSON: 'application/json',\r\n CSV: 'text/csv',\r\n NDJSON: 'application/x-ndjson',\r\n};\r\n/*\r\n ** TASKS\r\n */\r\nconst TaskStatus = {\r\n TASK_SUCCEEDED: 'succeeded',\r\n TASK_PROCESSING: 'processing',\r\n TASK_FAILED: 'failed',\r\n TASK_ENQUEUED: 'enqueued',\r\n TASK_CANCELED: 'canceled',\r\n};\r\nconst TaskTypes = {\r\n DOCUMENTS_ADDITION_OR_UPDATE: 'documentAdditionOrUpdate',\r\n DOCUMENT_DELETION: 'documentDeletion',\r\n DUMP_CREATION: 'dumpCreation',\r\n INDEX_CREATION: 'indexCreation',\r\n INDEX_DELETION: 'indexDeletion',\r\n INDEXES_SWAP: 'indexSwap',\r\n INDEX_UPDATE: 'indexUpdate',\r\n SETTINGS_UPDATE: 'settingsUpdate',\r\n SNAPSHOT_CREATION: 'snapshotCreation',\r\n TASK_CANCELATION: 'taskCancelation',\r\n TASK_DELETION: 'taskDeletion',\r\n};\r\nconst ErrorStatusCode = {\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#index_creation_failed */\r\n INDEX_CREATION_FAILED: 'index_creation_failed',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#missing_index_uid */\r\n MISSING_INDEX_UID: 'missing_index_uid',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#index_already_exists */\r\n INDEX_ALREADY_EXISTS: 'index_already_exists',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#index_not_found */\r\n INDEX_NOT_FOUND: 'index_not_found',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_index_uid */\r\n INVALID_INDEX_UID: 'invalid_index_uid',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#index_not_accessible */\r\n INDEX_NOT_ACCESSIBLE: 'index_not_accessible',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_index_offset */\r\n INVALID_INDEX_OFFSET: 'invalid_index_offset',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_index_limit */\r\n INVALID_INDEX_LIMIT: 'invalid_index_limit',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_state */\r\n INVALID_STATE: 'invalid_state',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#primary_key_inference_failed */\r\n PRIMARY_KEY_INFERENCE_FAILED: 'primary_key_inference_failed',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#index_primary_key_already_exists */\r\n INDEX_PRIMARY_KEY_ALREADY_EXISTS: 'index_primary_key_already_exists',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_index_primary_key */\r\n INVALID_INDEX_PRIMARY_KEY: 'invalid_index_primary_key',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#max_fields_limit_exceeded */\r\n DOCUMENTS_FIELDS_LIMIT_REACHED: 'document_fields_limit_reached',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#missing_document_id */\r\n MISSING_DOCUMENT_ID: 'missing_document_id',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#missing_document_id */\r\n INVALID_DOCUMENT_ID: 'invalid_document_id',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_content_type */\r\n INVALID_CONTENT_TYPE: 'invalid_content_type',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#missing_content_type */\r\n MISSING_CONTENT_TYPE: 'missing_content_type',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_document_fields */\r\n INVALID_DOCUMENT_FIELDS: 'invalid_document_fields',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_document_limit */\r\n INVALID_DOCUMENT_LIMIT: 'invalid_document_limit',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_document_offset */\r\n INVALID_DOCUMENT_OFFSET: 'invalid_document_offset',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_document_filter */\r\n INVALID_DOCUMENT_FILTER: 'invalid_document_filter',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#missing_document_filter */\r\n MISSING_DOCUMENT_FILTER: 'missing_document_filter',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_document_vectors_field */\r\n INVALID_DOCUMENT_VECTORS_FIELD: 'invalid_document_vectors_field',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#payload_too_large */\r\n PAYLOAD_TOO_LARGE: 'payload_too_large',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#missing_payload */\r\n MISSING_PAYLOAD: 'missing_payload',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#malformed_payload */\r\n MALFORMED_PAYLOAD: 'malformed_payload',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#no_space_left_on_device */\r\n NO_SPACE_LEFT_ON_DEVICE: 'no_space_left_on_device',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_store_file */\r\n INVALID_STORE_FILE: 'invalid_store_file',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_ranking_rules */\r\n INVALID_RANKING_RULES: 'missing_document_id',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_request */\r\n INVALID_REQUEST: 'invalid_request',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_document_geo_field */\r\n INVALID_DOCUMENT_GEO_FIELD: 'invalid_document_geo_field',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_q */\r\n INVALID_SEARCH_Q: 'invalid_search_q',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_offset */\r\n INVALID_SEARCH_OFFSET: 'invalid_search_offset',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_limit */\r\n INVALID_SEARCH_LIMIT: 'invalid_search_limit',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_page */\r\n INVALID_SEARCH_PAGE: 'invalid_search_page',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_hits_per_page */\r\n INVALID_SEARCH_HITS_PER_PAGE: 'invalid_search_hits_per_page',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_attributes_to_retrieve */\r\n INVALID_SEARCH_ATTRIBUTES_TO_RETRIEVE: 'invalid_search_attributes_to_retrieve',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_attributes_to_crop */\r\n INVALID_SEARCH_ATTRIBUTES_TO_CROP: 'invalid_search_attributes_to_crop',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_crop_length */\r\n INVALID_SEARCH_CROP_LENGTH: 'invalid_search_crop_length',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_attributes_to_highlight */\r\n INVALID_SEARCH_ATTRIBUTES_TO_HIGHLIGHT: 'invalid_search_attributes_to_highlight',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_show_matches_position */\r\n INVALID_SEARCH_SHOW_MATCHES_POSITION: 'invalid_search_show_matches_position',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_filter */\r\n INVALID_SEARCH_FILTER: 'invalid_search_filter',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_sort */\r\n INVALID_SEARCH_SORT: 'invalid_search_sort',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_facets */\r\n INVALID_SEARCH_FACETS: 'invalid_search_facets',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_highlight_pre_tag */\r\n INVALID_SEARCH_HIGHLIGHT_PRE_TAG: 'invalid_search_highlight_pre_tag',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_highlight_post_tag */\r\n INVALID_SEARCH_HIGHLIGHT_POST_TAG: 'invalid_search_highlight_post_tag',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_crop_marker */\r\n INVALID_SEARCH_CROP_MARKER: 'invalid_search_crop_marker',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_matching_strategy */\r\n INVALID_SEARCH_MATCHING_STRATEGY: 'invalid_search_matching_strategy',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_vector */\r\n INVALID_SEARCH_VECTOR: 'invalid_search_vector',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_search_attributes_to_search_on */\r\n INVALID_SEARCH_ATTRIBUTES_TO_SEARCH_ON: 'invalid_search_attributes_to_search_on',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#bad_request */\r\n BAD_REQUEST: 'bad_request',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#document_not_found */\r\n DOCUMENT_NOT_FOUND: 'document_not_found',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#internal */\r\n INTERNAL: 'internal',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_api_key */\r\n INVALID_API_KEY: 'invalid_api_key',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_api_key_description */\r\n INVALID_API_KEY_DESCRIPTION: 'invalid_api_key_description',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_api_key_actions */\r\n INVALID_API_KEY_ACTIONS: 'invalid_api_key_actions',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_api_key_indexes */\r\n INVALID_API_KEY_INDEXES: 'invalid_api_key_indexes',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_api_key_expires_at */\r\n INVALID_API_KEY_EXPIRES_AT: 'invalid_api_key_expires_at',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#api_key_not_found */\r\n API_KEY_NOT_FOUND: 'api_key_not_found',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#immutable_api_key_uid */\r\n IMMUTABLE_API_KEY_UID: 'immutable_api_key_uid',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#immutable_api_key_actions */\r\n IMMUTABLE_API_KEY_ACTIONS: 'immutable_api_key_actions',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#immutable_api_key_indexes */\r\n IMMUTABLE_API_KEY_INDEXES: 'immutable_api_key_indexes',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#immutable_api_key_expires_at */\r\n IMMUTABLE_API_KEY_EXPIRES_AT: 'immutable_api_key_expires_at',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#immutable_api_key_created_at */\r\n IMMUTABLE_API_KEY_CREATED_AT: 'immutable_api_key_created_at',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#immutable_api_key_updated_at */\r\n IMMUTABLE_API_KEY_UPDATED_AT: 'immutable_api_key_updated_at',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#missing_authorization_header */\r\n MISSING_AUTHORIZATION_HEADER: 'missing_authorization_header',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#unretrievable_document */\r\n UNRETRIEVABLE_DOCUMENT: 'unretrievable_document',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#database_size_limit_reached */\r\n MAX_DATABASE_SIZE_LIMIT_REACHED: 'database_size_limit_reached',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#task_not_found */\r\n TASK_NOT_FOUND: 'task_not_found',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#dump_process_failed */\r\n DUMP_PROCESS_FAILED: 'dump_process_failed',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#dump_not_found */\r\n DUMP_NOT_FOUND: 'dump_not_found',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_swap_duplicate_index_found */\r\n INVALID_SWAP_DUPLICATE_INDEX_FOUND: 'invalid_swap_duplicate_index_found',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_swap_indexes */\r\n INVALID_SWAP_INDEXES: 'invalid_swap_indexes',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#missing_swap_indexes */\r\n MISSING_SWAP_INDEXES: 'missing_swap_indexes',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#missing_master_key */\r\n MISSING_MASTER_KEY: 'missing_master_key',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_task_types */\r\n INVALID_TASK_TYPES: 'invalid_task_types',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_task_uids */\r\n INVALID_TASK_UIDS: 'invalid_task_uids',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_task_statuses */\r\n INVALID_TASK_STATUSES: 'invalid_task_statuses',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_task_limit */\r\n INVALID_TASK_LIMIT: 'invalid_task_limit',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_task_from */\r\n INVALID_TASK_FROM: 'invalid_task_from',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_task_canceled_by */\r\n INVALID_TASK_CANCELED_BY: 'invalid_task_canceled_by',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#missing_task_filters */\r\n MISSING_TASK_FILTERS: 'missing_task_filters',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#too_many_open_files */\r\n TOO_MANY_OPEN_FILES: 'too_many_open_files',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#io_error */\r\n IO_ERROR: 'io_error',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_task_index_uids */\r\n INVALID_TASK_INDEX_UIDS: 'invalid_task_index_uids',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#immutable_index_uid */\r\n IMMUTABLE_INDEX_UID: 'immutable_index_uid',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#immutable_index_created_at */\r\n IMMUTABLE_INDEX_CREATED_AT: 'immutable_index_created_at',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#immutable_index_updated_at */\r\n IMMUTABLE_INDEX_UPDATED_AT: 'immutable_index_updated_at',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_settings_displayed_attributes */\r\n INVALID_SETTINGS_DISPLAYED_ATTRIBUTES: 'invalid_settings_displayed_attributes',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_settings_searchable_attributes */\r\n INVALID_SETTINGS_SEARCHABLE_ATTRIBUTES: 'invalid_settings_searchable_attributes',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_settings_filterable_attributes */\r\n INVALID_SETTINGS_FILTERABLE_ATTRIBUTES: 'invalid_settings_filterable_attributes',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_settings_sortable_attributes */\r\n INVALID_SETTINGS_SORTABLE_ATTRIBUTES: 'invalid_settings_sortable_attributes',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_settings_ranking_rules */\r\n INVALID_SETTINGS_RANKING_RULES: 'invalid_settings_ranking_rules',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_settings_stop_words */\r\n INVALID_SETTINGS_STOP_WORDS: 'invalid_settings_stop_words',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_settings_synonyms */\r\n INVALID_SETTINGS_SYNONYMS: 'invalid_settings_synonyms',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_settings_distinct_attribute */\r\n INVALID_SETTINGS_DISTINCT_ATTRIBUTE: 'invalid_settings_distinct_attribute',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_settings_typo_tolerance */\r\n INVALID_SETTINGS_TYPO_TOLERANCE: 'invalid_settings_typo_tolerance',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_settings_faceting */\r\n INVALID_SETTINGS_FACETING: 'invalid_settings_faceting',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_settings_pagination */\r\n INVALID_SETTINGS_PAGINATION: 'invalid_settings_pagination',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_task_before_enqueued_at */\r\n INVALID_TASK_BEFORE_ENQUEUED_AT: 'invalid_task_before_enqueued_at',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_task_after_enqueued_at */\r\n INVALID_TASK_AFTER_ENQUEUED_AT: 'invalid_task_after_enqueued_at',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_task_before_started_at */\r\n INVALID_TASK_BEFORE_STARTED_AT: 'invalid_task_before_started_at',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_task_after_started_at */\r\n INVALID_TASK_AFTER_STARTED_AT: 'invalid_task_after_started_at',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_task_before_finished_at */\r\n INVALID_TASK_BEFORE_FINISHED_AT: 'invalid_task_before_finished_at',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_task_after_finished_at */\r\n INVALID_TASK_AFTER_FINISHED_AT: 'invalid_task_after_finished_at',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#missing_api_key_actions */\r\n MISSING_API_KEY_ACTIONS: 'missing_api_key_actions',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#missing_api_key_indexes */\r\n MISSING_API_KEY_INDEXES: 'missing_api_key_indexes',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#missing_api_key_expires_at */\r\n MISSING_API_KEY_EXPIRES_AT: 'missing_api_key_expires_at',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_api_key_limit */\r\n INVALID_API_KEY_LIMIT: 'invalid_api_key_limit',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_api_key_offset */\r\n INVALID_API_KEY_OFFSET: 'invalid_api_key_offset',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_facet_search_facet_name */\r\n INVALID_FACET_SEARCH_FACET_NAME: 'invalid_facet_search_facet_name',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#missing_facet_search_facet_name */\r\n MISSING_FACET_SEARCH_FACET_NAME: 'missing_facet_search_facet_name',\r\n /** @see https://www.meilisearch.com/docs/reference/errors/error_codes#invalid_facet_search_facet_query */\r\n INVALID_FACET_SEARCH_FACET_QUERY: 'invalid_facet_search_facet_query',\r\n};\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\n\nclass MeiliSearchCommunicationError extends Error {\r\n constructor(message, body, url, stack) {\r\n var _a, _b, _c;\r\n super(message);\r\n // Make errors comparison possible. ex: error instanceof MeiliSearchCommunicationError.\r\n Object.setPrototypeOf(this, MeiliSearchCommunicationError.prototype);\r\n this.name = 'MeiliSearchCommunicationError';\r\n if (body instanceof Response) {\r\n this.message = body.statusText;\r\n this.statusCode = body.status;\r\n }\r\n if (body instanceof Error) {\r\n this.errno = body.errno;\r\n this.code = body.code;\r\n }\r\n if (stack) {\r\n this.stack = stack;\r\n this.stack = (_a = this.stack) === null || _a === void 0 ? void 0 : _a.replace(/(TypeError|FetchError)/, this.name);\r\n this.stack = (_b = this.stack) === null || _b === void 0 ? void 0 : _b.replace('Failed to fetch', `request to ${url} failed, reason: connect ECONNREFUSED`);\r\n this.stack = (_c = this.stack) === null || _c === void 0 ? void 0 : _c.replace('Not Found', `Not Found: ${url}`);\r\n }\r\n else {\r\n if (Error.captureStackTrace) {\r\n Error.captureStackTrace(this, MeiliSearchCommunicationError);\r\n }\r\n }\r\n }\r\n}\n\nconst MeiliSearchApiError = class extends Error {\r\n constructor(error, status) {\r\n super(error.message);\r\n // Make errors comparison possible. ex: error instanceof MeiliSearchApiError.\r\n Object.setPrototypeOf(this, MeiliSearchApiError.prototype);\r\n this.name = 'MeiliSearchApiError';\r\n this.code = error.code;\r\n this.type = error.type;\r\n this.link = error.link;\r\n this.message = error.message;\r\n this.httpStatus = status;\r\n if (Error.captureStackTrace) {\r\n Error.captureStackTrace(this, MeiliSearchApiError);\r\n }\r\n }\r\n};\n\nfunction httpResponseErrorHandler(response) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!response.ok) {\r\n let responseBody;\r\n try {\r\n // If it is not possible to parse the return body it means there is none\r\n // In which case it is a communication error with the Meilisearch instance\r\n responseBody = yield response.json();\r\n }\r\n catch (e) {\r\n // Not sure on how to test this part of the code.\r\n throw new MeiliSearchCommunicationError(response.statusText, response, response.url);\r\n }\r\n // If the body is parsable, then it means Meilisearch returned a body with\r\n // information on the error.\r\n throw new MeiliSearchApiError(responseBody, response.status);\r\n }\r\n return response;\r\n });\r\n}\r\nfunction httpErrorHandler(response, stack, url) {\r\n if (response.name !== 'MeiliSearchApiError') {\r\n throw new MeiliSearchCommunicationError(response.message, response, url, stack);\r\n }\r\n throw response;\r\n}\n\nclass MeiliSearchError extends Error {\r\n constructor(message) {\r\n super(message);\r\n // Make errors comparison possible. ex: error instanceof MeiliSearchError.\r\n Object.setPrototypeOf(this, MeiliSearchError.prototype);\r\n this.name = 'MeiliSearchError';\r\n if (Error.captureStackTrace) {\r\n Error.captureStackTrace(this, MeiliSearchError);\r\n }\r\n }\r\n}\n\nclass MeiliSearchTimeOutError extends Error {\r\n constructor(message) {\r\n super(message);\r\n // Make errors comparison possible. ex: error instanceof MeiliSearchTimeOutError.\r\n Object.setPrototypeOf(this, MeiliSearchTimeOutError.prototype);\r\n this.name = 'MeiliSearchTimeOutError';\r\n if (Error.captureStackTrace) {\r\n Error.captureStackTrace(this, MeiliSearchTimeOutError);\r\n }\r\n }\r\n}\n\nfunction versionErrorHintMessage(message, method) {\r\n return `${message}\\nHint: It might not be working because maybe you're not up to date with the Meilisearch version that ${method} call requires.`;\r\n}\n\n/** Removes undefined entries from object */\r\nfunction removeUndefinedFromObject(obj) {\r\n return Object.entries(obj).reduce((acc, curEntry) => {\r\n const [key, val] = curEntry;\r\n if (val !== undefined)\r\n acc[key] = val;\r\n return acc;\r\n }, {});\r\n}\r\nfunction sleep(ms) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return yield new Promise((resolve) => setTimeout(resolve, ms));\r\n });\r\n}\r\nfunction addProtocolIfNotPresent(host) {\r\n if (!(host.startsWith('https://') || host.startsWith('http://'))) {\r\n return `http://${host}`;\r\n }\r\n return host;\r\n}\r\nfunction addTrailingSlash(url) {\r\n if (!url.endsWith('/')) {\r\n url += '/';\r\n }\r\n return url;\r\n}\r\nfunction validateUuid4(uuid) {\r\n const regexExp = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/gi;\r\n return regexExp.test(uuid);\r\n}\n\nconst PACKAGE_VERSION = '0.36.0';\n\nfunction toQueryParams(parameters) {\r\n const params = Object.keys(parameters);\r\n const queryParams = params.reduce((acc, key) => {\r\n const value = parameters[key];\r\n if (value === undefined) {\r\n return acc;\r\n }\r\n else if (Array.isArray(value)) {\r\n return Object.assign(Object.assign({}, acc), { [key]: value.join(',') });\r\n }\r\n else if (value instanceof Date) {\r\n return Object.assign(Object.assign({}, acc), { [key]: value.toISOString() });\r\n }\r\n return Object.assign(Object.assign({}, acc), { [key]: value });\r\n }, {});\r\n return queryParams;\r\n}\r\nfunction constructHostURL(host) {\r\n try {\r\n host = addProtocolIfNotPresent(host);\r\n host = addTrailingSlash(host);\r\n return host;\r\n }\r\n catch (e) {\r\n throw new MeiliSearchError('The provided host is not valid.');\r\n }\r\n}\r\nfunction cloneAndParseHeaders(headers) {\r\n if (Array.isArray(headers)) {\r\n return headers.reduce((acc, headerPair) => {\r\n acc[headerPair[0]] = headerPair[1];\r\n return acc;\r\n }, {});\r\n }\r\n else if ('has' in headers) {\r\n const clonedHeaders = {};\r\n headers.forEach((value, key) => (clonedHeaders[key] = value));\r\n return clonedHeaders;\r\n }\r\n else {\r\n return Object.assign({}, headers);\r\n }\r\n}\r\nfunction createHeaders(config) {\r\n var _a, _b;\r\n const agentHeader = 'X-Meilisearch-Client';\r\n const packageAgent = `Meilisearch JavaScript (v${PACKAGE_VERSION})`;\r\n const contentType = 'Content-Type';\r\n const authorization = 'Authorization';\r\n const headers = cloneAndParseHeaders((_b = (_a = config.requestConfig) === null || _a === void 0 ? void 0 : _a.headers) !== null && _b !== void 0 ? _b : {});\r\n // do not override if user provided the header\r\n if (config.apiKey && !headers[authorization]) {\r\n headers[authorization] = `Bearer ${config.apiKey}`;\r\n }\r\n if (!headers[contentType]) {\r\n headers['Content-Type'] = 'application/json';\r\n }\r\n // Creates the custom user agent with information on the package used.\r\n if (config.clientAgents && Array.isArray(config.clientAgents)) {\r\n const clients = config.clientAgents.concat(packageAgent);\r\n headers[agentHeader] = clients.join(' ; ');\r\n }\r\n else if (config.clientAgents && !Array.isArray(config.clientAgents)) {\r\n // If the header is defined but not an array\r\n throw new MeiliSearchError(`Meilisearch: The header \"${agentHeader}\" should be an array of string(s).\\n`);\r\n }\r\n else {\r\n headers[agentHeader] = packageAgent;\r\n }\r\n return headers;\r\n}\r\nclass HttpRequests {\r\n constructor(config) {\r\n this.headers = createHeaders(config);\r\n this.requestConfig = config.requestConfig;\r\n this.httpClient = config.httpClient;\r\n this.requestTimeout = config.timeout;\r\n try {\r\n const host = constructHostURL(config.host);\r\n this.url = new URL(host);\r\n }\r\n catch (e) {\r\n throw new MeiliSearchError('The provided host is not valid.');\r\n }\r\n }\r\n request({ method, url, params, body, config = {}, }) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (typeof fetch === 'undefined') {\r\n require('cross-fetch/polyfill');\r\n }\r\n const constructURL = new URL(url, this.url);\r\n if (params) {\r\n const queryParams = new URLSearchParams();\r\n Object.keys(params)\r\n .filter((x) => params[x] !== null)\r\n .map((x) => queryParams.set(x, params[x]));\r\n constructURL.search = queryParams.toString();\r\n }\r\n // in case a custom content-type is provided\r\n // do not stringify body\r\n if (!((_a = config.headers) === null || _a === void 0 ? void 0 : _a['Content-Type'])) {\r\n body = JSON.stringify(body);\r\n }\r\n const headers = Object.assign(Object.assign({}, this.headers), config.headers);\r\n try {\r\n const result = this.fetchWithTimeout(constructURL.toString(), Object.assign(Object.assign(Object.assign({}, config), this.requestConfig), { method,\r\n body,\r\n headers }), this.requestTimeout);\r\n // When using a custom HTTP client, the response is returned to allow the user to parse/handle it as they see fit\r\n if (this.httpClient) {\r\n return yield result;\r\n }\r\n const response = yield result.then((res) => httpResponseErrorHandler(res));\r\n const parsedBody = yield response.json().catch(() => undefined);\r\n return parsedBody;\r\n }\r\n catch (e) {\r\n const stack = e.stack;\r\n httpErrorHandler(e, stack, constructURL.toString());\r\n }\r\n });\r\n }\r\n fetchWithTimeout(url, options, timeout) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return new Promise((resolve, reject) => {\r\n const fetchFn = this.httpClient ? this.httpClient : fetch;\r\n const fetchPromise = fetchFn(url, options);\r\n const promises = [fetchPromise];\r\n // TimeoutPromise will not run if undefined or zero\r\n let timeoutId;\r\n if (timeout) {\r\n const timeoutPromise = new Promise((_, reject) => {\r\n timeoutId = setTimeout(() => {\r\n reject(new Error('Error: Request Timed Out'));\r\n }, timeout);\r\n });\r\n promises.push(timeoutPromise);\r\n }\r\n Promise.race(promises)\r\n .then(resolve)\r\n .catch(reject)\r\n .finally(() => {\r\n clearTimeout(timeoutId);\r\n });\r\n });\r\n });\r\n }\r\n get(url, params, config) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return yield this.request({\r\n method: 'GET',\r\n url,\r\n params,\r\n config,\r\n });\r\n });\r\n }\r\n post(url, data, params, config) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return yield this.request({\r\n method: 'POST',\r\n url,\r\n body: data,\r\n params,\r\n config,\r\n });\r\n });\r\n }\r\n put(url, data, params, config) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return yield this.request({\r\n method: 'PUT',\r\n url,\r\n body: data,\r\n params,\r\n config,\r\n });\r\n });\r\n }\r\n patch(url, data, params, config) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return yield this.request({\r\n method: 'PATCH',\r\n url,\r\n body: data,\r\n params,\r\n config,\r\n });\r\n });\r\n }\r\n delete(url, data, params, config) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return yield this.request({\r\n method: 'DELETE',\r\n url,\r\n body: data,\r\n params,\r\n config,\r\n });\r\n });\r\n }\r\n}\n\nclass EnqueuedTask {\r\n constructor(task) {\r\n this.taskUid = task.taskUid;\r\n this.indexUid = task.indexUid;\r\n this.status = task.status;\r\n this.type = task.type;\r\n this.enqueuedAt = new Date(task.enqueuedAt);\r\n }\r\n}\n\nclass Task {\r\n constructor(task) {\r\n this.indexUid = task.indexUid;\r\n this.status = task.status;\r\n this.type = task.type;\r\n this.uid = task.uid;\r\n this.details = task.details;\r\n this.canceledBy = task.canceledBy;\r\n this.error = task.error;\r\n this.duration = task.duration;\r\n this.startedAt = new Date(task.startedAt);\r\n this.enqueuedAt = new Date(task.enqueuedAt);\r\n this.finishedAt = new Date(task.finishedAt);\r\n }\r\n}\r\nclass TaskClient {\r\n constructor(config) {\r\n this.httpRequest = new HttpRequests(config);\r\n }\r\n /**\r\n * Get one task\r\n *\r\n * @param uid - Unique identifier of the task\r\n * @returns\r\n */\r\n getTask(uid) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `tasks/${uid}`;\r\n const taskItem = yield this.httpRequest.get(url);\r\n return new Task(taskItem);\r\n });\r\n }\r\n /**\r\n * Get tasks\r\n *\r\n * @param parameters - Parameters to browse the tasks\r\n * @returns Promise containing all tasks\r\n */\r\n getTasks(parameters = {}) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `tasks`;\r\n const tasks = yield this.httpRequest.get(url, toQueryParams(parameters));\r\n return Object.assign(Object.assign({}, tasks), { results: tasks.results.map((task) => new Task(task)) });\r\n });\r\n }\r\n /**\r\n * Wait for a task to be processed.\r\n *\r\n * @param taskUid - Task identifier\r\n * @param options - Additional configuration options\r\n * @returns Promise returning a task after it has been processed\r\n */\r\n waitForTask(taskUid, { timeOutMs = 5000, intervalMs = 50 } = {}) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const startingTime = Date.now();\r\n while (Date.now() - startingTime < timeOutMs) {\r\n const response = yield this.getTask(taskUid);\r\n if (![\r\n TaskStatus.TASK_ENQUEUED,\r\n TaskStatus.TASK_PROCESSING,\r\n ].includes(response.status))\r\n return response;\r\n yield sleep(intervalMs);\r\n }\r\n throw new MeiliSearchTimeOutError(`timeout of ${timeOutMs}ms has exceeded on process ${taskUid} when waiting a task to be resolved.`);\r\n });\r\n }\r\n /**\r\n * Waits for multiple tasks to be processed\r\n *\r\n * @param taskUids - Tasks identifier list\r\n * @param options - Wait options\r\n * @returns Promise returning a list of tasks after they have been processed\r\n */\r\n waitForTasks(taskUids, { timeOutMs = 5000, intervalMs = 50 } = {}) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const tasks = [];\r\n for (const taskUid of taskUids) {\r\n const task = yield this.waitForTask(taskUid, {\r\n timeOutMs,\r\n intervalMs,\r\n });\r\n tasks.push(task);\r\n }\r\n return tasks;\r\n });\r\n }\r\n /**\r\n * Cancel a list of enqueued or processing tasks.\r\n *\r\n * @param parameters - Parameters to filter the tasks.\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n cancelTasks(parameters = {}) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `tasks/cancel`;\r\n const task = yield this.httpRequest.post(url, {}, toQueryParams(parameters));\r\n return new EnqueuedTask(task);\r\n });\r\n }\r\n /**\r\n * Delete a list tasks.\r\n *\r\n * @param parameters - Parameters to filter the tasks.\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n deleteTasks(parameters = {}) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `tasks`;\r\n const task = yield this.httpRequest.delete(url, {}, toQueryParams(parameters));\r\n return new EnqueuedTask(task);\r\n });\r\n }\r\n}\n\n/*\r\n * Bundle: MeiliSearch / Indexes\r\n * Project: MeiliSearch - Javascript API\r\n * Author: Quentin de Quelen \r\n * Copyright: 2019, MeiliSearch\r\n */\r\nclass Index {\r\n /**\r\n * @param config - Request configuration options\r\n * @param uid - UID of the index\r\n * @param primaryKey - Primary Key of the index\r\n */\r\n constructor(config, uid, primaryKey) {\r\n this.uid = uid;\r\n this.primaryKey = primaryKey;\r\n this.httpRequest = new HttpRequests(config);\r\n this.tasks = new TaskClient(config);\r\n }\r\n ///\r\n /// SEARCH\r\n ///\r\n /**\r\n * Search for documents into an index\r\n *\r\n * @param query - Query string\r\n * @param options - Search options\r\n * @param config - Additional request configuration options\r\n * @returns Promise containing the search response\r\n */\r\n search(query, options, config) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/search`;\r\n return yield this.httpRequest.post(url, removeUndefinedFromObject(Object.assign({ q: query }, options)), undefined, config);\r\n });\r\n }\r\n /**\r\n * Search for documents into an index using the GET method\r\n *\r\n * @param query - Query string\r\n * @param options - Search options\r\n * @param config - Additional request configuration options\r\n * @returns Promise containing the search response\r\n */\r\n searchGet(query, options, config) {\r\n var _a, _b, _c, _d, _e, _f, _g;\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/search`;\r\n const parseFilter = (filter) => {\r\n if (typeof filter === 'string')\r\n return filter;\r\n else if (Array.isArray(filter))\r\n throw new MeiliSearchError('The filter query parameter should be in string format when using searchGet');\r\n else\r\n return undefined;\r\n };\r\n const getParams = Object.assign(Object.assign({ q: query }, options), { filter: parseFilter(options === null || options === void 0 ? void 0 : options.filter), sort: (_a = options === null || options === void 0 ? void 0 : options.sort) === null || _a === void 0 ? void 0 : _a.join(','), facets: (_b = options === null || options === void 0 ? void 0 : options.facets) === null || _b === void 0 ? void 0 : _b.join(','), attributesToRetrieve: (_c = options === null || options === void 0 ? void 0 : options.attributesToRetrieve) === null || _c === void 0 ? void 0 : _c.join(','), attributesToCrop: (_d = options === null || options === void 0 ? void 0 : options.attributesToCrop) === null || _d === void 0 ? void 0 : _d.join(','), attributesToHighlight: (_e = options === null || options === void 0 ? void 0 : options.attributesToHighlight) === null || _e === void 0 ? void 0 : _e.join(','), vector: (_f = options === null || options === void 0 ? void 0 : options.vector) === null || _f === void 0 ? void 0 : _f.join(','), attributesToSearchOn: (_g = options === null || options === void 0 ? void 0 : options.attributesToSearchOn) === null || _g === void 0 ? void 0 : _g.join(',') });\r\n return yield this.httpRequest.get(url, removeUndefinedFromObject(getParams), config);\r\n });\r\n }\r\n /**\r\n * Search for facet values\r\n *\r\n * @param params - Parameters used to search on the facets\r\n * @param config - Additional request configuration options\r\n * @returns Promise containing the search response\r\n */\r\n searchForFacetValues(params, config) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/facet-search`;\r\n return yield this.httpRequest.post(url, removeUndefinedFromObject(params), undefined, config);\r\n });\r\n }\r\n ///\r\n /// INDEX\r\n ///\r\n /**\r\n * Get index information.\r\n *\r\n * @returns Promise containing index information\r\n */\r\n getRawInfo() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}`;\r\n const res = yield this.httpRequest.get(url);\r\n this.primaryKey = res.primaryKey;\r\n this.updatedAt = new Date(res.updatedAt);\r\n this.createdAt = new Date(res.createdAt);\r\n return res;\r\n });\r\n }\r\n /**\r\n * Fetch and update Index information.\r\n *\r\n * @returns Promise to the current Index object with updated information\r\n */\r\n fetchInfo() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n yield this.getRawInfo();\r\n return this;\r\n });\r\n }\r\n /**\r\n * Get Primary Key.\r\n *\r\n * @returns Promise containing the Primary Key of the index\r\n */\r\n fetchPrimaryKey() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n this.primaryKey = (yield this.getRawInfo()).primaryKey;\r\n return this.primaryKey;\r\n });\r\n }\r\n /**\r\n * Create an index.\r\n *\r\n * @param uid - Unique identifier of the Index\r\n * @param options - Index options\r\n * @param config - Request configuration options\r\n * @returns Newly created Index object\r\n */\r\n static create(uid, options = {}, config) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes`;\r\n const req = new HttpRequests(config);\r\n const task = yield req.post(url, Object.assign(Object.assign({}, options), { uid }));\r\n return new EnqueuedTask(task);\r\n });\r\n }\r\n /**\r\n * Update an index.\r\n *\r\n * @param data - Data to update\r\n * @returns Promise to the current Index object with updated information\r\n */\r\n update(data) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}`;\r\n const task = yield this.httpRequest.patch(url, data);\r\n task.enqueuedAt = new Date(task.enqueuedAt);\r\n return task;\r\n });\r\n }\r\n /**\r\n * Delete an index.\r\n *\r\n * @returns Promise which resolves when index is deleted successfully\r\n */\r\n delete() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}`;\r\n const task = yield this.httpRequest.delete(url);\r\n return new EnqueuedTask(task);\r\n });\r\n }\r\n ///\r\n /// TASKS\r\n ///\r\n /**\r\n * Get the list of all the tasks of the index.\r\n *\r\n * @param parameters - Parameters to browse the tasks\r\n * @returns Promise containing all tasks\r\n */\r\n getTasks(parameters = {}) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return yield this.tasks.getTasks(Object.assign(Object.assign({}, parameters), { indexUids: [this.uid] }));\r\n });\r\n }\r\n /**\r\n * Get one task of the index.\r\n *\r\n * @param taskUid - Task identifier\r\n * @returns Promise containing a task\r\n */\r\n getTask(taskUid) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return yield this.tasks.getTask(taskUid);\r\n });\r\n }\r\n /**\r\n * Wait for multiple tasks to be processed.\r\n *\r\n * @param taskUids - Tasks identifier\r\n * @param waitOptions - Options on timeout and interval\r\n * @returns Promise containing an array of tasks\r\n */\r\n waitForTasks(taskUids, { timeOutMs = 5000, intervalMs = 50 } = {}) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return yield this.tasks.waitForTasks(taskUids, {\r\n timeOutMs,\r\n intervalMs,\r\n });\r\n });\r\n }\r\n /**\r\n * Wait for a task to be processed.\r\n *\r\n * @param taskUid - Task identifier\r\n * @param waitOptions - Options on timeout and interval\r\n * @returns Promise containing an array of tasks\r\n */\r\n waitForTask(taskUid, { timeOutMs = 5000, intervalMs = 50 } = {}) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return yield this.tasks.waitForTask(taskUid, {\r\n timeOutMs,\r\n intervalMs,\r\n });\r\n });\r\n }\r\n ///\r\n /// STATS\r\n ///\r\n /**\r\n * Get stats of an index\r\n *\r\n * @returns Promise containing object with stats of the index\r\n */\r\n getStats() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/stats`;\r\n return yield this.httpRequest.get(url);\r\n });\r\n }\r\n ///\r\n /// DOCUMENTS\r\n ///\r\n /**\r\n * Get documents of an index.\r\n *\r\n * @param parameters - Parameters to browse the documents. Parameters can\r\n * contain the `filter` field only available in Meilisearch v1.2 and newer\r\n * @returns Promise containing the returned documents\r\n */\r\n getDocuments(parameters = {}) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function* () {\r\n parameters = removeUndefinedFromObject(parameters);\r\n // In case `filter` is provided, use `POST /documents/fetch`\r\n if (parameters.filter !== undefined) {\r\n try {\r\n const url = `indexes/${this.uid}/documents/fetch`;\r\n return yield this.httpRequest.post(url, parameters);\r\n }\r\n catch (e) {\r\n if (e instanceof MeiliSearchCommunicationError) {\r\n e.message = versionErrorHintMessage(e.message, 'getDocuments');\r\n }\r\n else if (e instanceof MeiliSearchApiError) {\r\n e.message = versionErrorHintMessage(e.message, 'getDocuments');\r\n }\r\n throw e;\r\n }\r\n // Else use `GET /documents` method\r\n }\r\n else {\r\n const url = `indexes/${this.uid}/documents`;\r\n // Transform fields to query parameter string format\r\n const fields = Array.isArray(parameters === null || parameters === void 0 ? void 0 : parameters.fields)\r\n ? { fields: (_a = parameters === null || parameters === void 0 ? void 0 : parameters.fields) === null || _a === void 0 ? void 0 : _a.join(',') }\r\n : {};\r\n return yield this.httpRequest.get(url, Object.assign(Object.assign({}, parameters), fields));\r\n }\r\n });\r\n }\r\n /**\r\n * Get one document\r\n *\r\n * @param documentId - Document ID\r\n * @param parameters - Parameters applied on a document\r\n * @returns Promise containing Document response\r\n */\r\n getDocument(documentId, parameters) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/documents/${documentId}`;\r\n const fields = (() => {\r\n var _a;\r\n if (Array.isArray(parameters === null || parameters === void 0 ? void 0 : parameters.fields)) {\r\n return (_a = parameters === null || parameters === void 0 ? void 0 : parameters.fields) === null || _a === void 0 ? void 0 : _a.join(',');\r\n }\r\n return undefined;\r\n })();\r\n return yield this.httpRequest.get(url, removeUndefinedFromObject(Object.assign(Object.assign({}, parameters), { fields })));\r\n });\r\n }\r\n /**\r\n * Add or replace multiples documents to an index\r\n *\r\n * @param documents - Array of Document objects to add/replace\r\n * @param options - Options on document addition\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n addDocuments(documents, options) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/documents`;\r\n const task = yield this.httpRequest.post(url, documents, options);\r\n return new EnqueuedTask(task);\r\n });\r\n }\r\n /**\r\n * Add or replace multiples documents in a string format to an index. It only\r\n * supports csv, ndjson and json formats.\r\n *\r\n * @param documents - Documents provided in a string to add/replace\r\n * @param contentType - Content type of your document:\r\n * 'text/csv'|'application/x-ndjson'|'application/json'\r\n * @param options - Options on document addition\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n addDocumentsFromString(documents, contentType, queryParams) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/documents`;\r\n const task = yield this.httpRequest.post(url, documents, queryParams, {\r\n headers: {\r\n 'Content-Type': contentType,\r\n },\r\n });\r\n return new EnqueuedTask(task);\r\n });\r\n }\r\n /**\r\n * Add or replace multiples documents to an index in batches\r\n *\r\n * @param documents - Array of Document objects to add/replace\r\n * @param batchSize - Size of the batch\r\n * @param options - Options on document addition\r\n * @returns Promise containing array of enqueued task objects for each batch\r\n */\r\n addDocumentsInBatches(documents, batchSize = 1000, options) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const updates = [];\r\n for (let i = 0; i < documents.length; i += batchSize) {\r\n updates.push(yield this.addDocuments(documents.slice(i, i + batchSize), options));\r\n }\r\n return updates;\r\n });\r\n }\r\n /**\r\n * Add or update multiples documents to an index\r\n *\r\n * @param documents - Array of Document objects to add/update\r\n * @param options - Options on document update\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n updateDocuments(documents, options) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/documents`;\r\n const task = yield this.httpRequest.put(url, documents, options);\r\n return new EnqueuedTask(task);\r\n });\r\n }\r\n /**\r\n * Add or update multiples documents to an index in batches\r\n *\r\n * @param documents - Array of Document objects to add/update\r\n * @param batchSize - Size of the batch\r\n * @param options - Options on document update\r\n * @returns Promise containing array of enqueued task objects for each batch\r\n */\r\n updateDocumentsInBatches(documents, batchSize = 1000, options) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const updates = [];\r\n for (let i = 0; i < documents.length; i += batchSize) {\r\n updates.push(yield this.updateDocuments(documents.slice(i, i + batchSize), options));\r\n }\r\n return updates;\r\n });\r\n }\r\n /**\r\n * Add or update multiples documents in a string format to an index. It only\r\n * supports csv, ndjson and json formats.\r\n *\r\n * @param documents - Documents provided in a string to add/update\r\n * @param contentType - Content type of your document:\r\n * 'text/csv'|'application/x-ndjson'|'application/json'\r\n * @param queryParams - Options on raw document addition\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n updateDocumentsFromString(documents, contentType, queryParams) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/documents`;\r\n const task = yield this.httpRequest.put(url, documents, queryParams, {\r\n headers: {\r\n 'Content-Type': contentType,\r\n },\r\n });\r\n return new EnqueuedTask(task);\r\n });\r\n }\r\n /**\r\n * Delete one document\r\n *\r\n * @param documentId - Id of Document to delete\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n deleteDocument(documentId) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/documents/${documentId}`;\r\n const task = yield this.httpRequest.delete(url);\r\n task.enqueuedAt = new Date(task.enqueuedAt);\r\n return task;\r\n });\r\n }\r\n /**\r\n * Delete multiples documents of an index.\r\n *\r\n * @param params - Params value can be:\r\n *\r\n * - DocumentsDeletionQuery: An object containing the parameters to customize\r\n * your document deletion. Only available in Meilisearch v1.2 and newer\r\n * - DocumentsIds: An array of document ids to delete\r\n *\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n deleteDocuments(params) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n // If params is of type DocumentsDeletionQuery\r\n const isDocumentsDeletionQuery = !Array.isArray(params) && typeof params === 'object';\r\n const endpoint = isDocumentsDeletionQuery\r\n ? 'documents/delete'\r\n : 'documents/delete-batch';\r\n const url = `indexes/${this.uid}/${endpoint}`;\r\n try {\r\n const task = yield this.httpRequest.post(url, params);\r\n return new EnqueuedTask(task);\r\n }\r\n catch (e) {\r\n if (e instanceof MeiliSearchCommunicationError &&\r\n isDocumentsDeletionQuery) {\r\n e.message = versionErrorHintMessage(e.message, 'deleteDocuments');\r\n }\r\n else if (e instanceof MeiliSearchApiError) {\r\n e.message = versionErrorHintMessage(e.message, 'deleteDocuments');\r\n }\r\n throw e;\r\n }\r\n });\r\n }\r\n /**\r\n * Delete all documents of an index\r\n *\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n deleteAllDocuments() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/documents`;\r\n const task = yield this.httpRequest.delete(url);\r\n task.enqueuedAt = new Date(task.enqueuedAt);\r\n return task;\r\n });\r\n }\r\n ///\r\n /// SETTINGS\r\n ///\r\n /**\r\n * Retrieve all settings\r\n *\r\n * @returns Promise containing Settings object\r\n */\r\n getSettings() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings`;\r\n return yield this.httpRequest.get(url);\r\n });\r\n }\r\n /**\r\n * Update all settings Any parameters not provided will be left unchanged.\r\n *\r\n * @param settings - Object containing parameters with their updated values\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n updateSettings(settings) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings`;\r\n const task = yield this.httpRequest.patch(url, settings);\r\n task.enqueued = new Date(task.enqueuedAt);\r\n return task;\r\n });\r\n }\r\n /**\r\n * Reset settings.\r\n *\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n resetSettings() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings`;\r\n const task = yield this.httpRequest.delete(url);\r\n task.enqueuedAt = new Date(task.enqueuedAt);\r\n return task;\r\n });\r\n }\r\n ///\r\n /// PAGINATION SETTINGS\r\n ///\r\n /**\r\n * Get the pagination settings.\r\n *\r\n * @returns Promise containing object of pagination settings\r\n */\r\n getPagination() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/pagination`;\r\n return yield this.httpRequest.get(url);\r\n });\r\n }\r\n /**\r\n * Update the pagination settings.\r\n *\r\n * @param pagination - Pagination object\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n updatePagination(pagination) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/pagination`;\r\n const task = yield this.httpRequest.patch(url, pagination);\r\n return new EnqueuedTask(task);\r\n });\r\n }\r\n /**\r\n * Reset the pagination settings.\r\n *\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n resetPagination() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/pagination`;\r\n const task = yield this.httpRequest.delete(url);\r\n return new EnqueuedTask(task);\r\n });\r\n }\r\n ///\r\n /// SYNONYMS\r\n ///\r\n /**\r\n * Get the list of all synonyms\r\n *\r\n * @returns Promise containing object of synonym mappings\r\n */\r\n getSynonyms() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/synonyms`;\r\n return yield this.httpRequest.get(url);\r\n });\r\n }\r\n /**\r\n * Update the list of synonyms. Overwrite the old list.\r\n *\r\n * @param synonyms - Mapping of synonyms with their associated words\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n updateSynonyms(synonyms) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/synonyms`;\r\n const task = yield this.httpRequest.put(url, synonyms);\r\n return new EnqueuedTask(task);\r\n });\r\n }\r\n /**\r\n * Reset the synonym list to be empty again\r\n *\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n resetSynonyms() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/synonyms`;\r\n const task = yield this.httpRequest.delete(url);\r\n task.enqueuedAt = new Date(task.enqueuedAt);\r\n return task;\r\n });\r\n }\r\n ///\r\n /// STOP WORDS\r\n ///\r\n /**\r\n * Get the list of all stop-words\r\n *\r\n * @returns Promise containing array of stop-words\r\n */\r\n getStopWords() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/stop-words`;\r\n return yield this.httpRequest.get(url);\r\n });\r\n }\r\n /**\r\n * Update the list of stop-words. Overwrite the old list.\r\n *\r\n * @param stopWords - Array of strings that contains the stop-words.\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n updateStopWords(stopWords) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/stop-words`;\r\n const task = yield this.httpRequest.put(url, stopWords);\r\n return new EnqueuedTask(task);\r\n });\r\n }\r\n /**\r\n * Reset the stop-words list to be empty again\r\n *\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n resetStopWords() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/stop-words`;\r\n const task = yield this.httpRequest.delete(url);\r\n task.enqueuedAt = new Date(task.enqueuedAt);\r\n return task;\r\n });\r\n }\r\n ///\r\n /// RANKING RULES\r\n ///\r\n /**\r\n * Get the list of all ranking-rules\r\n *\r\n * @returns Promise containing array of ranking-rules\r\n */\r\n getRankingRules() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/ranking-rules`;\r\n return yield this.httpRequest.get(url);\r\n });\r\n }\r\n /**\r\n * Update the list of ranking-rules. Overwrite the old list.\r\n *\r\n * @param rankingRules - Array that contain ranking rules sorted by order of\r\n * importance.\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n updateRankingRules(rankingRules) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/ranking-rules`;\r\n const task = yield this.httpRequest.put(url, rankingRules);\r\n return new EnqueuedTask(task);\r\n });\r\n }\r\n /**\r\n * Reset the ranking rules list to its default value\r\n *\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n resetRankingRules() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/ranking-rules`;\r\n const task = yield this.httpRequest.delete(url);\r\n task.enqueuedAt = new Date(task.enqueuedAt);\r\n return task;\r\n });\r\n }\r\n ///\r\n /// DISTINCT ATTRIBUTE\r\n ///\r\n /**\r\n * Get the distinct-attribute\r\n *\r\n * @returns Promise containing the distinct-attribute of the index\r\n */\r\n getDistinctAttribute() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/distinct-attribute`;\r\n return yield this.httpRequest.get(url);\r\n });\r\n }\r\n /**\r\n * Update the distinct-attribute.\r\n *\r\n * @param distinctAttribute - Field name of the distinct-attribute\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n updateDistinctAttribute(distinctAttribute) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/distinct-attribute`;\r\n const task = yield this.httpRequest.put(url, distinctAttribute);\r\n return new EnqueuedTask(task);\r\n });\r\n }\r\n /**\r\n * Reset the distinct-attribute.\r\n *\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n resetDistinctAttribute() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/distinct-attribute`;\r\n const task = yield this.httpRequest.delete(url);\r\n task.enqueuedAt = new Date(task.enqueuedAt);\r\n return task;\r\n });\r\n }\r\n ///\r\n /// FILTERABLE ATTRIBUTES\r\n ///\r\n /**\r\n * Get the filterable-attributes\r\n *\r\n * @returns Promise containing an array of filterable-attributes\r\n */\r\n getFilterableAttributes() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/filterable-attributes`;\r\n return yield this.httpRequest.get(url);\r\n });\r\n }\r\n /**\r\n * Update the filterable-attributes.\r\n *\r\n * @param filterableAttributes - Array of strings containing the attributes\r\n * that can be used as filters at query time\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n updateFilterableAttributes(filterableAttributes) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/filterable-attributes`;\r\n const task = yield this.httpRequest.put(url, filterableAttributes);\r\n return new EnqueuedTask(task);\r\n });\r\n }\r\n /**\r\n * Reset the filterable-attributes.\r\n *\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n resetFilterableAttributes() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/filterable-attributes`;\r\n const task = yield this.httpRequest.delete(url);\r\n task.enqueuedAt = new Date(task.enqueuedAt);\r\n return task;\r\n });\r\n }\r\n ///\r\n /// SORTABLE ATTRIBUTES\r\n ///\r\n /**\r\n * Get the sortable-attributes\r\n *\r\n * @returns Promise containing array of sortable-attributes\r\n */\r\n getSortableAttributes() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/sortable-attributes`;\r\n return yield this.httpRequest.get(url);\r\n });\r\n }\r\n /**\r\n * Update the sortable-attributes.\r\n *\r\n * @param sortableAttributes - Array of strings containing the attributes that\r\n * can be used to sort search results at query time\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n updateSortableAttributes(sortableAttributes) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/sortable-attributes`;\r\n const task = yield this.httpRequest.put(url, sortableAttributes);\r\n return new EnqueuedTask(task);\r\n });\r\n }\r\n /**\r\n * Reset the sortable-attributes.\r\n *\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n resetSortableAttributes() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/sortable-attributes`;\r\n const task = yield this.httpRequest.delete(url);\r\n task.enqueuedAt = new Date(task.enqueuedAt);\r\n return task;\r\n });\r\n }\r\n ///\r\n /// SEARCHABLE ATTRIBUTE\r\n ///\r\n /**\r\n * Get the searchable-attributes\r\n *\r\n * @returns Promise containing array of searchable-attributes\r\n */\r\n getSearchableAttributes() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/searchable-attributes`;\r\n return yield this.httpRequest.get(url);\r\n });\r\n }\r\n /**\r\n * Update the searchable-attributes.\r\n *\r\n * @param searchableAttributes - Array of strings that contains searchable\r\n * attributes sorted by order of importance(most to least important)\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n updateSearchableAttributes(searchableAttributes) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/searchable-attributes`;\r\n const task = yield this.httpRequest.put(url, searchableAttributes);\r\n return new EnqueuedTask(task);\r\n });\r\n }\r\n /**\r\n * Reset the searchable-attributes.\r\n *\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n resetSearchableAttributes() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/searchable-attributes`;\r\n const task = yield this.httpRequest.delete(url);\r\n task.enqueuedAt = new Date(task.enqueuedAt);\r\n return task;\r\n });\r\n }\r\n ///\r\n /// DISPLAYED ATTRIBUTE\r\n ///\r\n /**\r\n * Get the displayed-attributes\r\n *\r\n * @returns Promise containing array of displayed-attributes\r\n */\r\n getDisplayedAttributes() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/displayed-attributes`;\r\n return yield this.httpRequest.get(url);\r\n });\r\n }\r\n /**\r\n * Update the displayed-attributes.\r\n *\r\n * @param displayedAttributes - Array of strings that contains attributes of\r\n * an index to display\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n updateDisplayedAttributes(displayedAttributes) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/displayed-attributes`;\r\n const task = yield this.httpRequest.put(url, displayedAttributes);\r\n return new EnqueuedTask(task);\r\n });\r\n }\r\n /**\r\n * Reset the displayed-attributes.\r\n *\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n resetDisplayedAttributes() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/displayed-attributes`;\r\n const task = yield this.httpRequest.delete(url);\r\n task.enqueuedAt = new Date(task.enqueuedAt);\r\n return task;\r\n });\r\n }\r\n ///\r\n /// TYPO TOLERANCE\r\n ///\r\n /**\r\n * Get the typo tolerance settings.\r\n *\r\n * @returns Promise containing the typo tolerance settings.\r\n */\r\n getTypoTolerance() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/typo-tolerance`;\r\n return yield this.httpRequest.get(url);\r\n });\r\n }\r\n /**\r\n * Update the typo tolerance settings.\r\n *\r\n * @param typoTolerance - Object containing the custom typo tolerance\r\n * settings.\r\n * @returns Promise containing object of the enqueued update\r\n */\r\n updateTypoTolerance(typoTolerance) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/typo-tolerance`;\r\n const task = yield this.httpRequest.patch(url, typoTolerance);\r\n task.enqueuedAt = new Date(task.enqueuedAt);\r\n return task;\r\n });\r\n }\r\n /**\r\n * Reset the typo tolerance settings.\r\n *\r\n * @returns Promise containing object of the enqueued update\r\n */\r\n resetTypoTolerance() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/typo-tolerance`;\r\n const task = yield this.httpRequest.delete(url);\r\n task.enqueuedAt = new Date(task.enqueuedAt);\r\n return task;\r\n });\r\n }\r\n ///\r\n /// FACETING\r\n ///\r\n /**\r\n * Get the faceting settings.\r\n *\r\n * @returns Promise containing object of faceting index settings\r\n */\r\n getFaceting() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/faceting`;\r\n return yield this.httpRequest.get(url);\r\n });\r\n }\r\n /**\r\n * Update the faceting settings.\r\n *\r\n * @param faceting - Faceting index settings object\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n updateFaceting(faceting) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/faceting`;\r\n const task = yield this.httpRequest.patch(url, faceting);\r\n return new EnqueuedTask(task);\r\n });\r\n }\r\n /**\r\n * Reset the faceting settings.\r\n *\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n resetFaceting() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/faceting`;\r\n const task = yield this.httpRequest.delete(url);\r\n return new EnqueuedTask(task);\r\n });\r\n }\r\n ///\r\n /// SEPARATOR TOKENS\r\n ///\r\n /**\r\n * Get the list of all separator tokens.\r\n *\r\n * @returns Promise containing array of separator tokens\r\n */\r\n getSeparatorTokens() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/separator-tokens`;\r\n return yield this.httpRequest.get(url);\r\n });\r\n }\r\n /**\r\n * Update the list of separator tokens. Overwrite the old list.\r\n *\r\n * @param separatorTokens - Array that contains separator tokens.\r\n * @returns Promise containing an EnqueuedTask or null\r\n */\r\n updateSeparatorTokens(separatorTokens) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/separator-tokens`;\r\n const task = yield this.httpRequest.put(url, separatorTokens);\r\n return new EnqueuedTask(task);\r\n });\r\n }\r\n /**\r\n * Reset the separator tokens list to its default value\r\n *\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n resetSeparatorTokens() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/separator-tokens`;\r\n const task = yield this.httpRequest.delete(url);\r\n task.enqueuedAt = new Date(task.enqueuedAt);\r\n return task;\r\n });\r\n }\r\n ///\r\n /// NON-SEPARATOR TOKENS\r\n ///\r\n /**\r\n * Get the list of all non-separator tokens.\r\n *\r\n * @returns Promise containing array of non-separator tokens\r\n */\r\n getNonSeparatorTokens() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/non-separator-tokens`;\r\n return yield this.httpRequest.get(url);\r\n });\r\n }\r\n /**\r\n * Update the list of non-separator tokens. Overwrite the old list.\r\n *\r\n * @param nonSeparatorTokens - Array that contains non-separator tokens.\r\n * @returns Promise containing an EnqueuedTask or null\r\n */\r\n updateNonSeparatorTokens(nonSeparatorTokens) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/non-separator-tokens`;\r\n const task = yield this.httpRequest.put(url, nonSeparatorTokens);\r\n return new EnqueuedTask(task);\r\n });\r\n }\r\n /**\r\n * Reset the non-separator tokens list to its default value\r\n *\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n resetNonSeparatorTokens() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/non-separator-tokens`;\r\n const task = yield this.httpRequest.delete(url);\r\n task.enqueuedAt = new Date(task.enqueuedAt);\r\n return task;\r\n });\r\n }\r\n ///\r\n /// DICTIONARY\r\n ///\r\n /**\r\n * Get the dictionary settings of a Meilisearch index.\r\n *\r\n * @returns Promise containing the dictionary settings\r\n */\r\n getDictionary() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/dictionary`;\r\n return yield this.httpRequest.get(url);\r\n });\r\n }\r\n /**\r\n * Update the the dictionary settings. Overwrite the old settings.\r\n *\r\n * @param dictionary - Array that contains the new dictionary settings.\r\n * @returns Promise containing an EnqueuedTask or null\r\n */\r\n updateDictionary(dictionary) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/dictionary`;\r\n const task = yield this.httpRequest.put(url, dictionary);\r\n return new EnqueuedTask(task);\r\n });\r\n }\r\n /**\r\n * Reset the dictionary settings to its default value\r\n *\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n resetDictionary() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes/${this.uid}/settings/dictionary`;\r\n const task = yield this.httpRequest.delete(url);\r\n task.enqueuedAt = new Date(task.enqueuedAt);\r\n return task;\r\n });\r\n }\r\n}\n\n/*\r\n * Bundle: MeiliSearch\r\n * Project: MeiliSearch - Javascript API\r\n * Author: Quentin de Quelen \r\n * Copyright: 2019, MeiliSearch\r\n */\r\nclass Client {\r\n /**\r\n * Creates new MeiliSearch instance\r\n *\r\n * @param config - Configuration object\r\n */\r\n constructor(config) {\r\n this.config = config;\r\n this.httpRequest = new HttpRequests(config);\r\n this.tasks = new TaskClient(config);\r\n }\r\n /**\r\n * Return an Index instance\r\n *\r\n * @param indexUid - The index UID\r\n * @returns Instance of Index\r\n */\r\n index(indexUid) {\r\n return new Index(this.config, indexUid);\r\n }\r\n /**\r\n * Gather information about an index by calling MeiliSearch and return an\r\n * Index instance with the gathered information\r\n *\r\n * @param indexUid - The index UID\r\n * @returns Promise returning Index instance\r\n */\r\n getIndex(indexUid) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return new Index(this.config, indexUid).fetchInfo();\r\n });\r\n }\r\n /**\r\n * Gather information about an index by calling MeiliSearch and return the raw\r\n * JSON response\r\n *\r\n * @param indexUid - The index UID\r\n * @returns Promise returning index information\r\n */\r\n getRawIndex(indexUid) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return new Index(this.config, indexUid).getRawInfo();\r\n });\r\n }\r\n /**\r\n * Get all the indexes as Index instances.\r\n *\r\n * @param parameters - Parameters to browse the indexes\r\n * @returns Promise returning array of raw index information\r\n */\r\n getIndexes(parameters = {}) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const rawIndexes = yield this.getRawIndexes(parameters);\r\n const indexes = rawIndexes.results.map((index) => new Index(this.config, index.uid, index.primaryKey));\r\n return Object.assign(Object.assign({}, rawIndexes), { results: indexes });\r\n });\r\n }\r\n /**\r\n * Get all the indexes in their raw value (no Index instances).\r\n *\r\n * @param parameters - Parameters to browse the indexes\r\n * @returns Promise returning array of raw index information\r\n */\r\n getRawIndexes(parameters = {}) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `indexes`;\r\n return yield this.httpRequest.get(url, parameters);\r\n });\r\n }\r\n /**\r\n * Create a new index\r\n *\r\n * @param uid - The index UID\r\n * @param options - Index options\r\n * @returns Promise returning Index instance\r\n */\r\n createIndex(uid, options = {}) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return yield Index.create(uid, options, this.config);\r\n });\r\n }\r\n /**\r\n * Update an index\r\n *\r\n * @param uid - The index UID\r\n * @param options - Index options to update\r\n * @returns Promise returning Index instance after updating\r\n */\r\n updateIndex(uid, options = {}) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return yield new Index(this.config, uid).update(options);\r\n });\r\n }\r\n /**\r\n * Delete an index\r\n *\r\n * @param uid - The index UID\r\n * @returns Promise which resolves when index is deleted successfully\r\n */\r\n deleteIndex(uid) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return yield new Index(this.config, uid).delete();\r\n });\r\n }\r\n /**\r\n * Deletes an index if it already exists.\r\n *\r\n * @param uid - The index UID\r\n * @returns Promise which resolves to true when index exists and is deleted\r\n * successfully, otherwise false if it does not exist\r\n */\r\n deleteIndexIfExists(uid) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n try {\r\n yield this.deleteIndex(uid);\r\n return true;\r\n }\r\n catch (e) {\r\n if (e.code === ErrorStatusCode.INDEX_NOT_FOUND) {\r\n return false;\r\n }\r\n throw e;\r\n }\r\n });\r\n }\r\n /**\r\n * Swaps a list of index tuples.\r\n *\r\n * @param params - List of indexes tuples to swap.\r\n * @returns Promise returning object of the enqueued task\r\n */\r\n swapIndexes(params) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = '/swap-indexes';\r\n return yield this.httpRequest.post(url, params);\r\n });\r\n }\r\n ///\r\n /// Multi Search\r\n ///\r\n /**\r\n * Perform multiple search queries.\r\n *\r\n * It is possible to make multiple search queries on the same index or on\r\n * different ones\r\n *\r\n * @example\r\n *\r\n * ```ts\r\n * client.multiSearch({\r\n * queries: [\r\n * { indexUid: 'movies', q: 'wonder' },\r\n * { indexUid: 'books', q: 'flower' },\r\n * ],\r\n * })\r\n * ```\r\n *\r\n * @param queries - Search queries\r\n * @param config - Additional request configuration options\r\n * @returns Promise containing the search responses\r\n */\r\n multiSearch(queries, config) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `multi-search`;\r\n return yield this.httpRequest.post(url, queries, undefined, config);\r\n });\r\n }\r\n ///\r\n /// TASKS\r\n ///\r\n /**\r\n * Get the list of all client tasks\r\n *\r\n * @param parameters - Parameters to browse the tasks\r\n * @returns Promise returning all tasks\r\n */\r\n getTasks(parameters = {}) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return yield this.tasks.getTasks(parameters);\r\n });\r\n }\r\n /**\r\n * Get one task on the client scope\r\n *\r\n * @param taskUid - Task identifier\r\n * @returns Promise returning a task\r\n */\r\n getTask(taskUid) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return yield this.tasks.getTask(taskUid);\r\n });\r\n }\r\n /**\r\n * Wait for multiple tasks to be finished.\r\n *\r\n * @param taskUids - Tasks identifier\r\n * @param waitOptions - Options on timeout and interval\r\n * @returns Promise returning an array of tasks\r\n */\r\n waitForTasks(taskUids, { timeOutMs = 5000, intervalMs = 50 } = {}) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return yield this.tasks.waitForTasks(taskUids, {\r\n timeOutMs,\r\n intervalMs,\r\n });\r\n });\r\n }\r\n /**\r\n * Wait for a task to be finished.\r\n *\r\n * @param taskUid - Task identifier\r\n * @param waitOptions - Options on timeout and interval\r\n * @returns Promise returning an array of tasks\r\n */\r\n waitForTask(taskUid, { timeOutMs = 5000, intervalMs = 50 } = {}) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return yield this.tasks.waitForTask(taskUid, {\r\n timeOutMs,\r\n intervalMs,\r\n });\r\n });\r\n }\r\n /**\r\n * Cancel a list of enqueued or processing tasks.\r\n *\r\n * @param parameters - Parameters to filter the tasks.\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n cancelTasks(parameters) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return yield this.tasks.cancelTasks(parameters);\r\n });\r\n }\r\n /**\r\n * Delete a list of tasks.\r\n *\r\n * @param parameters - Parameters to filter the tasks.\r\n * @returns Promise containing an EnqueuedTask\r\n */\r\n deleteTasks(parameters = {}) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n return yield this.tasks.deleteTasks(parameters);\r\n });\r\n }\r\n ///\r\n /// KEYS\r\n ///\r\n /**\r\n * Get all API keys\r\n *\r\n * @param parameters - Parameters to browse the indexes\r\n * @returns Promise returning an object with keys\r\n */\r\n getKeys(parameters = {}) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `keys`;\r\n const keys = yield this.httpRequest.get(url, parameters);\r\n keys.results = keys.results.map((key) => (Object.assign(Object.assign({}, key), { createdAt: new Date(key.createdAt), updatedAt: new Date(key.updatedAt) })));\r\n return keys;\r\n });\r\n }\r\n /**\r\n * Get one API key\r\n *\r\n * @param keyOrUid - Key or uid of the API key\r\n * @returns Promise returning a key\r\n */\r\n getKey(keyOrUid) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `keys/${keyOrUid}`;\r\n return yield this.httpRequest.get(url);\r\n });\r\n }\r\n /**\r\n * Create one API key\r\n *\r\n * @param options - Key options\r\n * @returns Promise returning a key\r\n */\r\n createKey(options) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `keys`;\r\n return yield this.httpRequest.post(url, options);\r\n });\r\n }\r\n /**\r\n * Update one API key\r\n *\r\n * @param keyOrUid - Key\r\n * @param options - Key options\r\n * @returns Promise returning a key\r\n */\r\n updateKey(keyOrUid, options) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `keys/${keyOrUid}`;\r\n return yield this.httpRequest.patch(url, options);\r\n });\r\n }\r\n /**\r\n * Delete one API key\r\n *\r\n * @param keyOrUid - Key\r\n * @returns\r\n */\r\n deleteKey(keyOrUid) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `keys/${keyOrUid}`;\r\n return yield this.httpRequest.delete(url);\r\n });\r\n }\r\n ///\r\n /// HEALTH\r\n ///\r\n /**\r\n * Checks if the server is healthy, otherwise an error will be thrown.\r\n *\r\n * @returns Promise returning an object with health details\r\n */\r\n health() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `health`;\r\n return yield this.httpRequest.get(url);\r\n });\r\n }\r\n /**\r\n * Checks if the server is healthy, return true or false.\r\n *\r\n * @returns Promise returning a boolean\r\n */\r\n isHealthy() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n try {\r\n const url = `health`;\r\n yield this.httpRequest.get(url);\r\n return true;\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n });\r\n }\r\n ///\r\n /// STATS\r\n ///\r\n /**\r\n * Get the stats of all the database\r\n *\r\n * @returns Promise returning object of all the stats\r\n */\r\n getStats() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `stats`;\r\n return yield this.httpRequest.get(url);\r\n });\r\n }\r\n ///\r\n /// VERSION\r\n ///\r\n /**\r\n * Get the version of MeiliSearch\r\n *\r\n * @returns Promise returning object with version details\r\n */\r\n getVersion() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `version`;\r\n return yield this.httpRequest.get(url);\r\n });\r\n }\r\n ///\r\n /// DUMPS\r\n ///\r\n /**\r\n * Creates a dump\r\n *\r\n * @returns Promise returning object of the enqueued task\r\n */\r\n createDump() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `dumps`;\r\n const task = yield this.httpRequest.post(url);\r\n return new EnqueuedTask(task);\r\n });\r\n }\r\n ///\r\n /// SNAPSHOTS\r\n ///\r\n /**\r\n * Creates a snapshot\r\n *\r\n * @returns Promise returning object of the enqueued task\r\n */\r\n createSnapshot() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n const url = `snapshots`;\r\n const task = yield this.httpRequest.post(url);\r\n return new EnqueuedTask(task);\r\n });\r\n }\r\n ///\r\n /// TOKENS\r\n ///\r\n /**\r\n * Generate a tenant token\r\n *\r\n * @param apiKeyUid - The uid of the api key used as issuer of the token.\r\n * @param searchRules - Search rules that are applied to every search.\r\n * @param options - Token options to customize some aspect of the token.\r\n * @returns The token in JWT format.\r\n */\r\n generateTenantToken(_apiKeyUid, _searchRules, _options) {\r\n const error = new Error();\r\n throw new Error(`Meilisearch: failed to generate a tenant token. Generation of a token only works in a node environment \\n ${error.stack}.`);\r\n }\r\n}\n\nfunction encode64(data) {\r\n return Buffer.from(JSON.stringify(data)).toString('base64');\r\n}\r\n/**\r\n * Create the header of the token.\r\n *\r\n * @param apiKey - API key used to sign the token.\r\n * @param encodedHeader - Header of the token in base64.\r\n * @param encodedPayload - Payload of the token in base64.\r\n * @returns The signature of the token in base64.\r\n */\r\nfunction sign(apiKey, encodedHeader, encodedPayload) {\r\n return crypto\r\n .createHmac('sha256', apiKey)\r\n .update(`${encodedHeader}.${encodedPayload}`)\r\n .digest('base64')\r\n .replace(/\\+/g, '-')\r\n .replace(/\\//g, '_')\r\n .replace(/=/g, '');\r\n}\r\n/**\r\n * Create the header of the token.\r\n *\r\n * @returns The header encoded in base64.\r\n */\r\nfunction createHeader() {\r\n const header = {\r\n alg: 'HS256',\r\n typ: 'JWT',\r\n };\r\n return encode64(header).replace(/=/g, '');\r\n}\r\n/**\r\n * Validate the parameter used for the payload of the token.\r\n *\r\n * @param searchRules - Search rules that are applied to every search.\r\n * @param apiKey - Api key used as issuer of the token.\r\n * @param uid - The uid of the api key used as issuer of the token.\r\n * @param expiresAt - Date at which the token expires.\r\n */\r\nfunction validateTokenParameters(tokenParams) {\r\n const { searchRules, uid, apiKey, expiresAt } = tokenParams;\r\n if (expiresAt) {\r\n if (!(expiresAt instanceof Date)) {\r\n throw new MeiliSearchError(`Meilisearch: The expiredAt field must be an instance of Date.`);\r\n }\r\n else if (expiresAt.getTime() < Date.now()) {\r\n throw new MeiliSearchError(`Meilisearch: The expiresAt field must be a date in the future.`);\r\n }\r\n }\r\n if (searchRules) {\r\n if (!(typeof searchRules === 'object' || Array.isArray(searchRules))) {\r\n throw new MeiliSearchError(`Meilisearch: The search rules added in the token generation must be of type array or object.`);\r\n }\r\n }\r\n if (!apiKey || typeof apiKey !== 'string') {\r\n throw new MeiliSearchError(`Meilisearch: The API key used for the token generation must exist and be of type string.`);\r\n }\r\n if (!uid || typeof uid !== 'string') {\r\n throw new MeiliSearchError(`Meilisearch: The uid of the api key used for the token generation must exist, be of type string and comply to the uuid4 format.`);\r\n }\r\n if (!validateUuid4(uid)) {\r\n throw new MeiliSearchError(`Meilisearch: The uid of your key is not a valid uuid4. To find out the uid of your key use getKey().`);\r\n }\r\n}\r\n/**\r\n * Create the payload of the token.\r\n *\r\n * @param searchRules - Search rules that are applied to every search.\r\n * @param uid - The uid of the api key used as issuer of the token.\r\n * @param expiresAt - Date at which the token expires.\r\n * @returns The payload encoded in base64.\r\n */\r\nfunction createPayload(payloadParams) {\r\n const { searchRules, uid, expiresAt } = payloadParams;\r\n const payload = {\r\n searchRules,\r\n apiKeyUid: uid,\r\n exp: expiresAt ? Math.floor(expiresAt.getTime() / 1000) : undefined,\r\n };\r\n return encode64(payload).replace(/=/g, '');\r\n}\r\nclass Token {\r\n constructor(config) {\r\n this.config = config;\r\n }\r\n /**\r\n * Generate a tenant token\r\n *\r\n * @param apiKeyUid - The uid of the api key used as issuer of the token.\r\n * @param searchRules - Search rules that are applied to every search.\r\n * @param options - Token options to customize some aspect of the token.\r\n * @returns The token in JWT format.\r\n */\r\n generateTenantToken(apiKeyUid, searchRules, options) {\r\n const apiKey = (options === null || options === void 0 ? void 0 : options.apiKey) || this.config.apiKey || '';\r\n const uid = apiKeyUid || '';\r\n const expiresAt = options === null || options === void 0 ? void 0 : options.expiresAt;\r\n validateTokenParameters({ apiKey, uid, expiresAt, searchRules });\r\n const encodedHeader = createHeader();\r\n const encodedPayload = createPayload({ searchRules, uid, expiresAt });\r\n const signature = sign(apiKey, encodedHeader, encodedPayload);\r\n return `${encodedHeader}.${encodedPayload}.${signature}`;\r\n }\r\n}\n\nclass MeiliSearch extends Client {\r\n constructor(config) {\r\n super(config);\r\n this.tokens = new Token(config);\r\n }\r\n /**\r\n * Generate a tenant token\r\n *\r\n * @param apiKeyUid - The uid of the api key used as issuer of the token.\r\n * @param searchRules - Search rules that are applied to every search.\r\n * @param options - Token options to customize some aspect of the token.\r\n * @returns The token in JWT format.\r\n */\r\n generateTenantToken(apiKeyUid, searchRules, options) {\r\n if (typeof window === 'undefined') {\r\n return this.tokens.generateTenantToken(apiKeyUid, searchRules, options);\r\n }\r\n return super.generateTenantToken(apiKeyUid, searchRules, options);\r\n }\r\n}\n\nexport { ContentTypeEnum, EnqueuedTask, ErrorStatusCode, Index, MatchingStrategies, MeiliSearch, MeiliSearchApiError, MeiliSearchCommunicationError, MeiliSearchError, MeiliSearchTimeOutError, MeiliSearch as Meilisearch, Task, TaskClient, TaskStatus, TaskTypes, MeiliSearch as default, httpErrorHandler, httpResponseErrorHandler, versionErrorHintMessage };\n","import { MeiliSearch } from \"meilisearch\";\nimport type { ImplyIndex, KnowIndex } from \"~/types/models\";\n\nexport const meiliClient = new MeiliSearch({\n host: import.meta.env.VITE_MEILI_URL || \"http://127.0.0.1:7700\",\n apiKey: import.meta.env.VITE_MEILI_KEY,\n});\n\nexport const knowsIndex = meiliClient?.index(\"knows\");\nexport const impliesIndex = meiliClient?.index(\"implies\");\n"],"names":["TaskStatus","TASK_SUCCEEDED","TASK_PROCESSING","TASK_FAILED","TASK_ENQUEUED","TASK_CANCELED","ErrorStatusCode","INDEX_CREATION_FAILED","MISSING_INDEX_UID","INDEX_ALREADY_EXISTS","INDEX_NOT_FOUND","INVALID_INDEX_UID","INDEX_NOT_ACCESSIBLE","INVALID_INDEX_OFFSET","INVALID_INDEX_LIMIT","INVALID_STATE","PRIMARY_KEY_INFERENCE_FAILED","INDEX_PRIMARY_KEY_ALREADY_EXISTS","INVALID_INDEX_PRIMARY_KEY","DOCUMENTS_FIELDS_LIMIT_REACHED","MISSING_DOCUMENT_ID","INVALID_DOCUMENT_ID","INVALID_CONTENT_TYPE","MISSING_CONTENT_TYPE","INVALID_DOCUMENT_FIELDS","INVALID_DOCUMENT_LIMIT","INVALID_DOCUMENT_OFFSET","INVALID_DOCUMENT_FILTER","MISSING_DOCUMENT_FILTER","INVALID_DOCUMENT_VECTORS_FIELD","PAYLOAD_TOO_LARGE","MISSING_PAYLOAD","MALFORMED_PAYLOAD","NO_SPACE_LEFT_ON_DEVICE","INVALID_STORE_FILE","INVALID_RANKING_RULES","INVALID_REQUEST","INVALID_DOCUMENT_GEO_FIELD","INVALID_SEARCH_Q","INVALID_SEARCH_OFFSET","INVALID_SEARCH_LIMIT","INVALID_SEARCH_PAGE","INVALID_SEARCH_HITS_PER_PAGE","INVALID_SEARCH_ATTRIBUTES_TO_RETRIEVE","INVALID_SEARCH_ATTRIBUTES_TO_CROP","INVALID_SEARCH_CROP_LENGTH","INVALID_SEARCH_ATTRIBUTES_TO_HIGHLIGHT","INVALID_SEARCH_SHOW_MATCHES_POSITION","INVALID_SEARCH_FILTER","INVALID_SEARCH_SORT","INVALID_SEARCH_FACETS","INVALID_SEARCH_HIGHLIGHT_PRE_TAG","INVALID_SEARCH_HIGHLIGHT_POST_TAG","INVALID_SEARCH_CROP_MARKER","INVALID_SEARCH_MATCHING_STRATEGY","INVALID_SEARCH_VECTOR","INVALID_SEARCH_ATTRIBUTES_TO_SEARCH_ON","BAD_REQUEST","DOCUMENT_NOT_FOUND","INTERNAL","INVALID_API_KEY","INVALID_API_KEY_DESCRIPTION","INVALID_API_KEY_ACTIONS","INVALID_API_KEY_INDEXES","INVALID_API_KEY_EXPIRES_AT","API_KEY_NOT_FOUND","IMMUTABLE_API_KEY_UID","IMMUTABLE_API_KEY_ACTIONS","IMMUTABLE_API_KEY_INDEXES","IMMUTABLE_API_KEY_EXPIRES_AT","IMMUTABLE_API_KEY_CREATED_AT","IMMUTABLE_API_KEY_UPDATED_AT","MISSING_AUTHORIZATION_HEADER","UNRETRIEVABLE_DOCUMENT","MAX_DATABASE_SIZE_LIMIT_REACHED","TASK_NOT_FOUND","DUMP_PROCESS_FAILED","DUMP_NOT_FOUND","INVALID_SWAP_DUPLICATE_INDEX_FOUND","INVALID_SWAP_INDEXES","MISSING_SWAP_INDEXES","MISSING_MASTER_KEY","INVALID_TASK_TYPES","INVALID_TASK_UIDS","INVALID_TASK_STATUSES","INVALID_TASK_LIMIT","INVALID_TASK_FROM","INVALID_TASK_CANCELED_BY","MISSING_TASK_FILTERS","TOO_MANY_OPEN_FILES","IO_ERROR","INVALID_TASK_INDEX_UIDS","IMMUTABLE_INDEX_UID","IMMUTABLE_INDEX_CREATED_AT","IMMUTABLE_INDEX_UPDATED_AT","INVALID_SETTINGS_DISPLAYED_ATTRIBUTES","INVALID_SETTINGS_SEARCHABLE_ATTRIBUTES","INVALID_SETTINGS_FILTERABLE_ATTRIBUTES","INVALID_SETTINGS_SORTABLE_ATTRIBUTES","INVALID_SETTINGS_RANKING_RULES","INVALID_SETTINGS_STOP_WORDS","INVALID_SETTINGS_SYNONYMS","INVALID_SETTINGS_DISTINCT_ATTRIBUTE","INVALID_SETTINGS_TYPO_TOLERANCE","INVALID_SETTINGS_FACETING","INVALID_SETTINGS_PAGINATION","INVALID_TASK_BEFORE_ENQUEUED_AT","INVALID_TASK_AFTER_ENQUEUED_AT","INVALID_TASK_BEFORE_STARTED_AT","INVALID_TASK_AFTER_STARTED_AT","INVALID_TASK_BEFORE_FINISHED_AT","INVALID_TASK_AFTER_FINISHED_AT","MISSING_API_KEY_ACTIONS","MISSING_API_KEY_INDEXES","MISSING_API_KEY_EXPIRES_AT","INVALID_API_KEY_LIMIT","INVALID_API_KEY_OFFSET","INVALID_FACET_SEARCH_FACET_NAME","MISSING_FACET_SEARCH_FACET_NAME","INVALID_FACET_SEARCH_FACET_QUERY","__awaiter","thisArg","_arguments","P","generator","adopt","value","resolve","Promise","reject","fulfilled","step","next","e","rejected","result","done","then","apply","MeiliSearchCommunicationError","Error","constructor","message","body","url","stack","_a","_b","_c","Object","setPrototypeOf","prototype","name","Response","statusText","statusCode","status","errno","code","replace","captureStackTrace","MeiliSearchApiError","error","type","link","httpStatus","httpResponseErrorHandler","response","ok","responseBody","json","httpErrorHandler","MeiliSearchError","MeiliSearchTimeOutError","versionErrorHintMessage","method","removeUndefinedFromObject","obj","entries","reduce","acc","curEntry","key","val","undefined","sleep","ms","setTimeout","addProtocolIfNotPresent","host","startsWith","addTrailingSlash","endsWith","validateUuid4","uuid","test","PACKAGE_VERSION","toQueryParams","parameters","keys","Array","isArray","assign","join","Date","toISOString","constructHostURL","cloneAndParseHeaders","headers","headerPair","clonedHeaders","forEach","createHeaders","config","agentHeader","packageAgent","contentType","authorization","requestConfig","apiKey","clientAgents","clients","concat","HttpRequests","httpClient","requestTimeout","timeout","URL","request","params","fetch","require","constructURL","queryParams","URLSearchParams","filter","x","map","set","search","toString","JSON","stringify","fetchWithTimeout","res","catch","options","promises","timeoutId","timeoutPromise","_","push","race","finally","clearTimeout","get","post","data","put","patch","delete","EnqueuedTask","task","taskUid","indexUid","enqueuedAt","Task","uid","details","canceledBy","duration","startedAt","finishedAt","TaskClient","httpRequest","getTask","taskItem","getTasks","tasks","results","waitForTask","timeOutMs","intervalMs","startingTime","now","includes","waitForTasks","taskUids","cancelTasks","deleteTasks","Index","primaryKey","query","q","searchGet","_d","_e","_f","_g","parseFilter","getParams","sort","facets","attributesToRetrieve","attributesToCrop","attributesToHighlight","vector","attributesToSearchOn","searchForFacetValues","getRawInfo","updatedAt","createdAt","fetchInfo","fetchPrimaryKey","create","update","indexUids","getStats","getDocuments","fields","getDocument","documentId","addDocuments","documents","addDocumentsFromString","addDocumentsInBatches","batchSize","updates","i","length","slice","updateDocuments","updateDocumentsInBatches","updateDocumentsFromString","deleteDocument","deleteDocuments","isDocumentsDeletionQuery","endpoint","deleteAllDocuments","getSettings","updateSettings","settings","enqueued","resetSettings","getPagination","updatePagination","pagination","resetPagination","getSynonyms","updateSynonyms","synonyms","resetSynonyms","getStopWords","updateStopWords","stopWords","resetStopWords","getRankingRules","updateRankingRules","rankingRules","resetRankingRules","getDistinctAttribute","updateDistinctAttribute","distinctAttribute","resetDistinctAttribute","getFilterableAttributes","updateFilterableAttributes","filterableAttributes","resetFilterableAttributes","getSortableAttributes","updateSortableAttributes","sortableAttributes","resetSortableAttributes","getSearchableAttributes","updateSearchableAttributes","searchableAttributes","resetSearchableAttributes","getDisplayedAttributes","updateDisplayedAttributes","displayedAttributes","resetDisplayedAttributes","getTypoTolerance","updateTypoTolerance","typoTolerance","resetTypoTolerance","getFaceting","updateFaceting","faceting","resetFaceting","getSeparatorTokens","updateSeparatorTokens","separatorTokens","resetSeparatorTokens","getNonSeparatorTokens","updateNonSeparatorTokens","nonSeparatorTokens","resetNonSeparatorTokens","getDictionary","updateDictionary","dictionary","resetDictionary","Client","index","getIndex","getRawIndex","getIndexes","rawIndexes","getRawIndexes","indexes","createIndex","updateIndex","deleteIndex","deleteIndexIfExists","swapIndexes","multiSearch","queries","getKeys","getKey","keyOrUid","createKey","updateKey","deleteKey","health","isHealthy","getVersion","createDump","createSnapshot","generateTenantToken","_apiKeyUid","_searchRules","_options","encode64","Buffer","from","sign","encodedHeader","encodedPayload","crypto","createHmac","digest","createHeader","alg","typ","validateTokenParameters","tokenParams","searchRules","expiresAt","getTime","createPayload","payloadParams","payload","apiKeyUid","exp","Math","floor","Token","signature","MeiliSearch","tokens","window","meiliClient","import","knowsIndex","impliesIndex"],"mappings":"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","x_google_ignoreList":[0]}