diff --git a/.vuepress/components/glossary.vue b/.vuepress/components/glossary.vue new file mode 100644 index 0000000000..06e51215b2 --- /dev/null +++ b/.vuepress/components/glossary.vue @@ -0,0 +1,32 @@ + + + diff --git a/.vuepress/components/tooltip.vue b/.vuepress/components/tooltip.vue new file mode 100644 index 0000000000..c3d4f0dff7 --- /dev/null +++ b/.vuepress/components/tooltip.vue @@ -0,0 +1,48 @@ + + + + + diff --git a/.vuepress/config.js b/.vuepress/config.js index a3283e3aae..e5d6c83dab 100644 --- a/.vuepress/config.js +++ b/.vuepress/config.js @@ -1,6 +1,6 @@ let ogprefix = 'og: http://ogp.me/ns#' module.exports = { - title: "MeiliSearch Documentation", + title: "MeiliSearch Documentation v0.9", description: "Open source Instant Search Engine", themeConfig: { repo: "meilisearch/MeiliSearch", @@ -34,7 +34,8 @@ module.exports = { children: [ "/guides/main_concepts/indexes", "/guides/main_concepts/documents", - "/guides/main_concepts/search" + "/guides/main_concepts/search", + "/guides/main_concepts/relevancy" ] }, { @@ -42,17 +43,17 @@ module.exports = { path: "/guides/advanced_guides/", collapsable: false, children: [ - "/guides/advanced_guides/binary", - "/guides/advanced_guides/typotolerance", - "/guides/advanced_guides/concat", - "/guides/advanced_guides/ranking", - "/guides/advanced_guides/synonyms", - "/guides/advanced_guides/stop_words", + "/guides/advanced_guides/installation", "/guides/advanced_guides/search_parameters", "/guides/advanced_guides/keys", + "/guides/advanced_guides/asynchronous_updates", + "/guides/advanced_guides/web_interface", + "/guides/advanced_guides/synonyms", + "/guides/advanced_guides/stop_words", "/guides/advanced_guides/prefix", + "/guides/advanced_guides/typotolerance", + "/guides/advanced_guides/concat", "/guides/advanced_guides/distinct", - "/guides/advanced_guides/asynchronous_updates", "/guides/advanced_guides/bucket_sort" ] } @@ -72,11 +73,26 @@ module.exports = { "/references/indexes", "/references/documents", "/references/search", - "/references/synonyms", - "/references/stop_words", "/references/updates", "/references/keys", - "/references/settings", + { + title: 'Settings', + path: '/references/settings', + collapsable: false, + children: [ + { + title: 'All Settings', + path: '/references/settings' + }, + "/references/synonyms", + "/references/stop_words", + "/references/ranking_rules", + "/references/distinct_attribute", + "/references/searchable_attributes", + "/references/displayed_attributes", + "/references/accept_new_fields", + ] + }, "/references/stats", "/references/health", "/references/version", @@ -123,7 +139,8 @@ module.exports = { ["sitemap", { hostname: "https://docs.meilisearch.com" }], ["seo", {}], "vuepress-plugin-element-tabs", - ['vuepress-plugin-container', { type: 'note' }] + ['vuepress-plugin-container', { type: 'note' }], + ['vue-directive-tooltip'] ], head: [ ["meta", { charset: "utf-8" }], diff --git a/.vuepress/enhanceApp.js b/.vuepress/enhanceApp.js new file mode 100644 index 0000000000..0fd322803c --- /dev/null +++ b/.vuepress/enhanceApp.js @@ -0,0 +1,8 @@ +import Tooltip from 'vue-directive-tooltip'; +import 'vue-directive-tooltip/dist/vueDirectiveTooltip.css'; + +export default ({ + Vue, // the version of Vue being used in the VuePress app +}) => { + Vue.use(Tooltip); +} diff --git a/.vuepress/public/movies_web_2.gif b/.vuepress/public/movies_web_2.gif new file mode 100644 index 0000000000..8b57c4b3a2 Binary files /dev/null and b/.vuepress/public/movies_web_2.gif differ diff --git a/README.md b/README.md index b06af777bb..0af2ba23b8 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ MeiliSearch is a **RESTful search API** that is the **ready-to-go solution** for everyone wanting a **powerful, fast, and relevant search experience** for their end-users ⚡️🔎 - + Efficient search engines are often only accessible to companies with the financial means and resources necessary to develop a search solution adapted to their needs. The majority of other companies that do not have the means or do not realize that the lack of relevance of a search greatly impacts the pleasure of navigation on their application, end up with poor solutions that are more frustrating than effective, for both the developer and the user. @@ -36,8 +36,9 @@ Why should you use MeiliSearch instead of any other existing solution? If it is * [Tokenization](https://en.wikipedia.org/wiki/Lexical_analysis#Tokenization) in English, kanji and latin based languages. * **Return the whole document**: The entire document is returned upon search. * **Highly customizable search and indexation**: - - [Custom ranking](/guides/advanced_guides/ranking.md#custom-ranking-rules): Create your own ranking rules on indexation. - - [Stop-words](/guides/advanced_guides/stop_words.md): Ignore common non-relevant words like `of`, `the`, .. + - [Custom ranking](/guides/main_concepts/relevancy.md): Customize the relevancy of the search engine and the ranking of the search results. + - [Stop words](/guides/advanced_guides/stop_words.md): Ignore common non-relevant words like `of` or `the`. - [Highlights](/guides/advanced_guides/search_parameters.md#attributes-to-highlight): Highlighted search results in documents - Ability to create [synonyms](/guides/advanced_guides/synonyms.md) for a better search experience. * **RESTful API** +* **Friendly web interface**: [Integrated web interface](/guides/advanced_guides/web_interface) in MeiliSearch that lets you try the search engine when developing. diff --git a/guides/advanced_guides/README.md b/guides/advanced_guides/README.md index cc310946c9..c15c10aab4 100644 --- a/guides/advanced_guides/README.md +++ b/guides/advanced_guides/README.md @@ -1,18 +1,18 @@ # Advanced guides In the advanced guides you will find how to tune your search API and customize it: -- [MeiliSearch Binary](binary.md) -- [Stop words](stop_words.md) +- [How to install MeiliSearch](installation.md) - [Search parameters](search_parameters.md) +- [Keys](keys.md) - [Synonyms](synonyms.md) +- [Stop words](stop_words.md) - [Distinct](distinct.md) -- [Keys](keys.md) You can also read the following articles to understand how MeiliSearch works under the hood and better understand the algorithms used: +- [Asynchronous updates](asynchronous_updates.md) - [Prefix search](prefix.md) +- [Web interface](web_interface.md) - [Typo Tolerance](typotolerance.md) - [Concatenate and split queries](concat.md) - [Bucket sort](bucket_sort.md) -- [Ranking](ranking.md) -- [Asynchronous updates](asynchronous_updates.md) diff --git a/guides/advanced_guides/asynchronous_updates.md b/guides/advanced_guides/asynchronous_updates.md index cff33fe2bd..ceb72729fd 100644 --- a/guides/advanced_guides/asynchronous_updates.md +++ b/guides/advanced_guides/asynchronous_updates.md @@ -1,4 +1,4 @@ -# Asynchronous Updates +# Asynchronous Updates MeiliSearch is an **asynchronous API**. It means that the API does not behave as you would typically expect when handling the request's responses. @@ -28,7 +28,6 @@ sequenceDiagram ### Which operations are async? Every operation which could be compute-expensive is asynchronous. These include: -- Create/update a schema - Update index settings - Add/update/delete documents @@ -58,20 +57,6 @@ Adding documents: } ``` -Updating a schema: -```json -{ - "status": "processed", - "updateId": 0, - "type": { - "name": "Schema" - }, - "duration": 0.000041072, - "enqueuedAt": "2019-12-07T21:10:07.506281864Z", - "processedAt": "2019-12-07T21:10:07.684496732Z" -} -``` - Failing to upload document: ```json { diff --git a/guides/advanced_guides/bucket_sort.md b/guides/advanced_guides/bucket_sort.md index 75f35b5858..2586533f2e 100644 --- a/guides/advanced_guides/bucket_sort.md +++ b/guides/advanced_guides/bucket_sort.md @@ -2,6 +2,6 @@ A [bucket sort](https://en.wikipedia.org/wiki/Bucket_sort) can be described as an ordered set of sorting `criteria`. -All the documents are sorted within the first `criterion`, then documents that can not be distinguished will be sorted using the second criterion, and so on. Thus, every document are not sorted for every criterion which induces a reduced compute time. +All the documents are sorted within the first `criterion`, then documents that can not be distinguished will be sorted using the second criterion, and so on. Thus, all documents are not sorted for every criterion, which induces a reduced compute time. -[Here is the ordered list of the default criteria used in MeiliSearch](/guides/advanced_guides/ranking.md#ranking-rules) +[Here is the ordered list of the default criteria used in MeiliSearch.](/guides/main_concepts/relevancy.md#ranking-rules) diff --git a/guides/advanced_guides/concat.md b/guides/advanced_guides/concat.md index b096a0614e..6b0cd99526 100644 --- a/guides/advanced_guides/concat.md +++ b/guides/advanced_guides/concat.md @@ -1,30 +1,33 @@ -# Concatenate and split queries +# Concatenate and Split Queries -## Concatenated queries +## Concatenated Queries When your search contains several words, MeiliSearch applies a concatenation algorithm to it. -This means that a search is also done on the concatenation of those words. +When searching for multiple words, a search is also done on the concatenation of those words. When concatenation is done on a search query containing multiple words, it will concatenate the words following each other. Thus, the first and third words will not be concatenated without the second word. #### Example -A search on `news paper` searches with the following queries: -- News paper -- Newspaper +A search on `The news paper` will also search for the following concatenated queries: +- `Thenews paper` +- `the newspaper` +- `Thenewspaper` ::: warning This concatenation is done on a **maximum of 3 words**. ::: -## Splitted queries +## Split Queries When you do a search, it **applies the splitting algorithm to every word** (*string separated by a space*). This consists of finding the most interesting place to separate the words and to create a parallel search query with this proposition. This is achieved by finding the best frequency of the separate words in the dictionary of all words in the dataset. It will look out that both words have a minimum of interesting results, and not just one of them. -#### Example -On a search on "newspaper", it will splits into "news" and "paper" and not into "new" and "spaper". +Split words are not considered as multiple words in a search query because they must stay next to each other, this behavior is called **Phrase Queries**. +#### Example +On a search on `newspaper`, it will split into `news` and `paper` and not into `new` and `spaper`. +A document containing `news` and `paper` separated by other words will not be relevant to the search. diff --git a/guides/advanced_guides/distinct.md b/guides/advanced_guides/distinct.md index 69fb887ec3..eb168b109b 100644 --- a/guides/advanced_guides/distinct.md +++ b/guides/advanced_guides/distinct.md @@ -2,11 +2,11 @@ A field can be set as `distinct`. -When a field is `distinct`, there will **never be two, or more, occurence of the same value of that attribute** in the different documents that are returned by MeiliSearch. +When a field is `distinct`, there will **never be two, or more, occurrence of the same value of that attribute** in the different documents that are returned by MeiliSearch. ### Example -Let's use the following documents sample with 3 jackets of **different `colors`** but **same `skuid`**: +Let's use the sample of the following documents with 3 jackets of **different `colors`** but **same `skuid`**: ```json [ { @@ -30,8 +30,7 @@ Let's use the following documents sample with 3 jackets of **different `colors`* ] ``` - -By [setting `skuid` as a distinct field](/references/settings.md#distinct-field): +By [setting `skuid` as a distinct field](/references/distinct_attribute.md): ```bash $ curl diff --git a/guides/advanced_guides/binary.md b/guides/advanced_guides/installation.md similarity index 73% rename from guides/advanced_guides/binary.md rename to guides/advanced_guides/installation.md index 4a684d5aae..6360405155 100644 --- a/guides/advanced_guides/binary.md +++ b/guides/advanced_guides/installation.md @@ -72,7 +72,7 @@ The [Heroku filesystem is ephemeral](https://help.heroku.com/K1PPS2WM/why-are-my MeiliSearch is made in `Rust`. Therefore the Rust toolchain must [be installed](https://www.rust-lang.org/tools/install) to compile the project. -If you have the Rust toolchain already installed, you need to clone the repository and go to the cloned directory. +If you have the Rust toolchain installed, you can clone the repository and compile it this way: ```bash $ git clone https://github.com/meilisearch/MeiliSearch @@ -82,19 +82,13 @@ $ cd MeiliSearch Inside the folder, compile MeiliSearch. ```bash -# Production version -$ cargo build --release - -# Debug version -$ cargo build -``` - -Compiling in release mode takes more time than in debug mode but the binary process time will be significantly faster. You **must** run a release binary when using MeiliSearch in production. +# Update the rust toolchain to the latest version +$ rustup update -You can find the compiled binary in `target/debug` or `target/release`. +# Compile the project +$ cargo build --release -```bash -# Excuting the server binary +# Execute the server binary $ ./target/release/meilisearch ``` @@ -107,8 +101,10 @@ $ ./target/release/meilisearch ## Usage -```bash +``` $ ./meilisearch --help +meilisearch-http 0.9.0 + USAGE: meilisearch [OPTIONS] @@ -117,12 +113,17 @@ FLAGS: -V, --version Prints version information OPTIONS: - --api-key The master key allowing you to do everything on the server. [env: - MEILI_API_KEY=] --db-path The destination where the database must be created. [env: MEILI_DB_PATH=] [default: ./data.ms] + --env This environment variable must be set to `production` if your are running in + production. Could be `production` or `development` - `production`: Force api + keys - `development`: Show logs in "info" mode + not mendatory to specify the + api keys [env: MEILI_ENV=] [default: development] [possible values: + development, production] --http-addr The address on which the http server will listen. [env: MEILI_HTTP_ADDR=] [default: 127.0.0.1:7700] + --master-key The master key allowing you to do everything on the server. [env: + MEILI_MASTER_KEY=] --no-analytics Do not send analytics to Meili. [env: MEILI_NO_ANALYTICS=] ``` @@ -130,16 +131,24 @@ OPTIONS: Flags can be added on launch. -```bash +``` $ ./meilisearch --db-path ./meilifiles --http-addr 127.0.0.1:7700 Server is listening on: http://127.0.0.1:7700 ``` -Here is the list of **all Environment variables and Flags** (CLI options). +Here is the list of **all Environment variables and Flags** (CLI options). | Environment Variable | CLI option | Description | Default value | |----------------------|----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------| | MEILI_DB_PATH | --db-path | Define the location for the database files | "./data.ms" | | MEILI_HTTP_ADDR | --http-addr | Address and port to listen to | "127.0.0.1:7700" | -| MEILI_API_KEY | --api-key | Default admin API key | | -| MEILI_NO_ANALYTICS | --no-analytics | Deactivate analytics. Analytics help us to know how much users are using our project, knowing which versions and which platforms are used. It is completely anonymous. | | +| MEILI_MASTER_KEY | --master-key | Default admin API key | | +| MEILI_NO_ANALYTICS | --no-analytics | Deactivate analytics. Analytics help us to know how many users are using our project, knowing which versions and which platforms are used. It is entirely anonymous. | | +| MEILI_ENV | --env | Defines the environment in which MeiliSearch is running. Can be `production` or `development` | "development" | + +### Environments + +By default, MeiliSearch runs in `development` mode. + +- `Production`: the [master key](/guides/advanced_guides/keys.md) is **mandatory**. +- `Development`: the [master key](/guides/advanced_guides/keys.md) is **optional**, and logs are output in "info" mode (*console output*). diff --git a/guides/advanced_guides/keys.md b/guides/advanced_guides/keys.md index c4d0e9e718..91f49dfffb 100644 --- a/guides/advanced_guides/keys.md +++ b/guides/advanced_guides/keys.md @@ -1,145 +1,34 @@ # Keys -To communicate with MeiliSearch's `RESTful API` most of the routes require an `API key`. +In MeiliSearch, there are three types of keys: -The following information defines a key: -* A **[Key](/guides/advanced_guides/keys.md#key)** generated by MeiliSearch -* A **[Description](/guides/advanced_guides/keys.md#description)** -* An **[ACL:](/guides/advanced_guides/keys.md#acl)** list of permissions -* An **[Indexes list](/guides/advanced_guides/keys.md#indexes)** with wildcard on which the ACL's are applied -* A **[Revoked](/guides/advanced_guides/keys.md#revoked)** updatable boolean to revoke a key -* An **[Expires_at](/guides/advanced_guides/keys.md#expires-at)** timestamp that indicated the expire date of the token +- The **Master** key has access to all routes. +- The **Private** key has access to all routes except the `/keys` routes. +- The **Public** key has only access to the following routes: + - `GET /indexes/:index_uid/search` + - `GET /indexes/:index_uid/documents` + - `GET /indexes/:index_uid/documents/:doc_id` -A key is passed to MeiliSearch using the header -` X-Meili-Api-Key: myApiKey ` +When a master key is given to MeiliSearch, the engine will automatically generate the private and the public key. **You cannot create additional keys**. -## Master key +### Master Key -This is the only key that is not created by the API but is **set as environement variable or as a binary flag** when [launching the MeiliSearch binary](/guides/advanced_guides/binary.md). +When launching an instance of MeiliSearch, you have the possibility to give a master key. By providing a master key, all routes in MeiliSearch will be protected and will require a key to access. -This key gives access to every route of the API. +You can specify this key by passing the `MEILI_MASTER_KEY` environment variable, or with the command line argument `--master-key`. -::: warning -When no master key is set on binary launch, no API key is needed on any route. -**Giving full access to the API**. -::: +With this master key, you can retrieve the private, and the public keys using the [keys route](/references/keys.md). -#### Examples +On each API call, the key must be added to [the header](/references/#authentication). ------ +#### No master key -```bash -# with the flag -$ ./meilisearch --api-key myMasterKey -# with the environement variable -$ MEILI_API_KEY=myMasterKey ./meilisearch -``` +If no master key is given, all routes in MeiliSearch can be accessed without a key. -This header `X-Meili-Api-Key: myMasterKey` gives access to the whole API. +### Reset keys ------ -```bash -$ ./meilisearch -``` +Since the private and public keys are generated based on your master key, you must change the master key to change the two other ones. -The header `X-Meili-Api-Key` is **not required** on any API requests. Creating **an important security breach**. +After changing your master key, you must restart the MeiliSearch server to ensure the other keys renewal. - -## Creating a key - -Depending on the environment from which you use the MeiliSearch API, you only use a certain action set. It is possible to [create an API key](/references/keys.md#create-key) that only gives access to this set of actions. - -You can create as many keys as you want. - -## Key - -**MeiliSearch generates the key**. - -The key is returned on [key creation](/references/keys.md#create-key). This key is your `API KEY`. - -In the header, the API key is set in the ` X-Meili-Api-Key` attribute. - -This way: - -```bash -$ curl \ - -X POST 'http://localhost:7700/indexes' \ - --header ' X-Meili-Api-Key: myApiKey' -``` - -## Description - -The description expects a summary on the `API KEY` and the ACL it contains. - -It should help you track your keys. - -## ACL - -`ACL` or Access-Control List is the list of permissions an `API KEY` can have. - - -* `IndexesRead`: read access on [indexes](/references/indexes.md) -* `IndexesWrite`: write access on [indexes](/references/indexes.md) -* `DocumentsRead`: read access on [documents](/references/documents.md) -* `DocumentsWrite`: write access on [documents](/references/documents.md) -* `SettingsRead`: read access on [settings](/references/settings.md) -* `SettingsWrite`: write access on [settings](/references/settings.md) -* `Admin`: full permission on [keys](/references/keys.md) and [stats](/references/stats.md) -* `All`: all of the above - -**Read** gives access to all `GET` methods of the given route. - -**Write** gives access to all `POST`, `PUT`, `PATCH`, `DELETE` methods of the given route. - -### Example - -If you use the API on **the browser side to only make search queries**, you do not need this same API key to be able to do anything else. - -```bash -$ curl \ - -X POST 'http://localhost:7700/keys' \ - --data '{ - "expiresAt": 1574332928, - "description": "search key", - "acl": ["documentsRead"], - "indexes": ["movies"] - }' -``` - -This will return an `API key` that you can safely use on your browser side. - -## Indexes - -`Indexes` attribute contains a list of indexes to which the key is applied. - -Wildcards are also acceptable inputs. Wildcards work as follows -* `"name_of_index"` exact name of index -* `"*suffix"` every index with this suffix -* `"prefix*"`every index with this prefix -* `"*"` all indexes. - - -#### Examples -Given a set of indexes: `english_movies`, `chinese_movies`, `french_books` - -The indexes list: `["*_movies"] ` will **give access** to `english_movies` and `chinese_movies` but not `french_books`. - ------ - -Given a set of indexes: `english_movies`, `chinese_movies`, `english_books`, `french_books` - -The indexes list: `["english_*"] ` will **give access** to `english_movies` and `english_books` but not `french_books` and `chinese_movies`. - -## Revoked - -Boolean set to `false` on [key creation](/references/keys.md#create-key). It is updatable on [key update](/references/keys.md#update-key). - -Once it is set to `true` the `API key` **loses all his accesses**. - -::: tip -The revoked status can be toggled back at any time [by an admin](/guides/advanced_guides/keys.md#acl). -::: - -## Expires at - -This attribute takes a `timestamp` as input. This timestamp is the expire date after which the `API KEY` will lose all his accesses. +**All key will be changed**, thus a single key can not be changed. diff --git a/guides/advanced_guides/prefix.md b/guides/advanced_guides/prefix.md index 0985666071..5485a1435f 100644 --- a/guides/advanced_guides/prefix.md +++ b/guides/advanced_guides/prefix.md @@ -4,10 +4,10 @@ In MeiliSearch, **the search is possible even with a single letter sent**. A prefix search is when the documents sorting starts by comparing your search query with the start of each word in your dataset. -All words beginning with this letter are added to the [bucket sort](/guides/advanced_guides/bucket_sort.md) and then the other [ranking rules](/guides/advanced_guides/ranking.md#ranking-rules) are applied. +All words beginning with this letter are added to the [bucket sort](/guides/advanced_guides/bucket_sort.md), and then the other [ranking rules](/guides/main_concepts/relevancy.md) are applied. ::: note -Since there are so many possible relevant documents with only one letter, the longer the search query is the fastest it will respond. +Searching by prefix has a significant impact on search time. The shorter the word, the more possible matches in the documents increase. ::: ### Example @@ -16,19 +16,22 @@ Given a set of words in a dataset: `film` `cinema` `movies` `show` `harry` `potter` `shine` `musical` -If the search query is `s` only the documents containing the following words are returned: - +query: `s`: +response: - `show` - `shine` but not - - `movies` - `musical` -Even if, as you can observe, there is an `s` in `movies` and `musical`. The prefix search begins searching at **the start of the word**. Notice that a prefix search is only done for the last word of a query, other words must be of the same length but can contain typos. +query: `sho`: +response: +- `show` + +Notice that a prefix search is only done for the last word of a query, other words must be of the same length but can contain typos. -If the query is `sho`, only the documents containing `show` will be returned. MeiliSearch also handles typos while performing the prefix search. You can [read more about the typo rules on the dedicated page](/guides/advanced_guides/typotolerance.md#typo-tolerance-rules). +MeiliSearch also handles typos while performing the prefix search. You can [read more about the typo rules on the dedicated page](/guides/advanced_guides/typotolerance.md#typo-tolerance-rules). ::: tip We also [apply splitting and concatenating on search queries](/guides/advanced_guides/concat.md). diff --git a/guides/advanced_guides/ranking.md b/guides/advanced_guides/ranking.md deleted file mode 100644 index bd2ce33ec0..0000000000 --- a/guides/advanced_guides/ranking.md +++ /dev/null @@ -1,81 +0,0 @@ -# Ranking - -MeiliSearch uses ranking rules. We talk about one `criterion` (singular) and many `criteria` (plural). They are used in the [bucket sort](/guides/advanced_guides/bucket_sort.md) - -## Ranking rules - -MeiliSearch has default `criteria`. - -Here is the list of all the `criteria` that are executed in this specific order by default: - -- `Number of Typos` - The less typos there are beween the query words and the document words, the better is the document. -- `Number of Words` - A document containing more of the query words will be more important than one that contains less. -- `Words Proximity` - The closer the query words are in the document the better is the document. -- `Attribute` - A document containing the query words in a more important attribute than another document is considered better. -- `Position` - A document containing the query words at the start of an attribute is considered better than a document that contains them at the end. -- `Exact` - A document containing the query words in their exact form, not only a prefix of them, is considered better. - - -## Custom ranking rules - -Custom ranking rules gives you the possibility to add new rules. New rules can be added on attributes that has the `ranked` tag in the [schema](/guides/main_concepts/indexes.md#ranked). - -A rule is defined by an **attribute** and a **ascendent** `asc` or **descendent** `dsc` property. - -The name of the ranking rule is the name of the attribute on which the rule is made. - -For those rules to be applied by MeiliSearch on your search queries, they must be added to the [ranking order](/guides/advanced_guides/ranking.md#ranking-order). - -::: warning -If the rule is not added to the rule ranking order, it will be **ignored** by MeiliSearch. -::: - -### Example - -On the `release_date` attribute of a movie data set, which contains the timestamp of the release date. -```bash - $ curl -X POST 'http://localhost:7700/indexes/movies/settings' - --data '{ "rankingRules": { "release_date": "dsc" } }' -``` - -We create a custom ranking rule that must have the attribute name as key: `release_date` and we ask it to be `dsc` which means *descending*. - -Now if added to the ranking order documents will be ordered by descending release_date. - -## Ranking order - -The ranking order determines the order of each rule in the [bucket sort](/guides/advanced_guides/bucket_sort.md). - -The default ranking order is as follows ([*see above for more detail about each rule*](/guides/advanced_guides/ranking.md#ranking-rules)): - -- `Number of Typos` -- `Number of Words` -- `Words Proximity` -- `Attribute` -- `Position` -- `Exact` - -[The ranking order can be changed](/references/settings.md#ranking-rules). Rules can be removed by omitting them in the ranking order list, and custom rules must be added in the ranking order list to be applied. - -Each time you create **a new ranking rule it must be added to the existing ranking order to be applied** by the [bucket sort](/guides/advanced_guides/bucket_sort.md). - -### Example - -To apply the [custom ranking rule added previously](/guides/advanced_guides/ranking.md#custom-ranking-rules), let's add it to the ranking order. - -```bash -$ curl -X POST 'http://localhost:7700/indexes/movies/settings' \ - --data '{ - "rankingOrder": [ - "_sum_of_typos", - "_number_of_words", - "_word_proximity", - "_sum_of_words_attribute", - "_sum_of_words_position", - "_exact", - "release_date" - ] -}' -``` - -Now, our **search results will be ordered by descending date** after all other rules have been applied in the [bucket sort](/guides/advanced_guides/bucket_sort.md). diff --git a/guides/advanced_guides/search_parameters.md b/guides/advanced_guides/search_parameters.md index fc85222d79..9ebbe6ccd0 100644 --- a/guides/advanced_guides/search_parameters.md +++ b/guides/advanced_guides/search_parameters.md @@ -8,12 +8,10 @@ Search parameters let the user customize his search request. | **[offset](/guides/advanced_guides/search_parameters.md#offset)** | number of documents to skip | 0 | | **[limit](/guides/advanced_guides/search_parameters.md#limit)** | number of documents returned | 20 | | **[attributesToRetrieve](/guides/advanced_guides/search_parameters.md#attributes-to-retrieve)** | document attributes to show | * | -| **[attributesToSearchIn](/guides/advanced_guides/search_parameters.md#attributes-to-search-in)** | which attributes are used to match documents | * | | **[attributesToCrop](/guides/advanced_guides/search_parameters.md#attributes-to-crop)** | which attributes to crop | none | | **[cropLength](/guides/advanced_guides/search_parameters.md#crop-length)** | limit length at which to crop specified attributes | 200 | | **[attributesToHighlight](/guides/advanced_guides/search_parameters.md#attributes-to-highlight)** | which attributes to highlight | none | -| **[filters](/guides/advanced_guides/search_parameters.md#filters)** | attribute with an exact match | none | -| **[timeout_ms](/guides/advanced_guides/search_parameters.md#timeout)** | maximum response time | 30 ms | +| **[filters](/guides/advanced_guides/search_parameters.md#filters)** | attribute with an exact match | none | | **[matches](/guides/advanced_guides/search_parameters.md#matches)** | whether to return the raw matches or not | false | ## Query (q) @@ -44,34 +42,28 @@ X number of documents in the search query response. This is helpful for **pagina Attributes that will appear in the returned documents. -## Attributes to search in - -`attributesToSearchIn=,,...`. - -Attributes used to match document in the search engine. - ## Attributes to crop `attributesToCrop=,,...` -Attributes of which the value will be cropped depending on the `cropLength` and the matches . +Attributes of which the value will be cropped depending on the `cropLength` and the matches. ::: tip This is useful when you have specific needs for displaying results on the front-end application. ::: -**Cropping start at the first occurence of the search query**. It only keeps `(croplength - matchLength)/2 ` chars on each side of the first match. +**Cropping start at the first occurrence of the search query**. It only keeps `(cropLength - matchLength)/2 ` chars on each side of the first match. #### Example ```bash -$ curl -X GET -G 'http://localhost:7700/indexes/nzwlr302/search' \ +$ curl -X GET -G 'http://localhost:7700/indexes/nzwlr302/search' \ -d q=shifu \ -d attributesToCrop=overview \ -d cropLength=100 \ ``` -With a `cropLength` of 100 on `shifu` as a search query this is the response. +With a `cropLength` of 100 on `shifu` as a search query this is the response. Our **cropped version is in the _formatted object**. @@ -102,10 +94,18 @@ Total length of the cropped field. See [attributesToCrop](/guides/advanced_guide `attributesToHighlight=,,...` -Every matching string sequence in the given attribute's field will be wrapped arround an `` tag +Every matching string sequence in the given attribute's field will be wrapped around an `` tag #### Example +```bash +$ curl -X GET -G 'http://localhost:7700/indexes/nzwlr302/search' \ + -d q=shifu \ + -d attributesToHighlight=overview +``` + +Our **highlight version is in the _formatted object**. + ```json { "id": "50393", @@ -114,7 +114,11 @@ Every matching string sequence in the given attribute's field will be wrapped ar "overview": "The Winter Feast is Po's favorite holiday. Every year he and his father hang decorations, cook together, and serve noodle soup to the villagers. But this year Shifu informs Po that as Dragon Warrior, it is his duty to host the formal Winter Feast at the Jade Palace. Po is caught between his obligations as the Dragon Warrior and his family traditions: between Shifu and Mr. Ping.", "release_date": 1290729600, "_formatted": { - "overview": "The Winter Feast is Po's favorite holiday. Every year he and his father hang decorations, cook together, and serve noodle soup to the villagers. But this year Shifu informs Po that as Dragon Warrior, it is his duty to host the formal Winter Feast at the Jade Palace. Po is caught between his obligations as the Dragon Warrior and his family traditions: between Shifu and Mr. Ping." + "id": "50393", + "title": "Kung Fu Panda Holiday", + "poster": "https://image.tmdb.org/t/p/w1280/gp18R42TbSUlw9VnXFqyecm52lq.jpg", + "overview": "The Winter Feast is Po's favorite holiday. Every year he and his father hang decorations, cook together, and serve noodle soup to the villagers. But this year Shifu informs Po that as Dragon Warrior, it is his duty to host the formal Winter Feast at the Jade Palace. Po is caught between his obligations as the Dragon Warrior and his family traditions: between Shifu and Mr. Ping.", + "release_date": 1290729600, } } ``` @@ -129,10 +133,10 @@ The Winter Feast is Po's favorite holiday. Every year he and his father hang dec Attribute's value must be **equal** to the given string in the documents. -The **equality is case insenstive**. +The **equality is case insensitive**. ```bash -$ curl -X GET -G 'http://localhost:7700/indexes/nzwlr302/search' \ +$ curl -X GET -G 'http://localhost:7700/indexes/nzwlr302/search' \ -d q=n \ -d filters='title:Nightshift' ``` @@ -147,30 +151,24 @@ $ curl -X GET -G 'http://localhost:7700/indexes/nzwlr302/search' \ } ``` -## Timeout - -`timeout_ms=` - -**Maximum time** before a search request responds. - -::: warning -When it's faster you lose in relevancy -::: - ## Matches `matches=` -Returns an array of the search query occurrences in all fields. A search query occurence is given by a `start` position in the field and the `length` of the occurence. +Returns an array of the search query occurrences in all fields. A search query occurrence is given by a `start` position in the field and the `length` of the occurrence. ::: tip -This is useful when you need to highlight the results without the default html highlighter. +This is useful when you need to highlight the results without the default HTML highlighter. ::: #### Example -`Shifu` as search query: +```bash +$ curl -X GET -G 'http://localhost:7700/indexes/nzwlr302/search' \ + -d q=shifu \ + -d attributesToHighlight=overview +``` ```json { diff --git a/guides/advanced_guides/stop_words.md b/guides/advanced_guides/stop_words.md index fe05484770..5c84ffbfa3 100644 --- a/guides/advanced_guides/stop_words.md +++ b/guides/advanced_guides/stop_words.md @@ -1,138 +1,15 @@ # Stop words -Stop-words allows you to create a list of words **ignored in your search queries**. +The stop-words route allows you to add a list of words **ignored in your search queries**. -During a search, the stop-words contained in your search query will be ignored by the sorting algorithm. -I.e., if `the` is a stop word, and your search query contains `the`, the number of occurrences of `the` in any of your documents will have no impact on the search results. +During a search, the stop words contained in your search query will be ignored by the sorting algorithm. -Stop-words **improves** **the speed** and **relevancy** of a search. +I.e. if `the` is in the stop-words list, and your search query contains `the`, MeiliSearch will ignore this word, and be faster to answer. -::: tip -Using stop-words allows the search to focus on more relevant elements rather than words that appears very frequently in your dataset. -::: +Adding a stop-words list **improves the speed**, and **relevancy** of a search. ## Language driven -Stop-words are strongly related to the language in which your data is written. Thus "the" or "of" are words that are very common in the English language and could be less relevant than a more specific word. +Stop words are strongly related to the language in which your data is written. Thus "the" or "of" are words that are very common in the English language and could be less relevant than a more specific word. -However, their recurrence in the data makes them decisive for calculating the relevance of a document, which could be counterproductive. In most cases it is more desirable to ignore any recurrence of these words and to base research results on more relevant distinctions. - -### Example - -Let's take a movie dataset where the release year is written in timestamp format like this: - -```json -{ - "id": "299537", - "title": "Captain Marvel", - "poster": "https://image.tmdb.org/t/p/w1280/AtsgWhDnHTq68L0lLsUrCnM7TjG.jpg", - "overview": "The story follows Carol Danvers as she becomes one of the universe’s most powerful heroes when Earth is caught in the middle of a galactic war between two alien races. Set in the 1990s, Captain Marvel is an all-new adventure from a previously unseen period in the history of the Marvel Cinematic Universe.", - "release_date": 1551830400 -} -``` - -Now the schema should be defined like this: - -```json -{ - "id": [ "identifier", "displayed", "indexed" ], - "title": [ "displayed", "indexed" ], - "overview": [ "indexed", "displayed" ], - "release_date": ["ranked", "displayed" ], - "poster": [ "displayed" ] -} -``` - -Let's make a search on this dataset - -#### Without stop words - -```bash -$ curl -G \ - -X GET 'http://localhost:7700/indexes/rangemovies/search?limit=3' \ - --data-urlencode "q=the road to " -``` - -```json -{ - "hits": [ - { - "id": "31804", - "title": "The Road to Hong Kong", - "overview": "Bob Hope and Bing Crosby return as con men Chester Babcock and Harry Turner, in the last of their road movies. When Chester accidentally memorizes and destroys the only copy of a secret Russian formula for a new and improved rocket fuel, they are thrust into international intrigue, trying to stay alive while keeping the formula out of enemy hands.", - "release_date": -252460800, - "poster": "https://image.tmdb.org/t/p/w1280/50vcozuZ03PD8xD7sQfUqca3UvE.jpg" - }, - { - "id": "10467", - "title": "The Road to Wellville", - "overview": "An unhappy young couple visit the infamous Kellogg spa in Battle Creek, Michigan while a young hustler tries get into the breakfast-cereal business and compete against John Kellogg's corn flakes.", - "release_date": 783302400, - "poster": "https://image.tmdb.org/t/p/w1280/zh7OVdFMpqpZ027z9RgVIwzxYjZ.jpg" - }, - { - "id": "7872", - "title": "The Road to Guantanamo", - "overview": "Part drama, part documentary, The Road to Guantánamo focuses on the Tipton Three, a trio of British Muslims who were held in Guantanamo Bay for two years until they were released without charge.", - "release_date": 1141862400, - "poster": "https://image.tmdb.org/t/p/w1280/2ttqAXqS1kUGMLg7itTQ1jVCU6M.jpg" - } - ], - "offset": 0, - "limit": 3, - "processingTimeMs": 48, - "query": "the road to " -} -``` - -`The Road to Hong Kong` is the first film in our search results. It is there because of the recurrence of the words "the" and "of" in the title and description. However, it is the oldest film in the documents offered. - -The number of occurrences of common words impacts a lot the search results. If we want to focus on more relevant information, `the`, `of` and `to` should be added to the stop word list. -#### Let's add some stop words - -```bash -$ curl \ - -X PUT 'http://localhost:7700/indexes/rangemovies/stop-words' \ - --data '["the", "of", "to"]' -``` - -and let's try the same search again. - -```json -{ - "hits": [ - { - "id": "20618", - "title": "Road Trip: Beer Pong", - "overview": "It’s Road Trip - Beer Pong! Three college roommates are on the ride of their lives when they drop everything to join a bus full of sexy, scantily clad models to compete in the ultimate sport competition: the National Beer Pong Tournament.", - "release_date": 1249952400, - "poster": "https://image.tmdb.org/t/p/w1280/g3SnxYhaysmCn3V7nmwI3ZvRLth.jpg" - }, - { - "id": "4147", - "title": "Road to Perdition", - "overview": "Mike Sullivan works as a hit man for crime boss John Rooney. Sullivan views Rooney as a father figure, however after his son is witness to a killing, Mike Sullivan finds himself on the run in attempt to save the life of his son and at the same time looking for revenge on those who wronged him.", - "release_date": 1026435600, - "poster": "https://image.tmdb.org/t/p/w1280/jn0GH8klINSQtRNifY8W2Kv4ajl.jpg" - }, - { - "id": "10135", - "title": "Road House", - "overview": "The Double Deuce is the meanest, loudest and rowdiest bar south of the Mason-Dixon Line, and Dalton (Patrick Swayze) has been hired to clean it up. He might not look like much, but the Ph.D.-educated bouncer proves he's more than capable -- busting the heads of troublemakers and turning the roadhouse into a jumping hot-spot. But Dalton's romance with the gorgeous Dr. Clay (Kelly Lynch) puts him on the bad side of cutthroat local big shot Brad Wesley (Ben Gazzara).", - "release_date": 611542800, - "poster": "https://image.tmdb.org/t/p/w1280/epxeFRI1Ig3CU7hnz9pZVkarfOz.jpg" - } - ], - "offset": 0, - "limit": 3, - "processingTimeMs": 16, - "query": "the road to " -} -``` - -this time the results are much more related to the release date -of the film rather than the number of recurrences of the stop-words. The response time is much shorter too, from `48ms` to `16ms` - -You can see where the line is drawn between the importance of getting rid of stop-words and also the relevance those words can give to you search. - -Find the best way they will fit for you ! +However, their recurrence in the data makes them decisive for calculating the relevance of a document, which could be counterproductive. In most cases, it is more desirable to ignore any recurrence of these words and to base research results on more relevant distinctions. diff --git a/guides/advanced_guides/synonyms.md b/guides/advanced_guides/synonyms.md index bc54e3c45c..2ceb28b69d 100644 --- a/guides/advanced_guides/synonyms.md +++ b/guides/advanced_guides/synonyms.md @@ -1,10 +1,10 @@ # Synonyms -To make your search more relevant there is the possibility of creating synonyms. +To make your search more relevant, you can [create a list of synonyms](/references/synonyms.md#update-synonyms). -Thus, if your database contains a lot of a word that has on or more popular synonyms, by configuring the synonyms the words can be associated. **This allows the same results if you write one or the other word**. +If multiples words have an equivalent meaning in your dataset, you can decide to create a synonym list for these words. The search engine will give the same search results for any search with one of the associated words as a query. -Synonyms are considered to be exactly the same. +Synonyms are considered to be the same. A search on a word or its synonym will return the same search result. ::: warning @@ -22,7 +22,17 @@ example: phone => iphone ``` -By searching `phone` you will get all results containing `iphone` with the same relevance. However, if you search for `iphone`, the data containing `phone` will not change your results. +By searching `phone` you will get all results containing `iphone` with the same relevance. However, if you search for `iphone`, documents containing `phone` will not be shown in your results. + +#### Example + +To create a one-way synonym list this is the JSON that should be [added to the settings](/references/synonyms.md#update-synonyms). + +``` json +{ + "phone": ["iphone"] +} +``` ## The multi-way association @@ -30,10 +40,10 @@ By associating one or more synonyms with each other, they will be considered the example: ``` -Shoe <=> boot <=> slipper <=> sneakers +shoe <=> boot <=> slipper <=> sneakers ``` -When a search is made with one of these words all the others will be considered as exactly the same word and will appear in the search results. +When a search is done with one of these words, all the others will be considered as the same word and will appear in the search results. However, in the case of word to sentence or sentence to sentence @@ -43,3 +53,14 @@ example: ``` The "San Fransisco" search will be considered less relevant than the "SF" search but will still be considered an acceptable search result in the absence of a more relevant result. + +#### Example + +To create a multi-way synonym list this is the JSON that should be [added to the settings](/references/synonyms.md#update-synonyms). + +``` json +{ + "san francisco": ["sf"], + "sf": ["san francisco"] +} +``` diff --git a/guides/advanced_guides/typotolerance.md b/guides/advanced_guides/typotolerance.md index dd7de1e127..efb05ba2ff 100644 --- a/guides/advanced_guides/typotolerance.md +++ b/guides/advanced_guides/typotolerance.md @@ -1,6 +1,6 @@ # Typo Tolerance -MeiliSearch **implements [typo tolerance](/guides/advanced_guides/typotolerance.md#typo-tolerance-rules)**. This means **it understands your search even if there are typos or spelling mistakes** to a certain extend. +MeiliSearch **is [typo tolerant](/guides/advanced_guides/typotolerance.md#typo-tolerance-rules)**; this means **it understands your search even if there are typos or spelling mistakes** to a certain extend. #### Example @@ -51,9 +51,9 @@ There are some rules about what can be considered "similar". These rules are **b - If the query word is between 5 and 8 characters long, **one typo** is allowed. Documents that contain words that match with **one typo** are retained for the next steps. - If the query word contains more than 8 characters, we accept a maximum of **two typos**. -This means that "saturday", which is 7 characters long uses the second rule and every document containing words that only have **one typo** will match. For example: +This means that "saturday", which is 7 characters long use the second rule, and every document containing words that only have **one typo** will match. For example: -- "saturday" is accepted because it is exactly the same word. +- "saturday" is accepted because it is the same word. - "sat" is not accepted because the query word is not a prefix of it (it is the opposite). - "satuday" is accepted because it contains **one typo**. - "s**u**tuday" is not accepted because it contains **two typos**. diff --git a/guides/advanced_guides/web_interface.md b/guides/advanced_guides/web_interface.md new file mode 100644 index 0000000000..f8ab2f153f --- /dev/null +++ b/guides/advanced_guides/web_interface.md @@ -0,0 +1,20 @@ +# Web interface + +After adding documents to your MeiliSearch, it is possible to try out the search engine with the integrated web interface. + +The web interface is served on the address and port specified in the command line argument `--listen`. If not specified, [the default address and port is used](/guides/advanced_guides/installation.md#environment-variables-and-flags). + +### Example + +By default the web server can be reached on `http://127.0.0.1:7700`. + +Let's add some movies. + +```bash +curl -X POST 'http://127.0.0.1:7700/indexes/movies_uid/documents'\ + --data @movies.json +``` + +Let's go to `http://127.0.0.1:7700` in our browser. + +![Movies gif](/movies_web_2.gif) diff --git a/guides/introduction/quick_start_guide.md b/guides/introduction/quick_start_guide.md index a432810c2c..ce1cea420c 100644 --- a/guides/introduction/quick_start_guide.md +++ b/guides/introduction/quick_start_guide.md @@ -6,7 +6,7 @@ This quick tour will help you get started with MeiliSearch in only a few steps. First of all, you must have access to a running instance of MeiliSearch. -There are [several download possibilities](/guides/advanced_guides/binary.md#download-and-launch). +There are [several download possibilities](/guides/advanced_guides/installation.md#download-and-launch). :::: tabs ::: tab cURL @@ -87,19 +87,13 @@ $ cd MeiliSearch Inside the folder, compile MeiliSearch. ```bash -# Production version -$ cargo build --release - -# Debug version -$ cargo build -``` +# Update the rust toolchain to the latest version +$ rustup update -Compiling in release mode takes more time than in debug mode but the binary process time will be significantly faster. You **must** run a release binary when using MeiliSearch in production. - -You can find the compiled binary in `target/debug` or `target/release`. +# Compile the project +$ cargo build --release -```bash -# Excuting the server binary +# Execute the server binary $ ./target/release/meilisearch ``` @@ -107,19 +101,18 @@ $ ./target/release/meilisearch :::: -[Environment variables and flags](/guides/advanced_guides/binary.md#environment-variables-and-flags) can be set before and on launch. With them you can among other things add the **master key** or set the **port**. +[Environment variables and flags](/guides/advanced_guides/installation.md#environment-variables-and-flags) can be set before and on launch. With them, you can, among other things, add the **master key** or set the **port**. ### Communicate with MeiliSearch -Now that our meilisearch server is up and running, we will be able to communicate with it. +Now that our MeiliSearch server is up and running, we will be able to communicate with it. This is done through a [RESTFul API](/references/README.md) or one of our [SDKs](/resources/sdks.md). ## Create your Index In MeiliSearch, the information is subdivided into indexes. Each [index](/guides/main_concepts/indexes.md) contains a data structure and the associated documents. -The indexes can be imagined as SQL tables. But you won't need to define the table, [MeiliSearch does that for you](/guides/main_concepts/indexes.md#inferred-schema). - +The indexes can be imagined as SQL tables. But you won't need to define the table because MeiliSearch is . In order to be able to store our documents in an index, we have to create one first. :::: tabs @@ -131,8 +124,7 @@ In order to be able to store our documents in an index, we have to create one fi $ curl \ -X POST 'http://localhost:7700/indexes' \ --data '{ - "name": "Movies", - "uid" : "movies_uid" + "uid" : "movies" }' ``` ::: @@ -141,8 +133,7 @@ $ curl \ ```js meili.createIndex({ - name: "Movies", - uid: "movies_uid" + uid: "movies" }) ``` ::: @@ -150,21 +141,21 @@ meili.createIndex({ ::: tab Ruby ```ruby -client.create_index(name: 'Movies', uid: 'movies_uid') +client.create_index(uid: 'movies') ``` ::: ::: tab PHP ```php -$client->createIndex('Movies', 'movies_uid'); +$client->createIndex('movies'); ``` ::: ::: tab Python ```python -client.create_index(name="movies", uid="movies_uid") +client.create_index(uid="movies") ``` ::: :::: @@ -172,11 +163,14 @@ client.create_index(name="movies", uid="movies_uid") ## Add Documents -Once the index has been created it need to be filled with [documents](/guides/main_concepts/documents.md). It is these documents that will be used and returned when searches are made on MeiliSearch. +Once the index has been created, it needs to be filled with [documents](/guides/main_concepts/documents.md). It is these documents that will be used and returned when searches are done on MeiliSearch. Documents are sent to MeiliSearch in JSON format. -The documents must have at least one field in common. This field contains the identifier of the document. +To be processed by MeiliSearch, all documents need one common which will serve as [primary key](/guides/main_concepts/documents.md#primary-key) for the document. The value in this field must be **unique**. + +There are [several ways to let MeiliSearch know what the primary key](/guides/main_concepts/documents.md#primary-key) is, the easiest way is to have an that contains the string `id` case-insensitively. + Let's use an example [movies.json dataset](https://github.com/meilisearch/MeiliSearch/blob/master/datasets/movies/movies.json) to showcase how to add documents. @@ -188,7 +182,7 @@ Let's use an example [movies.json dataset](https://github.com/meilisearch/MeiliS [API references](/references/documents.md) ```bash $ curl \ - -X POST 'http://localhost:7700/indexes/movies_uid/documents' \ + -X POST 'http://localhost:7700/indexes/movies/documents' \ --data @movies.json ``` ::: @@ -198,7 +192,7 @@ $ curl \ ```js const movies = require('./movies.json') meili - .Index("movies_uid") + .Index("movies") .addDocuments(movies) ``` ::: @@ -220,7 +214,7 @@ $index->addOrReplaceDocuments($movies); ::: tab Python ```python -index = self.client.get_index(uid="movies_uid") +index = self.client.get_index(uid="movies") json_file = open('movies.json') data = json.load(json_file) response = index.add_documents(data) @@ -237,9 +231,9 @@ You can [track the state of each action](/guides/advanced_guides/asynchronous_up ## Searches -Now that our documents have been added to MeiliSearch we are be able to [search](/guides/main_concepts/search.md) in it. +Now that our documents have been added to MeiliSearch, we are able to [search](/guides/main_concepts/search.md) in it. -MeiliSearch [offers many parameters](/guides/advanced_guides/search_parameters.md) that you can play with to refine your search or change the format of the returned documents. However, by default the search is already relevant. +MeiliSearch [offers many parameters](/guides/advanced_guides/search_parameters.md) that you can play with to refine your search or change the format of the returned documents. However, by default, the search is already relevant. The search engine is now aware of our documents and can serve those via our HTTP server. @@ -247,6 +241,8 @@ The search engine is now aware of our documents and can serve those via our HTTP $ curl 'http://127.0.0.1:7700/indexes/12345678/search?q=botman' ``` +MeiliSearch also offers an out-of-the-box [web interface](/guides/advanced_guides/web_interface.md) on which you can try the search. Go to your MeiliSearch address using a browser. In our case that would be: `http://127.0.0.1:7700` + :::: tabs ::: tab Curl diff --git a/guides/introduction/whats_next.md b/guides/introduction/whats_next.md index bbf887bb37..198db93805 100644 --- a/guides/introduction/whats_next.md +++ b/guides/introduction/whats_next.md @@ -1,14 +1,15 @@ # What's next? -In MeiliSearch, we have three concepts on which we build our search engine. If you haven't read these pages yet, do not hesitate, they give an essential insight. +In MeiliSearch, we have some concepts on which we build our search engine. If you haven't read these pages yet, do not hesitate, they give an essential insight. - [Indexes](/guides/main_concepts/indexes.md) - [Documents](/guides/main_concepts/documents.md) - [Search](/guides/main_concepts/search.md) +- [Relevancy](/guides/main_concepts/search.md) Finally, you can find the API references here : - [API References](/references/README.md) And the SDKs links here : -- [Ressources](/resources/sdks.md) +- [Resources](/resources/sdks.md) Tutorials and Cookbooks are being made. They will be available soon. diff --git a/guides/main_concepts/README.md b/guides/main_concepts/README.md index fbf53e226c..834836995e 100644 --- a/guides/main_concepts/README.md +++ b/guides/main_concepts/README.md @@ -11,5 +11,4 @@ MeiliSearch is an **asynchronous** API. It means that when it does not behave li MeiliSearch uses the following terms inside the documentation. You should become familiar with them before continuing. * **[Index](indexes.md)**: Like a table in `SQL`. It's the entity that gathers all the documents of a given structure. -* **[Schema](indexes.md#schema-definition)**: The definition of the index. The `schema` describes the structure of the `document`. * **[Document](documents.md)**: Object containing the defined attributes with their associated data. diff --git a/guides/main_concepts/documents.md b/guides/main_concepts/documents.md index b666f54d1a..80a360c720 100644 --- a/guides/main_concepts/documents.md +++ b/guides/main_concepts/documents.md @@ -1,7 +1,7 @@ # Documents -`Documents` are objects composed of fields containing any data.
-A `field` is composed of an `attribute` and its associated data. +**Documents** are objects composed of fields containing any type of data.
+A **field** is composed of an **attribute** and its associated data. ```json { @@ -12,16 +12,94 @@ A `field` is composed of an `attribute` and its associated data. } ``` -In this document, **attributes** are `"id"`, `"title"`, `"description"` and `"type"`.
-The **fields** are the combination of attributes and data (i.e. `"title": "Interstellar"`). +#### Wording -## Documents structure +- **Attribute**: `"id"`, `"title"`, `"description"` and `"type"`. +- **Field**: the combination of attributes and data (i.e, `"title": "Interstellar"`) +- **Document**: The combination of all the fields between brackets. + +## Structure A document is added to MeiliSearch in `JSON format`.
-Each documents fields should correspond to an attribute in the schema to be taken into account. +When using the [route to add new documents](/references/documents.md#add-or-update-documents), all documents should be sent in an array. And this, even if there is only one document. + +```bash +curl -X POST `http://localhost:7700/indexes/movie/documents` \ +--data '[ + { + "movie_id": "123sq178", + "title": "Amelie Poulain" + } +]' +``` + +A **document must contain** [the primary key field](/guides/main_concepts/documents.md#primary-key) to be indexed in MeiliSearch. + +## Fields + +All fields present in a document are automatically and . +The way MeiliSearch handles a field is customizable in the settings . You can make a field only searchable, or only displayed, or none, in this case, MeiliSearch will completely ignore the field when it is sent on document addition. + +You can also add on a field, to, for example, add a rule that makes recent movies more relevant than older ones. + +## Primary key + +A primary key is an with a unique value found in each document of a given index. It is used to store the document in the index. + +Each index recognizes **only one** primary key attribute. Once the [primary key is set on the index](/guides/main_concepts/documents.md#setting-the-primary-key), it **cannot be changed**. + +**Example:** + +In an index called `movie` there are 200k `documents`. Each of these 200k documents has a primary key called `movie_id` whose value is unique. + +```json +[ + { + "movie_id" : "1564saqw12ss", + "title" : "Kung fu Panda" + }, + { + "movie_id" : "15k1j2kkw223s", + "title" : "Batman" + } +] +``` + +If the **primary key** is not found in a document, the document will not be added. + +### Setting the primary key + +MeiliSearch has several ways of knowing which field is the `primary key`. + +- MeiliSearch [automaticly infers the primary key](/guides/main_concepts/documents.md#meilisearch-infers-your-primary-key) based on your first document. +- Set it [on index creation](/references/indexes.md#create-an-index) +- Set it [on document addition](/references/documents.md#add-or-replace-documents) + +#### MeiliSearch infers your primary key + +If no primary key has been given through the index creation or through document additions, MeiliSearch will search for the primary key in the first document sent. + +MeiliSearch will search for an attribute that contains the string `id` in any way case-insensitively. (i.e, `uid`, `MovieId`, `ID`, `123id123`). +If none has been found, no documents will be added. + +#### Missing primary key error + +❗️ If you get the `missing primary key` error, it means MeiliSearch could not recognize your primary key. This means your primary key does not answer the formatting explained above. To solve this error, you could send the [primary-key's name as a query parameter](/references/documents.md#add-or-replace-documents) or [update your index to add the primary key's name](/references/indexes.md#create-an-index) as explained in: [setting the primary key](/guides/main_concepts/documents.md#primary-key). + +### Primary key value format + +The primary key **value** may contain only `A-Z a-z 0-0` and `-_` characters. + +#### Examples + +Good: +``` +"id": "_Aabc012_" +``` +Bad: +``` +"id": "@BI+* ^5h2%" +``` -::: danger -Documents fields that do not correspond to the schema fields are ignored. -::: -When using the [route to add new documents](/references/documents.md#add-or-update-documents) all documents should be sent in an array. And this, even if there is only one document. +The document addition request in MeiliSearch is [atomic](https://en.wikipedia.org/wiki/Atomicity_(database_systems)). Thus, if you add 200 documents in one go and if one of the documents has a badly formatted primary key, an error will occur, and none of the documents will be added. diff --git a/guides/main_concepts/indexes.md b/guides/main_concepts/indexes.md index c3ec24e657..96931dbab0 100644 --- a/guides/main_concepts/indexes.md +++ b/guides/main_concepts/indexes.md @@ -1,153 +1,101 @@ # Indexes -An `index` is an entity, like a *table in SQL*, with a specific `schema` definition. It gathers a collection of `documents` with the structure defined by the schema. +An index is the collection of a certain type of data. -An **index is defined** by an unique identifier `uid` that is generated by MeiliSearch (*if none is given*) on [index creation](/references/indexes.md#create-an-index). It also has **a name** to help you track your different indexes. +It is, as a table in SQL, or a collection in MongoDB, an entity that collects a set of documents. -## Index UID and name +An index is defined by an `uid` and contains the following information: +- One +- A set of relevancy rules (based on presets and customization) +- A list of synonyms and stop-words +- Rules for each field of a document -The `uid` of an index is its unique identifier. It is the `:uid` parameter on every `indexes/:uid` route. -The **name is the only mandatory information** needed on [index creation](/references/indexes.md#create-an-index). +#### Example -It helps you track your different indexes with a human-readable name. +In the case of a movie database, you probably have multiples categories. One for movie descriptions, one for actors, and one for reviews. Each one of these categories is represented by an index. -```json -{ - "name": "Movie", - "uid": "12345678", - "createdAt": "2019-11-20T09:40:33.711324Z", - "updatedAt": "2019-11-20T10:16:42.761858Z" - } -``` - -## Schema definition - -**A schema is a representation of the attributes of the document and how MeiliSearch will handle these fields.** - -In the schema definition, each attribute has one or multiple of the following properties : - -* **identifier**: The unique identifier of a document (e.g `id`) -* **indexed**: the search engine will search inside those fields. -* **displayed**: Fields that will appear in the returned documents. -* **ranked**: Ranked fields are used to create ranking rules. - -As a result, it is possible to have indexed fields that are not displayed or displayed fields that are not indexed. Depending on your documents and your needs, this could be useful. +Each of the indexes has information about the fields found in the documents, how MeiliSearch handles them, and their order of importance. An index also has its own synonyms, relevancy rules, and stop words. The information of one index never acts on another index. -::: danger -The only mandatory document field is the **identifier**. -::: +This means you can create synonyms for a `movie` index and different synonyms for a `clothes` index on the same MeiliSearch server. -### Fields order +## Index UID -The **order of the fields represents their relevance** in the search engine. +The `uid` of an index is its **unique** identifier. It is the `:index_uid` parameter found on every `indexes/:index_uid` route. -Thus, if a `title` field is defined before a `description` field, its content will be considered more relevant to a search query than that of a "description" field. - +The uid is set on [index creation](/references/indexes.md#create-an-index). After which you cannot create another index with the same `uid`. +The `uid` cannot be changed. -This means that if you search for something that matches in the `description` of the document _A_ and in the `title` of the document _B_, -the document _B_ will be considered better than the document _A_. You can read more about these rules [in the ranking section][1]. - -[1]: /guides/advanced_guides/ranking.md#ranking-rules - - -::: tip -The **order of the document fields has a huge impact on the relevancy**. So please order fields from the most important to the less. -::: - -### Example - -Take, for example, a movie collection. We have several fields: - -* **id**: The unique identifier of a movie. -* **title**: Title of the movie, will be showcased -* **description**: A description of the movie. -* **release_date**: The release date of the movies. -* **poster**: The URL of the poster or the image related to the movie. - -This is the **schema**: ```json { - "id": ["identifier", "indexed", "displayed"], - "title": ["indexed", "displayed"], - "description": ["indexed", "displayed"], - "release_date": ["ranked", "displayed"], - "poster": ["displayed"] -} + "uid": "movie", + "createdAt": "2019-11-20T09:40:33.711324Z", + "updatedAt": "2019-11-20T10:16:42.761858Z" + } ``` -The fields are [sorted by relevancy importance](/guides/main_concepts/indexes.md#fields-order). - -The `id` field is the unique identifier of a movie document. We want to display it (*displayed*) and give the possibility to users to search for the movie using his ID (*indexed*). - -The `title` field is an important field, which is why it is ranked second in the order of fields. We want -our search queries to search inside this field (*indexed*), and we also want to showcase it to the user (*displayed*). +## Primary key -The `description` field is exactly like the title field. Its 3rd position in the order of the fields puts it after `Title` in relevancy. +The primary key is a present in all documents. This field is composed of a primary key name and it's unique value. All documents in a given index have the same primary key attribute, with each a unique value. The primary key's attribute name **must** be known by the index. There are [multiple ways to set your primary key](/guides/main_concepts/documents.md#setting-the-primary-key). -The `release_date` field is not indexed because the user does not usually search for a precise date. With the *ranked* property, we can create a custom ranking rule -that will make the recent movies more relevant than the older ones in the search engine. +[More information about the document primary key](/guides/main_concepts/documents.md#primary-key) -Finally, the `poster` field contains the image URL to the movie's poster. We do not want to search inside the URL, that's why we omitted the `indexed` property. +## Relevancy rules -When no schema is given at the creation of an index, the schema is inferred. [Inference follows strict rules to index correctly](/guides/main_concepts/indexes.md#schema-definition). +Each index has its own relevancy rules. By default, all indexes come with the same applied in the same order. Once you add your first document, from the order of the keys in this document, the index will be able to record which key is more important than another. -## Identifier +For example, if your first document has the following keys in this order: `id, title, description, release_date`. A document containing the matching query in the `title` will be considered more relevant than a document where it is in `description`. -This property is given to the attribute that contains the **unique key of each document**. +On top of that, you can add your own rule to the ranking rules. For example, you can rank your movies by release date or per popularity. It's also possible to do both. And so on, depending on your available data and your user's needs. -If two documents added at the same time have the same ID, MeiliSearch will only save the last one. +[More information about ranking rules](/guides/main_concepts/relevancy.md) -If a document is added when there is already a document with the same ID in MeiliSearch, it will be updated. +## Synonyms and stop-words -::: tip -Documents identifiers are always converted into strings. Only strings and integers are valid identifiers. -It means that it is, for example, forbidden to use arrays or objects as an identifier. -::: +An index can contain a set of synonyms. If multiples words have an equivalent meaning in your dataset, you can decide to create a synonym for theses words. The search engine will give the same search results for any search with one of the associated words as a search query. The synonyms are linked to the given index, and they will not apply to any other index on the same MeiliSearch instance. -## Indexed +[More information about synonyms](/guides/advanced_guides/synonyms.md) -It defines the fields that will be used to find the documents. +An index can contain a list of stop-words. Those words will be ignored in documents and search queries. Typically those words could be redundant words of your chosen language, like `the` or `of` in English. +By adding those words in the stop-words list, you avoid having documents considered highly relevant because of the recurrence of one of those words in a document. -For example, an `url` field is not necessarily interesting for the search engine. So by omitting this property, the `url` will not be indexed but can still be returned inside the documents with the `displayed` property. +For example, on the following search query: `the great gatsby`, if the presence of the word `the` in a film review should not make the review more relevant. By adding `the` to the stop-word list, you avoid searching in documents containing only this stop word. -## Displayed +[More information about stop words](/guides/advanced_guides/stop_words.md) -It defines the fields that will be returned when querying MeiliSearch. A non-displayed field will never appear in the search response. +## Fields properties -For example, if the field contains a large amount of data, returning it would slow down server returns. By not storing it but still indexing it, the data will be used by the search engine but not returned in the documents. +In MeiliSearch, by default, every document field is searchable and returned on search queries. -## Ranked +The properties of the fields can be changed in the [settings](/references/settings.md). -This property allows the creation of a custom ranking rule. See [custom ranking rules](/guides/advanced_guides/ranking.md#custom-ranking-rules) for more information. +Fields can have the following properties: +- Searchable +- Displayed -## Inferred Schema +### Searchable fields -When creating an index, MeiliSearch expects a name for the index and a schema definition. **If no schema is defined before adding documents, the schema will be inferred**. +Searchable fields are all the fields of which attribute is present in the [searchable-attributes](/references/searchable_attributes.md) list. -The inference of the schema is based on the first document added to MeiliSearch. Then, by following the inference rules, the schema will be created. +When a fields attribute is present in the searchable-attribute list, the content of the field will be used by MeiliSearch to determine the relevancy of a document. +When a fields attribute is not present in the searchable-attribute list, while it is still stored, it will be ignored during a search. -### Inference rules +By default, all fields attributes are added to the searchable-attributes list. If a new document is added with a field never present in any other document, it will automatically be added to the searchable-attributes list. [This behavior can be changed](/references/accept_new_fields.md). -The schema is inferred this way: - - the **order of the fields** is the order of the schema fields - - the **identifier** is the first field containing `"id"` (case insensitive) - - every field is `indexed` and `displayed` +This list can be restricted to a certain set of attributes that you chose in the settings. That way, you can determine which fields should be ignored by MeiliSearch during a search. -The order of the fields inside the document will [determine their relevance in the search engine](/guides/main_concepts/indexes.md#fields-order). +### Displayed attributes -To determine the identifier, an attribute that contains the case insensitive string `id` is expected. Thus, `_id`, `myId`, for example, are correct keys. +Displayed fields are all the fields of which attribute is present in the [displayed-attributes](/references/displayed_attributes.md) list. -This field will receive the [identifier](/guides/main_concepts/indexes.md#identifier) property, so it should contain the unique identifier of a document. +When a fields attribute is present in the displayed-attribute list, the field will be present in the documents returned upon search. +When a fields attribute is not present in the displayed-attribute list, the field will be absent in the documents. -::: warning -If the `identifier` field is missing, the inference will not be completed, and the **documents will not be added**. -::: +By default, all fields attributes are added to the displayed-attributes list. If a new document is added with a field never present in any other document, it will automatically be added to the displayed-attributes list. [This behavior can be changed](/references/accept_new_fields.md). -Every other field will have the `indexed` and `displayed` properties. +This list can be restricted to a certain set of attributes that you chose in the settings. That way, you can determine which fields should be not be returned upon search. +### Data storing -::: tip -By default, MeiliSearch infers the schema from the **first** document sent. -::: +Every field is stored. This cannot be changed. That way if a field is not in the displayed-attributes list and not in the searchable-attributes list, it is still stored in MeiliSearch and could be added to either list at any time. diff --git a/guides/main_concepts/relevancy.md b/guides/main_concepts/relevancy.md new file mode 100644 index 0000000000..464a4c6d5a --- /dev/null +++ b/guides/main_concepts/relevancy.md @@ -0,0 +1,204 @@ +# Relevancy + +In MeiliSearch, the search responses are sorted according to a set of consecutive rules called **ranking rules**. When a search query is made, MeiliSearch uses a [bucket sort](/guides/advanced_guides/bucket_sort.md) to rank documents, each rule is applied to all documents that are considered equal according to the previous rule to break the tie. + +MeiliSearch proposes default ranking rules and has given them a default order as well. **This order can be modified: rules can be deleted and new ones can be added.** + +You can read a more [in-depth explanation about the algorithm and about the default ranking rules](https://github.com/meilisearch/MeiliSearch/issues/358). + +To be able to play with these rules and match them to the needs of your dataset, it is important to understand how each works and how to create new ones. + +## Ranking rules + +MeiliSearch has built-in ranking rules. These rules are essential to the relevance of the search engine. + +Each of the rules has a role in finding the right documents for the given search query. +The order in which the rules are set in the settings affects their importance. The first rule is the most important, then the second and so on. By default, MeiliSearch has these rules in a specific order which meets the most standard needs. This order can be changed in the settings. + + +Here is the list of all the rules that are executed in this specific order by default: + +#### 1. Typo + +The `typo` rule sorts by ascending numbers of typos. + +This means that a document that matches a word with fewer typos is more important than a document that matches with more typos. + +#### 2. Words + +The `words` rule sorts by comparing the number of query words in each matching document. + +The more words of the search query present in a document, the more important it is. Having multiple times the same word doesn't means a document is more important. + +::: warning + +As of today, all query words must be present in the returned documents. This rule does not impact the search results yet. + +::: + +#### 3. Proximity + +The `proximity` rule sorts according to the proximity of the query words found in the matching documents. + +The more the query words are near each other, and in the right order in a document the more this document is important. + +#### 4. Attribute + +The `attribute` rule sorts by ascending [attribute importance](/guides/main_concepts/relevancy.md#attributes-importance). + +#### 5. Words Position +The `wordsPosition` rule sorts according to the position of the query words in the attribute. The start is better than the end. + +#### 6. Exactness + +The `exactness` rule sorts by the similarity of the matched words with the query words. Words that are the same are better than prefixes. + +#### Examples + +:::: tabs + +::: tab Typo + +![Image from alias](../../public/image/vogli3.png) + +### Typo + +- `vogli`: 0 typo +- `volli`: 1 typo + +The `typo` rule sorts the results by ascending typos on matched query words. + +::: + +::: tab Proximity +![Image from alias](../../public/image/new_road.png) + +### Proximity + +The reason why `Creature` is listed before `Mississippi Grind` is because of the `proximity` rule.
+The smallest **distance** between the matching words in `creature` is smaller than the smallest **distance** between the matching words in `Mississippi Grind`. + +The `proximity` rule sorts by ascending order of distance length between two matches. +::: + +::: tab Attribute +![Image from alias](../../public/image/belgium.png) + +### Attribute + +`If It's Tuesday, This must be Belgium` is the first document because the matched word: `Belgium`, is found in the `title` attribute and not the `description`. + +The `attribute` rule sorts by ascending [attribute importance](/guides/main_concepts/relevancy.md#attributes-importance). + +::: + +::: tab Words position + +![Image from alias](../../public/image/belgium.png) + +### Word position + +`Gangsta` appears before `Dunkirk` because `Belgium` appears sooner in the attribute. + +The `word position` rule orders by ascending matching word's index number. + +::: + +::: tab Exactness +![Image from alias](../../public/image/knight.png) + +### Exactness + +`Knight Moves` is displayed before `Knights of Badassdom` because `Knight` is a complete word, the same as the search query. While with `Knights`, the search query is a prefix of the query word. + +::: + +:::: + +## Order of the rules + +By default, the built-in rules are in a specific order that MeiliSearch consider the most suitable for common needs. + +```json +[ + "typo", + "words", + "proximity", + "attribute", + "wordsPosition", + "exactness" +] +``` +Depending on your needs, you might want to change the order of the rules. +You can use the [settings route](/references/ranking_rules.md#update-ranking-rules) of your index to do so. + +## Adding your rules + +New rules can be added to the existing list at any time and anywhere in the existing order. + +A custom rule lets you create a descending or ascending sorting rule on a given attribute.
+To create a rule, you need to communicate the attribute on which the rule is created and the order in which it will be sorted: `asc(attribute_name)` or `desc(attribute_name)`. + +This rule must be added to the existing list of ranking rules using the [settings route](/references/ranking_rules.md#update-ranking-rules). + +#### Example + +Let's say we have a dataset of movies. The documents contain the fields `release_date` with a timestamp as value, and `movie_ranking` an integer that represents its ranking. + +``` +desc(release_date) +``` +This will create a rule that makes recent movies more relevant than older ones. + +``` +asc(movie_ranking) +``` +This will create a rule that makes movies with a good rank more relevant than others. + +To add this newly created rule to the existing ranking rule, using the [settings route](/references/ranking_rules.md#update-ranking-rules), you need to add the rule in the existing order array. + +```json +[ + "typo", + "attribute", + "proximity", + "words", + "wordsPosition", + "exactness", + "desc(release_date)", + "asc(movie_ranking)" +] +``` + +## Attributes importance + +In a dataset, some fields are more relevant to the search than others. A `title`, for example, has a value more meaningful to a movie search than its `description` or its `director` name. + +By default, MeiliSearch will determine the order of importance of the attributes based on the order in which they appear in the first document added. Then, each new attribute present in new documents will be added at the end of this ordered list. + +If you wish to specify the order of the attributes you can either define them in the settings, or set the correct order on the first document indexed in MeiliSearch. + +### Changing the attributes order + +Possibly, you want to change the order after the documents have been added. This is still very possible. + +When a document is added to MeiliSearch, every new attribute inside will be added to two lists : +- The [searchable attributes list](/references/searchable_attributes.md): attributes in which to search for matching query words. +- The [displayed attributes list](/references/displayed_attributes.md): attributes in a document that are shown to the user. + +The one that concerns this section is the searchable attributes list. + +This list is **ordered**. This means that the order in which the attributes appear in the list will determine their relevancy. The earlier they appear in that list, the more important they are. + +To change this order, you need to send the sorted-list, in the order you want, using the settings route. + +#### Example + +```json +[ + "title", + "description", + "director" +] +``` +With this new order, the matching words found in `title` will make the document more relevant than one with the same matching words found in `description` or `director`. diff --git a/guides/main_concepts/search.md b/guides/main_concepts/search.md index 99744a17ac..cb4245bcaa 100644 --- a/guides/main_concepts/search.md +++ b/guides/main_concepts/search.md @@ -1,34 +1,34 @@ # Search -### Finding documents +## Finding documents When the query input is received, MeiliSearch is building a more complex query taking into account *typos*, n-grams, and *synonyms* if configured. - _Typos_ - For example, if the query string is `botman`, MeiliSearch will return documents containing `batman`. [Read more about the typo rules](/guides/advanced_guides/typotolerance.md). -- _N-grams_ - MeiliSearch is set to merge multi-words query into a single word. Ex: Searching for `bat mobile` will returns documents containing `batmobile`. Each words of the query will also be split in many ways so MeiliSearch can returns documents containing `new york` when querying for `newyork`. +- _N-grams_ - MeiliSearch is set to merge multi-words queries into a single word when searching for matching documents. Ex: Searching for `bat mobile` will return documents containing `batmobile`. Each word of the query will also be split in many ways so MeiliSearch can returns documents containing `new york` when querying for `newyork`. [Read more about Concatenate and Split Queries](/guides/advanced_guides/concat.md) - _Synonyms_ - MeiliSearch will return documents containing `batman` when searching for `the dark knight`. Synonyms are not set by default because they are domain-specific. [Read more about synonyms](/guides/advanced_guides/synonyms.md). -### Sorting documents +## Sorting documents > It would not be a search engine if there was not a notion of relevancy in the results returned. -When all documents corresponding to the request have been collected, *MeiliSearch sorts the documents* using a bucket sort. +When all documents corresponding to the request have been collected, *MeiliSearch sorts the documents* using a [bucket sort](/guides/advanced_guides/bucket_sort.md) and a list of built-in [ranking rules](/guides/main_concepts/relevancy.md#ranking-rules). -A bucket sort can be described as an ordered set of sorting criteria. All the documents are sorted within the first criterion, then documents that can not be distinguished will be sorted using the second criterion, and so on. Thus, every document is not sorted for every criterion, which induces a reduced compute time. -Here is the ordered list of the default criteria used in MeiliSearch: +A bucket sort can be described as an ordered set of sorting rules. All the documents are sorted within the first rule, then documents that can not be distinguished will be sorted using the second rule, and so on. Thus, every document is not sorted for every rule, which induces a reduced compute time. +Here is the ordered list of the default ranking rules used in MeiliSearch: - _Number of Typos_ - The fewer typos there are between the query words and the document words, the better is the document. - _Number of Words_ - A document containing more of the query words will be more important than one that contains less. - _Words Proximity_ - The closer the query words are in the document, the better is the document. - _Attribute_ - A document containing the query words in a more important attribute than another document is considered better. - _Position_ - A document containing the query words at the start of an attribute is considered better than a document that contains them at the end. -- _Exact_ - A document containing the query words in their exact form, not only a prefix of them, is considered better. +- _Exactness_ - A document containing the query words in their exact form, not only a prefix of them, is considered better. -You can change the order of these criteria, but you should know that these work well for a majority of use-cases. You can also add your own criteria for domains specific needs. For example, you could add a date sorting criterion when searching into documents where the date of publication is essential. [Read more about ranking](/guides/advanced_guides/ranking.md#custom-ranking-rules) to see how to add custom criteria. +You can change the order of these rules, but you should know that these work well for a majority of use-cases. You can also add your own rules for domains specific needs. For example, you could add a date sorting criterion when searching into documents where the date of publication is essential. [Read more about ranking](/guides/main_concepts/relevancy.md) to see how to add custom rules. -### Search options +## Search options -A lot of configuration can be made at *query-time*. Here are some usage examples: +A lot of configuration can be made at *query-time* using the [search paramaters](/guides/advanced_guides/search_parameters.md). Here are some usage examples: - _Pagination_ - Results can be paginated using the query params `limit` and `offset` @@ -36,14 +36,12 @@ A lot of configuration can be made at *query-time*. Here are some usage examples $ curl -X GET 'http://localhost:7700/indexes/4eb345y7/search?q=batman&limit=5&offset=10' ``` -- _Search only in specific attributes_ - Search can be configured at query time. For example, you can search only in selected attributes. - -```bash -$ curl -X GET 'https://localhost:7700/indexes/4eb345y7/search?q=moliere&attributesToSearchIn=title' -``` - - _Filters_ - You can build a faceted search using the query param `filter`. It will only return the specific filtered documents. ```bash $ curl -X GET 'https://localhost:7700/indexes/4eb345y7/search?q=batman&filters=director:Christopher%20Nolan' ``` + +### Try out + +Once you have added your data to Meilisearch, **try out the search** experience using the available [web interface](/guides/advanced_guides/web_interface.md) at your MeiliSearch address in any browser. diff --git a/package.json b/package.json index 50f41e0ff6..0e171a16be 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "mermaid": "^8.4.8", "vuepress": "^1.3.1", "vuepress-plugin-seo": "^0.1.2", + "vue-directive-tooltip": "^1.6.3", "vuepress-plugin-sitemap": "^2.3.1" }, "devDependencies": { diff --git a/public/image/belgium.png b/public/image/belgium.png new file mode 100644 index 0000000000..4f9921fe29 Binary files /dev/null and b/public/image/belgium.png differ diff --git a/public/image/knight.png b/public/image/knight.png new file mode 100644 index 0000000000..f54d464422 Binary files /dev/null and b/public/image/knight.png differ diff --git a/public/image/new_house.png b/public/image/new_house.png new file mode 100644 index 0000000000..f3e1dd3b3a Binary files /dev/null and b/public/image/new_house.png differ diff --git a/public/image/new_road.png b/public/image/new_road.png new file mode 100644 index 0000000000..c5f60ffcb8 Binary files /dev/null and b/public/image/new_road.png differ diff --git a/public/image/vogli3.png b/public/image/vogli3.png new file mode 100644 index 0000000000..b5153b7fc4 Binary files /dev/null and b/public/image/vogli3.png differ diff --git a/public/image/words.png b/public/image/words.png new file mode 100644 index 0000000000..8627cab286 Binary files /dev/null and b/public/image/words.png differ diff --git a/references/README.md b/references/README.md index 7b05cb95a9..2d0df5b6d7 100644 --- a/references/README.md +++ b/references/README.md @@ -2,23 +2,15 @@ Welcome to the beta version of the MeiliSearch API documentation. -This is our first draft guide in the limbo of the http MeiliSearch routes. -You can navigate into the documentation using the sidebar or by using the search bar above. - -If you spot any typo or any error in the documentation like a miss-documented response body for example, -please contact us using the little chat box at the bottom right of this page. - -Thank you for your interest and have fun with your HTTP client 🌍 - ::: warning -The documentation is written for the latest stable release: [v0.8.4](https://github.com/meilisearch/MeiliSearch/releases/tag/v0.8.4). -v0.9.0 is on its way and will bring significant changes in the settings API. +The documentation is written for the latest stable release: [v0.9.0](https://github.com/meilisearch/MeiliSearch/releases/tag/v0.9.0). + ::: -# Headers +## Headers -## Recommended Headers +### Recommended Headers #### Content Type @@ -26,22 +18,6 @@ All request and response body are in `JSON`. Always specify it in your header. `Content-Type: application/json` -#### Encoding - -You can compress the data you send to your MeiliSearch API. We recommend using it when you add a very large number of documents on the [add documents route](/references/documents.md#add-or-update-documents) - -`Content-Encoding: gzip` - -We support `gzip`, `brotli` and `deflate`. - -#### Decoding - -You can request compressed data from MeiliSearch API. We recommend using it on [search route](/references/search.md#search-in-an-index). But only if you have an unusually long response time due to the size of the response. - -`Accept-Encoding: gzip, deflate` - -We support `gzip`, `brotli` and `deflate`. - #### Authentication For almost all routes, you need to be recognized by the server to check your permissions. Add your API key to your headers. @@ -49,9 +25,7 @@ Please read the [advanced part about keys](/guides/advanced_guides/keys.md) and `X-Meili-API-Key: $API_KEY` ----- - -# Errors & Status Code +## Errors & Status Code #### Success @@ -65,10 +39,8 @@ Please read the [advanced part about keys](/guides/advanced_guides/keys.md) and **205 - Reset Content**: All the resources have been deleted - #### Error - **400 - Bad Request**: The request was unacceptable, often due to missing a required parameter. **401 - Unauthorized**: No valid API key provided. @@ -86,11 +58,9 @@ Response body: } ``` ----- +## Asynchronous Updates -# Asynchronous Updates - -In a lot of cases you will receive as server response a simple JSON with only an `updateId` attribute: +MeiliSearch is an **asynchronous API**. It means that, in a lot of cases, you will receive as server response a simple JSON with only an `updateId` attribute: ```json { @@ -98,4 +68,7 @@ In a lot of cases you will receive as server response a simple JSON with only an } ``` -MeiliSearch is an **asynchronous API**. It means that the API does not behave as you would typically expect when handling the request's responses. See [advanced guide](/guides/advanced_guides/asynchronous_updates.md) for more information. +This kind of successful response indicates that the operation has been taken into account, but it may not have been executed yet.
+You can check the status of the operation via the `updateId` and the [get update status route](/references/updates.md). + +See more information about [asynchronous updates](/guides/advanced_guides/asynchronous_updates.md). diff --git a/references/accept_new_fields.md b/references/accept_new_fields.md new file mode 100644 index 0000000000..fd1ced69f6 --- /dev/null +++ b/references/accept_new_fields.md @@ -0,0 +1,75 @@ +# Accept new fields + +`accept-new-fields` determines what MeiliSearch should do with new fields found during documents addition. + +When `accept-new-fields` is set to **true** (*default*), every new field will be added to the [searchable-attributes](/references/searchable_attributes.md) and the [displayed-attributes](/references/displayed_attributes.md) list.
+When `accept-new-fields` set to **false**, they will be stored but neither searchable or displayed on the returned documents. + +::: tip + +When `accept-new-fields` is false, the fields are still stored. This means you can add them to the [searchable attributes](/references/searchable_attributes.md) list or the [displayed attributes](/references/displayed_attributes.md) list at any time. + +::: + +Child route of the [settings route](/references/settings.md). + +Stop-words can also be updated directly through the [add settings route](/references/settings.md#add-settings) at the same time than the other settings. + +## Get the accept-new-fields value + + + +Get if MeiliSearch accepts new fields for an index. + +#### Path Variables + +| Variable | Description | +|-------------------|-----------------------| +| **index_uid** | The index UID | + +### Example + +```bash +$ curl \ + -X GET 'http://localhost:7700/indexes/movies/settings/accept-new-fields' +``` + +#### Response: `200 Ok` + + +```json +false +``` + +## Update the accept-new-fields value + + + +Update if MeiliSearch should accept new fields for an index. + +#### Path Variables + +| Variable | Description | +|-------------------|-----------------------| +| **index_uid** | The index UID | + +#### Body + +**Boolean** when set to `true`, each field found in the newly added documents will be [searchable](/references/searchable_attributes.md) and [displayed](/references/displayed_attributes.md). When set to `false`, they will only be stored. + +### Examples + +```bash +$ curl \ + -X GET 'http://localhost:7700/indexes/movies/settings/accept-new-fields' \ + --data 'false' +``` + +#### Response: `202 Accepted` + +```json +{ + "updateId": 1 +} +``` +This `updateId` allows you to [track the current update](/references/updates.md). diff --git a/references/displayed_attributes.md b/references/displayed_attributes.md new file mode 100644 index 0000000000..d369550ba1 --- /dev/null +++ b/references/displayed_attributes.md @@ -0,0 +1,110 @@ +# Displayed attributes + +Displayed attributes are the fields contained in each matching document. + +Child route of the [settings route](/references/settings.md). + +Displayed attributes can also be updated directly through the [add settings route](/references/settings.md#add-settings) at the same time than the other settings. + +## Get searchable attributes + + + +Get the displayed attributes of an index. + +#### Path Variables + +| Variable | Description | +|-------------------|-----------------------| +| **index_uid** | The index UID | + +### Example + +```bash +$ curl \ + -X GET 'http://localhost:7700/indexes/movies/settings/displayed-attributes' +``` + +#### Response: `200 Ok` + +List the settings. + +```json +[ + "title", + "description", + "release_date", + "rank", + "poster" +] +``` + +## Update displayed attributes + + + +Update the displayed attributes of an index. + +#### Path Variables + +| Variable | Description | +|-------------------|-----------------------| +| **index_uid** | The index UID | + +#### Body + +List of displayed attributes of an index. + +### Examples + +```bash +$ curl \ + -X GET 'http://localhost:7700/indexes/movies/settings/displayed-attributes' \ + --data '[ + "title", + "description", + "release_date", + "rank", + "poster" +]' +``` + +#### Response: `202 Accepted` + +```json +{ + "updateId": 1 +} +``` +This `updateId` allows you to [track the current update](/references/updates.md). + +## Reset displayed attributes + + + +Reset the displayed attributes of the index to the default value. + +#### Default value + +All attributes found in the documents added to the index. + +#### Path Variables + +| Variable | Description | +|-------------------|-----------------------| +| **index_uid** | The index UID | + +#### Example +```bash +$ curl \ + -X DELETE 'http://localhost:7700/indexes/movies/settings/displayed-attributes' +``` + +#### Response: `202 Accepted` + +```json +{ + "updateId": 1 +} +``` +This `updateId` allows you to [track the current update](/references/updates.md). diff --git a/references/distinct_attribute.md b/references/distinct_attribute.md new file mode 100644 index 0000000000..25457f32e2 --- /dev/null +++ b/references/distinct_attribute.md @@ -0,0 +1,94 @@ +# Distinct attribute + +[Distinct attribute](/guides/advanced_guides/distinct.md) is a field where its value will always be unique in the returned documents. + +Child route of the [settings route](/references/settings.md). + +Distinct attribute can also be updated directly through the [add settings route](/references/settings.md#add-settings) at the same time than the other settings. + +## Get distinct attribute + + + +Get the distinct attribute field of an index. + +#### Path Variables + +| Variable | Description | +|-------------------|-----------------------| +| **index_uid** | The index UID | + +### Example + +```bash +$ curl \ + -X GET 'http://localhost:7700/indexes/movies/settings/distinct-attribute' +``` + +#### Response: `200 Ok` + +```json +"movie_id" +``` + +## Update distinct attribute + + + +Update the distinct attribute field of an index. + +#### Path Variables + +| Variable | Description | +|-------------------|-----------------------| +| **index_uid** | The index UID | + +#### Body + +String of the field's name. + +### Examples + +```bash +$ curl \ + -X GET 'http://localhost:7700/indexes/movies/settings/distinct-attribute' \ + --data 'movie_id' +``` + +#### Response: `202 Accepted` + +```json +{ + "updateId": 1 +} +``` +This `updateId` allows you to [track the current update](/references/updates.md). + +## Reset distinct attribute + + + +Reset the distinct attribute field of an index to its default value. + +**Default value**: `null` + +#### Path Variables + +| Variable | Description | +|-------------------|-----------------------| +| **index_uid** | The index UID | + +#### Example +```bash +$ curl \ + -X DELETE 'http://localhost:7700/indexes/movies/settings/distinct-attribute' +``` + +#### Response: `202 Accepted` + +```json +{ + "updateId": 1 +} +``` +This `updateId` allows you to [track the current update](/references/updates.md). diff --git a/references/documents.md b/references/documents.md index 7d96425321..55602c2ed9 100644 --- a/references/documents.md +++ b/references/documents.md @@ -2,23 +2,22 @@ ## Get one document - - -Get one document using its unique identifier. + +Get one document using its unique id. #### Path Variables | Variable | Description | |-------------------|-----------------------| -| **uid** | The index UID | -| **identifier** | [The unique identifier of the document](/guides/main_concepts/indexes.md#identifier) | +| **index_uid** | The index UID | +| **document_id** | [The document id](/guides/main_concepts/documents.md#primary-key) | ### Example ```bash $ curl \ - -X GET 'http://localhost:7700/indexes/12345678/documents/25684' + -X GET 'http://localhost:7700/indexes/movies/documents/25684' ``` #### Response: `200 Ok` @@ -35,23 +34,21 @@ $ curl \ ## Get documents - + -Get documents by batch.
-Using the query parameters `offset` and `limit`, you can browse through all your documents. +Get documents by batch. -Documents are ordered in a specific way by MeiliSearch (the hash of the identifier). +Using the query parameters `offset` and `limit`, you can browse through all your documents. -::: danger -This route is a non-optimized route, it can be a little bit slow to answer. +::: note +Documents are ordered by MeiliSearch depending on the hash of their id. ::: - #### Path Variables | Variable | Description | |-------------------|-----------------------| -| **uid** | The index UID | +| **index_uid** | The index UID | #### Query Parameters @@ -65,7 +62,7 @@ This route is a non-optimized route, it can be a little bit slow to answer. ```bash $ curl \ - -X GET 'http://localhost:7700/indexes/12345678/documents?limit=2' + -X GET 'http://localhost:7700/indexes/movies/documents?limit=2' ``` #### Response: `200 Ok` @@ -90,25 +87,31 @@ $ curl \ ## Add or replace documents - + -Insert a list of documents or replace them if they already exist based on [their unique identifiers](/guides/main_concepts/indexes.md#schema-definition). +Add a list of documents or replace them if they already exist. -In case of a replacement, the old document will be completely erased and replaced by the new one.
-For a partial update, check out the [add or update documents route](/references/documents.md#add-or-update-documents). +If you send an already existing document (same [id](/guides/main_concepts/documents.md#primary-key)) the **whole existing document** will be overwritten by the new document. Fields previously in the document not present in the new document are removed. -The `updateId` returned by this route can be sent to the [update status route](/references/updates.md#get-an-update-status) to retrieve information about its progress. +For a partial update of the document see [add or update documents](/references/documents.md#add-or-update-documents). #### Path Variables | Variable | Description | |-------------------|-----------------------| -| **uid** | The index UID | +| **index_uid** | The index UID | + +#### Query Parameters + +| Query Parameter | Description | Default Value | +|---------------------------|--------------------------------------|:-------------:| +| **primaryKey** | [The unique primary key of the document](/guides/main_concepts/documents.md#primary-key) | none | + +If you want to set the **primary key** of your index through this route, it only has to be done **the first time you add documents** to the index. After which it will be ignored if given. #### Body -The body is composed of a **JSON array** of documents. The fields of each document correspond to those in the index schema. -You can [read more about fields and schemas](/guides/main_concepts/indexes.md#schema-definition). +The body is composed of a **JSON array** of documents. ::: warning Documents fields which are not known to the index schema will be ignored. @@ -130,7 +133,7 @@ Documents fields which are not known to the index schema will be ignored. ```bash $ curl \ - -X POST 'http://localhost:7700/indexes/12345678/documents' \ + -X POST 'http://localhost:7700/indexes/movies/documents' \ --data '[{ "id": 287947, "title": "Shazam", @@ -151,29 +154,32 @@ This `updateId` allows you to [track the current update](/references/updates.md) ## Add or update documents - + -Insert a list of documents or update them if they already exist based on [their unique identifiers](/guides/main_concepts/indexes.md#schema-definition). +Add a list of documents and update them if they already. -In case of an update, the old document will be only partially updated according to the fields in the request body. It will not be overwritten entirely.
-To completely overwrite a document, check out the [add and replace documents route](/references/documents.md#add-or-replace-documents). +If you send an already existing document (same [id](/guides/main_concepts/documents.md#primary-key)) the old document will be only partially updated according to the fields of the new document. Thus, any fields not present in the new document are kept and remained unchanged. -The `updateId` returned by this route can be sent to the [update status route](/references/updates.md#get-an-update-status) to retrieve information about its progress. +To completely overwrite a document, check out the [add and replace documents route](/references/documents.md#add-or-replace-documents). #### Path Variables | Variable | Description | |-------------------|-----------------------| -| **uid** | The index UID | +| **index_uid** | The index UID | -#### Body +If you want to set the **primary key** of your index through this route, it only has to be done **the first time you add documents** to the index. After which it will be ignored if given. -The body is composed of a **JSON array** of documents. The fields of each document correspond to those in the index schema. -You can [read more about fields and schemas](/guides/main_concepts/indexes.md#schema-definition). +#### Query Parameters -::: warning -Documents fields which are not known to the index schema will be ignored. -::: +| Query Parameter | Description | Default Value | +|---------------------------|--------------------------------------|:-------------:| +| **primaryKey** | The [primary key](/guides/main_concepts/documents.md#primary-key) of the documents | none | + + +#### Body + +The body is composed of a **JSON array** of documents. ```json [ @@ -188,9 +194,10 @@ Documents fields which are not known to the index schema will be ignored. ```bash $ curl \ - -X POST 'http://localhost:7700/indexes/12345678/documents' \ + -X POST 'http://localhost:7700/indexes/movies/documents' \ + -d 'primaryKey=movieskud' --data '[{ - "id": 287947, + "movieskud": 287947, "title": "Shazam ⚡️" }]' ``` @@ -206,24 +213,23 @@ This `updateId` allows you to [track the current update](/references/updates.md) ## Delete all documents - + Delete all documents in the specified index. -The `updateId` returned by this route can be sent to the [update status route](/references/updates.md#get-an-update-status) to retrieve information about its progress. #### Path Variables | Variable | Description | |-----------|-----------------------| -| **uid** | The index UID | +| **index_uid** | The index UID | ### Example ```bash curl \ - -X DELETE 'http://localhost:7700/indexes/12345678/documents' + -X DELETE 'http://localhost:7700/indexes/movies/documents' ``` #### Response: `202 Accepted` @@ -237,24 +243,22 @@ This `updateId` allows you to [track the current update](/references/updates.md) ## Delete one document - + -Delete one document based on its unique identifier.
-You can read more about [identifiers and schemas](/guides/main_concepts/indexes.md#schema-definition). - -The `updateId` returned by this route can be sent to the [update status route](/references/updates.md#get-an-update-status) to retrieve information about its progress. +Delete one document based on its unique id.
#### Path Variables | Variable | Description | |-----------|-----------------------| -| **uid** | The index UID | +| **index_uid** | The index UID | +| **document_id** | [The document id](/guides/main_concepts/documents.md#primary-key) | ### Example ```bash curl \ - -X DELETE 'http://localhost:7700/indexes/12345678/documents/25684' + -X DELETE 'http://localhost:7700/indexes/movies/documents/25684' ``` #### Response: `202 Accepted` @@ -267,27 +271,21 @@ The `updateId` returned by this route can be sent to the [update status route](/ This `updateId` allows you to [track the current update](/references/updates.md). - - ## Delete documents - - -Delete a selection of documents based on array of identifiers.
-You can read more about [identifiers and schemas](/guides/main_concepts/indexes.md#schema-definition). - -The `updateId` returned by this route can be sent to the [update status route](/references/updates.md#get-an-update-status) to retrieve information about its progress. + +Delete a selection of documents based on array of document id's.
#### Path Variables | Variable | Description | |-----------|-----------------------| -| **uid** | The index UID | +| **index_uid** | The index UID | #### Body -The body must be a **Json Array** with the unique identifiers of the documents to delete. +The body must be a **JSON Array** with the unique id's of the documents to delete. ```json [23488, 153738, 437035, 363869] @@ -297,7 +295,7 @@ The body must be a **Json Array** with the unique identifiers of the documents t ```bash curl \ - -X POST 'http://localhost:7700/indexes/12345678' \ + -X POST 'http://localhost:7700/indexes/movies/delete-batch' \ --data '[ 23488, 153738, diff --git a/references/indexes.md b/references/indexes.md index cde845cb5b..e7b490b2e7 100644 --- a/references/indexes.md +++ b/references/indexes.md @@ -19,162 +19,129 @@ $ curl \ ```json [ { - "name": "Movie", - "uid": "12345678", + "uid": "movies", + "identifier": "movie_id", + "createdAt": "2019-11-20T09:40:33.711324Z", + "updatedAt": "2019-11-20T10:16:42.761858Z" + }, + { + "uid": "movie_reviews", + "identifier": null, "createdAt": "2019-11-20T09:40:33.711324Z", "updatedAt": "2019-11-20T10:16:42.761858Z" } + ] ``` ## Get one index - + -Get the index relative information. +Get information about an index. #### Path Variables | Variable | Description | |-----------|-----------------------| -| **uid** | The index UID | +| **index_uid** | The index UID | ### Example ```bash $ curl \ - -X GET 'http://localhost:7700/indexes/12345678' + -X GET 'http://localhost:7700/indexes/movies' ``` #### Response: `200 Ok` ```json { - "name": "Movie", - "uid": "12345678", + "uid": "movies", + "identifier": "movie_id", "createdAt": "2019-11-20T09:40:33.711324Z", "updatedAt": "2019-11-20T10:16:42.761858Z" } ``` - - ## Create an index Create an index. -The [schema](/guides/main_concepts/indexes.md) definition is optionally send through the body. -If no [schema](/guides/main_concepts/indexes.md) has been defined when the first document is sent it will be [infered based on that document](/guides/main_concepts/indexes.md#schema-definition). - -A randomly generated UID will be returned. It's associated to the new index. This UID will be essential to make all request over the created index. - +This route takes as parameter an unique `uid` and **optionally** the the [primary key](/guides/main_concepts/indexes.md#primary-key). #### Body -The body take at least an index name. -The body accepts an optional [schema](/guides/main_concepts/indexes.md) definition of your documents. +| Variable | Description | +|-----------|-----------------------| +| **index_uid** | The index unique identifier (*mandatory*)| +| **primaryKey** | The of the documents | ```json { - "name": "Movies", - "schema": { - "id": ["identifier", "indexed", "displayed"], - "title": ["indexed", "displayed"], - "description": ["indexed", "displayed"], - "release_date": ["displayed"], - "cover": ["displayed"] - } + "uid": "movies", + "identifier": "movie_id" } ``` -The index can be created without any schema. - -If no schema has been defined when the first document is added, the schema will be [infered based upon the first document](/guides/main_concepts/indexes.md#schema-definition). - ### Example ```bash $ curl \ -X POST 'http://localhost:7700/indexes' \ --data '{ - "name": "Movies", - "schema": { - "id": ["identifier", "indexed", "displayed"], - "title": ["displayed", "indexed"], - "overview": ["displayed", "indexed"], - "release_date": ["displayed"], - "poster": ["displayed"] - } + "uid": "movies", + "identifier": "movie_id" }' ``` -If no schema has been defined: #### Response: `201 created` ```json { - "name": "Movie", - "uid": "12345678", - "schema": null, + "uid": "movies", + "identifier": "movie_id", "createdAt": "2019-11-20T09:40:33.711476Z", "updatedAt": "2019-11-20T09:40:33.711476Z" } ``` -If schema has been given: -#### Response: `201 created` - -```json -{ - "updateId": 1, - "name": "Movie", - "uid": "12345678", - "schema": { - "id": ["identifier", "indexed", "displayed"], - "title": ["displayed", "indexed"], - "overview": ["displayed", "indexed"], - "release_date": ["displayed"], - "poster": ["displayed"] - }, - "createdAt": "2019-11-20T09:40:33.711476Z", - "updatedAt": "2019-11-20T09:40:33.711476Z" -} -``` This `updateId` allows you to [track the current update](/references/updates.md). ## Update an index - + -Update an index name. +Update an index. #### Path Variables -| Variable | Description | -|-------------------|-----------------------| -| **uid** | The index UID | +| Variable | Description | +|-----------|-----------------------| +| **index_uid** | The index UID | + #### Body -The body accepts a new name for the given index. +| Variable | Description | +|-------------------|-----------------------| +| **primaryKey** | The of the documents | -```json -{ - "name": "Movies" -} -``` +The `uid` of an index cannot be changed. The document identifier `identifier` can be added if it does not already exist (to now if it has ben set, use [the get index route](/references/indexes.md#get-one-index)). + +[There are many ways in MeiliSearch to set the primary key](/guides/main_concepts/documents.md#primary-key). ### Example ```bash $ curl \ - -X PUT 'http://localhost:7700/indexes/12345678' \ + -X PUT 'http://localhost:7700/indexes/movie_review' \ --data '{ - "name": "Movies" + "identifier" : "movie_review_id" }' ``` @@ -182,8 +149,8 @@ $ curl \ ```json { - "name": "Movie", - "uid": "12345678", + "uid": "movie_review", + "identifier" : "movie_review_id", "createdAt": "2019-11-20T09:40:33.711324Z", "updatedAt": "2019-11-20T10:16:42.761858Z" } @@ -192,7 +159,7 @@ $ curl \ ## Delete an index - + Delete an index. @@ -201,176 +168,13 @@ Delete an index. | Variable | Description | |-------------------|-----------------------| -| **uid** | The index UID | +| **index_uid** | The index UID | ### Example ```bash $ curl \ - -X DELETE 'http://localhost:7700/indexes/12345678' + -X DELETE 'http://localhost:7700/indexes/movie' ``` #### Response: `204 No Content` - - -## Get one index schema - - - -Get the schema of one index. - - -#### Path Variables - -| Variable | Description | -|-----------|-----------------------| -| **uid** | The index UID | - -#### Query Parameters - -| Query Parameter | Description | Default Value | -|-----------------|-------------|:-------------:| -| **raw** | Change the format of response | false | - -### Example - -```bash -$ curl \ - -X GET 'http://localhost:7700/indexes/12345678/schema' -``` - - -#### Response: `200 Ok` -```json -{ - "id": ["identifier", "indexed", "displayed"], - "title": ["displayed", "indexed"], - "overview": ["displayed", "indexed"], - "release_date": ["displayed"], - "poster": ["displayed"] -} -``` - -If `raw` query parameter has been set to `true`: -```json -{ - "identifier": "id", - "attributes": { - "id": { - "displayed": true, - "indexed": true, - "ranked": false - }, - "title": { - "displayed": true, - "indexed": true, - "ranked": false - }, - "overview": { - "displayed": true, - "indexed": true, - "ranked": false - }, - "release_date": { - "displayed": true, - "indexed": false, - "ranked": false - }, - "poster": { - "displayed": true, - "indexed": false, - "ranked": false - } - } -} -``` - -## Update an index schema - - - -Update an index schema. - - -#### Path Variables - -| Variable | Description | -|-------------------|-----------------------| -| **uid** | The index UID | - -#### Query Parameters - -| Query Parameter | Description | Default Value | -|-----------------|-------------|:-------------:| -| **raw** | Change the format of response | false | - -#### Body - -The body accepts a new schema for the given index. - -```json -{ - "id": ["identifier", "indexed", "displayed"], - "title": ["displayed", "indexed"], - "overview": ["displayed", "indexed"], - "release_date": ["displayed", "ranked"], - "poster": ["displayed"] -} -``` - -If `raw` query parameter has been set to `true`: -```json -{ - "identifier": "id", - "attributes": { - "id": { - "displayed": true, - "indexed": true, - "ranked": false - }, - "title": { - "displayed": true, - "indexed": true, - "ranked": false - }, - "overview": { - "displayed": true, - "indexed": true, - "ranked": false - }, - "release_date": { - "displayed": true, - "indexed": false, - "ranked": false - }, - "poster": { - "displayed": true, - "indexed": false, - "ranked": false - } - } -} -``` - -### Example - -```bash -$ curl \ - -X PUT 'http://localhost:7700/indexes/12345678/schema' \ - --data '{ - "id": ["identifier", "indexed", "displayed"], - "title": ["displayed", "indexed"], - "overview": ["displayed", "indexed"], - "release_date": ["displayed", "ranked"], - "poster": ["displayed"] -}' -``` - -#### Response: `202 Accepted` - -```json -{ - "updateId": 1, -} -``` -This `updateId` allows you to [track the current update](/references/updates.md). diff --git a/references/keys.md b/references/keys.md index d07b2cfb61..3989832397 100644 --- a/references/keys.md +++ b/references/keys.md @@ -1,175 +1,33 @@ # Keys -## Get keys - - - -Get all API keys information. - - -### Example - -```bash -$ curl \ - -X GET 'http://localhost:7700/keys' -``` - -#### Response: `200 Ok` - -```json -[ - { - "key": "VO6UTDBW5S4YJCL17KAXNZP0HQIG23E9R8MF", - "description": "search key", - "acl": [ - "documentsRead" - ], - "indexes": [ - "movies" - ], - "createdAt": "2019-11-21T09:59:19.016355Z", - "updatedAt": "2019-11-21T09:59:19.016355Z", - "expiresAt": "2019-11-21T10:42:08Z", - "revoked": false - } -] -``` - -## Get one key - - - -Get information for a given API key. - - -### Example - -```bash -$ curl \ - -X GET 'http://localhost:7700/keys/VO6UTDBW5S4YJCL17KAXNZP0HQIG23E9R8MF' -``` - -#### Response: `200 Ok` - -```json -{ - "key": "VO6UTDBW5S4YJCL17KAXNZP0HQIG23E9R8MF", - "description": "search key", - "acl": [ - "documentsRead" - ], - "indexes": [ - "movies" - ], - "createdAt": "2019-11-21T09:59:19.016355Z", - "updatedAt": "2019-11-21T09:59:19.016355Z", - "expiresAt": "2019-11-21T10:42:08Z", - "revoked": false -} -``` +Each instance of MeiliSearch has three keys: a master, a private, and a public. Each key has a given set of permissions on the API routes. -## Create Key - - - -Create an API key. - -### Body - -| Variable | Value | -|---------------------|---------------| -| **description** | description of the key | -| **acl** | [List of ACL's](/guides/advanced_guides/keys.md#acl) | -| **indexes** | [List of indexes with wildcards](/guides/advanced_guides/keys.md#indexes) | -| **expiresAt** | Timestamp of expire date | - - -### Example - -```bash -$ curl \ - -X POST 'http://localhost:7700/keys' \ - --data '{ - "expiresAt": 1574332928, - "description": "search key", - "acl": ["documentsRead"], - "indexes": ["movies"] - }' -``` - -#### Response: `201 Created` - -```json -{ - "key":"0WEJVFD972U6SB3KYRCXINOMHQTP51L8AZG4", - "description":"search key", - "acl":["documentsRead"], - "indexes":["movies"], - "createdAt":"2019-11-21T09:49:00.666009Z", - "updatedAt":"2019-11-21T09:49:00.666009Z", - "expiresAt":"2019-11-21T10:42:08Z", - "revoked":false -} -``` - -## Update Key - - - -Update an API key. +You must have the master key to access the `keys` route. +[More information about the keys and their rights](/guides/advanced_guides/keys.md). +## Get keys -### Body + -| Variable | Value | -|---------------------|---------------| -| **description** | description of the key | -| **acl** | [List of ACL's](/guides/advanced_guides/keys.md#acl) | -| **indexes** | [List of indexes with wildcards](/guides/advanced_guides/keys.md#indexes) | -| **revoked** | [Boolean to revoke API KEY](/guides/advanced_guides/keys.md#revoked) | +Get the **private** and **public** key. ::: warning -`expiresAt` attribute can not be updated. Adding it in the body will result in a bad request error. +You must have the master key to access this route. ::: ### Example ```bash $ curl \ - -X PUT 'http://localhost:7700/keys/0WEJVFD972U6SB3KYRCXINOMHQTP51L8AZG4' \ - --data '{ - "description": "Read and write documents", - "acl": ["documentsRead", "documentsWrite"] - }' + -H "X-Meili-API-Key: 123" + -X GET 'http://localhost:7700/keys' ``` #### Response: `200 Ok` ```json { - "key": "0WEJVFD972U6SB3KYRCXINOMHQTP51L8AZG4", - "description": "Read and write documents", - "acl": ["documentsRead", "documentsWrite"], - "indexes": ["movies"], - "createdAt": "2019-11-21T09:49:00.666009Z", - "updatedAt": "2019-11-21T10:31:29.492113Z", - "expiresAt": "2019-11-21T10:42:08Z", - "revoked": false + "private": "8c222193c4dff5a19689d637416820bc623375f2ad4c31a2e3a76e8f4c70440d", + "public": "948413b6667024a0704c2023916c21eaf0a13485a586c43e4d2df520852a4fb8" } ``` - -## Delete Key - - - -Delete an API key. - - -### Example - -```bash -$ curl \ - -X DELETE 'http://localhost:7700/keys/0WEJVFD972U6SB3KYRCXINOMHQTP51L8AZG4' -``` - -#### Response: `204 No Content` diff --git a/references/ranking_rules.md b/references/ranking_rules.md new file mode 100644 index 0000000000..c2f1a7d9bb --- /dev/null +++ b/references/ranking_rules.md @@ -0,0 +1,133 @@ +# Ranking rules + +Ranking rules is a list of all the rules that contributes to the relevancy of your search. It is possible to add your own and to change the order of the rules based on your needs. + +Child route of the [settings route](/references/settings.md). + +Ranking rules can also be updated directly through the [add settings route](/references/settings.md#add-settings) at the same time than the other settings. + +## Get ranking rules + + + +Get the ranking rules of an index. + +#### Path Variables + +| Variable | Description | +|-------------------|-----------------------| +| **index_uid** | The index UID | + +### Example + +```bash +$ curl \ + -X GET 'http://localhost:7700/indexes/movies/settings/ranking-rules' +``` + +#### Response: `200 Ok` + +List the settings. + +```json +[ + "typo", + "words", + "proximity", + "attribute", + "wordsPosition", + "exactness", + "dsc(release_date)", +] +``` + +## Update ranking rules + + + +Update the ranking rules of an index. + +#### Path Variables + +| Variable | Description | +|-------------------|-----------------------| +| **index_uid** | The index UID | + +#### Body + +List of ranking rules in order of importance. + +To add your own ranking rule you need to communicate the field and if its value is descending or ascending. + +For ascending it would be: `asc(price)` + +For descending it would be: `dsc(release_date)` + +### Examples + +```bash +$ curl \ + -X GET 'http://localhost:7700/indexes/movies/settings/ranking-rules' \ + --data '[ + "typo", + "words", + "proximity", + "attribute", + "wordsPosition", + "exactness", + "dsc(release_date)", + "dsc(rank)", + ]' +``` + +#### Response: `202 Accepted` + +```json +{ + "updateId": 1 +} +``` +This `updateId` allows you to [track the current update](/references/updates.md). + +## Reset ranking rules + + + +Reset the [ranking rules](/guides/main_concepts/relevancy.md#ranking-rules) of an index to its default value. + +#### Default value + +Array with the [built-in ranking rules](/guides/main_concepts/relevancy.md#order-of-the-rules) ordered by importance. +```json +[ + "typo", + "words", + "proximity", + "attribute", + "wordsPosition", + "exactness" +] +``` +To remove all ranking rules, which is not recommended for any use-case, you should send an empty array on the [add or replace ranking rules route](/references/ranking_rules.md#update-ranking-rules). + +#### Path Variables + +| Variable | Description | +|-------------------|-----------------------| +| **index_uid** | The index UID | + +#### Example + +```bash +$ curl \ + -X DELETE 'http://localhost:7700/indexes/movies/settings/ranking-rules' +``` + +#### Response: `202 Accepted` + +```json +{ + "updateId": 1 +} +``` +This `updateId` allows you to [track the current update](/references/updates.md). diff --git a/references/search.md b/references/search.md index dff790abe8..a16a6678ff 100644 --- a/references/search.md +++ b/references/search.md @@ -6,7 +6,6 @@ Search for documents matching a specific query in the given index. - #### Path Variables | Variable | Description | @@ -21,12 +20,10 @@ Search for documents matching a specific query in the given index. | **offset** | number of documents to skip | 0 | | **limit** | number of documents to take | 20 | | **attributesToRetrieve** | document attributes to show | * | -| **attributesToSearchIn** | which attributes are used to match documents | * | | **attributesToCrop** | which attributes to crop | none | | **cropLength** | limit length at which to crop specified attributes | 200 | | **attributesToHighlight** | which attributes to highlight | none | -| **filters** | attribute with an exact match | none | -| **timeout_ms** | maximum response time | 30 ms | +| **filters** | attribute with an exact match | none | | **matches** | whether to return the raw matches or not | false | > `filters` takes `key:value` as parameter, with the key to be the name of the field to filter, and the value the filter to be applied on this field, e.g.: `filters=first_name:John`. Only a single filter is supported in a query. diff --git a/references/searchable_attributes.md b/references/searchable_attributes.md new file mode 100644 index 0000000000..e3e8b2901a --- /dev/null +++ b/references/searchable_attributes.md @@ -0,0 +1,111 @@ +# Searchable attributes + +Searchable attributes are the fields in which to search for matching query words. + +Child route of the [settings route](/references/settings.md). + +Searchable attributes can also be updated directly through the [add settings route](/references/settings.md#add-settings) at the same time than the other settings. + +## Get searchable attributes + + + +Get the searchable attributes of an index. + +#### Path Variables + +| Variable | Description | +|-------------------|-----------------------| +| **index_uid** | The index UID | + +### Example + +```bash +$ curl \ + -X GET 'http://localhost:7700/indexes/movies/settings/searchable-attributes' +``` + +#### Response: `200 Ok` + +List the settings. + +```json +[ + "title", + "description", + "uid", +] +``` + +## Update searchable attributes + + + +Update the searchable attributes of an index. + +#### Path Variables + +| Variable | Description | +|-------------------|-----------------------| +| **index_uid** | The index UID | + +#### Body + +List of searchable attributes in order of importance. + +This means that a document with a match in an attribute at the start of the array will be considered more relevant than a document with a match in an attribute at the end of the array. + +### Examples + +```bash +$ curl \ + -X GET 'http://localhost:7700/indexes/movies/settings/searchable-attributes' \ + --data '[ + "title", + "description", + "uid", +]' +``` + +A match in title will make a document more relevant than another document with a match in description. + +#### Response: `202 Accepted` + +```json +{ + "updateId": 1 +} +``` +This `updateId` allows you to [track the current update](/references/updates.md). + +## Reset searchable attributes + + + +Reset the searchable attributes of the index to the default value. + +#### Default value + +All attributes found in the documents added to the index. + +#### Path Variables + +| Variable | Description | +|-------------------|-----------------------| +| **index_uid** | The index UID | + +#### Example + +```bash +$ curl \ + -X DELETE 'http://localhost:7700/indexes/movies/settings/searchable-attributes' +``` + +#### Response: `202 Accepted` + +```json +{ + "updateId": 1 +} +``` +This `updateId` allows you to [track the current update](/references/updates.md). diff --git a/references/settings.md b/references/settings.md index e1b1d7dd0c..2483b26607 100644 --- a/references/settings.md +++ b/references/settings.md @@ -1,11 +1,23 @@ # Settings -## Get index settings +Settings is a list of all the **customization** possible for an index. - +It is possible to update all the settings in one go or individually with the dedicated routes. + +These are the reference pages for the dedicated routes: +- [Synonyms](/references/synonyms.md) +- [Stop-words](/references/stop_words.md) +- [Ranking rules](/references/ranking_rules.md) +- [Distinct attribute](/references/distinct_attribute.md) +- [Searchable attributes](/references/searchable_attributes.md) +- [Displayed attributes](/references/displayed_attributes.md) +- [Accept new fields](/references/accept_new_fields.md) -Get settings for a given index. +## Get settings + + +Get the settings of an index. #### Path Variables @@ -13,46 +25,55 @@ Get settings for a given index. |-------------------|-----------------------| | **uid** | The index name | - ### Example ```bash $ curl \ - -X GET 'http://localhost:7700/indexes/12345678/settings' + -X GET 'http://localhost:7700/indexes/movies/settings' ``` - #### Response: `200 Ok` List the settings. ```json { - "rankingOrder": [ - "_sum_of_typos", - "_number_of_words", - "_word_proximity", - "_sum_of_words_attribute", - "_sum_of_words_position", - "_exact", - "release_date" + "rankingRules": [ + "typo", + "words", + "proximity", + "attribute", + "wordsPosition", + "exactness", + "dsc(release_date)", + ], + "rankingDistinct": null, + "searchableAttributes": [ + "title", + "description", + "uid", + ], + "displayedAttributes": [ + "title", + "description", + "release_date", + "rank", + "poster", ], - "distinctField": "", - "rankingRules": { - "release_date": "dsc" - } + "stopWords": null, + "synonyms": { + "wolverine": ["xmen", "logan"], + "logan": ["wolverine", "xmen"], + }, + "indexNewFields": false } ``` -## Add or replace index settings +## Update settings -Add or replace the following settings of an index: -* Create [custom ranking rules](/guides/advanced_guides/ranking.md#custom-ranking-rules) -* Change [ranking rules order](/guides/advanced_guides/ranking.md#ranking-order) -* Create distinct field - +Update the settings of an index. #### Path Variables @@ -62,72 +83,106 @@ Add or replace the following settings of an index: #### Body -| Variable | Description | -|-------------------|-----------------------| -| **rankingRules** | All [custom ranking rules](/guides/advanced_guides/ranking.md#custom-ranking-rules) | -| **rankingOrder** | [Ranking order](/guides/advanced_guides/ranking.md#ranking-order) of all rules, custom and default | -| **distinct** | Field to which [distinct](/guides/advanced_guides/distinct.md) will be applied | +| Variable | Type | Description | Default value | +|-------------------|-----------------------| --- | --- | +| **rankingRules** | [Strings] | Ranking rules in their order of importance | [built-in ranking rules list in order](/guides/main_concepts/relevancy.md#order-of-the-rules) | +| **rankingDistinct** | String | Returns only distinct (different) values of the given field | `null` | +| **searchableAttributes** | [Strings] | Fields in which to search for matching query words (*ordered by importance*) | All attributes found in the documents | +| **displayedAttributes** | [Strings] | Fields present in the returned documents | All attributes found in the documents | +| **stopWords** | [Strings] | Words in the search query that will be ignored | `[]` | +| **synonyms** | Object | List of associated words that are considered the same in a search query | `{}` | +| **indexNewFields** | Boolean | New fields in newly added document are/aren't added to MeiliSearch | `true` | + +Any parameters not provided will be left unchanged. -#### Ranking rules +### Examples + +#### Add settings -An objet containing document attributes as keys and `asc` ascending or `dsc` descending as value of this key. More information about [custom ranking rules](/guides/advanced_guides/ranking.md#custom-ranking-rules). +```bash +$ curl \ + -X GET 'http://localhost:7700/indexes/movies/settings' \ + --data '{ + "rankingRules": [ + "typo", + "words", + "proximity", + "attribute", + "wordsPosition", + "exactness", + "dsc(release_date)", + "dsc(rank)", + ], + "rankingDistinct": "movie_id", + "searchableAttributes": [ + "uid", + "movie_id", + "title", + "description", + "poster", + "release_date", + "rank", + ], + "displayedAttributes": [ + "title", + "description", + "poster", + "release_date", + "rank", + ], + "stopWords": [ + "the", + "a", + "an", + ], + "synonyms": { + "wolverine": ["xmen", "logan"], + "logan": ["wolverine"], + }, + "indexNewFields": false, + }' +``` -::: warning - To activate a ranking rule on a field, this **field must have the ranked property** in the [schema](/guides/main_concepts/indexes.md#schema-definition) and it **must be in the ranking order**. -::: +#### Response: `202 Accepted` -#### Ranking order +```json +{ + "updateId": 1 +} +``` +This `updateId` allows you to [track the current update](/references/updates.md). -A list of ranking rules ordered by importance for the [bucket sort](/guides/advanced_guides/bucket_sort.md). The first rule being the most important. +## Reset settings -#### Distinct field + -A string containing the attribute that needs to be [distinct](/guides/advanced_guides/distinct.md). +Reset the settings of an index. -::: note -None of the 3 settings parameters are mandatory -::: +All settings will be reset to their default value. -### Examples +| Variable | Description | Default value | +|-------------------|-----------------------| --- | --- | +| **rankingRules** | Ranking rules in their order of importance | [built-in ranking rules list in order](/guides/main_concepts/relevancy.md#order-of-the-rules) | +| **rankingDistinct** | Returns only distinct (different) values of the given field | `null` | +| **searchableAttributes** | Fields in which to search for matching query words (*ordered by importance*) | All attributes found in the documents | +| **displayedAttributes** | Fields present in the returned documents | All attributes found in the documents | +| **stopWords** | Words in the search query that will be ignored | `[]` | +| **synonyms** | List of associated words that are considered the same in a search query | `{}` | +| **indexNewFields** | New fields in newly added document are/aren't added to MeiliSearch | `true` | -#### Add settings +#### Path Variables -```bash -$ curl \ - -X GET 'http://localhost:7700/indexes/12345678/settings' \ - --data '{ - "rankingOrder": [ - "_sum_of_typos", - "_number_of_words", - "_word_proximity", - "_sum_of_words_attribute", - "_sum_of_words_position", - "_exact", - "release_date" - ], - "rankingRules": { - "release_date": "dsc" - } -}' -``` +| Variable | Description | +|-------------------|-----------------------| +| **index_uid** | The index UID | -#### Set back the default MeiliSearch settings +#### Example ```bash $ curl \ - -X GET 'http://localhost:7700/indexes/12345678/settings' \ - --data '{ - "rankingOrder": null, - "distinctField": null, - "rankingRules": null -}' + -X DELETE 'http://localhost:7700/indexes/movies/settings' ``` -::: danger -You must set the fields to `null` to reset them and not to the empty value.
-Setting the fields to `[]`, `{}` or `""` will erase **all rules**, even the MeiliSearch default behavior. -::: - #### Response: `202 Accepted` ```json diff --git a/references/stats.md b/references/stats.md index bf98a4fcbc..028f245eff 100644 --- a/references/stats.md +++ b/references/stats.md @@ -2,7 +2,7 @@ ## Get stat of an index - + Get stats of an index. @@ -17,7 +17,7 @@ Get stats of an index. ```bash $ curl \ - -X GET 'http://localhost:7700/stats/12345678' + -X GET 'http://localhost:7700/indexes/12345678/stats' ``` #### Response: `200 Ok` diff --git a/references/stop_words.md b/references/stop_words.md index ee0633a5be..f0d8d44617 100644 --- a/references/stop_words.md +++ b/references/stop_words.md @@ -1,18 +1,16 @@ -# Stop words +# Stop-words -The stop-words list is part of the [settings][1] category. +The stop-words route lets you add a list of words that will be ignored in search queries. So if you add `the` as a stop word and you make a search on `the mask` you will only have matching documents with `mask`. -[1]: /references/settings.md -::: tip -The stop-words list is considered as one resource and has the REST routes in line with this logic. -::: +Child route of the [settings route](/references/settings.md). -## Get stop-words list +Stop-words can also be updated directly through the [add settings route](/references/settings.md#add-settings) at the same time than the other settings. - +## Get stop-words -Get the list [stop-words](/guides/advanced_guides/stop_words.md). + +Get the [stop-words](/guides/advanced_guides/stop_words.md) list of an index. #### Path Variables @@ -20,7 +18,6 @@ Get the list [stop-words](/guides/advanced_guides/stop_words.md). |-------------------|-----------------------| | **uid** | The index UID | - ### Example ```bash @@ -28,25 +25,17 @@ $ curl \ -X GET 'http://localhost:7700/indexes/12345678/settings/stop-words' ``` - #### Response: `200 Ok` -List of all the stop-words in the index. - ```json ["of","the","to"] ``` - -## Create stop-words list +## Update stop-words -Create the list of [stop-words](/guides/advanced_guides/stop_words.md). - -::: warning -**If one already exists, it will be overridden.** -::: +Update the list of [stop-words](/guides/advanced_guides/stop_words.md) of an index. #### Path Variables @@ -58,6 +47,8 @@ Create the list of [stop-words](/guides/advanced_guides/stop_words.md). An array of strings containing the [stop-words](/guides/advanced_guides/stop_words.md). +If a list of stop-words already exists it will be overwritten (*replaced*). + ### Example ```bash @@ -66,7 +57,6 @@ $ curl \ --data '["the", "of", "to"]' ``` - #### Response: `202 Accepted` ```json @@ -76,11 +66,15 @@ $ curl \ ``` This `updateId` allows you to [track the current update](/references/updates.md). -## Delete stop-words list +## Reset stop-words + + - +Reset the list of [stop-words](/guides/advanced_guides/stop_words.md) of an index to its default value. -Delete the list of [stop-words](/guides/advanced_guides/stop_words.md). +#### Default value + +Empty array: `[]` #### Path Variables @@ -88,7 +82,6 @@ Delete the list of [stop-words](/guides/advanced_guides/stop_words.md). |-------------------|-----------------------| | **uid** | The index UID | - ### Example ```bash @@ -96,7 +89,6 @@ $ curl \ -X DELETE 'http://localhost:7700/indexes/12345678/settings/stop-words' \ ``` - #### Response: `202 Accepted` ```json diff --git a/references/synonyms.md b/references/synonyms.md index 8ddbf68381..996bceb2c0 100644 --- a/references/synonyms.md +++ b/references/synonyms.md @@ -1,40 +1,16 @@ # Synonyms -## List synonyms of one sequence +`Synonyms` is an object containing words and their respective synonyms. A synonym in Meilisearch is considered equal to its associated word in a search query. - +Child route of the [settings route](/references/settings.md). -List one sequence and its synonyms in an index. +Synonyms can also be updated directly through the [add settings route](/references/settings.md#add-settings) at the same time than the other settings. +## Get synonyms -#### Path Variables - -| Variable | Description | -|-------------------|-----------------------| -| **uid** | The index UID | -| **synonym** | Sequence of which the synonyms will be returned | - - -#### Example -```bash -$ curl \ - -X GET 'http://localhost:7700/indexes/12345678/synonyms/magician' -``` - -#### Response: `200 OK` - - -```json -["harry","merlin"] -``` -Array of synonyms of the given sequence in the path variable. - -## List all sequences and synonyms - - - -List all sequences and their synonyms in an index. + +Get the list of synonyms of an index. #### Path Variables @@ -42,37 +18,35 @@ List all sequences and their synonyms in an index. |-------------------|-----------------------| | **uid** | The index UID | - #### Example ```bash -$ curl \ - -X GET 'http://localhost:7700/indexes/12345678/synonyms' + curl \ + -X GET 'http://localhost:7700/indexes/12345678/settings/synonyms' ``` #### Response: `200 OK` ```json { - "potter": [ - "harry" + "wolverine": [ + "xmen", + "logan" ], - "magician": [ - "harry", - "merlin" + "logan": [ + "wolverine", + "xmen" ], - "harry": [ - "potter" + "wow": [ + "world of warcraft" ] } ``` +## Update synonyms -## Create synonyms - - - -Create synonyms. + +Update the list of synonyms of an index. #### Path Variables @@ -82,139 +56,17 @@ Create synonyms. #### Body -| key | Value description | -|-------------------|-----------------------| -| **input** | the [one-way string](/guides/advanced_guides/synonyms.md#the-one-way-association) that is gonna be associated with the synonyms array | -| **synonyms** | array of words to associate together in [a multi-way](/guides/advanced_guides/synonyms.md#the-multi-way-association) | - -An object with either multi-way string associations or one-way string association. - -#### One-way Example -```bash -$ curl \ - -X POST 'http://localhost:7700/indexes/12345678/synonyms' \ - --data '{ "input": "magician", "synonyms": ["harry potter", "merlin"]}' -``` - -#### Multi-way Example -```bash -$ curl \ - -X POST 'http://localhost:7700/indexes/12345678/synonyms' \ - --data '{ "synonyms": ["harry potter", "hp"]}' -``` - -#### Response: `202 Accepted` - -```json -{ - "updateId": 1 -} -``` -This `updateId` allows you to [track the current update](/references/updates.md). - -## Update a synonym - - - -Update a synonym. - - -#### Path Variables - -| Variable | Description | -|-------------------|-----------------------| -| **uid** | The index UID | -| **synonym** | Sequence of which the synonyms will be updated | - -#### Body - -An array of string containing all synonyms of the given sequence. - -::: warning -This will **override** the previous synonyms of the given sequence. Don't forget to add them if you dont want to lose them. -::: +An object with every synonym and its associated words. #### Example ```bash -$ curl \ - -X PUT 'http://localhost:7700/indexes/12345678/synonyms/magician' \ - --data '["harry potter", "merlin", "Illusionist"]' -``` - -#### Response: `200 Ok` - -```json -{ - "updateId": 1 -} -``` -This `updateId` allows you to [track the current update](/references/updates.md). - -## Delete a synonym - - - -Delete a synonym. - - -#### Path Variables - -| Variable | Description | -|-------------------|-----------------------| -| **uid** | The index UID | -| **synonym** | Sequence of which the synonyms will be deleted | - - -#### Example -```bash -$ curl \ - -X DELETE 'http://localhost:7700/indexes/12345678/synonyms/magician' -``` - -#### Response: `200 Ok` - -```json -{ - "updateId": 1 -} -``` -This `updateId` allows you to [track the current update](/references/updates.md). - -## Batch write synonyms - - - -Batch write synonyms. - - -#### Path Variables - -| Variable | Description | -|-------------------|-----------------------| -| **uid** | The index UID | - -#### Body - -| key | Value description | -|-------------------|-----------------------| -| **input** | the [one-way string](/guides/advanced_guides/synonyms.md#the-one-way-association) that is gonna be associated with the synonyms array | -| **synonyms** | array of words to associate together in [a multi-way](/guides/advanced_guides/synonyms.md#the-multi-way-association) | - -An object with either multi-way string associations or one-way string association. - -#### Example -```bash -$ curl \ - -X POST 'http://localhost:7700/indexes/12345678/synonyms/batch' \ - --data '[ - { - "input": "magician", - "synonyms": ["harry potter", "merlin", "illusionist"] - }, - { - "synonyms": ["mickey", "mouse"] - } - ]' + curl \ + -X POST 'http://localhost:7700/indexes/12345678/settings/synonyms' \ + --data '{ + "wolverine": ["xmen", "logan"], + "logan": ["wolverine", "xmen"], + "wow": ["world of warcraft"] + }' ``` #### Response: `202 Accepted` @@ -226,12 +78,15 @@ $ curl \ ``` This `updateId` allows you to [track the current update](/references/updates.md). -## Clear synonyms +## Reset synonyms + + - +Reset the list of [synonyms](/guides/advanced_guides/synonyms.md) of an index to its default value. -Delete all synonyms +#### Default value +Empty object : `{}` #### Path Variables @@ -239,11 +94,10 @@ Delete all synonyms |-------------------|-----------------------| | **uid** | The index UID | - #### Example ```bash -$ curl \ - -X DELETE 'http://localhost:7700/indexes/12345678/synonyms' + curl \ + -X DELETE 'http://localhost:7700/indexes/12345678/settings/synonyms' ``` #### Response: `202 Accepted` diff --git a/references/updates.md b/references/updates.md index a3c819a479..57d332a8c9 100644 --- a/references/updates.md +++ b/references/updates.md @@ -63,16 +63,6 @@ Here is an example response of updates that have been processed. ```json [ - { - "status": "processed", - "updateId": 0, - "type": { - "name": "Schema" - }, - "duration": 0.000066131, - "enqueuedAt": "2019-12-07T21:16:09.623198Z", - "processedAt": "2019-12-07T21:16:09.624601Z" - }, { "status": "processed", "updateId": 1, diff --git a/tutorials/cookbooks/README.md b/tutorials/cookbooks/README.md index cfe9da737d..527ebeb4bb 100644 --- a/tutorials/cookbooks/README.md +++ b/tutorials/cookbooks/README.md @@ -1,3 +1,3 @@ -## Comming soon +## Coming soon Cookbooks are being made and will soon overflow this section. diff --git a/tutorials/howtos/README.md b/tutorials/howtos/README.md index ee9f857915..5c3f42bbeb 100644 --- a/tutorials/howtos/README.md +++ b/tutorials/howtos/README.md @@ -1,3 +1,3 @@ -## Comming soon +## Coming soon How to's are being made and will soon overflow this section. diff --git a/tutorials/howtos/quickstart.md b/tutorials/howtos/quickstart.md index ed3355ac7f..eef366ccc3 100644 --- a/tutorials/howtos/quickstart.md +++ b/tutorials/howtos/quickstart.md @@ -1,7 +1,6 @@ # Quick Start -You can deploy your own instant, relevant, and typo-tolerant MeiliSearch engine by yourself. -It can be achieved by following these three steps. +MeiliSearch is simply to install and deploy. It will be up and running by following these few steps. ### Deploy the Server @@ -89,19 +88,13 @@ $ cd MeiliSearch Inside the folder, compile MeiliSearch. ```bash -# Production version -$ cargo build --release - -# Debug version -$ cargo build -``` - -Compiling in release mode takes more time than in debug mode but the binary process time will be significantly faster. You **must** run a release binary when using MeiliSearch in production. +# Update the rust toolchain to the latest version +$ rustup update -You can find the compiled binary in `target/debug` or `target/release`. +# Compile the project +$ cargo build --release -```bash -# Excuting the server binary +# Execute the server binary $ ./target/release/meilisearch ``` @@ -111,41 +104,39 @@ $ ./target/release/meilisearch ### Create an Index and Upload Some Documents -MeiliSearch can serve multiple indexes, with different kinds of documents. Therefore, it is required to create an index before sending documents to it. +MeiliSearch can serve multiple indexes, with different kinds of documents. + +It is required to create an index before sending documents to it. ```bash $ curl -i -X POST 'http://127.0.0.1:7700/indexes' \ --data '{ - "name": "Movie" + "uid": "movies" }' ``` -The response looks like this: +This `uid` is the `:index_uid` identifier used in all `indexes/:index_uid` routes. -``` -{ - "name": "Movie", - "uid": "12345678", - ... -} -``` +Now that the server knows about our brand new index, we can send our data to it. -This `uid` is the `:uid` identifier used in all `indexes/:uid` routes. +If you have no dataset, [here is a movie dataset](https://www.notion.so/meilisearch/A-movies-dataset-to-test-Meili-1cbf7c9cfa4247249c40edfa22d7ca87#b5ae399b81834705ba5420ac70358a65) you can use. -Now that the server knows about our brand new index, we can send it data. -We provide you a dataset, it is available in the `datasets/` [directory](https://github.com/meilisearch/MeiliSearch/tree/master/datasets). ```bash -$ curl -i -X POST 'http://127.0.0.1:7700/indexes/12345678/documents' \ +$ curl -i -X POST 'http://127.0.0.1:7700/indexes/movies/documents' \ --data @datasets/movies/movies.json ``` +::: warning +If you have the `missing primary key` error. [More information about the primary key here](/guides/main_concepts/documents.md#primary-key). +::: + ### Search for Documents The search engine is now aware of our documents and can serve those via our HTTP server. ```bash -$ curl 'http://127.0.0.1:7700/indexes/12345678/search?q=botman' +$ curl 'http://127.0.0.1:7700/indexes/movies/search?q=botman' ``` ```json diff --git a/yarn.lock b/yarn.lock index 81291e59be..7735ac9389 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,27 +9,27 @@ dependencies: "@babel/highlight" "^7.8.3" -"@babel/compat-data@^7.8.4": - version "7.8.5" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.8.5.tgz#d28ce872778c23551cbb9432fc68d28495b613b9" - integrity sha512-jWYUqQX/ObOhG1UiEkbH5SANsE/8oKXiQWjj7p7xgj9Zmnt//aUvyz4dBkK0HNsS8/cbyC5NmmH87VekW+mXFg== +"@babel/compat-data@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.8.6.tgz#7eeaa0dfa17e50c7d9c0832515eee09b56f04e35" + integrity sha512-CurCIKPTkS25Mb8mz267vU95vy+TyUpnctEX2lV33xWNmHAfjruztgiPBbXZRh3xZZy1CYvGx6XfxyTVS+sk7Q== dependencies: browserslist "^4.8.5" invariant "^2.2.4" semver "^5.5.0" "@babel/core@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.4.tgz#d496799e5c12195b3602d0fddd77294e3e38e80e" - integrity sha512-0LiLrB2PwrVI+a2/IEskBopDYSd8BCb3rOvH7D5tzoWd696TBEduBvuLVm4Nx6rltrLZqvI3MCalB2K2aVzQjA== + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.7.tgz#b69017d221ccdeb203145ae9da269d72cf102f3b" + integrity sha512-rBlqF3Yko9cynC5CCFy6+K/w2N+Sq/ff2BPy+Krp7rHlABIr5epbA7OxVeKoMHB39LZOp1UY5SuLjy6uWi35yA== dependencies: "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.8.4" + "@babel/generator" "^7.8.7" "@babel/helpers" "^7.8.4" - "@babel/parser" "^7.8.4" - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.8.4" - "@babel/types" "^7.8.3" + "@babel/parser" "^7.8.7" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.8.6" + "@babel/types" "^7.8.7" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" @@ -39,12 +39,12 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.4.tgz#35bbc74486956fe4251829f9f6c48330e8d0985e" - integrity sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA== +"@babel/generator@^7.8.6", "@babel/generator@^7.8.7": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.8.tgz#cdcd58caab730834cee9eeadb729e833b625da3e" + integrity sha512-HKyUVu69cZoclptr8t8U5b6sx6zoWjh8jiUhnuj3MpZuKT2dJ8zPTuiy31luq32swhI0SpwItCIlU8XW7BZeJg== dependencies: - "@babel/types" "^7.8.3" + "@babel/types" "^7.8.7" jsesc "^2.5.1" lodash "^4.17.13" source-map "^0.5.0" @@ -64,45 +64,46 @@ "@babel/helper-explode-assignable-expression" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/helper-call-delegate@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.8.3.tgz#de82619898aa605d409c42be6ffb8d7204579692" - integrity sha512-6Q05px0Eb+N4/GTyKPPvnkig7Lylw+QzihMpws9iiZQv7ZImf84ZsZpQH7QoWN4n4tm81SnSzPgHw2qtO0Zf3A== +"@babel/helper-call-delegate@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.8.7.tgz#28a279c2e6c622a6233da548127f980751324cab" + integrity sha512-doAA5LAKhsFCR0LAFIf+r2RSMmC+m8f/oQ+URnUET/rWeEzC0yTRmAGyWkD4sSu3xwbS7MYQ2u+xlt1V5R56KQ== dependencies: "@babel/helper-hoist-variables" "^7.8.3" "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/types" "^7.8.7" -"@babel/helper-compilation-targets@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.4.tgz#03d7ecd454b7ebe19a254f76617e61770aed2c88" - integrity sha512-3k3BsKMvPp5bjxgMdrFyq0UaEO48HciVrOVF0+lon8pp95cyJ2ujAh0TrBHNMnJGT2rr0iKOJPFFbSqjDyf/Pg== +"@babel/helper-compilation-targets@^7.8.4", "@babel/helper-compilation-targets@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz#dac1eea159c0e4bd46e309b5a1b04a66b53c1dde" + integrity sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw== dependencies: - "@babel/compat-data" "^7.8.4" - browserslist "^4.8.5" + "@babel/compat-data" "^7.8.6" + browserslist "^4.9.1" invariant "^2.2.4" levenary "^1.1.1" semver "^5.5.0" "@babel/helper-create-class-features-plugin@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.3.tgz#5b94be88c255f140fd2c10dd151e7f98f4bff397" - integrity sha512-qmp4pD7zeTxsv0JNecSBsEmG1ei2MqwJq4YQcK3ZWm/0t07QstWfvuV/vm3Qt5xNMFETn2SZqpMx2MQzbtq+KA== + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.6.tgz#243a5b46e2f8f0f674dc1387631eb6b28b851de0" + integrity sha512-klTBDdsr+VFFqaDHm5rR69OpEQtO2Qv8ECxHS1mNhJJvaHArR6a1xTf5K/eZW7eZpJbhCx3NW1Yt/sKsLXLblg== dependencies: "@babel/helper-function-name" "^7.8.3" "@babel/helper-member-expression-to-functions" "^7.8.3" "@babel/helper-optimise-call-expression" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" "@babel/helper-split-export-declaration" "^7.8.3" -"@babel/helper-create-regexp-features-plugin@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.3.tgz#c774268c95ec07ee92476a3862b75cc2839beb79" - integrity sha512-Gcsm1OHCUr9o9TcJln57xhWHtdXbA2pgQ58S0Lxlks0WMGNXuki4+GLfX0p+L2ZkINUGZvfkz8rzoqJQSthI+Q== +"@babel/helper-create-regexp-features-plugin@^7.8.3", "@babel/helper-create-regexp-features-plugin@^7.8.8": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz#5d84180b588f560b7864efaeea89243e58312087" + integrity sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg== dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" "@babel/helper-regex" "^7.8.3" - regexpu-core "^4.6.0" + regexpu-core "^4.7.0" "@babel/helper-define-map@^7.8.3": version "7.8.3" @@ -151,14 +152,7 @@ dependencies: "@babel/types" "^7.8.3" -"@babel/helper-module-imports@^7.0.0": - version "7.7.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.7.0.tgz#99c095889466e5f7b6d66d98dffc58baaf42654d" - integrity sha512-Dv3hLKIC1jyfTkClvyEkYP2OlkzNvWs5+Q8WgPbxM5LMeorons7iPP91JM+DU7tRbhqA1ZeooPaMFvQrn23RHw== - dependencies: - "@babel/types" "^7.7.0" - -"@babel/helper-module-imports@^7.8.3": +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== @@ -166,15 +160,16 @@ "@babel/types" "^7.8.3" "@babel/helper-module-transforms@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.8.3.tgz#d305e35d02bee720fbc2c3c3623aa0c316c01590" - integrity sha512-C7NG6B7vfBa/pwCOshpMbOYUmrYQDfCpVL/JCRu0ek8B5p8kue1+BCXpg2vOYs7w5ACB9GTOBYQ5U6NwrMg+3Q== + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.8.6.tgz#6a13b5eecadc35692047073a64e42977b97654a4" + integrity sha512-RDnGJSR5EFBJjG3deY0NiL0K9TO8SXxS9n/MPsbPK/s9LbQymuLNtlzvDiNS7IpecuL45cMeLVkA+HfmlrnkRg== dependencies: "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" "@babel/helper-simple-access" "^7.8.3" "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/template" "^7.8.6" + "@babel/types" "^7.8.6" lodash "^4.17.13" "@babel/helper-optimise-call-expression@^7.8.3": @@ -184,11 +179,6 @@ dependencies: "@babel/types" "^7.8.3" -"@babel/helper-plugin-utils@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" - integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== - "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" @@ -212,15 +202,15 @@ "@babel/traverse" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/helper-replace-supers@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.3.tgz#91192d25f6abbcd41da8a989d4492574fb1530bc" - integrity sha512-xOUssL6ho41U81etpLoT2RTdvdus4VfHamCuAm4AHxGr+0it5fnwoVdwUJ7GFEqCsQYzJUhcbsN9wB9apcYKFA== +"@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz#5ada744fd5ad73203bf1d67459a27dcba67effc8" + integrity sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA== dependencies: "@babel/helper-member-expression-to-functions" "^7.8.3" "@babel/helper-optimise-call-expression" "^7.8.3" - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/traverse" "^7.8.6" + "@babel/types" "^7.8.6" "@babel/helper-simple-access@^7.8.3": version "7.8.3" @@ -265,10 +255,10 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.8.3", "@babel/parser@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.4.tgz#d1dbe64691d60358a974295fa53da074dd2ce8e8" - integrity sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw== +"@babel/parser@^7.8.6", "@babel/parser@^7.8.7": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.8.tgz#4c3b7ce36db37e0629be1f0d50a571d2f86f6cd4" + integrity sha512-mO5GWzBPsPf6865iIbzNE0AvkKF3NE+2S3eRUpE+FE07BOAkXh6G+GW/Pj01hhXjve1WScbaIO4UlY1JKeqCcA== "@babel/plugin-proposal-async-generator-functions@^7.8.3": version "7.8.3" @@ -345,11 +335,11 @@ "@babel/plugin-syntax-optional-chaining" "^7.8.0" "@babel/plugin-proposal-unicode-property-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.3.tgz#b646c3adea5f98800c9ab45105ac34d06cd4a47f" - integrity sha512-1/1/rEZv2XGweRwwSkLpY+s60za9OZ1hJs4YDqFHCw0kYWYwL5IFljVY1MYBL+weT1l9pokDO2uhSTLVxzoHkQ== + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz#ee3a95e90cdc04fe8cd92ec3279fa017d68a0d1d" + integrity sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-create-regexp-features-plugin" "^7.8.8" "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-async-generators@^7.8.0": @@ -380,14 +370,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.2.0": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz#0b85a3b4bc7cdf4cc4b8bf236335b907ca22e7c7" - integrity sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - -"@babel/plugin-syntax-jsx@^7.8.3": +"@babel/plugin-syntax-jsx@^7.2.0", "@babel/plugin-syntax-jsx@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz#521b06c83c40480f1e58b4fd33b92eceb1d6ea94" integrity sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A== @@ -460,17 +443,17 @@ "@babel/helper-plugin-utils" "^7.8.3" lodash "^4.17.13" -"@babel/plugin-transform-classes@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.3.tgz#46fd7a9d2bb9ea89ce88720477979fe0d71b21b8" - integrity sha512-SjT0cwFJ+7Rbr1vQsvphAHwUHvSUPmMjMU/0P59G8U2HLFqSa082JO7zkbDNWs9kH/IUqpHI6xWNesGf8haF1w== +"@babel/plugin-transform-classes@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.6.tgz#77534447a477cbe5995ae4aee3e39fbc8090c46d" + integrity sha512-k9r8qRay/R6v5aWZkrEclEhKO6mc1CCQr2dLsVHBmOQiMpN6I2bpjX3vgnldUWeEI1GHVNByULVxZ4BdP4Hmdg== dependencies: "@babel/helper-annotate-as-pure" "^7.8.3" "@babel/helper-define-map" "^7.8.3" "@babel/helper-function-name" "^7.8.3" "@babel/helper-optimise-call-expression" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" "@babel/helper-split-export-declaration" "^7.8.3" globals "^11.1.0" @@ -482,9 +465,9 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-transform-destructuring@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.3.tgz#20ddfbd9e4676906b1056ee60af88590cc7aaa0b" - integrity sha512-H4X646nCkiEcHZUZaRkhE2XVsoz0J/1x3VVujnn96pSoGCtKPA99ZZA+va+gK+92Zycd6OBKCD8tDb/731bhgQ== + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz#fadb2bc8e90ccaf5658de6f8d4d22ff6272a2f4b" + integrity sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ== dependencies: "@babel/helper-plugin-utils" "^7.8.3" @@ -511,10 +494,10 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-for-of@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.4.tgz#6fe8eae5d6875086ee185dd0b098a8513783b47d" - integrity sha512-iAXNlOWvcYUYoV8YIxwS7TxGRJcxyl8eQCfT+A5j8sKUzRFvJdcyjp97jL2IghWSRDaL2PU2O2tX8Cu9dTBq5A== +"@babel/plugin-transform-for-of@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.6.tgz#a051bd1b402c61af97a27ff51b468321c7c2a085" + integrity sha512-M0pw4/1/KI5WAxPsdcUL/w2LJ7o89YHN3yLkzNjg7Yl15GlVGgzHyCU+FMeAxevHGsLVmUqbirlUIKTafPmzdw== dependencies: "@babel/helper-plugin-utils" "^7.8.3" @@ -599,12 +582,12 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/helper-replace-supers" "^7.8.3" -"@babel/plugin-transform-parameters@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.4.tgz#1d5155de0b65db0ccf9971165745d3bb990d77d3" - integrity sha512-IsS3oTxeTsZlE5KqzTbcC2sV0P9pXdec53SU+Yxv7o/6dvGM5AkTotQKhoSffhNgZ/dftsSiOoxy7evCYJXzVA== +"@babel/plugin-transform-parameters@^7.8.7": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.8.tgz#0381de466c85d5404565243660c4496459525daf" + integrity sha512-hC4Ld/Ulpf1psQciWWwdnUspQoQco2bMzSrwU6TmzRlvoYQe4rQFy9vnCZDTlVeCQj0JPfL+1RX0V8hCJvkgBA== dependencies: - "@babel/helper-call-delegate" "^7.8.3" + "@babel/helper-call-delegate" "^7.8.7" "@babel/helper-get-function-arity" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" @@ -615,12 +598,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-regenerator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.3.tgz#b31031e8059c07495bf23614c97f3d9698bc6ec8" - integrity sha512-qt/kcur/FxrQrzFR432FGZznkVAjiyFtCOANjkAKwCbt465L6ZCiUQh2oMYGU3Wo8LRFJxNDFwWn106S5wVUNA== +"@babel/plugin-transform-regenerator@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz#5e46a0dca2bee1ad8285eb0527e6abc9c37672f8" + integrity sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA== dependencies: - regenerator-transform "^0.14.0" + regenerator-transform "^0.14.2" "@babel/plugin-transform-reserved-words@^7.8.3": version "7.8.3" @@ -685,12 +668,12 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/preset-env@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.8.4.tgz#9dac6df5f423015d3d49b6e9e5fa3413e4a72c4e" - integrity sha512-HihCgpr45AnSOHRbS5cWNTINs0TwaR8BS8xIIH+QwiW8cKL0llV91njQMpeMReEPVs+1Ao0x3RLEBLtt1hOq4w== + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.8.7.tgz#1fc7d89c7f75d2d70c2b6768de6c2e049b3cb9db" + integrity sha512-BYftCVOdAYJk5ASsznKAUl53EMhfBbr8CJ1X+AJLfGPscQkwJFiaV/Wn9DPH/7fzm2v6iRYJKYHSqyynTGw0nw== dependencies: - "@babel/compat-data" "^7.8.4" - "@babel/helper-compilation-targets" "^7.8.4" + "@babel/compat-data" "^7.8.6" + "@babel/helper-compilation-targets" "^7.8.7" "@babel/helper-module-imports" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-proposal-async-generator-functions" "^7.8.3" @@ -713,13 +696,13 @@ "@babel/plugin-transform-async-to-generator" "^7.8.3" "@babel/plugin-transform-block-scoped-functions" "^7.8.3" "@babel/plugin-transform-block-scoping" "^7.8.3" - "@babel/plugin-transform-classes" "^7.8.3" + "@babel/plugin-transform-classes" "^7.8.6" "@babel/plugin-transform-computed-properties" "^7.8.3" "@babel/plugin-transform-destructuring" "^7.8.3" "@babel/plugin-transform-dotall-regex" "^7.8.3" "@babel/plugin-transform-duplicate-keys" "^7.8.3" "@babel/plugin-transform-exponentiation-operator" "^7.8.3" - "@babel/plugin-transform-for-of" "^7.8.4" + "@babel/plugin-transform-for-of" "^7.8.6" "@babel/plugin-transform-function-name" "^7.8.3" "@babel/plugin-transform-literals" "^7.8.3" "@babel/plugin-transform-member-expression-literals" "^7.8.3" @@ -730,9 +713,9 @@ "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" "@babel/plugin-transform-new-target" "^7.8.3" "@babel/plugin-transform-object-super" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.8.4" + "@babel/plugin-transform-parameters" "^7.8.7" "@babel/plugin-transform-property-literals" "^7.8.3" - "@babel/plugin-transform-regenerator" "^7.8.3" + "@babel/plugin-transform-regenerator" "^7.8.7" "@babel/plugin-transform-reserved-words" "^7.8.3" "@babel/plugin-transform-shorthand-properties" "^7.8.3" "@babel/plugin-transform-spread" "^7.8.3" @@ -740,7 +723,7 @@ "@babel/plugin-transform-template-literals" "^7.8.3" "@babel/plugin-transform-typeof-symbol" "^7.8.4" "@babel/plugin-transform-unicode-regex" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/types" "^7.8.7" browserslist "^4.8.5" core-js-compat "^3.6.2" invariant "^2.2.2" @@ -748,49 +731,40 @@ semver "^5.5.0" "@babel/runtime@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.4.tgz#d79f5a2040f7caa24d53e563aad49cbc05581308" - integrity sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ== + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.7.tgz#8fefce9802db54881ba59f90bb28719b4996324d" + integrity sha512-+AATMUFppJDw6aiR5NVPHqIQBlV/Pj8wY/EZH+lmvRdUo9xBaz/rF3alAwFJQavvKfeOlPE7oaaDHVbcySbCsg== dependencies: - regenerator-runtime "^0.13.2" + regenerator-runtime "^0.13.4" -"@babel/template@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.3.tgz#e02ad04fe262a657809327f578056ca15fd4d1b8" - integrity sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ== +"@babel/template@^7.8.3", "@babel/template@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" + integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== dependencies: "@babel/code-frame" "^7.8.3" - "@babel/parser" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" -"@babel/traverse@^7.8.3", "@babel/traverse@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.4.tgz#f0845822365f9d5b0e312ed3959d3f827f869e3c" - integrity sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg== +"@babel/traverse@^7.8.3", "@babel/traverse@^7.8.4", "@babel/traverse@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.6.tgz#acfe0c64e1cd991b3e32eae813a6eb564954b5ff" + integrity sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A== dependencies: "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.8.4" + "@babel/generator" "^7.8.6" "@babel/helper-function-name" "^7.8.3" "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/parser" "^7.8.4" - "@babel/types" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.7.0": - version "7.7.2" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.7.2.tgz#550b82e5571dcd174af576e23f0adba7ffc683f7" - integrity sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA== - dependencies: - esutils "^2.0.2" - lodash "^4.17.13" - to-fast-properties "^2.0.0" - -"@babel/types@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" - integrity sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg== +"@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.7.tgz#1fc9729e1acbb2337d5b6977a63979b4819f5d1d" + integrity sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw== dependencies: esutils "^2.0.2" lodash "^4.17.13" @@ -859,9 +833,9 @@ integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== "@types/node@*": - version "12.12.9" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.9.tgz#0b5ae05516b757cbff2e82c04500190aef986c7b" - integrity sha512-kV3w4KeLsRBW+O2rKhktBwENNJuqAUQHS3kf4ia2wIaF/MN6U7ANgTsx7tGremcA0Pk3Yh0Hl0iKiLPuBdIgmw== + version "13.9.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.2.tgz#ace1880c03594cc3e80206d96847157d8e7fa349" + integrity sha512-bnoqK579sAYrQbp73wwglccjJ4sfRdKU7WNEZ5FW4K2U6Kc0/eZ5kvXG0JKsEKFB50zrFmfFt52/cvBbZa7eXg== "@types/q@^1.5.1": version "1.5.2" @@ -886,9 +860,9 @@ svg-tags "^1.0.0" "@vue/babel-preset-app@^4.1.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@vue/babel-preset-app/-/babel-preset-app-4.2.2.tgz#c7a0a685a5eb92e1b1538f8d1fc4f5ac00dccec1" - integrity sha512-QGgL+iR+ZdNO9xcFJqYjg938bwjArgIyNOFfM0m+dNSOt7wWVrlFA2v0C6aVN1sJ+IEjdurEolBTZ7hXp6Fbsg== + version "4.2.3" + resolved "https://registry.yarnpkg.com/@vue/babel-preset-app/-/babel-preset-app-4.2.3.tgz#608b2c9f7ca677e793833662fc727ff9137a9a35" + integrity sha512-Xlc8d9Ebgu9pNZMUxKZWVP2CctVZzfX3LAxjBDWAAIiVpdXX4IkQQCevDhgiANFzlmE3KXtiSgPGs57Sso2g7Q== dependencies: "@babel/core" "^7.8.4" "@babel/helper-compilation-targets" "^7.8.4" @@ -952,33 +926,33 @@ "@vue/babel-plugin-transform-vue-jsx" "^1.1.2" camelcase "^5.0.0" -"@vue/component-compiler-utils@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-3.0.2.tgz#7daf8aaf0d5faa66e7c8a1f6fea315630e45fbc9" - integrity sha512-BSnY2PmW4QwU1AOcGSNYAmEPLjdQ9itl1YpLCWtpwMA5Jy/aqWNuzZ9+ZZ8h6yZJ53W95tVkEP6yrXJ/zUHdEA== +"@vue/component-compiler-utils@^3.1.0": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-3.1.1.tgz#d4ef8f80292674044ad6211e336a302e4d2a6575" + integrity sha512-+lN3nsfJJDGMNz7fCpcoYIORrXo0K3OTsdr8jCM7FuqdI4+70TY6gxY6viJ2Xi1clqyPg7LpeOWwjF31vSMmUw== dependencies: consolidate "^0.15.1" hash-sum "^1.0.2" lru-cache "^4.1.2" merge-source-map "^1.1.0" postcss "^7.0.14" - postcss-selector-parser "^5.0.0" + postcss-selector-parser "^6.0.2" prettier "^1.18.2" source-map "~0.6.1" vue-template-es2015-compiler "^1.9.0" -"@vuepress/core@^1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@vuepress/core/-/core-1.3.1.tgz#36db30d13e917f172f931a78b5e916c923523675" - integrity sha512-BBtM3imJUPwCTz0Fzl++ZLgf1afcsas4jo/wbVvroIdI0R6GEbXdivnisVGD48tZ10WcwvY94tlL1jWO8xV6bg== +"@vuepress/core@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@vuepress/core/-/core-1.4.0.tgz#a9b09a2615b1f0bf183541d22e69a126b8220f16" + integrity sha512-xWiLG6MEzZdXGvr7/ickSr/plxPESC8c3prMOUDxROkFnyOiKmVvIyn4vAmRkFX3Xw4mfOLxucIOpQg0K6hEjw== dependencies: "@babel/core" "^7.8.4" "@vue/babel-preset-app" "^4.1.2" - "@vuepress/markdown" "^1.3.1" - "@vuepress/markdown-loader" "^1.3.1" - "@vuepress/plugin-last-updated" "^1.3.1" - "@vuepress/plugin-register-components" "^1.3.1" - "@vuepress/shared-utils" "^1.3.1" + "@vuepress/markdown" "^1.4.0" + "@vuepress/markdown-loader" "^1.4.0" + "@vuepress/plugin-last-updated" "^1.4.0" + "@vuepress/plugin-register-components" "^1.4.0" + "@vuepress/shared-utils" "^1.4.0" autoprefixer "^9.5.1" babel-loader "^8.0.4" cache-loader "^3.0.0" @@ -1011,21 +985,21 @@ webpack-merge "^4.1.2" webpackbar "3.2.0" -"@vuepress/markdown-loader@^1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@vuepress/markdown-loader/-/markdown-loader-1.3.1.tgz#6ee5db3ef179c42db406e3542e90cc4a3f5baf39" - integrity sha512-JxjQgSClW51hE0bCrcAqnG0yrvVURzcZwP2zbWkcCMD7vomHbvkHyPmuf6oa8Jk4S//RQUYINrzC/KrDjVuzIQ== +"@vuepress/markdown-loader@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@vuepress/markdown-loader/-/markdown-loader-1.4.0.tgz#974e9bdb62ad45c1614a6c3ef33eed276d27635a" + integrity sha512-oEHB6EzCeIxyQxg1HSGX3snRL25V6XZ3O0Zx/sWd5hl0sneEsRLHRMflPGhKu4c6cfsyTck7aTbt7Z71vVy0FQ== dependencies: - "@vuepress/markdown" "^1.3.1" + "@vuepress/markdown" "^1.4.0" loader-utils "^1.1.0" lru-cache "^5.1.1" -"@vuepress/markdown@^1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@vuepress/markdown/-/markdown-1.3.1.tgz#9bd41e9b2fa7ed7e3364bc4883ef21f13bdd936d" - integrity sha512-UJoGHR9GsFnPk+Jot8tieO4M6WJQ5CkdIWlQfbpC1+Z0ETJjlNIel23BKLNzqfo3NhLq+/i33RnzMVzkBKlVvQ== +"@vuepress/markdown@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@vuepress/markdown/-/markdown-1.4.0.tgz#fe96e0c07ae3ce7562c21ea6f5ea4a5359ba4ea9" + integrity sha512-H3uojkiO5/uWKpwBEPdk5fsSj+ZGgNR7xi6oYhUxaUak9nC6mhMZ3KzeNA67QmevG3XHEoYx4d9oeAC1Au1frg== dependencies: - "@vuepress/shared-utils" "^1.3.1" + "@vuepress/shared-utils" "^1.4.0" markdown-it "^8.4.1" markdown-it-anchor "^5.0.2" markdown-it-chain "^1.3.0" @@ -1033,43 +1007,43 @@ markdown-it-table-of-contents "^0.4.0" prismjs "^1.13.0" -"@vuepress/plugin-active-header-links@^1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@vuepress/plugin-active-header-links/-/plugin-active-header-links-1.3.1.tgz#b82a69b963edb3cf5361ef5a0a38642285757130" - integrity sha512-mrawXXAv2K1GrD1JNoFHxF8xX3KiphVcwvf+58GXpsyAQ5ag5X1BZG3gCA1JdNFUe3SXRh5jF6HTBuM2dc6Ovg== +"@vuepress/plugin-active-header-links@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-active-header-links/-/plugin-active-header-links-1.4.0.tgz#b43fdad67ef42c383a84642f7914e22c56189089" + integrity sha512-UWnRcqJZnX1LaPHxESx4XkRVJCleWvdGlSVivRGNLZuV1xrxJzB6LC86SNMur+imoyzeQL/oIgKY1QFx710g8w== dependencies: lodash.debounce "^4.0.8" -"@vuepress/plugin-last-updated@^1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@vuepress/plugin-last-updated/-/plugin-last-updated-1.3.1.tgz#70f241181a0d485029329a7c9d0f0629d4242b5b" - integrity sha512-n1EhhFcaWxQtbC9ICyLg8kmSULjV18wYMbHCyaKRYAvyhlPau95zbSpQfG2Nl3ZgFR6kRodK6AmZUOgho0zh/g== +"@vuepress/plugin-last-updated@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-last-updated/-/plugin-last-updated-1.4.0.tgz#1657eee410ff5a7431b2a8e88d19e7e44bdc3951" + integrity sha512-sNxCXDz7AO4yIAZTEGt9TaLpJ2E0dgJGWx79nDFKfvpITn+Q2p7dUzkyVVxXs3TWXffoElGdNj/xIL5AUkg2qg== dependencies: cross-spawn "^6.0.5" -"@vuepress/plugin-nprogress@^1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@vuepress/plugin-nprogress/-/plugin-nprogress-1.3.1.tgz#4fb519f3a88cdc07439ac3a08595ab7b5ed182a6" - integrity sha512-vDBnIhTgGZbADwhaatSLsFnuj+MDDpCWQ79m9o+8RtMZO2HemedcCRNIj/ZLRJSBFjXrDdnXF5lpW4EEIeRaew== +"@vuepress/plugin-nprogress@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-nprogress/-/plugin-nprogress-1.4.0.tgz#90bb16ab8d43321e5911dea489986de25adb56d1" + integrity sha512-hJ9phJHONWWZqcWztbVtmmRjZduHQHIOBifUBvAfAGcuOBLVHqRnv3i7XD5UB3MIWPM1/bAoTA2TVs4sb9Wg4Q== dependencies: nprogress "^0.2.0" -"@vuepress/plugin-register-components@^1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@vuepress/plugin-register-components/-/plugin-register-components-1.3.1.tgz#0f0683b9f69542d3e7a6481e48011d623648b56b" - integrity sha512-ae/94omRTPZkJKuVic8Rvzfnu2NtqsyVPYTL6qcnjDgxieR3L7EAYLNEvYpg1jof+QTHoEDCaVU2c63chZcfEQ== +"@vuepress/plugin-register-components@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-register-components/-/plugin-register-components-1.4.0.tgz#0dafefd3baed6cc50b53f9826e84b25d83fed763" + integrity sha512-HmSzCTPVrlJJ8PSIXAvh4RkPy9bGmdrQuAXAtjiiq5rzBjL3uIg2VwzTrKDqf7FkCKs4lcRAEuNxB70bH6tddA== dependencies: - "@vuepress/shared-utils" "^1.3.1" + "@vuepress/shared-utils" "^1.4.0" -"@vuepress/plugin-search@^1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@vuepress/plugin-search/-/plugin-search-1.3.1.tgz#eee95c9c79a316a64ab046696a90a2ee1db35c34" - integrity sha512-iOIvMWUTPHrGxjDprFoGTcuI8Y8/6e6JjLO4mO6qe6qVqR1yCQ8cJzVYXIizjEHUFYJ04uZ3jF9gBV8npS+3ZQ== +"@vuepress/plugin-search@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@vuepress/plugin-search/-/plugin-search-1.4.0.tgz#26a02e3409e6ea6830f9fc7e6d87fc45ba46c579" + integrity sha512-5K02DL9Wqlfy/aNiYXdbXBOGzR9zMNKz/P8lfHDU+ZOjtfNf6ImAdUkHS4pi70YkkTuemdYM8JjG/j5UYn6Rjw== -"@vuepress/shared-utils@^1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@vuepress/shared-utils/-/shared-utils-1.3.1.tgz#930038dfadf28f39147e6cb781e9930259995a7e" - integrity sha512-MlIAlnptjDC9+l0SJKW6BpkuwtxfKDzq4Rmag75RdyIqkkNv4EsCXZ8Y3HSuzENWFBwoD31jLC+nCZ3hULcvSg== +"@vuepress/shared-utils@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@vuepress/shared-utils/-/shared-utils-1.4.0.tgz#ab4bfcd5c1e3d0e5e384e0c1d0bb86470430c87e" + integrity sha512-6QTv7zMRXAojCuPRIm4aosYfrQO4OREhyxvbFeg/ZMWkVX+xZZQTdE7ZyK/4NAvEgkpjtPTRC1TQYhLJUqC5mQ== dependencies: chalk "^2.3.2" diacritics "^1.3.0" @@ -1081,14 +1055,14 @@ semver "^6.0.0" upath "^1.1.0" -"@vuepress/theme-default@^1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@vuepress/theme-default/-/theme-default-1.3.1.tgz#ec701a2c9d2de542400c42f627d2009921f1b424" - integrity sha512-CihkB6/+5vfgeTI5HRDs4+QgTkIN4/K54OpQCGLW51OinXuz4rjMVQW2uSlSqSeKEr+MERHa+Jc5deIpA0opoA== +"@vuepress/theme-default@^1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@vuepress/theme-default/-/theme-default-1.4.0.tgz#f0f70effa0ee863a2e25c7682612c8a808f3e156" + integrity sha512-4ywWVfXZTBha+yuvWoa1HRg0vMpT2wZF3zuW0PDXkDzxqP4DkLljJk8mPpepyuPYlSThn+gHNC8kmnNBbGp3Tw== dependencies: - "@vuepress/plugin-active-header-links" "^1.3.1" - "@vuepress/plugin-nprogress" "^1.3.1" - "@vuepress/plugin-search" "^1.3.1" + "@vuepress/plugin-active-header-links" "^1.4.0" + "@vuepress/plugin-nprogress" "^1.4.0" + "@vuepress/plugin-search" "^1.4.0" docsearch.js "^2.5.2" lodash "^4.17.15" stylus "^0.54.5" @@ -1285,17 +1259,7 @@ ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== -ajv@^6.1.0, ajv@^6.10.2: - version "6.10.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" - integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== - dependencies: - fast-deep-equal "^2.0.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^6.5.5: +ajv@^6.1.0, ajv@^6.10.2, ajv@^6.5.5: version "6.12.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== @@ -1349,11 +1313,11 @@ ansi-colors@^3.0.0: integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== ansi-escapes@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.0.tgz#a4ce2b33d6b214b7950d8595c212f12ac9cc569d" - integrity sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg== + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== dependencies: - type-fest "^0.8.1" + type-fest "^0.11.0" ansi-html@0.0.7: version "0.0.7" @@ -1536,7 +1500,7 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= -atob@^2.1.1: +atob@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== @@ -1549,16 +1513,16 @@ autocomplete.js@0.36.0: immediate "^3.2.3" autoprefixer@^9.5.1: - version "9.7.2" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.2.tgz#26cf729fbb709323b40171a874304884dcceffed" - integrity sha512-LCAfcdej1182uVvPOZnytbq61AhnOZ/4JelDaJGDeNwewyU1AMaNthcHsyz1NRjTmd2FkurMckLWfkHg3Z//KA== + version "9.7.4" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.4.tgz#f8bf3e06707d047f0641d87aee8cfb174b2a5378" + integrity sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g== dependencies: - browserslist "^4.7.3" - caniuse-lite "^1.0.30001010" + browserslist "^4.8.3" + caniuse-lite "^1.0.30001020" chalk "^2.4.2" normalize-range "^0.1.2" num2fraction "^1.2.2" - postcss "^7.0.23" + postcss "^7.0.26" postcss-value-parser "^4.0.2" aws-sign2@~0.7.0: @@ -1645,6 +1609,13 @@ binary-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + block-stream@*: version "0.0.9" resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" @@ -1653,9 +1624,9 @@ block-stream@*: inherits "~2.0.0" bluebird@^3.1.1, bluebird@^3.5.5: - version "3.7.1" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.1.tgz#df70e302b471d7473489acf26a93d63b53f874de" - integrity sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg== + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: version "4.11.8" @@ -1797,23 +1768,15 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.0.0, browserslist@^4.7.3: - version "4.7.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.7.3.tgz#02341f162b6bcc1e1028e30624815d4924442dc3" - integrity sha512-jWvmhqYpx+9EZm/FxcZSbUZyDEvDTLDi3nSAKbzEkyWvtI0mNSmUosey+5awDW1RUlrgXbQb5A6qY1xQH9U6MQ== +browserslist@^4.0.0, browserslist@^4.8.3, browserslist@^4.8.5, browserslist@^4.9.1: + version "4.10.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.10.0.tgz#f179737913eaf0d2b98e4926ac1ca6a15cbcc6a9" + integrity sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA== dependencies: - caniuse-lite "^1.0.30001010" - electron-to-chromium "^1.3.306" - node-releases "^1.1.40" - -browserslist@^4.8.3, browserslist@^4.8.5: - version "4.8.7" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.8.7.tgz#ec8301ff415e6a42c949d0e66b405eb539c532d0" - integrity sha512-gFOnZNYBHrEyUML0xr5NJ6edFaaKbTFX9S9kQHlYfCP0Rit/boRIz4G+Avq6/4haEKJXdGGUnoolx+5MWW2BoA== - dependencies: - caniuse-lite "^1.0.30001027" - electron-to-chromium "^1.3.349" - node-releases "^1.1.49" + caniuse-lite "^1.0.30001035" + electron-to-chromium "^1.3.378" + node-releases "^1.1.52" + pkg-up "^3.1.0" buffer-from@^1.0.0: version "1.1.1" @@ -1860,9 +1823,9 @@ bytes@3.1.0: integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== cac@^6.5.6: - version "6.5.6" - resolved "https://registry.yarnpkg.com/cac/-/cac-6.5.6.tgz#0120e39c9e56a7ab6418b078e6ad0595f2982375" - integrity sha512-8jsGLeBiYEVYTDExaj/rDPG4tyra4yjjacIL10TQ+MobPcg9/IST+dkKLu6sOzq0GcIC6fQqX1nkH9HoskQLAw== + version "6.5.7" + resolved "https://registry.yarnpkg.com/cac/-/cac-6.5.7.tgz#3359494ced169f58f4ccdaa64f9b760badddde7a" + integrity sha512-DjjOqLvoX/oO/snovTNm553kRYWTmIIQBfHQ2UqktbCudoHJuxzvRhjwdCHkXrQwp/lnu3bYyZ+LfaHtwk0Wjw== cacache@^12.0.2, cacache@^12.0.3: version "12.0.3" @@ -1990,15 +1953,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001010: - version "1.0.30001010" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001010.tgz#397a14034d384260453cc81994f494626d34b938" - integrity sha512-RA5GH9YjFNea4ZQszdWgh2SC+dpLiRAg4VDQS2b5JRI45OxmbGrYocYHTa9x0bKMQUE7uvHkNPNffUr+pCxSGw== - -caniuse-lite@^1.0.30001027: - version "1.0.30001028" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001028.tgz#f2241242ac70e0fa9cda55c2776d32a0867971c2" - integrity sha512-Vnrq+XMSHpT7E+LWoIYhs3Sne8h9lx9YJV3acH3THNCwU/9zV93/ta4xVfzTtnqd3rvnuVpVjE3DFqf56tr3aQ== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001020, caniuse-lite@^1.0.30001035: + version "1.0.30001035" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001035.tgz#2bb53b8aa4716b2ed08e088d4dc816a5fe089a1e" + integrity sha512-C1ZxgkuA4/bUEdMbU5WrGY4+UhMFFiXrgNAfxiMIqWgFTWfv/xsZCS2xEHT2LMq7xAZfuAnu6mcqyDl0ZR6wLQ== caseless@~0.12.0: version "0.12.0" @@ -2064,9 +2022,9 @@ chokidar@^2.0.2, chokidar@^2.0.3, chokidar@^2.1.8: fsevents "^1.2.7" chownr@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" - integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw== + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== chrome-trace-event@^1.0.2: version "1.0.2" @@ -2104,9 +2062,9 @@ class-utils@^0.3.5: static-extend "^0.1.1" clean-css@4.2.x, clean-css@^4.1.6, clean-css@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" - integrity sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g== + version "4.2.3" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" + integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== dependencies: source-map "~0.6.0" @@ -2116,9 +2074,9 @@ cli-boxes@^2.2.0: integrity sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w== clipboard@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-2.0.4.tgz#836dafd66cf0fea5d71ce5d5b0bf6e958009112d" - integrity sha512-Vw26VSLRpJfBofiVaFb/I8PVfdI1OxKcYShe6fm0sP/DtmiWQNCjhM/okTvdCo0G+lMMm1rMYbk4IK4x1X+kgQ== + version "2.0.6" + resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-2.0.6.tgz#52921296eec0fdf77ead1749421b21c968647376" + integrity sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg== dependencies: good-listener "^1.2.2" select "^1.1.2" @@ -2262,11 +2220,11 @@ component-emitter@^1.2.1: integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== compressible@~2.0.16: - version "2.0.17" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1" - integrity sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw== + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== dependencies: - mime-db ">= 1.40.0 < 2" + mime-db ">= 1.43.0 < 2" compression@^1.7.4: version "1.7.4" @@ -2311,12 +2269,12 @@ concurrently@^5.1.0: tree-kill "^1.2.2" yargs "^13.3.0" -configstore@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.0.tgz#37de662c7a49b5fe8dbcf8f6f5818d2d81ed852b" - integrity sha512-eE/hvMs7qw7DlcB5JPRnthmrITuHMmACUJAp89v6PT6iOqzoLS7HRWhBtuHMlhNHo2AhUSA/3Dh1bKNJHcublQ== +configstore@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" + integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== dependencies: - dot-prop "^5.1.0" + dot-prop "^5.2.0" graceful-fs "^4.1.2" make-dir "^3.0.0" unique-string "^2.0.0" @@ -2329,9 +2287,9 @@ connect-history-api-fallback@^1.5.0, connect-history-api-fallback@^1.6.0: integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== consola@^2.6.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/consola/-/consola-2.11.0.tgz#9bb35d850d8cecde894ce2eb4d792fa6b90d9013" - integrity sha512-2bcAqHastlPSCvZ+ur8bgHInGAWvUnysWz3h3xRX+/XZoCY7avolJJnVXOPGoVoyCcg1b231XixonoArmgxaoA== + version "2.11.3" + resolved "https://registry.yarnpkg.com/consola/-/consola-2.11.3.tgz#f7315836224c143ac5094b47fd4c816c2cd1560e" + integrity sha512-aoW0YIIAmeftGR8GSpw6CGQluNdkWMWh3yEFjH/hmynTYnMtibXszii3lxCXmk8YxJtI3FAK5aTiquA5VH68Gw== console-browserify@^1.1.0: version "1.2.0" @@ -2402,9 +2360,9 @@ copy-descriptor@^0.1.0: integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= copy-webpack-plugin@^5.0.2: - version "5.0.5" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.0.5.tgz#731df6a837a2ef0f8f8e2345bdfe9b7c62a2da68" - integrity sha512-7N68eIoQTyudAuxkfPT7HzGoQ+TsmArN/I3HFwG+lVE3FNzqvZKIiaxtYh4o3BIznioxUvx9j26+Rtsc9htQUQ== + version "5.1.1" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz#5481a03dea1123d88a988c6ff8b78247214f0b88" + integrity sha512-P15M5ZC8dyCjQHWwd4Ia/dm0SgVvZJMYeykVIVYXbGyqO4dWB5oyPHp9i7wjwo5LhtlhKbiBCdS2NvM07Wlybg== dependencies: cacache "^12.0.3" find-cache-dir "^2.1.0" @@ -2416,7 +2374,7 @@ copy-webpack-plugin@^5.0.2: normalize-path "^3.0.0" p-limit "^2.2.1" schema-utils "^1.0.0" - serialize-javascript "^2.1.0" + serialize-javascript "^2.1.2" webpack-log "^2.0.0" core-js-compat@^3.6.2, core-js-compat@^3.6.4: @@ -2520,11 +2478,11 @@ crypto-random-string@^2.0.0: integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== crypto-random-string@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-3.0.1.tgz#29d7dc759d577a768afb3b7b2765dd9bd7ffe36a" - integrity sha512-dUL0cJ4PBLanJGJQBHQUkvZ3C4q13MXzl54oRqAIiJGiNkOZ4JDwkg/SBo7daGghzlJv16yW1p/4lIQukmbedA== + version "3.2.0" + resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-3.2.0.tgz#d513ef0c2ac6ff7cad5769de585d9bf2ad5a2b4d" + integrity sha512-8vPu5bsKaq2uKRy3OL7h1Oo7RayAWB8sYexLKAqvCXVib8SxgbmoF1IN4QMKjBv8uI8mp5gPPMbiRah25GMrVQ== dependencies: - type-fest "^0.5.2" + type-fest "^0.8.1" css-b64-images@~0.2.5: version "0.2.5" @@ -2601,11 +2559,6 @@ css-tree@1.0.0-alpha.37: mdn-data "2.0.4" source-map "^0.6.1" -css-unit-converter@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996" - integrity sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY= - css-what@2.1: version "2.1.3" resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" @@ -2626,11 +2579,6 @@ css@^2.0.0: source-map-resolve "^0.5.2" urix "^0.1.0" -cssesc@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" - integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== - cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" @@ -2814,9 +2762,9 @@ d3-force@1: d3-timer "1" d3-format@1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.4.2.tgz#2a8c0ebf500f315981c2110eaaf70b82f472cb2b" - integrity sha512-gco1Ih54PgMsyIXgttLxEhNy/mXxq8+rLnCb5shQk+P5TsiySrwWU5gpB4zen626J4LIwBxHvDChyA8qDm57ww== + version "1.4.3" + resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-1.4.3.tgz#4e8eb4dff3fdcb891a8489ec6e698601c41b96f1" + integrity sha512-mm/nE2Y9HgGyjP+rKIekeITVgBtX97o1nrvHCWX8F/yBYyevUTvu9vb5pUnKwrcSw7o7GuwMOWjS9gFDs4O+uQ== d3-geo@1: version "1.11.9" @@ -2890,9 +2838,9 @@ d3-shape@1: d3-path "1" d3-time-format@2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.2.2.tgz#187597ffc6a0f37cb36bb7a1d7167cdc887ecda0" - integrity sha512-pweL2Ri2wqMY+wlW/wpkl8T3CUzKAha8S9nmiQlMABab8r5MJN0PD1V4YyRNVaKQfeh4Z0+VO70TLw6ESVOYzw== + version "2.2.3" + resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-2.2.3.tgz#0c9a12ee28342b2037e5ea1cf0b9eb4dd75f29cb" + integrity sha512-RAHNnD8+XvC4Zc4d2A56Uw0yJoM7bsvOlJR33bclxq399Rak/b9bhvu/InjxdWhPtkgU53JJcleJTGkNRnN6IA== dependencies: d3-time "1" @@ -2935,9 +2883,9 @@ d3-zoom@1: d3-transition "1" d3@^5.14, d3@^5.7.0: - version "5.14.2" - resolved "https://registry.yarnpkg.com/d3/-/d3-5.14.2.tgz#a3fb3af016d362aaf4dacbe618ae949c1744b8c4" - integrity sha512-Ccipa9XrYW5N0QkP6u0Qb8kU6WekIXBiDenmZm1zLvuq/9pBBhRCJLCICEOsH5Og4B0Xw02bhqGkK5VN/oPH0w== + version "5.15.0" + resolved "https://registry.yarnpkg.com/d3/-/d3-5.15.0.tgz#ffd44958e6a3cb8a59a84429c45429b8bca5677a" + integrity sha512-C+E80SL2nLLtmykZ6klwYj5rPqB5nlfN5LdWEAVdWPppqTD8taoJi2PxLZjPeYT8FFRR2yucXq+kBlOnnvZeLg== dependencies: d3-array "1" d3-axis "1" @@ -2997,9 +2945,9 @@ dashdash@^1.12.0: assert-plus "^1.0.0" date-fns@^2.0.1: - version "2.10.0" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.10.0.tgz#abd10604d8bafb0bcbd2ba2e9b0563b922ae4b6b" - integrity sha512-EhfEKevYGWhWlZbNeplfhIU/+N+x0iCIx7VzKlXma2EdQyznVlZhCptXUY+BegNpPW2kjdx15Rvq503YcXXrcA== + version "2.11.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.11.0.tgz#ec2b44977465b9dcb370021d5e6c019b19f36d06" + integrity sha512-8P1cDi8ebZyDxUyUprBXwidoEtiQAawYPGvpfb+Dg0G6JrQ+VozwOmm91xYC0vAv1+0VmLehEPb+isg4BGUFfA== de-indent@^1.0.2: version "1.0.2" @@ -3297,14 +3245,7 @@ domutils@^1.5.1, domutils@^1.7.0: dom-serializer "0" domelementtype "1" -dot-prop@^4.1.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" - integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== - dependencies: - is-obj "^1.0.0" - -dot-prop@^5.1.0: +dot-prop@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== @@ -3339,20 +3280,15 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.3.306: - version "1.3.306" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.306.tgz#e8265301d053d5f74e36cb876486830261fbe946" - integrity sha512-frDqXvrIROoYvikSKTIKbHbzO6M3/qC6kCIt/1FOa9kALe++c4VAJnwjSFvf1tYLEUsP2n9XZ4XSCyqc3l7A/A== - -electron-to-chromium@^1.3.349: - version "1.3.356" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.356.tgz#fb985ee0f3023e6e11b97547ff3f738bdd8643d2" - integrity sha512-qW4YHMfOFjvx0jkSK2vjaHoLjk1+uJIV5tqtLDo7P5y3/kM8KQP23YBU0Y5fCSW4jIbDvEzeHDaY4+4vEaqqOw== +electron-to-chromium@^1.3.378: + version "1.3.379" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.379.tgz#81dc5e82a3e72bbb830d93e15bc35eda2bbc910e" + integrity sha512-NK9DBBYEBb5f9D7zXI0hiE941gq3wkBeQmXs1ingigA/jnTg5mhwY2Z5egwA+ZI8OLGKCx0h1Cl8/xeuIBuLlg== elliptic@^6.0.0: - version "6.5.1" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.1.tgz#c380f5f909bf1b9b4428d028cd18d3b0efd6b52b" - integrity sha512-xvJINNLbTeWQjrl6X+7eQCrIy/YPv5XCpKW6kB5mKvtnGILoLDcySuwomfdzt0BMdLNVnuRNTuzKNHj0bva1Cg== + version "6.5.2" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" + integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== dependencies: bn.js "^4.4.0" brorand "^1.0.1" @@ -3377,6 +3313,11 @@ emojis-list@^2.0.0: resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -3417,9 +3358,9 @@ envify@^4.0.0: through "~2.3.4" envinfo@^7.2.0: - version "7.4.0" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.4.0.tgz#bef4ece9e717423aaf0c3584651430b735ad6630" - integrity sha512-FdDfnWnCVjxTTpWE3d6Jgh5JDIA3Cw7LCgpM/pI7kK1ORkjaqI2r6NqQ+ln2j0dfpgxY00AWieSvtkiZQKIItA== + version "7.5.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.5.0.tgz#91410bb6db262fb4f1409bd506e9ff57e91023f4" + integrity sha512-jDgnJaF/Btomk+m3PZDTTCb5XIIIX3zYItnCRfF73zVgvinLoRomuhi75Y4su0PtQxWz4v66XnLLckyvyJTOIQ== errno@^0.1.3, errno@~0.1.7: version "0.1.7" @@ -3435,23 +3376,24 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.12.0, es-abstract@^1.5.1: - version "1.16.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.16.0.tgz#d3a26dc9c3283ac9750dca569586e976d9dcc06d" - integrity sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg== +es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: + version "1.17.4" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.4.tgz#e3aedf19706b20e7c2594c35fc0d57605a79e184" + integrity sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ== dependencies: - es-to-primitive "^1.2.0" + es-to-primitive "^1.2.1" function-bind "^1.1.1" has "^1.0.3" - has-symbols "^1.0.0" - is-callable "^1.1.4" - is-regex "^1.0.4" - object-inspect "^1.6.0" + has-symbols "^1.0.1" + is-callable "^1.1.5" + is-regex "^1.0.5" + object-inspect "^1.7.0" object-keys "^1.1.1" - string.prototype.trimleft "^2.1.0" - string.prototype.trimright "^2.1.0" + object.assign "^4.1.0" + string.prototype.trimleft "^2.1.1" + string.prototype.trimright "^2.1.1" -es-to-primitive@^1.2.0: +es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== @@ -3465,6 +3407,11 @@ es6-promise@^4.1.0: resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== +escape-goat@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" + integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== + escape-html@^1.0.3, escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -3526,9 +3473,9 @@ events@^1.1.0: integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= events@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" - integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA== + version "3.1.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" + integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg== eventsource@^1.0.7: version "1.0.7" @@ -3651,11 +3598,6 @@ extsprintf@^1.2.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= -fast-deep-equal@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= - fast-deep-equal@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" @@ -3698,9 +3640,9 @@ figgy-pudding@^3.5.1: integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== figures@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.1.0.tgz#4b198dd07d8d71530642864af2d45dd9e459c4ec" - integrity sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg== + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== dependencies: escape-string-regexp "^1.0.5" @@ -3712,6 +3654,11 @@ file-loader@^3.0.1: loader-utils "^1.0.2" schema-utils "^1.0.0" +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -3775,9 +3722,9 @@ follow-redirects@1.5.10: debug "=3.1.0" follow-redirects@^1.0.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.9.0.tgz#8d5bcdc65b7108fe1508649c79c12d732dcedb4f" - integrity sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A== + version "1.10.0" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.10.0.tgz#01f5263aee921c6a54fb91667f08f4155ce169eb" + integrity sha512-4eyLK6s6lH32nOvLLwlIOnr9zrL8Sm+OvW4pVTJNoXeGzYIkHVf+pADQi+OJ0E67hiuSLezPVPyBcIZO50TmmQ== dependencies: debug "^3.0.0" @@ -3862,12 +3809,12 @@ fs.realpath@^1.0.0: integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= fsevents@^1.2.7: - version "1.2.9" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" - integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw== + version "1.2.12" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.12.tgz#db7e0d8ec3b0b45724fd4d83d43554a8f1f0de5c" + integrity sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q== dependencies: + bindings "^1.5.0" nan "^2.12.1" - node-pre-gyp "^0.12.0" fstream@^1.0.0, fstream@^1.0.12: version "1.0.12" @@ -4034,12 +3981,12 @@ globby@^9.1.0, globby@^9.2.0: slash "^2.0.0" globule@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.1.tgz#5dffb1b191f22d20797a9369b49eab4e9839696d" - integrity sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ== + version "1.3.1" + resolved "https://registry.yarnpkg.com/globule/-/globule-1.3.1.tgz#90a25338f22b7fbeb527cee63c629aea754d33b9" + integrity sha512-OVyWOHgw29yosRHCHo7NncwR1hW5ew0W/UrvtwvjefVJeQ26q4/8r8FmPsSF1hJ93IgWkyv16pCTz6WblMzm/g== dependencies: glob "~7.1.1" - lodash "~4.17.10" + lodash "~4.17.12" minimatch "~3.0.2" good-listener@^1.2.2: @@ -4098,7 +4045,7 @@ har-schema@^2.0.0: resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= -har-validator@~5.1.0, har-validator@~5.1.3: +har-validator@~5.1.3: version "5.1.3" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== @@ -4123,7 +4070,7 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== -has-symbols@^1.0.0: +has-symbols@^1.0.0, has-symbols@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== @@ -4169,7 +4116,7 @@ has-yarn@^2.1.0: resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== -has@^1.0.0, has@^1.0.1, has@^1.0.3: +has@^1.0.0, has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== @@ -4303,9 +4250,9 @@ htmlparser2@^3.3.0: readable-stream "^3.1.1" http-cache-semantics@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz#495704773277eeef6e43f9ab2c2c7d259dda25c5" - integrity sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew== + version "4.1.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== http-deceiver@^1.2.7: version "1.2.7" @@ -4474,9 +4421,9 @@ imurmurhash@^0.1.4: integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= in-publish@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51" - integrity sha1-4g/146KvwmkDILbcVSaCqcf631E= + version "2.0.1" + resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.1.tgz#948b1a535c8030561cea522f73f78f4be357e00c" + integrity sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ== indent-string@^2.1.0: version "2.1.0" @@ -4558,12 +4505,7 @@ ip@^1.1.0, ip@^1.1.5: resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= -ipaddr.js@1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" - integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== - -ipaddr.js@^1.9.0: +ipaddr.js@1.9.1, ipaddr.js@^1.9.0: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== @@ -4619,10 +4561,10 @@ is-buffer@^1.1.5: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-callable@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" - integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== +is-callable@^1.1.4, is-callable@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" + integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== is-ci@^2.0.0: version "2.0.0" @@ -4658,9 +4600,9 @@ is-data-descriptor@^1.0.0: kind-of "^6.0.0" is-date-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" - integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== is-descriptor@^0.1.0: version "0.1.6" @@ -4703,11 +4645,9 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= is-finite@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= - dependencies: - number-is-nan "^1.0.0" + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" + integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== is-fullwidth-code-point@^1.0.0: version "1.0.0" @@ -4760,11 +4700,6 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" -is-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" - integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= - is-obj@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" @@ -4806,12 +4741,12 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-regex@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" - integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= +is-regex@^1.0.4, is-regex@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" + integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== dependencies: - has "^1.0.1" + has "^1.0.3" is-regexp@^1.0.0: version "1.0.0" @@ -4836,11 +4771,11 @@ is-svg@^3.0.0: html-comment-regex "^1.1.0" is-symbol@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" - integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== dependencies: - has-symbols "^1.0.0" + has-symbols "^1.0.1" is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" @@ -4910,9 +4845,9 @@ javascript-stringify@^2.0.1: integrity sha512-yV+gqbd5vaOYjqlbk16EG89xB5udgjqQF3C5FAORDg4f/IS1Yc5ERCv5e/57yBcfJYw05V5JyIXabhwb75Xxow== js-base64@^2.1.8: - version "2.5.1" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121" - integrity sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw== + version "2.5.2" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.2.tgz#313b6274dda718f714d00b3330bbae6e38e90209" + integrity sha512-Vg8czh0Q7sFBSUMWWArX/miJeBWYBPpdU/3M/DKSaekLMqrqVPaedp+5mZhie/r0lgrcaYBfwXatEew6gwgiQQ== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -4985,11 +4920,11 @@ json5@^1.0.1: minimist "^1.2.0" json5@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.1.tgz#81b6cb04e9ba496f1c7005d07b4368a2638f90b6" - integrity sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ== + version "2.1.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.2.tgz#43ef1f0af9835dd624751a6b7fa48874fb2d608e" + integrity sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ== dependencies: - minimist "^1.2.0" + minimist "^1.2.5" jsonfile@^4.0.0: version "4.0.0" @@ -5040,9 +4975,9 @@ kind-of@^5.0.0: integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" - integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== last-call-webpack-plugin@^3.0.0: version "3.0.0" @@ -5124,12 +5059,12 @@ loader-utils@^0.2.16: object-assign "^4.0.1" loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" - integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== dependencies: big.js "^5.2.2" - emojis-list "^2.0.0" + emojis-list "^3.0.0" json5 "^1.0.1" locate-path@^3.0.0: @@ -5185,7 +5120,7 @@ lodash.sortby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= -lodash.template@^4.4.0: +lodash.template@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== @@ -5205,15 +5140,15 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.0.0, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.17.5, lodash@~4.17.10: +lodash@^4.0.0, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.17.5, lodash@~4.17.12: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== -loglevel@^1.6.4: - version "1.6.6" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.6.tgz#0ee6300cc058db6b3551fa1c4bf73b83bb771312" - integrity sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ== +loglevel@^1.6.6: + version "1.6.7" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.7.tgz#b3e034233188c68b889f5b862415306f565e2c56" + integrity sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A== loose-envify@^1.0.0: version "1.4.0" @@ -5269,9 +5204,9 @@ make-dir@^2.0.0: semver "^5.6.0" make-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.0.tgz#1b5f39f6b9270ed33f9f054c5c0f84304989f801" - integrity sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw== + version "3.0.2" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" + integrity sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w== dependencies: semver "^6.0.0" @@ -5367,9 +5302,9 @@ media-typer@0.3.0: integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= meilisearch@^0.8.11: - version "0.8.11" - resolved "https://registry.yarnpkg.com/meilisearch/-/meilisearch-0.8.11.tgz#98bc92619f5773f87fd06335b8b501d37187fcc6" - integrity sha512-Hpl7rKqQ8DmB3r7GIxdkmG1Wey+VqJR220orMlEGxlsjuH9DUyIg61wDFnt3b+wUdBB84XW/8Ihnoktl+dBfQg== + version "0.8.12" + resolved "https://registry.yarnpkg.com/meilisearch/-/meilisearch-0.8.12.tgz#4029f5cc72471c987fdbb58e06c6a152a98b4e4a" + integrity sha512-g4c9Mn7eYSudn9CTzbSJKIjn7pRU2d2RdIr0RIQeVDFItcZZRMhBbYn+r930vBXyfYKPN7qSlfKCdMS35vyc3A== dependencies: axios "0.19.2" tslib "1.10.0" @@ -5481,30 +5416,18 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.42.0, "mime-db@>= 1.40.0 < 2": - version "1.42.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac" - integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ== - -mime-db@1.43.0: +mime-db@1.43.0, "mime-db@>= 1.43.0 < 2": version "1.43.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== -mime-types@^2.1.12, mime-types@~2.1.19: +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: version "2.1.26" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== dependencies: mime-db "1.43.0" -mime-types@~2.1.17, mime-types@~2.1.24: - version "2.1.25" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.25.tgz#39772d46621f93e2a80a856c53b86a62156a6437" - integrity sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg== - dependencies: - mime-db "1.42.0" - mime@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" @@ -5572,15 +5495,10 @@ minimatch@^3.0.4, minimatch@~3.0.2: dependencies: brace-expansion "^1.1.7" -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - -minimist@^1.1.3, minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= +minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: version "2.9.0" @@ -5627,16 +5545,16 @@ mkdirp@0.3.0: integrity sha1-G79asbqCevI1dRQ0kEJkVfSB/h4= "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1, mkdirp@~0.5.x: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.3.tgz#5a514b7179259287952881e94410ec5465659f8c" + integrity sha512-P+2gwrFqx8lhew375MQHHeTlY8AuOJSrGf0R5ddkEndUkmwpgUob/vQuBD1V22/Cw1/lJr4x+EjllSezBThzBg== dependencies: - minimist "0.0.8" + minimist "^1.2.5" moment-mini@^2.22.1: - version "2.22.1" - resolved "https://registry.yarnpkg.com/moment-mini/-/moment-mini-2.22.1.tgz#bc32d73e43a4505070be6b53494b17623183420d" - integrity sha512-OUCkHOz7ehtNMYuZjNciXUfwTuz8vmF1MTbAy59ebf+ZBYZO5/tZKuChVWCX+uDo+4idJBpGltNfV8st+HwsGw== + version "2.24.0" + resolved "https://registry.yarnpkg.com/moment-mini/-/moment-mini-2.24.0.tgz#fa68d98f7fe93ae65bf1262f6abb5fb6983d8d18" + integrity sha512-9ARkWHBs+6YJIvrIp0Ik5tyTTtP9PoV0Ssu2Ocq5y9v8+NOOpWiRshAp8c4rZVWTOe+157on/5G+zj5pwIQFEQ== move-concurrently@^1.0.1: version "1.0.1" @@ -5701,9 +5619,9 @@ nanomatch@^1.2.9: to-regex "^3.0.1" needle@^2.2.1: - version "2.4.0" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" - integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg== + version "2.3.3" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.3.tgz#a041ad1d04a871b0ebb666f40baaf1fb47867117" + integrity sha512-EkY0GeSq87rWp1hoq/sH/wnTWgFVhYlnIkbJ0YJFfRgEFlz2RraCjBpFQ+vrEgEdp0ThfyHADmkChEhcb7PKyw== dependencies: debug "^3.2.6" iconv-lite "^0.4.4" @@ -5783,10 +5701,10 @@ node-libs-browser@^2.2.1: util "^0.11.0" vm-browserify "^1.0.1" -node-pre-gyp@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" - integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A== +node-pre-gyp@*: + version "0.14.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" + integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== dependencies: detect-libc "^1.0.2" mkdirp "^0.5.1" @@ -5797,26 +5715,19 @@ node-pre-gyp@^0.12.0: rc "^1.2.7" rimraf "^2.6.1" semver "^5.3.0" - tar "^4" - -node-releases@^1.1.40: - version "1.1.40" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.40.tgz#a94facfa8e2d612302601ca1361741d529c4515a" - integrity sha512-r4LPcC5b/bS8BdtWH1fbeK88ib/wg9aqmg6/s3ngNLn2Ewkn/8J6Iw3P9RTlfIAdSdvYvQl2thCY5Y+qTAQ2iQ== - dependencies: - semver "^6.3.0" + tar "^4.4.2" -node-releases@^1.1.49: - version "1.1.49" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.49.tgz#67ba5a3fac2319262675ef864ed56798bb33b93e" - integrity sha512-xH8t0LS0disN0mtRCh+eByxFPie+msJUBL/lJDBuap53QGiYPa9joh83K4pCZgWJ+2L4b9h88vCVdXQ60NO2bg== +node-releases@^1.1.52: + version "1.1.52" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.52.tgz#bcffee3e0a758e92e44ecfaecd0a47554b0bcba9" + integrity sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ== dependencies: semver "^6.3.0" node-sass@^4.11.0: - version "4.13.0" - resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.13.0.tgz#b647288babdd6a1cb726de4545516b31f90da066" - integrity sha512-W1XBrvoJ1dy7VsvTAS5q1V45lREbTlZQqFbiHb3R3OTTCma0XBtuG6xZ6Z4506nR4lmHPTqVRwxT6KgtWC97CA== + version "4.13.1" + resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.13.1.tgz#9db5689696bb2eec2c32b98bfea4c7a2e992d0a3" + integrity sha512-TTWFx+ZhyDx1Biiez2nB0L3YrCZ/8oHagaDalbuBSlqXgUPsdkUSzJsVxeDO9LtPB49+Fh3WQl3slABo6AotNw== dependencies: async-foreach "^0.1.3" chalk "^1.1.1" @@ -5851,9 +5762,9 @@ nopt@1.0.10: abbrev "1" nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= + version "4.0.3" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" + integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== dependencies: abbrev "1" osenv "^0.1.4" @@ -5905,17 +5816,25 @@ normalize-url@^4.1.0: integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== npm-bundled@^1.0.1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" - integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== + version "1.1.1" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" + integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== + dependencies: + npm-normalize-package-bin "^1.0.1" + +npm-normalize-package-bin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== npm-packlist@^1.1.6: - version "1.4.6" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.6.tgz#53ba3ed11f8523079f1457376dd379ee4ea42ff4" - integrity sha512-u65uQdb+qwtGvEJh/DgQgW1Xg7sqeNbmxYyrvlNznaVTjV3E5P6F/EFjM+BVHXl7JJlsdG8A64M0XI8FI/IOlg== + version "1.4.8" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" + integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" + npm-normalize-package-bin "^1.0.1" npm-run-path@^2.0.0: version "2.0.2" @@ -5975,15 +5894,15 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.6.0: +object-inspect@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== object-is@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.1.tgz#0aa60ec9989a0b3ed795cf4d06f62cf1ad6539b6" - integrity sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY= + version "1.0.2" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.2.tgz#6b80eb84fe451498f65007982f035a5b445edec4" + integrity sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ== object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.0, object-keys@^1.1.1: version "1.1.1" @@ -6007,13 +5926,13 @@ object.assign@^4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" -object.getownpropertydescriptors@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" - integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== dependencies: - define-properties "^1.1.2" - es-abstract "^1.5.1" + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" object.pick@^1.3.0: version "1.3.0" @@ -6023,12 +5942,12 @@ object.pick@^1.3.0: isobject "^3.0.1" object.values@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9" - integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg== + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== dependencies: define-properties "^1.1.3" - es-abstract "^1.12.0" + es-abstract "^1.17.0-next.1" function-bind "^1.1.1" has "^1.0.3" @@ -6142,20 +6061,13 @@ p-is-promise@^2.0.0: resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== -p-limit@^2.0.0: +p-limit@^2.0.0, p-limit@^2.2.1: version "2.2.2" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== dependencies: p-try "^2.0.0" -p-limit@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" - integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg== - dependencies: - p-try "^2.0.0" - p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" @@ -6191,9 +6103,9 @@ package-json@^6.3.0: semver "^6.2.0" pako@~1.0.5: - version "1.0.10" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" - integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw== + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== parallel-transform@^1.1.0: version "1.2.0" @@ -6361,6 +6273,18 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" +pkg-up@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" + +popper.js@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.15.0.tgz#5560b99bbad7647e9faa475c6b8056621f5a4ff2" + integrity sha512-w010cY1oCUmI+9KwwlWki+r5jxKfTFDVoadl7MSrIujHU5MJ5OR6HTDj6Xo8aoR/QsA56x8jKjA59qGH4ELtrA== + portfinder@^1.0.13, portfinder@^1.0.25: version "1.0.25" resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.25.tgz#254fd337ffba869f4b9d37edc298059cb4d35eca" @@ -6376,14 +6300,13 @@ posix-character-classes@^0.1.0: integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= postcss-calc@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.1.tgz#36d77bab023b0ecbb9789d84dcb23c4941145436" - integrity sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ== + version "7.0.2" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.2.tgz#504efcd008ca0273120568b0792b16cdcde8aac1" + integrity sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ== dependencies: - css-unit-converter "^1.1.1" - postcss "^7.0.5" - postcss-selector-parser "^5.0.0-rc.4" - postcss-value-parser "^3.3.1" + postcss "^7.0.27" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" postcss-colormin@^4.0.3: version "4.0.3" @@ -6529,9 +6452,9 @@ postcss-modules-local-by-default@^2.0.6: postcss-value-parser "^3.3.1" postcss-modules-scope@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.1.0.tgz#ad3f5bf7856114f6fcab901b0502e2a2bc39d4eb" - integrity sha512-91Rjps0JnmtUB0cujlc8KIKCsJXWjzuxGeT/+Q2i2HXKZ7nBUeF9YQTZZTNvHVoNYj1AthsjnGLtqDUE0Op79A== + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== dependencies: postcss "^7.0.6" postcss-selector-parser "^6.0.0" @@ -6655,31 +6578,22 @@ postcss-reduce-transforms@^4.0.2: postcss-value-parser "^3.0.0" postcss-safe-parser@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz#8756d9e4c36fdce2c72b091bbc8ca176ab1fcdea" - integrity sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ== + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz#a6d4e48f0f37d9f7c11b2a581bf00f8ba4870b96" + integrity sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g== dependencies: - postcss "^7.0.0" + postcss "^7.0.26" postcss-selector-parser@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865" - integrity sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU= - dependencies: - dot-prop "^4.1.1" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-selector-parser@^5.0.0, postcss-selector-parser@^5.0.0-rc.4: - version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" - integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== dependencies: - cssesc "^2.0.0" + dot-prop "^5.2.0" indexes-of "^1.0.1" uniq "^1.0.1" -postcss-selector-parser@^6.0.0: +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== @@ -6713,14 +6627,14 @@ postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0, postcss-value-parser@^ integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== postcss-value-parser@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz#482282c09a42706d1fc9a069b73f44ec08391dc9" - integrity sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ== + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz#651ff4593aa9eda8d5d0d66593a2417aeaeb325d" + integrity sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg== -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.23, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.23" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.23.tgz#9f9759fad661b15964f3cfc3140f66f1e05eadc1" - integrity sha512-hOlMf3ouRIFXD+j2VJecwssTwbvsPGJVMzupptg+85WA+i7MwyrydmQAgY3R+m0Bc0exunhbJmijy8u8+vufuQ== +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.27" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.27.tgz#cc67cdc6b0daa375105b7c424a85567345fc54d9" + integrity sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ== dependencies: chalk "^2.4.2" source-map "^0.6.1" @@ -6750,13 +6664,13 @@ pretty-time@^1.1.0: integrity sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA== prismjs@^1.13.0: - version "1.17.1" - resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.17.1.tgz#e669fcbd4cdd873c35102881c33b14d0d68519be" - integrity sha512-PrEDJAFdUGbOP6xK/UsfkC5ghJsPJviKgnQOoxaDbBjwc8op68Quupwt1DeAFoG8GImPhiKXAvvsH7wDSLsu1Q== + version "1.19.0" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.19.0.tgz#713afbd45c3baca4b321569f2df39e17e729d4dc" + integrity sha512-IVFtbW9mCWm9eOIaEkNyo2Vl4NnEifis2GQ7/MLRG5TQe6t+4Sj9J5QWI9i3v+SS43uZBlCAOn+zYTVYQcPXJw== optionalDependencies: clipboard "^2.0.0" -private@^0.1.6: +private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== @@ -6777,12 +6691,12 @@ promise-inflight@^1.0.1: integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= proxy-addr@~2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" - integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ== + version "2.0.6" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" + integrity sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw== dependencies: forwarded "~0.1.2" - ipaddr.js "1.9.0" + ipaddr.js "1.9.1" prr@~1.0.1: version "1.0.1" @@ -6794,7 +6708,7 @@ pseudomap@^1.0.2: resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= -psl@^1.1.24, psl@^1.1.28: +psl@^1.1.28: version "1.7.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c" integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ== @@ -6841,7 +6755,7 @@ punycode@1.3.2: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= -punycode@^1.2.4, punycode@^1.4.1: +punycode@^1.2.4: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= @@ -6851,6 +6765,13 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +pupa@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.0.1.tgz#dbdc9ff48ffbea4a26a069b6f9f7abb051008726" + integrity sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA== + dependencies: + escape-goat "^2.0.0" + q@^1.1.2: version "1.5.1" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" @@ -6957,9 +6878,9 @@ read-pkg@^4.0.1: pify "^3.0.0" "readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" - integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== dependencies: core-util-is "~1.0.0" inherits "~2.0.3" @@ -6970,9 +6891,9 @@ read-pkg@^4.0.1: util-deprecate "~1.0.1" readable-stream@^3.0.6, readable-stream@^3.1.1: - version "3.4.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" - integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ== + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== dependencies: inherits "^2.0.3" string_decoder "^1.1.1" @@ -7002,10 +6923,10 @@ reduce@^1.0.1: dependencies: object-keys "^1.1.0" -regenerate-unicode-properties@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" - integrity sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA== +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== dependencies: regenerate "^1.4.0" @@ -7014,17 +6935,18 @@ regenerate@^1.4.0: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== -regenerator-runtime@^0.13.2: - version "0.13.3" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" - integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== +regenerator-runtime@^0.13.4: + version "0.13.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" + integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== -regenerator-transform@^0.14.0: - version "0.14.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.1.tgz#3b2fce4e1ab7732c08f665dfdb314749c7ddd2fb" - integrity sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ== +regenerator-transform@^0.14.2: + version "0.14.4" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" + integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== dependencies: - private "^0.1.6" + "@babel/runtime" "^7.8.4" + private "^0.1.8" regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" @@ -7035,23 +6957,24 @@ regex-not@^1.0.0, regex-not@^1.0.2: safe-regex "^1.1.0" regexp.prototype.flags@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz#6b30724e306a27833eeb171b66ac8890ba37e41c" - integrity sha512-ztaw4M1VqgMwl9HlPpOuiYgItcHlunW0He2fE6eNfT6E/CF2FtYi9ofOYe4mKntstYk0Fyh/rDRBdS3AnxjlrA== + version "1.3.0" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" + integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== dependencies: - define-properties "^1.1.2" + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" -regexpu-core@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.6.0.tgz#2037c18b327cfce8a6fea2a4ec441f2432afb8b6" - integrity sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg== +regexpu-core@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" + integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== dependencies: regenerate "^1.4.0" - regenerate-unicode-properties "^8.1.0" - regjsgen "^0.5.0" - regjsparser "^0.6.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.1.0" + unicode-match-property-value-ecmascript "^1.2.0" registry-auth-token@^4.0.0: version "4.1.1" @@ -7067,15 +6990,15 @@ registry-url@^5.0.0: dependencies: rc "^1.2.8" -regjsgen@^0.5.0: +regjsgen@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== -regjsparser@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c" - integrity sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ== +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== dependencies: jsesc "~0.5.0" @@ -7117,7 +7040,7 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" -request@^2.87.0: +request@^2.87.0, request@^2.88.0: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -7143,32 +7066,6 @@ request@^2.87.0: tunnel-agent "^0.6.0" uuid "^3.3.2" -request@^2.88.0: - version "2.88.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" - integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.0" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.4.3" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -7211,20 +7108,13 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.10.0: +resolve@^1.10.0, resolve@^1.2.0, resolve@^1.3.2, resolve@^1.8.1: version "1.15.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== dependencies: path-parse "^1.0.6" -resolve@^1.2.0, resolve@^1.3.2, resolve@^1.8.1: - version "1.12.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" - integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== - dependencies: - path-parse "^1.0.6" - responselike@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" @@ -7431,15 +7321,10 @@ send@0.17.1: range-parser "~1.2.1" statuses "~1.5.0" -serialize-javascript@^1.3.0, serialize-javascript@^1.7.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.9.1.tgz#cfc200aef77b600c47da9bb8149c943e798c2fdb" - integrity sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A== - -serialize-javascript@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.0.tgz#9310276819efd0eb128258bb341957f6eb2fc570" - integrity sha512-a/mxFfU00QT88umAJQsNWOnUKckhNCqOl028N48e7wFmo2/EHpTo9Wso+iJJCMrQnmFvcjto5RJdAHEvVhcyUQ== +serialize-javascript@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" + integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== serve-index@^1.9.1: version "1.9.1" @@ -7554,9 +7439,9 @@ slash@^2.0.0: integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== slugify@^1.3.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.3.6.tgz#ba5fd6159b570fe4811d02ea9b1f4906677638c3" - integrity sha512-wA9XS475ZmGNlEnYYLPReSfuz/c3VQsEMoU43mi6OnKMCdbnFXd4/Yg7J0lBv8jkPolacMpOrWEaoYxuE1+hoQ== + version "1.4.0" + resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.4.0.tgz#c9557c653c54b0c7f7a8e786ef3431add676d2cb" + integrity sha512-FtLNsMGBSRB/0JOE2A0fxlqjI6fJsgHGS13iTuVT28kViI4JjUiNqp/vyis0ZXYcMnpR3fzGNkv+6vRlI2GwdQ== smoothscroll-polyfill@^0.4.3: version "0.4.4" @@ -7626,11 +7511,11 @@ source-list-map@^2.0.0: integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== source-map-resolve@^0.5.0, source-map-resolve@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" - integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== dependencies: - atob "^2.1.1" + atob "^2.1.2" decode-uri-component "^0.2.0" resolve-url "^0.2.1" source-map-url "^0.4.0" @@ -7829,9 +7714,9 @@ stream-http@^2.7.2: xtend "^4.0.0" stream-shift@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" - integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== strict-uri-encode@^1.0.0: version "1.1.0" @@ -7873,18 +7758,18 @@ string-width@^4.0.0, string-width@^4.1.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -string.prototype.trimleft@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz#6cc47f0d7eb8d62b0f3701611715a3954591d634" - integrity sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw== +string.prototype.trimleft@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" + integrity sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag== dependencies: define-properties "^1.1.3" function-bind "^1.1.1" -string.prototype.trimright@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz#669d164be9df9b6f7559fa8e89945b168a5a6c58" - integrity sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg== +string.prototype.trimright@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" + integrity sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g== dependencies: define-properties "^1.1.3" function-bind "^1.1.1" @@ -8063,7 +7948,7 @@ tar@^2.0.0: fstream "^1.0.12" inherits "2" -tar@^4: +tar@^4.4.2: version "4.4.13" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== @@ -8081,25 +7966,25 @@ term-size@^2.1.0: resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" integrity sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw== -terser-webpack-plugin@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz#61b18e40eaee5be97e771cdbb10ed1280888c2b4" - integrity sha512-ZXmmfiwtCLfz8WKZyYUuuHf3dMYEjg8NrjHMb0JqHVHVOSkzp3cW2/XG1fP3tRhqEqSzMwzzRQGtAPbs4Cncxg== +terser-webpack-plugin@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" + integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== dependencies: cacache "^12.0.2" find-cache-dir "^2.1.0" is-wsl "^1.1.0" schema-utils "^1.0.0" - serialize-javascript "^1.7.0" + serialize-javascript "^2.1.2" source-map "^0.6.1" terser "^4.1.2" webpack-sources "^1.4.0" worker-farm "^1.7.0" terser@^4.0.0, terser@^4.1.2: - version "4.4.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.4.0.tgz#22c46b4817cf4c9565434bfe6ad47336af259ac3" - integrity sha512-oDG16n2WKm27JO8h4y/w3iqBGAOSCtq7k8dRmrn4Wf9NouL0b2WpMHGChFGZq4nFAQy1FsNJrVQHfurXOSTmOA== + version "4.6.7" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.7.tgz#478d7f9394ec1907f0e488c5f6a6a9a2bad55e72" + integrity sha512-fmr7M1f7DBly5cX2+rFDvmGBAaaZyPrHYK4mMdHEDAdNTqXSZgSOfqsfGq2HqPGT/1V0foZZuCZFx8CHKgAk3g== dependencies: commander "^2.20.0" source-map "~0.6.1" @@ -8205,14 +8090,6 @@ toposort@^1.0.0: resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= -tough-cookie@~2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" - integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== - dependencies: - psl "^1.1.24" - punycode "^1.4.1" - tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" @@ -8282,10 +8159,10 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= -type-fest@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.5.2.tgz#d6ef42a0356c6cd45f49485c3b6281fc148e48a2" - integrity sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw== +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== type-fest@^0.8.1: version "0.8.1" @@ -8326,9 +8203,9 @@ uglify-js@3.4.x: source-map "~0.6.1" uglify-js@^3.5.1: - version "3.7.0" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.7.0.tgz#14b854003386b7a7c045910f43afbc96d2aa5307" - integrity sha512-PC/ee458NEMITe1OufAjal65i6lB58R1HWMRcxwvdz1UopW0DYqlRL3xdu3IcTvTXsB02CRHykidkTRL+A3hQA== + version "3.8.0" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.8.0.tgz#f3541ae97b2f048d7e7e3aa4f39fd8a1f5d7a805" + integrity sha512-ugNSTT8ierCsDHso2jkBHXYrU8Y5/fY2ZUprfrJUiD7YpuFvV4jODLFmb3h4btQjqr5Nh4TX4XtgDfCU1WdioQ== dependencies: commander "~2.20.3" source-map "~0.6.1" @@ -8346,15 +8223,15 @@ unicode-match-property-ecmascript@^1.0.4: unicode-canonical-property-names-ecmascript "^1.0.4" unicode-property-aliases-ecmascript "^1.0.4" -unicode-match-property-value-ecmascript@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277" - integrity sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g== +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== unicode-property-aliases-ecmascript@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57" - integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw== + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== union-value@^1.0.0: version "1.0.1" @@ -8426,13 +8303,13 @@ upath@^1.1.0, upath@^1.1.1: integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== update-notifier@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.0.0.tgz#f344a6f8b03e00e31b323d632a0e632e9f0e0654" - integrity sha512-p9zf71hWt5GVXM4iEBujpUgx8mK9AWiCCapEJm/O1z5ntCim83Z1ATqzZFBHFYqx03laMqv8LiDgs/7ikXjf/g== + version "4.1.0" + resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.0.tgz#4866b98c3bc5b5473c020b1250583628f9a328f3" + integrity sha512-w3doE1qtI0/ZmgeoDoARmI5fjDoT93IfKgEGqm26dGUOh8oNpaSTsGNdYRN/SjOuo10jcJGwkEL3mroKzktkew== dependencies: boxen "^4.2.0" chalk "^3.0.0" - configstore "^5.0.0" + configstore "^5.0.1" has-yarn "^2.1.0" import-lazy "^2.1.0" is-ci "^2.0.0" @@ -8440,6 +8317,7 @@ update-notifier@^4.0.0: is-npm "^4.0.0" is-yarn-global "^0.3.0" latest-version "^5.0.0" + pupa "^2.0.1" semver-diff "^3.1.1" xdg-basedir "^4.0.0" @@ -8502,7 +8380,7 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -util.promisify@1.0.0, util.promisify@~1.0.0: +util.promisify@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== @@ -8510,6 +8388,16 @@ util.promisify@1.0.0, util.promisify@~1.0.0: define-properties "^1.1.2" object.getownpropertydescriptors "^2.0.3" +util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + util@0.10.3: version "0.10.3" resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" @@ -8534,12 +8422,7 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -uuid@^3.0.1: - version "3.3.3" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" - integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== - -uuid@^3.3.2: +uuid@^3.0.1, uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== @@ -8558,9 +8441,9 @@ vary@~1.1.2: integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= vendors@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.3.tgz#a6467781abd366217c050f8202e7e50cc9eef8c0" - integrity sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw== + version "1.0.4" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== verror@1.10.0: version "1.10.0" @@ -8576,39 +8459,46 @@ vm-browserify@^1.0.1: resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== +vue-directive-tooltip@^1.6.3: + version "1.6.3" + resolved "https://registry.yarnpkg.com/vue-directive-tooltip/-/vue-directive-tooltip-1.6.3.tgz#18d1a645b5649a45748884049c819a13f03e1ff5" + integrity sha512-aSdlBIdibctL+Tw+2j+IVUtz/fOZPLMQz0xxSoIGOA223WsPahiybSykJHx6QxtPzWq2phE/OZaCTmvMOVPyeA== + dependencies: + popper.js "1.15.0" + vue-hot-reload-api@^2.3.0: version "2.3.4" resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2" integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog== vue-loader@^15.7.1: - version "15.7.2" - resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.7.2.tgz#cc89e2716df87f70fe656c9da9d7f8bec06c73d6" - integrity sha512-H/P9xt/nkocyu4hZKg5TzPqyCT1oKOaCSk9zs0JCbJuy0Q8KtR0bjJpnT/5R5x/Ckd1GFkkLQnQ1C4x6xXeLZg== + version "15.9.1" + resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.9.1.tgz#bd2ab8f3d281e51d7b81d15390a58424d142243e" + integrity sha512-IaPU2KOPjs/QjMlxFs/TiTtQUSbftQ7lsAvoxe21rtcQohsMhx+1AltXCNhZIpIn46PtODiAgz+o8RbMpKtmJw== dependencies: - "@vue/component-compiler-utils" "^3.0.0" + "@vue/component-compiler-utils" "^3.1.0" hash-sum "^1.0.2" loader-utils "^1.1.0" vue-hot-reload-api "^2.3.0" vue-style-loader "^4.1.0" vue-router@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.1.3.tgz#e6b14fabc0c0ee9fda0e2cbbda74b350e28e412b" - integrity sha512-8iSa4mGNXBjyuSZFCCO4fiKfvzqk+mhL0lnKuGcQtO1eoj8nq3CmbEG8FwK5QqoqwDgsjsf1GDuisDX4cdb/aQ== + version "3.1.6" + resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.1.6.tgz#45f5a3a3843e31702c061dd829393554e4328f89" + integrity sha512-GYhn2ynaZlysZMkFE5oCHRUTqE8BWs/a9YbKpNLi0i7xD6KG1EzDqpHQmv1F5gXjr8kL5iIVS8EOtRaVUEXTqA== vue-server-renderer@^2.6.10: - version "2.6.10" - resolved "https://registry.yarnpkg.com/vue-server-renderer/-/vue-server-renderer-2.6.10.tgz#cb2558842ead360ae2ec1f3719b75564a805b375" - integrity sha512-UYoCEutBpKzL2fKCwx8zlRtRtwxbPZXKTqbl2iIF4yRZUNO/ovrHyDAJDljft0kd+K0tZhN53XRHkgvCZoIhug== + version "2.6.11" + resolved "https://registry.yarnpkg.com/vue-server-renderer/-/vue-server-renderer-2.6.11.tgz#be8c9abc6aacc309828a755c021a05fc474b4bc3" + integrity sha512-V3faFJHr2KYfdSIalL+JjinZSHYUhlrvJ9pzCIjjwSh77+pkrsXpK4PucdPcng57+N77pd1LrKqwbqjQdktU1A== dependencies: chalk "^1.1.3" hash-sum "^1.0.2" he "^1.1.0" - lodash.template "^4.4.0" + lodash.template "^4.5.0" lodash.uniq "^4.5.0" resolve "^1.2.0" - serialize-javascript "^1.3.0" + serialize-javascript "^2.1.2" source-map "0.5.6" vue-style-loader@^4.1.0: @@ -8620,9 +8510,9 @@ vue-style-loader@^4.1.0: loader-utils "^1.0.2" vue-template-compiler@^2.6.10: - version "2.6.10" - resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.10.tgz#323b4f3495f04faa3503337a82f5d6507799c9cc" - integrity sha512-jVZkw4/I/HT5ZMvRnhv78okGusqe0+qH2A0Em0Cp8aq78+NK9TII263CDVz2QXZsIT+yyV/gZc/j/vlwa+Epyg== + version "2.6.11" + resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.11.tgz#c04704ef8f498b153130018993e56309d4698080" + integrity sha512-KIq15bvQDrcCjpGjrAhx4mUlyyHfdmTaoNfeoATHLAiWB+MU3cx4lOzMwrnUh9cCxy0Lt1T11hAFY6TQgroUAA== dependencies: de-indent "^1.0.2" he "^1.1.0" @@ -8633,9 +8523,9 @@ vue-template-es2015-compiler@^1.9.0: integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw== vue@^2.6.10: - version "2.6.10" - resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.10.tgz#a72b1a42a4d82a721ea438d1b6bf55e66195c637" - integrity sha512-ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ== + version "2.6.11" + resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.11.tgz#76594d877d4b12234406e84e35275c6d514125c5" + integrity sha512-VfPwgcGABbGAue9+sfrD4PuwFar7gPb1yl1UK1MwXoQPAw0BKSqWfoYCT/ThFrdEVWoI51dBuyCoiNU9bZDZxQ== vuepress-html-webpack-plugin@^3.2.0: version "3.2.0" @@ -8658,9 +8548,9 @@ vuepress-plugin-check-md@^0.0.2: check-md "1.0.0" vuepress-plugin-container@^2.0.2: - version "2.1.0" - resolved "https://registry.yarnpkg.com/vuepress-plugin-container/-/vuepress-plugin-container-2.1.0.tgz#eb2ba3e01cdac419bd678d40e05c934caffe6db0" - integrity sha512-i4p7S1cqYUrg/3pt+xSghZtKSHVI3VXMQNept8ILxA+lMK1XJkdRkjNovZzwpXlrErQssvrUOTWBV0hdBv7eXQ== + version "2.1.2" + resolved "https://registry.yarnpkg.com/vuepress-plugin-container/-/vuepress-plugin-container-2.1.2.tgz#688c1e5a9709a1b8658605bcaee580b3abb19d16" + integrity sha512-Df5KoIDMYiFg45GTfFw2hIiLGSsjhms4f3ppl2UIBf5nWMxi2lfifcoo8MooMSfxboxRZjoDccqQfu0fypaKrQ== dependencies: markdown-it-container "^2.0.0" @@ -8693,12 +8583,12 @@ vuepress-plugin-smooth-scroll@^0.0.3: smoothscroll-polyfill "^0.4.3" vuepress@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/vuepress/-/vuepress-1.3.1.tgz#59355081a2c66ba3c9432ffd6e1d4025f9cf8e24" - integrity sha512-i0f0JB0zdmdVH8P8cO4w7PljPQpf8ObiVk/1pOidvMQCMEhFmIpYz+730Wlf0rtB/GG4QUsqQ27Ckp5Rfob+hQ== + version "1.4.0" + resolved "https://registry.yarnpkg.com/vuepress/-/vuepress-1.4.0.tgz#308037b15baec6e251b835fe1fff7da507302b6b" + integrity sha512-VrBNCCjyrB4EfdIRWTW6uo/xmMzplVsGE/2oGLkgVhWLPCvvSEAcGQhoUKWxRJXk6CdrDCov6jsmu6MA1N3fvw== dependencies: - "@vuepress/core" "^1.3.1" - "@vuepress/theme-default" "^1.3.1" + "@vuepress/core" "^1.4.0" + "@vuepress/theme-default" "^1.4.0" cac "^6.5.6" envinfo "^7.2.0" opencollective-postinstall "^2.0.2" @@ -8753,9 +8643,9 @@ webpack-dev-middleware@^3.7.2: webpack-log "^2.0.0" webpack-dev-server@^3.5.1: - version "3.9.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.9.0.tgz#27c3b5d0f6b6677c4304465ac817623c8b27b89c" - integrity sha512-E6uQ4kRrTX9URN9s/lIbqTAztwEPdvzVrcmHE8EQ9YnuT9J8Es5Wrd8n9BKg1a0oZ5EgEke/EQFgUsp18dSTBw== + version "3.10.3" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz#f35945036813e57ef582c2420ef7b470e14d3af0" + integrity sha512-e4nWev8YzEVNdOMcNzNeCN947sWJNd43E5XvsJzbAL08kGc2frm1tQ32hTJslRS+H65LCb/AaUCYU7fjHCpDeQ== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" @@ -8772,7 +8662,7 @@ webpack-dev-server@^3.5.1: ip "^1.1.5" is-absolute-url "^3.0.3" killable "^1.0.1" - loglevel "^1.6.4" + loglevel "^1.6.6" opn "^5.5.0" p-retry "^3.0.1" portfinder "^1.0.25" @@ -8815,9 +8705,9 @@ webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: source-map "~0.6.1" webpack@^4.8.1: - version "4.41.2" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.2.tgz#c34ec76daa3a8468c9b61a50336d8e3303dce74e" - integrity sha512-Zhw69edTGfbz9/8JJoyRQ/pq8FYUoY0diOXqW0T6yhgdhCv6wr0hra5DwwWexNRns2Z2+gsnrNcbe9hbGBgk/A== + version "4.42.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.42.0.tgz#b901635dd6179391d90740a63c93f76f39883eb8" + integrity sha512-EzJRHvwQyBiYrYqhyjW9AqM90dE4+s1/XtCfn7uWg6cS72zH+2VPFAlsnW0+W0cDi0XRjNKUMoJtpSi50+Ph6w== dependencies: "@webassemblyjs/ast" "1.8.5" "@webassemblyjs/helper-module-context" "1.8.5" @@ -8839,7 +8729,7 @@ webpack@^4.8.1: node-libs-browser "^2.2.1" schema-utils "^1.0.0" tapable "^1.1.3" - terser-webpack-plugin "^1.4.1" + terser-webpack-plugin "^1.4.3" watchpack "^1.6.0" webpack-sources "^1.4.1" @@ -8946,9 +8836,9 @@ wrappy@1: integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= write-file-atomic@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.1.tgz#558328352e673b5bb192cf86500d60b230667d4b" - integrity sha512-JPStrIyyVJ6oCSz/691fAjFtefZ6q+fP6tm+OS4Qw6o+TGQxNp1ziY2PgS+X/m0V8OWhZiO/m4xSj+Pr4RrZvw== + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== dependencies: imurmurhash "^0.1.4" is-typedarray "^1.0.0" @@ -9005,10 +8895,10 @@ yargs-parser@^11.1.1: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^13.1.1: - version "13.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" - integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== +yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" @@ -9039,9 +8929,9 @@ yargs@12.0.5: yargs-parser "^11.1.1" yargs@^13.3.0: - version "13.3.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" - integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== dependencies: cliui "^5.0.0" find-up "^3.0.0" @@ -9052,7 +8942,7 @@ yargs@^13.3.0: string-width "^3.0.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^13.1.1" + yargs-parser "^13.1.2" yargs@^7.0.0: version "7.1.0"