diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index a5cf8239a..81a0adf84 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -8,15 +8,16 @@ assignees: '' --- ### Check existing issues before logging new ones +If you are not using the latest version, triage your issue with the latest version before logging as we won't provide patches to older versions. -### Issues related to data mapping, e.g. SharePoint columns to crawled properties to managed properties, will be closed by default and should be asked elsewhere as it's outside the scope of this project. However if you cannot repro the issue with classic web parts, then it's ok as it relates to these web parts 🙂 +### Issues related to data mapping, e.g. SharePoint columns to crawled properties to managed properties should be asked in the discussion section. **For any question regarding Web Parts usage, please use the ["Discussions"](https://github.com/microsoft-search/pnp-modern-search/discussions) tab instead of creating a new issue.**. __Remove the above section before submitting, and removal of the below template will result in the issue being closed.__ **Version used** -Ex: 4.2 +Ex: 4.5 **Describe the bug** A clear and concise description of what the bug is. Keep questions and bugs related to the web parts. If the issue relates to KQL or question around crawled and managed properties please use [Microsoft TechCommunity](https://techcommunity.microsoft.com/t5/sharepoint-developer/bd-p/SharePointDev). Which means, if you experience the same behavior in classic web parts, then it's not an issue with PnP Modern Search 😉 diff --git a/docs/scenarios/Create-a-search-page-with-verticals-within-the-same-page.md b/docs/scenarios/Create-a-search-page-with-verticals-within-the-same-page.md new file mode 100644 index 000000000..0033fb6d0 --- /dev/null +++ b/docs/scenarios/Create-a-search-page-with-verticals-within-the-same-page.md @@ -0,0 +1,66 @@ +# Scenario 8 - Create a search page with verticals (within the same page) + +!!! note + The PnP Modern Search Web Parts must be deployed to your App Catalog and activated on your site. See the [installation documentation](../installation.md) for details. + +This scenario describes how to configure multiple Search Verticals on the same page. + +## Create a new sharepoint page + +To add the Search Web Parts, you must first create a new modern SharePoint page. We will be configure this new page as a search page with the PnP Modern Search Web Parts. + +![Create a page](assets/Create-a-search-page-with-verticals-within-the-same-page/Create-a-page.png) + +## Add PnP Search Web Parts + +On the newly created page, add the PnP Modern Search Web Part Search Box, Search Verticals, and Search Results, twice. + +![Add PnP Web Parts](assets/Create-a-search-page-with-verticals-within-the-same-page/Add-PnP-Web-Parts.png) + +The Web Parts can be arranged and configured on the page as desired. + +![Search Web Parts](assets/Create-a-search-page-with-verticals-within-the-same-page/Search-Web-Parts.png) + +## Configure Search Box + +You can leave the default configuration. + +![Configure Search Box Web Part](assets/Create-a-search-page-with-verticals-within-the-same-page/Configure-Search-Box-Web-Part.png) + +## Configure Search Vertical + +In the Search Verticals Web Part, the verticals (tabs) must be configured. + +![Search Vertical](assets/Create-a-search-page-with-verticals-within-the-same-page/Search-Vertical.png) + +Insert the tab name and a fluent icon for e better visualization. The results are on the same page, so a link URL are not necessary. + +![Configure Search Vertical Web Part](assets/Create-a-search-page-with-verticals-within-the-same-page/Configure-Search-Vertical-Web-Part.png) + +## Configure first Search Result Web Part + +The first Results Web Part displays all results. Select the data source SharePoint and the result source "LocalSharePointResults". + +![First Result Web Part Vertical Everything](assets/Create-a-search-page-with-verticals-within-the-same-page/First-Result-Web-Part-Vertical-Everything.png) + +In the "available connections" section, the connection to the Search Box and the Search Vertical must be configured. The results web part should only be displayed if the vertical "Everything" is active. + +![First Result Web Part connection](assets/Create-a-search-page-with-verticals-within-the-same-page/First-Result-Web-Part-connection.png) + +## Configure second Search Result Web Part + +The second results web part displays results from the predefined result source knowledge, configures the result source in the SharePoint admin center, and the GUID must be added to the Web Part. + +![Second Result Web Part Vertical Knowledge](assets/Create-a-search-page-with-verticals-within-the-same-page/Second-Result-Web-Part-Vertical-Knowledge.png) + +In the "available connections" section, the connection to the Search Box and the Search Vertical must be configured again. The Results Web Part should only be displayed if the vertical "Knowledge" is selected. + +![Second Result Web Part connection](assets/Create-a-search-page-with-verticals-within-the-same-page/Second-Result-Web-Part-connection.png) + +After that, the minimum configuration is complete and the search page must be saved and published. The configuration can be customized, and a different layout can be used for the search results per Results WebPart. + +## Testing your configuration + +Now the query from the Search Box is sent to the verticals, depending on the choice of the verticals, the results are then displayed in the search result. + +![Test Your Search page](assets/Create-a-search-page-with-verticals-within-the-same-page/Test-Your-Search-page.png) diff --git a/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Add-PnP-Web-Parts.png b/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Add-PnP-Web-Parts.png new file mode 100644 index 000000000..144cccb33 Binary files /dev/null and b/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Add-PnP-Web-Parts.png differ diff --git a/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Configure-Search-Box-Web-Part.png b/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Configure-Search-Box-Web-Part.png new file mode 100644 index 000000000..9f3806324 Binary files /dev/null and b/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Configure-Search-Box-Web-Part.png differ diff --git a/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Configure-Search-Vertical-Web-Part.png b/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Configure-Search-Vertical-Web-Part.png new file mode 100644 index 000000000..4ac396960 Binary files /dev/null and b/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Configure-Search-Vertical-Web-Part.png differ diff --git a/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Create-a-page.png b/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Create-a-page.png new file mode 100644 index 000000000..27b8371a2 Binary files /dev/null and b/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Create-a-page.png differ diff --git a/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/First-Result-Web-Part-Vertical-Everything.png b/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/First-Result-Web-Part-Vertical-Everything.png new file mode 100644 index 000000000..06a0b5339 Binary files /dev/null and b/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/First-Result-Web-Part-Vertical-Everything.png differ diff --git a/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/First-Result-Web-Part-connection.png b/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/First-Result-Web-Part-connection.png new file mode 100644 index 000000000..ba4f1d165 Binary files /dev/null and b/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/First-Result-Web-Part-connection.png differ diff --git a/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Search-Vertical.png b/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Search-Vertical.png new file mode 100644 index 000000000..dc3a7bcdb Binary files /dev/null and b/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Search-Vertical.png differ diff --git a/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Search-Web-Parts.png b/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Search-Web-Parts.png new file mode 100644 index 000000000..e59dcfc00 Binary files /dev/null and b/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Search-Web-Parts.png differ diff --git a/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Second-Result-Web-Part-Vertical-Knowledge.png b/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Second-Result-Web-Part-Vertical-Knowledge.png new file mode 100644 index 000000000..1c1cf6865 Binary files /dev/null and b/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Second-Result-Web-Part-Vertical-Knowledge.png differ diff --git a/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Second-Result-Web-Part-connection.png b/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Second-Result-Web-Part-connection.png new file mode 100644 index 000000000..966be91e6 Binary files /dev/null and b/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Second-Result-Web-Part-connection.png differ diff --git a/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Test-Your-Search-page.png b/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Test-Your-Search-page.png new file mode 100644 index 000000000..1ed9c71bf Binary files /dev/null and b/docs/scenarios/assets/Create-a-search-page-with-verticals-within-the-same-page/Test-Your-Search-page.png differ diff --git a/docs/scenarios/index.md b/docs/scenarios/index.md index ba2e3f288..d1dde89e3 100644 --- a/docs/scenarios/index.md +++ b/docs/scenarios/index.md @@ -44,7 +44,12 @@ Storing custom templates as files in a SharePoint site, is great when you want t When you have your templates in SharePoint, it is easy to setup a way to edit locally on your computer and still get the result in SharePoint almost instantly. +## Scenario 8 +[Create a search page with verticals (within the same page)](Create-a-search-page-with-verticals-within-the-same-page.md) + +Search verticals can be used to selectively search specific content per vertical. Using the SharePoint provider you can use result sources to limit the content returned, +or you can add the required KQL in the web part itself. This sample shows how to set up multiple search verticals on the same page. --- diff --git a/docs/usage/search-filters/index.md b/docs/usage/search-filters/index.md index 448966f11..20d9402cd 100644 --- a/docs/usage/search-filters/index.md +++ b/docs/usage/search-filters/index.md @@ -32,7 +32,7 @@ The filter settings are as follow: |------------|-----------------| | **Display Name** | A friendly name for the filter | | **Filter field** | The internal data source field to use as filter. Here you can select a field from the current data source (if data have been already retrieved) of type your own custom value (press enter to validate). -| **# of values** | The maximum number of filter values/buckets to return (may be restricted by the API). +| **# of values** | The maximum number of values to be retrieved for a given filter. This value is useful if you use SharePoint refiners with a lot of refiner values. By default SharePoint will only retreve the first 100 values. To get all refiner values, you must specify an higher number manually (maximum value is 1000). | **Template** | The template to use to display filter values. The builtin templates are:
| **Filter type** | Specify if the filter is a 'static' filter or a 'refiner' filter. See below for more information. | **Expand by default** | If applicable for the selected template, display values as expanded. diff --git a/docs/usage/search-results/connections/item-selection.md b/docs/usage/search-results/connections/item-selection.md index 6e8478c81..60f08847b 100644 --- a/docs/usage/search-results/connections/item-selection.md +++ b/docs/usage/search-results/connections/item-selection.md @@ -59,6 +59,8 @@ !!! info "Filtering general behavior" -- `null` ou `empty` filters values **are ignored** in the resulting query. +- If the source selected item field is `null` ou `empty`: + * It will be replaced by the FQL expression `string('')` expression if the mode is **Process values as filters** + * It will be resolved as an empty string if the mode is **Process values as tokens**. - Duplicate values are trimmed (ex: user select items with the same filter values). - Filter values should be 'string' values. All other types will be ignored (ex: 'objects' from JSON response). \ No newline at end of file diff --git a/docs/usage/search-results/data-sources/sharepoint-search.md b/docs/usage/search-results/data-sources/sharepoint-search.md index 95102e5b0..3778936bb 100644 --- a/docs/usage/search-results/data-sources/sharepoint-search.md +++ b/docs/usage/search-results/data-sources/sharepoint-search.md @@ -9,11 +9,12 @@ The _'SharePoint Search'_ data source retrieve items from the SharePoint search | **Query text** | The input query text to pass to the search engine. This setting is not configurable directly in the data source options. To enable it, go to the third configuration page of the Web Part and select either a static or dynamic value (Ex: from a connected search box Web Part). See [the connection documentation](../../search-results/connections/index.md) for more information on how to configure this option. This value can be then used in the **Query template** using the `{searchTerms}` token. Also this value can be a [Keyword Query Language expression (KQL)](https://docs.microsoft.com/sharepoint/dev/general-development/keyword-query-language-kql-syntax-reference). | None. | **Query template** | The search query template to use. It allows you to use dynamic tokens according to the context or specifiy conditions that should always apply to the query. | `{searchTerms}` | **Result source ID** | Can be either a built-in result source ID listed in the dropdown, or a custom result source that you specify. Type the `GUID` of the result source, or the `SCOPE` and `NAME`, separated by `\|` (pipe character). For this to take effect, you must press _'Enter'_ to save the value. Valid scopes are `SPSiteSubscription`, `SPSite`, `SPWeb`. Examples: | LocalSharePointResults -| **Selected properties** | The SharePoint managed properties to retrieve from the results. They can be used with the same name in layouts and slots afterwards.

To add other managed properties to the list, clear out the dropdown list field and type or paste the name of your managed property and press return. This will add it to the list of selected properties in the query. Pasting a comma separated list of property names also work. You can validate the property is working by using the [Debug](../layouts/#debug) layout. | +| **Selected properties** | The SharePoint managed properties to retrieve from the results. They can be used with the same name in layouts and slots afterwards.

To add other managed properties to the list, clear out the dropdown list field and type or paste the name of your managed property and press return. This will add it to the list of selected properties in the query. Pasting a comma separated list of property names also work. You can validate the property is working by using the [Debug](../layouts/#debug) layout. | | **Sort order** | The initial results sort order. You will be able to select only _'Sortable'_ managed properties here. Make sure the selected properties satisfy this criteria in the [SharePoint search schema](https://docs.microsoft.com/sharepoint/technical-reference/crawled-and-managed-properties-overview). | None. | **Refinement filters** | The initial refinement filters to apply to the query. Filters has to be written using FQL ([Fast Query Language](https://docs.microsoft.com/sharepoint/dev/general-development/fast-query-language-fql-syntax-reference)) (e.g. `FileType:equals("docx")`). They will be applied every time to the current search query regardless selected filters from connected Web Parts. Note: for string expressions, use `"` instead of `'`. | None. | **Language of the search request** | The language to use for the search request. By default the search request will be made using the current user interface language. This parameter is mainly used to process diacritics, plurals, etc. correctly according to the language. | Current UI language. | **Enable query rules** | Whether or not apply SharePoint query rules. | False. | **Enable audience targeting** | Whether or not results should be targeted according to the audiences that the current user belongs to. [More information about modern audiences and how to configure them](https://support.microsoft.com/office/target-navigation-news-and-files-to-specific-audiences-33d84cb6-14ed-4e53-a426-74c38ea32293). | False. | **Enable localization** | If enabled, the Web Part will try to translate the taxonomy term IDs found in result item properties and refinement values to their corresponding label according to the curent UI language. To get it work, you must map a new refinable managed property associated with `ows_taxId_` crawled property and turn this toggle 'on': If enabled and depending on how many items are currently being displayed, this could slightly decrease the loading performance.

**To use translated values in your template, you must use the '`Auto + `' property format instead of the original property name**. For instance, to use translated values of the '_owstaxidmetadataalltagsinfo_' property, you must use the '**Auto**owstaxidmetadataalltagsinfo' auto created property. | False. +| **Hit-highlighted properties** | The list of SharePoint managed properties (separated by a comma) to return hit highlighted information (whether the search query match each specified managed property or not).

Note: **HitHighlightedProperties** will be null if there is a field in **Hit-highlighted properties** doesn't exist in **Selected properties**

| None. diff --git a/docs/usage/search-results/layouts/index.md b/docs/usage/search-results/layouts/index.md index 77b084aea..ccea75131 100644 --- a/docs/usage/search-results/layouts/index.md +++ b/docs/usage/search-results/layouts/index.md @@ -42,7 +42,8 @@ For all layouts, some common settings are available: | Setting | Description | Default value | ------- |---------------- | ---------- | -| **Show a 'See all' link** | Allows you to specify a 'See all' link at the top right of the Web Part along the Web Part title. You can set the text that will appear plus the link to use. Tokens are supported in the link URL.

!["Common options"](../../../assets/webparts/search-results/layouts/see_all_link.png)

| Disabled. +| **Allow items selection** | If enabled, allow items to be selected in default layouts. See [documentation](../connections/item-selection.md) for usage. | Disabled. +| **Allow multiple selection** | If the item selection is allowed, specifiy if users can select multiple items | Disabled. | **Hide this web part if there's nothing to show** | If there is no results, the Web Part will remain blank in display mode (title and 'See all' link included). In edit mode, you will see a message indicating there is no results.

!["Common options"](../../../assets/webparts/search-results/layouts/hide_webpart.png)

| Disabled. | **Show results count** | Hide or display the results count for the current query. | Enabled. | **Use Microsoft Graph Toolkit** | Enable or disable the Microsoft Graph Toolkit to be used in Handlebars template. Refer to the [MGT documentation](https://docs.microsoft.com/en-us/graph/toolkit/overview) to see available components. diff --git a/docs/usage/search-results/tokens.md b/docs/usage/search-results/tokens.md index 3b266a349..47f37de20 100644 --- a/docs/usage/search-results/tokens.md +++ b/docs/usage/search-results/tokens.md @@ -9,8 +9,6 @@ You can use tokens in the following locations: - **SharePoint Search** - Query template field. - Refinement filters field. - - Layouts - - In the _'See all'_ link. - **Search Verticals Web Part** - In the link URL when the vertical item is a link. diff --git a/search-extensibility/package-lock.json b/search-extensibility/package-lock.json index 2a346790f..f9bba4478 100644 --- a/search-extensibility/package-lock.json +++ b/search-extensibility/package-lock.json @@ -1,6 +1,6 @@ { "name": "@pnp/modern-search-extensibility", - "version": "1.0.6", + "version": "1.0.9", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -710,7 +710,6 @@ "version": "7.9.1", "resolved": "https://registry.npmjs.org/@fluentui/date-time-utilities/-/date-time-utilities-7.9.1.tgz", "integrity": "sha512-o8iU1VIY+QsqVRWARKiky29fh4KR1xaKSgMClXIi65qkt8EDDhjmlzL0KVDEoDA2GWukwb/1PpaVCWDg4v3cUQ==", - "dev": true, "requires": { "@uifabric/set-version": "^7.0.24", "tslib": "^1.10.0" @@ -720,7 +719,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@fluentui/dom-utilities/-/dom-utilities-1.1.2.tgz", "integrity": "sha512-XqPS7l3YoMwxdNlaYF6S2Mp0K3FmVIOIy2K3YkMc+eRxu9wFK6emr2Q/3rBhtG5u/On37NExRT7/5CTLnoi9gw==", - "dev": true, "requires": { "@uifabric/set-version": "^7.0.24", "tslib": "^1.10.0" @@ -730,7 +728,6 @@ "version": "0.2.17", "resolved": "https://registry.npmjs.org/@fluentui/keyboard-key/-/keyboard-key-0.2.17.tgz", "integrity": "sha512-iT1bU56rKrKEOfODoW6fScY11qj3iaYrZ+z11T6fo5+TDm84UGkkXjLXJTE57ZJzg0/gbccHQWYv+chY7bJN8Q==", - "dev": true, "requires": { "tslib": "^1.10.0" } @@ -739,7 +736,6 @@ "version": "7.18.1", "resolved": "https://registry.npmjs.org/@fluentui/react-focus/-/react-focus-7.18.1.tgz", "integrity": "sha512-WXXkMR3t5mr9m5hg5vRWH/JZ+kaZmbuTGpTA7E7uc+Ag/RZfG/uVN+ZwBdDpP6Xg7+6f3wlkGCBtY/UDcW6qmw==", - "dev": true, "requires": { "@fluentui/keyboard-key": "^0.2.12", "@uifabric/merge-styles": "^7.19.2", @@ -753,7 +749,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/@fluentui/react-window-provider/-/react-window-provider-1.0.2.tgz", "integrity": "sha512-fGSgL3Vp/+6t1Ysfz21FWZmqsU+iFVxOigvHnm5uKVyyRPwtaabv/F6kQ2y5isLMI2YmJaUd2i0cDJKu8ggrvw==", - "dev": true, "requires": { "@uifabric/set-version": "^7.0.24", "tslib": "^1.10.0" @@ -763,7 +758,6 @@ "version": "1.7.4", "resolved": "https://registry.npmjs.org/@fluentui/theme/-/theme-1.7.4.tgz", "integrity": "sha512-o4eo7lstLxxXl1g2RR9yz18Yt8yjQO/LbQuZjsiAfv/4Bf0CRnb+3j1F7gxIdBWAchKj9gzaMpIFijfI98pvYQ==", - "dev": true, "requires": { "@uifabric/merge-styles": "^7.19.2", "@uifabric/set-version": "^7.0.24", @@ -1317,30 +1311,38 @@ } }, "@microsoft/api-extractor": { - "version": "7.7.12", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.7.12.tgz", - "integrity": "sha512-RYMG/dIZs7VXWUgx8Cwk73Czlr9qMUMolxwStFKowy3yMluzHlAKB2srV6csoWlSms6J75tLq6z1c0LXZksWxg==", + "version": "7.7.8", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor/-/api-extractor-7.7.8.tgz", + "integrity": "sha512-XNO6Dk6ByfJq24Cn1/j0B0F16ZtwYnEC/sxgB/M0wTphBdBlHjRXZmxofmjirBBj9f7vG4UJ18IOIZRLbhGFPw==", "dev": true, "requires": { - "@microsoft/api-extractor-model": "7.7.10", - "@microsoft/tsdoc": "0.12.19", - "@rushstack/node-core-library": "3.19.6", - "@rushstack/ts-command-line": "4.3.13", + "@microsoft/api-extractor-model": "7.7.7", + "@microsoft/node-core-library": "3.19.3", + "@microsoft/ts-command-line": "4.3.10", + "@microsoft/tsdoc": "0.12.14", "colors": "~1.2.1", "lodash": "~4.17.15", "resolve": "1.8.1", "source-map": "~0.6.1", "typescript": "~3.7.2" + }, + "dependencies": { + "typescript": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.7.tgz", + "integrity": "sha512-MmQdgo/XenfZPvVLtKZOq9jQQvzaUAUpcKW8Z43x9B2fOm4S5g//tPtMweZUIP+SoBqrVPEIm+dJeQ9dfO0QdA==", + "dev": true + } } }, "@microsoft/api-extractor-model": { - "version": "7.7.10", - "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.7.10.tgz", - "integrity": "sha512-gMFDXwUgoQYz9TgatyNPALDdZN4xBC3Un3fGwlzME+vM13PoJ26pGuqI7kv/OlK9+q2sgrEdxWns8D3UnLf2TA==", + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.7.7.tgz", + "integrity": "sha512-822kyHMEx2sl+KnBioEiFoTIXuz/4pYBo94nQ4AMqb9BFvY9I1AZUPtC4HFh2zcXQqpFLpKKC55s/o8UOze2wQ==", "dev": true, "requires": { - "@microsoft/tsdoc": "0.12.19", - "@rushstack/node-core-library": "3.19.6" + "@microsoft/node-core-library": "3.19.3", + "@microsoft/tsdoc": "0.12.14" } }, "@microsoft/gulp-core-build": { @@ -1778,8 +1780,7 @@ "@microsoft/load-themed-styles": { "version": "1.10.146", "resolved": "https://registry.npmjs.org/@microsoft/load-themed-styles/-/load-themed-styles-1.10.146.tgz", - "integrity": "sha512-qQZ4J58J2VMe/XRpr2YRDusQB9uRBJ1SjJB76x7uH94t9hqxjVVxn2qL99Bl+ERbfrACZ9peGn2uamt4ponqZQ==", - "dev": true + "integrity": "sha512-qQZ4J58J2VMe/XRpr2YRDusQB9uRBJ1SjJB76x7uH94t9hqxjVVxn2qL99Bl+ERbfrACZ9peGn2uamt4ponqZQ==" }, "@microsoft/loader-load-themed-styles": { "version": "1.9.26", @@ -1826,17 +1827,30 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@microsoft/microsoft-graph-client/-/microsoft-graph-client-1.1.0.tgz", "integrity": "sha512-sDgchKZz1l3QJVNdkE1P1KpwTjupNt1mS9h1T0CiP+ayMN7IeFKfElB8IYtxFplNalZTmEq+iqoQFqUVpVMLfQ==", - "dev": true, "requires": { "es6-promise": "^4.1.0", "isomorphic-fetch": "^2.2.1" } }, + "@microsoft/node-core-library": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/@microsoft/node-core-library/-/node-core-library-3.19.3.tgz", + "integrity": "sha512-rJ+hT6+XK5AESbhn31YBnHKpZSFKCmqHCRZyK9+jyWwav1HXv0qzuXnFvnyrO0MZyJ6rH0seWOZVWbU5KGv1tg==", + "dev": true, + "requires": { + "@types/node": "10.17.13", + "colors": "~1.2.1", + "fs-extra": "~7.0.1", + "jju": "~1.4.0", + "semver": "~5.3.0", + "timsort": "~0.3.0", + "z-schema": "~3.18.3" + } + }, "@microsoft/office-ui-fabric-react-bundle": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@microsoft/office-ui-fabric-react-bundle/-/office-ui-fabric-react-bundle-1.12.1.tgz", "integrity": "sha512-Bi1Mi8Aw/paTnXSN89SVzUvuSYEbClSCM2C9FPzaNseoXamIIFnyxliEBfzSKD750hlN6ER+KTQ/l5JVWDIo7w==", - "dev": true, "requires": { "@uifabric/icons": "7.5.18", "office-ui-fabric-react": "7.156.0", @@ -1849,7 +1863,6 @@ "version": "16.9.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.9.0.tgz", "integrity": "sha512-YFT2rxO9hM70ewk9jq0y6sQk8cL02xm4+IzYBz75CQGlClQQ1Bxq0nhHF6OtSbit+AIahujJgb/CPRibFkMNJQ==", - "dev": true, "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -1860,8 +1873,7 @@ "tslib": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", - "dev": true + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" } } }, @@ -2045,19 +2057,27 @@ } }, "@microsoft/rush-stack-compiler-3.7": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/@microsoft/rush-stack-compiler-3.7/-/rush-stack-compiler-3.7-0.2.8.tgz", - "integrity": "sha512-Ay8XOROkLYHsSX7QlmKIl/QBwSSBa+rKjOaF4ql35tNhhC15bjQsFqcZDBkakWmUZCcaF1iABK0j7e4+xGEbYw==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@microsoft/rush-stack-compiler-3.7/-/rush-stack-compiler-3.7-0.2.3.tgz", + "integrity": "sha512-9GXfHslqUIWJ8+UE6mXj4Fmbb5yxKcefJrqLrqHhRmbDnqUKB9jPKcHFLrZgSkNFGdfoWoIC+Q6Q5+oD3lhk1w==", "dev": true, "requires": { - "@microsoft/api-extractor": "7.7.12", - "@rushstack/eslint-config": "0.5.6", - "@rushstack/node-core-library": "3.19.6", + "@microsoft/api-extractor": "7.7.8", + "@microsoft/node-core-library": "3.19.3", + "@rushstack/eslint-config": "0.5.4", "@types/node": "10.17.13", "eslint": "~6.5.1", "tslint": "~5.12.1", - "tslint-microsoft-contrib": "~6.2.0", + "tslint-microsoft-contrib": "~5.2.1", "typescript": "~3.7.2" + }, + "dependencies": { + "typescript": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.7.tgz", + "integrity": "sha512-MmQdgo/XenfZPvVLtKZOq9jQQvzaUAUpcKW8Z43x9B2fOm4S5g//tPtMweZUIP+SoBqrVPEIm+dJeQ9dfO0QdA==", + "dev": true + } } }, "@microsoft/sp-application-base": { @@ -2258,7 +2278,6 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@microsoft/sp-component-base/-/sp-component-base-1.12.1.tgz", "integrity": "sha512-AEHWSuzV1uRv3oI7QPq0LYzHy5iuIbKXp964+WHDtg3ezECjv/sB0FZgHREfZSMsfWPmkcjJp1eFKRGw+MPOjQ==", - "dev": true, "requires": { "@microsoft/office-ui-fabric-react-bundle": "1.12.1", "@microsoft/sp-core-library": "1.12.1", @@ -2274,8 +2293,7 @@ "tslib": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", - "dev": true + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" } } }, @@ -2283,7 +2301,6 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@microsoft/sp-core-library/-/sp-core-library-1.12.1.tgz", "integrity": "sha512-LyycIx5ivku9i315mm6LJVTl/zfTaCLHTmJTftCZkLSxVIKhK1D3/4QGa/cdsZRPVYho/ZZBK5HnPYhIjN08/g==", - "dev": true, "requires": { "@microsoft/sp-lodash-subset": "1.12.1", "@microsoft/sp-module-interfaces": "1.12.1", @@ -2294,8 +2311,7 @@ "tslib": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", - "dev": true + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" } } }, @@ -2577,7 +2593,6 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@microsoft/sp-diagnostics/-/sp-diagnostics-1.12.1.tgz", "integrity": "sha512-cMOE9strjPxFA+hyP/k64sVi9qw/RKDpdCgS+/b8ONSTKKXQRD9b6FoxTOCroBWT92O6DVsqGG3xOhS0i8RyTg==", - "dev": true, "requires": { "@microsoft/sp-core-library": "1.12.1", "@microsoft/sp-lodash-subset": "1.12.1" @@ -2587,7 +2602,6 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@microsoft/sp-dynamic-data/-/sp-dynamic-data-1.12.1.tgz", "integrity": "sha512-gNH9p2sGu5jRnm3MJ65EyHvj72NTlOYU6hvY+ZlLlGZzMqsQyK54MyLUQSWwYWDvgYjiTBB0mTlXjULgHMCy5A==", - "dev": true, "requires": { "@microsoft/sp-core-library": "1.12.1", "@microsoft/sp-diagnostics": "1.12.1", @@ -2599,8 +2613,7 @@ "tslib": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", - "dev": true + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" } } }, @@ -2630,7 +2643,6 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@microsoft/sp-http/-/sp-http-1.12.1.tgz", "integrity": "sha512-ttTsuk7cKsz0c8crQBAN+uJc41KXWi3TZZLB3HYc6Bfg+Dl9nWgS3DVJvLe9IWjPPFtyLgFflgLFeYjkXkREPA==", - "dev": true, "requires": { "@microsoft/microsoft-graph-client": "~1.1.0", "@microsoft/sp-core-library": "1.12.1", @@ -2645,7 +2657,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/msal/-/msal-1.4.0.tgz", "integrity": "sha512-NTxMFQh6t5g2QWMlvZTWTxL1bmcqiCv0cs2lxTHhUbWEuxWCfvaVRZfjxN8i+T0VltVVGaVIdML8QEoBnlbaSw==", - "dev": true, "requires": { "tslib": "^1.9.3" } @@ -2653,8 +2664,7 @@ "tslib": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", - "dev": true + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" } } }, @@ -2662,7 +2672,6 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@microsoft/sp-loader/-/sp-loader-1.12.1.tgz", "integrity": "sha512-Uv+/d+NvHF1cM35p6G8/b4bOpTJAk/BERgUKAQHBZfRjp6XOOrPRy7b0mqTFbkZkn2Vss5giw/Reib3KooE21A==", - "dev": true, "requires": { "@microsoft/office-ui-fabric-react-bundle": "1.12.1", "@microsoft/sp-core-library": "1.12.1", @@ -2688,7 +2697,6 @@ "version": "16.9.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.9.0.tgz", "integrity": "sha512-YFT2rxO9hM70ewk9jq0y6sQk8cL02xm4+IzYBz75CQGlClQQ1Bxq0nhHF6OtSbit+AIahujJgb/CPRibFkMNJQ==", - "dev": true, "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -2699,8 +2707,7 @@ "tslib": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", - "dev": true + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" } } }, @@ -2708,7 +2715,6 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@microsoft/sp-lodash-subset/-/sp-lodash-subset-1.12.1.tgz", "integrity": "sha512-gLKdYjL3jtb1hegxnU3gvCzu4ygWTg4Gjl5jcH85zphuDEUfGrWVaAVJ6DbzhLQ+l34Tl9eUyW/ZBW2hh6hZMA==", - "dev": true, "requires": { "@types/lodash": "4.14.117", "tslib": "~1.10.0" @@ -2717,8 +2723,7 @@ "tslib": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", - "dev": true + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" } } }, @@ -2726,7 +2731,6 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@microsoft/sp-module-interfaces/-/sp-module-interfaces-1.12.1.tgz", "integrity": "sha512-yTiVlig0+VhEE7TypcOn66sP/Tbl0SzBSOSVMugA9kD31U8Cj134yqHzYneSQ1kBRRUmE8aHLYuSEdojv2hZbg==", - "dev": true, "requires": { "@types/z-schema": "3.16.31", "z-schema": "~3.18.3" @@ -2736,7 +2740,6 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@microsoft/sp-odata-types/-/sp-odata-types-1.12.1.tgz", "integrity": "sha512-BOQDAEz1Bfs/o9oOBhyBQrKhhnkA7g3uby9So3UEIlpx/0AOfKRmF+6kao9DJyg/KDUfxGbBCLs+Y/IAG2OhJw==", - "dev": true, "requires": { "tslib": "~1.10.0" }, @@ -2744,8 +2747,7 @@ "tslib": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", - "dev": true + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" } } }, @@ -2753,7 +2755,6 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@microsoft/sp-page-context/-/sp-page-context-1.12.1.tgz", "integrity": "sha512-mb3NxEItPBCmgaORgF6+2HqP14iKhl7cWyXRautB+eU372Ng9dWRtUCjB3ZYz50RD2Fxst/7+yWV9Z8kMkK8eQ==", - "dev": true, "requires": { "@microsoft/sp-core-library": "1.12.1", "@microsoft/sp-diagnostics": "1.12.1", @@ -2766,8 +2767,7 @@ "tslib": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", - "dev": true + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" } } }, @@ -2775,7 +2775,6 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@microsoft/sp-polyfills/-/sp-polyfills-1.12.1.tgz", "integrity": "sha512-CKu6NW8mXShCZZuVCNOCfTbNBCKFx+AVOujBOraZR3EUttpetzCPznzaN0VcaR/P+pw4oZqIY2puurkeT3w7JQ==", - "dev": true, "requires": { "es6-promise": "4.2.4", "es6-symbol": "3.1.3", @@ -2787,38 +2786,32 @@ "es6-promise": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz", - "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==", - "dev": true + "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==" }, "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "dev": true + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" }, "tslib": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", - "dev": true + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" }, "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", - "dev": true + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" }, "whatwg-fetch": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", - "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=", - "dev": true + "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=" }, "whatwg-url": { "version": "4.7.1", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.7.1.tgz", "integrity": "sha1-303C4/JaY7H6WzLtbWwTlXfWkN4=", - "dev": true, "requires": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -2830,7 +2823,6 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@microsoft/sp-property-pane/-/sp-property-pane-1.12.1.tgz", "integrity": "sha512-Rd0DJf0RLcJPlziFtKx01GsAnsDVKwJwa8N7DpvVCYF8zpQPVN1Sp+sLbuoX+MZ2KtSOh0cn/r4bau2lnKEO5w==", - "dev": true, "requires": { "@microsoft/office-ui-fabric-react-bundle": "1.12.1", "@microsoft/sp-component-base": "1.12.1", @@ -2848,7 +2840,6 @@ "version": "16.9.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.9.0.tgz", "integrity": "sha512-YFT2rxO9hM70ewk9jq0y6sQk8cL02xm4+IzYBz75CQGlClQQ1Bxq0nhHF6OtSbit+AIahujJgb/CPRibFkMNJQ==", - "dev": true, "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -2859,8 +2850,7 @@ "tslib": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", - "dev": true + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" } } }, @@ -2948,7 +2938,6 @@ "version": "1.12.1", "resolved": "https://registry.npmjs.org/@microsoft/sp-webpart-base/-/sp-webpart-base-1.12.1.tgz", "integrity": "sha512-kEtulXnKYxfc3BT/bRoX7+eJ84SqCO2w50ELKeN8f+NSRbkd8M4hnzaa1yi6zWvrt3SmlyH0tfjURnBkioI3rw==", - "dev": true, "requires": { "@microsoft/sp-component-base": "1.12.1", "@microsoft/sp-core-library": "1.12.1", @@ -2972,7 +2961,6 @@ "version": "16.9.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.9.0.tgz", "integrity": "sha512-YFT2rxO9hM70ewk9jq0y6sQk8cL02xm4+IzYBz75CQGlClQQ1Bxq0nhHF6OtSbit+AIahujJgb/CPRibFkMNJQ==", - "dev": true, "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -2983,8 +2971,7 @@ "tslib": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", - "dev": true + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" } } }, @@ -3231,13 +3218,23 @@ "@microsoft/teams-js": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/@microsoft/teams-js/-/teams-js-1.8.0.tgz", - "integrity": "sha512-3or+WqPJ73VHG6P5Bv/x882mzUASNLU2DIkzI5WPg9TW5vq2ISEv7yJ+fuRY9GNC0AcJiJQfzB+jl+HVgJAdcg==", - "dev": true + "integrity": "sha512-3or+WqPJ73VHG6P5Bv/x882mzUASNLU2DIkzI5WPg9TW5vq2ISEv7yJ+fuRY9GNC0AcJiJQfzB+jl+HVgJAdcg==" + }, + "@microsoft/ts-command-line": { + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/@microsoft/ts-command-line/-/ts-command-line-4.3.10.tgz", + "integrity": "sha512-AgxArGqPt0H5WTo3fxNFP3Blm3obkCCopVG9kwIo+/mMdXaj6qMDn6+8Bv8+5Nke3CvvXpKAZtu3IaGY5cV1Hg==", + "dev": true, + "requires": { + "@types/argparse": "1.0.33", + "argparse": "~1.0.9", + "colors": "~1.2.1" + } }, "@microsoft/tsdoc": { - "version": "0.12.19", - "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.12.19.tgz", - "integrity": "sha512-IpgPxHrNxZiMNUSXqR1l/gePKPkfAmIKoDRP9hp7OwjU29ZR8WCJsOJ8iBKgw0Qk+pFwR+8Y1cy8ImLY6e9m4A==", + "version": "0.12.14", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.12.14.tgz", + "integrity": "sha512-518yewjSga1jLdiLrcmpMFlaba5P+50b0TWNFUpC+SL9Yzf0kMi57qw+bMl+rQ08cGqH1vLx4eg9YFUbZXgZ0Q==", "dev": true }, "@microsoft/tsdoc-config": { @@ -3583,12 +3580,12 @@ } }, "@rushstack/eslint-config": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-config/-/eslint-config-0.5.6.tgz", - "integrity": "sha512-ahG0A5AhOv/+ozy9wLQyTcDxDFcaaxF1h+9DBA0fCFBGmer7uCQKSFgbjm4tEyJLPJui/GEOPElU0YsSKEjmeA==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-config/-/eslint-config-0.5.4.tgz", + "integrity": "sha512-AB7wAXYTuF0z1x9BpFM6Nm0hyk9v94k55w0bZHDJJoptopEOsoEEFf4QVnNRCnYi6JAABzOtvq2vW4g4mAx+Xw==", "dev": true, "requires": { - "@rushstack/eslint-plugin": "0.3.2", + "@rushstack/eslint-plugin": "0.3.1", "@typescript-eslint/eslint-plugin": "2.3.3", "@typescript-eslint/experimental-utils": "2.3.3", "@typescript-eslint/parser": "2.3.3", @@ -3596,13 +3593,13 @@ "eslint-plugin-promise": "~4.2.1", "eslint-plugin-react": "~7.16.0", "eslint-plugin-security": "~1.4.0", - "eslint-plugin-tsdoc": "~0.2.4" + "eslint-plugin-tsdoc": "~0.2.1" } }, "@rushstack/eslint-plugin": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-plugin/-/eslint-plugin-0.3.2.tgz", - "integrity": "sha512-Fzg91tfXtft6IdZlE6altWXuglGT29P/6ZfFGj9IVM8FIEAjMrO7MELINF5LssbFG0Xlu7306cBJVRAyzOCPCw==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-plugin/-/eslint-plugin-0.3.1.tgz", + "integrity": "sha512-7C1tEdlNTxd8YP852jZnA1RAFEtKTEM112nPQWqyYp5IFHvNEnIaOSvHzutmTItjUCk/S7OygqK6oJyd4xQltQ==", "dev": true }, "@rushstack/heft-config-file": { @@ -3657,7 +3654,6 @@ "version": "1.3.113", "resolved": "https://registry.npmjs.org/@rushstack/loader-raw-script/-/loader-raw-script-1.3.113.tgz", "integrity": "sha512-1sC9ZSfo3gYz4J2i1OueqZtpsmT7uoK6zoZlnMmnD1bu2WSH83Dj+Rl4QrG4qo2g9sEkvV89IHMncN8Ingkmqg==", - "dev": true, "requires": { "loader-utils": "~1.1.0" }, @@ -3665,26 +3661,22 @@ "big.js": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" }, "emojis-list": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" }, "json5": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" }, "loader-utils": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "dev": true, "requires": { "big.js": "^3.1.3", "emojis-list": "^2.0.0", @@ -3782,21 +3774,6 @@ } } }, - "@rushstack/node-core-library": { - "version": "3.19.6", - "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.19.6.tgz", - "integrity": "sha512-1+FoymIdr9W9k0D8fdZBBPwi5YcMwh/RyESuL5bY29rLICFxSLOPK+ImVZ1OcWj9GEMsvDx5pNpJ311mHQk+MA==", - "dev": true, - "requires": { - "@types/node": "10.17.13", - "colors": "~1.2.1", - "fs-extra": "~7.0.1", - "jju": "~1.4.0", - "semver": "~5.3.0", - "timsort": "~0.3.0", - "z-schema": "~3.18.3" - } - }, "@rushstack/package-deps-hash": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@rushstack/package-deps-hash/-/package-deps-hash-3.0.3.tgz", @@ -3968,17 +3945,6 @@ } } }, - "@rushstack/ts-command-line": { - "version": "4.3.13", - "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.3.13.tgz", - "integrity": "sha512-BUBbjYu67NJGQkpHu8aYm7kDoMFizL1qx78+72XE3mX/vDdXYJzw/FWS7TPcMJmY4kNlYs979v2B0Q0qa2wRiw==", - "dev": true, - "requires": { - "@types/argparse": "1.0.33", - "argparse": "~1.0.9", - "colors": "~1.2.1" - } - }, "@rushstack/typings-generator": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@rushstack/typings-generator/-/typings-generator-0.3.0.tgz", @@ -4101,8 +4067,7 @@ "@types/adal-angular": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/adal-angular/-/adal-angular-1.0.1.tgz", - "integrity": "sha512-2sRGxJYrluhvIz8ae98i5k5woe9Fics4dMFHTcNfY2xAkj5QGZor+sfZzlgM58Fpw7Kklau9Gn6OhgJP25dKug==", - "dev": true + "integrity": "sha512-2sRGxJYrluhvIz8ae98i5k5woe9Fics4dMFHTcNfY2xAkj5QGZor+sfZzlgM58Fpw7Kklau9Gn6OhgJP25dKug==" }, "@types/anymatch": { "version": "3.0.0", @@ -4166,6 +4131,11 @@ "integrity": "sha1-ox10JBprHtu5c8822XooloNKUfk=", "dev": true }, + "@types/es6-promise": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/@types/es6-promise/-/es6-promise-0.0.33.tgz", + "integrity": "sha512-HKJFVLCGrWQ/1unEw8JdaTxu6n3EUxmwTxJ6D0O1x0gD8joCsgoTWxEgevb7fp2XIogNjof3KEd+3bJoGne/nw==" + }, "@types/eslint-visitor-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", @@ -4256,8 +4226,7 @@ "@types/lodash": { "version": "4.14.117", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.117.tgz", - "integrity": "sha512-xyf2m6tRbz8qQKcxYZa7PA4SllYcay+eh25DN3jmNYY6gSTL7Htc/bttVdkqj2wfJGbeWlQiX8pIyJpKU+tubw==", - "dev": true + "integrity": "sha512-xyf2m6tRbz8qQKcxYZa7PA4SllYcay+eh25DN3jmNYY6gSTL7Htc/bttVdkqj2wfJGbeWlQiX8pIyJpKU+tubw==" }, "@types/minimatch": { "version": "3.0.5", @@ -4312,8 +4281,7 @@ "@types/office-js": { "version": "1.0.36", "resolved": "https://registry.npmjs.org/@types/office-js/-/office-js-1.0.36.tgz", - "integrity": "sha512-v5jOXCPS0nbbuVzZThhDMzttuJrpzzvx1GsPo5Qed8Cs9uzMwEV1vdkKN5zLFnAUlEF4s8Szl9KXnhnSvH89Kw==", - "dev": true + "integrity": "sha512-v5jOXCPS0nbbuVzZThhDMzttuJrpzzvx1GsPo5Qed8Cs9uzMwEV1vdkKN5zLFnAUlEF4s8Szl9KXnhnSvH89Kw==" }, "@types/orchestrator": { "version": "0.0.30", @@ -4333,8 +4301,7 @@ "@types/prop-types": { "version": "15.7.4", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", - "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==", - "dev": true + "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" }, "@types/q": { "version": "1.5.5", @@ -4343,10 +4310,9 @@ "dev": true }, "@types/react": { - "version": "17.0.37", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.37.tgz", - "integrity": "sha512-2FS1oTqBGcH/s0E+CjrCCR9+JMpsu9b69RTFO+40ua43ZqP5MmQ4iUde/dMjWR909KxZwmOQIFq6AV6NjEG5xg==", - "dev": true, + "version": "17.0.38", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.38.tgz", + "integrity": "sha512-SI92X1IA+FMnP3qM5m4QReluXzhcmovhZnLNm3pyeQlooi02qI7sLiepEYqT678uNiyc25XfCqxREFpy3W7YhQ==", "requires": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -4354,10 +4320,9 @@ } }, "@types/react-dom": { - "version": "16.9.8", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.8.tgz", - "integrity": "sha512-ykkPQ+5nFknnlU6lDd947WbQ6TE3NNzbQAkInC2EKY1qeYdTKp7onFusmYZb+ityzx2YviqT6BXSu+LyWWJwcA==", - "dev": true, + "version": "16.8.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.8.3.tgz", + "integrity": "sha512-HF5hD5YR3z9Mn6kXcW1VKe4AQ04ZlZj1EdLBae61hzQ3eEWWxMgNLUbIxeZp40BnSxqY1eAYLsH9QopQcxzScA==", "requires": { "@types/react": "*" } @@ -4365,8 +4330,7 @@ "@types/requirejs": { "version": "2.1.29", "resolved": "https://registry.npmjs.org/@types/requirejs/-/requirejs-2.1.29.tgz", - "integrity": "sha1-vEi8gzwHnCwkumr7ym06A7P04vM=", - "dev": true + "integrity": "sha1-vEi8gzwHnCwkumr7ym06A7P04vM=" }, "@types/rimraf": { "version": "2.0.2", @@ -4381,8 +4345,7 @@ "@types/scheduler": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", - "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==", - "dev": true + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" }, "@types/semver": { "version": "7.3.9", @@ -4504,11 +4467,6 @@ "source-map": "^0.6.0" } }, - "@types/webpack-env": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.13.1.tgz", - "integrity": "sha512-oHyg0NssP2RCpCvE35hhbSqMJRsc5lSW+GFe+Vc65JL+kHII1VMYM+0KeV/z4utFuUqPoQRmq8KMMp7ba0dj6Q==" - }, "@types/webpack-sources": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-3.2.0.tgz", @@ -4552,8 +4510,7 @@ "@types/z-schema": { "version": "3.16.31", "resolved": "https://registry.npmjs.org/@types/z-schema/-/z-schema-3.16.31.tgz", - "integrity": "sha1-LrHQCl5Ow/pYx2r94S4YK2bcXBw=", - "dev": true + "integrity": "sha1-LrHQCl5Ow/pYx2r94S4YK2bcXBw=" }, "@typescript-eslint/eslint-plugin": { "version": "2.3.3", @@ -4615,7 +4572,6 @@ "version": "7.10.1", "resolved": "https://registry.npmjs.org/@uifabric/foundation/-/foundation-7.10.1.tgz", "integrity": "sha512-Op05qHLBFEieT4+fG8OgpzqDHTQyei1dgVXDd6M4VS6CFJ5ZIPtC7Lwi+ZlkPkwUwccQ9mijuQumzpNKdv035A==", - "dev": true, "requires": { "@uifabric/merge-styles": "^7.19.2", "@uifabric/set-version": "^7.0.24", @@ -4628,7 +4584,6 @@ "version": "7.5.18", "resolved": "https://registry.npmjs.org/@uifabric/icons/-/icons-7.5.18.tgz", "integrity": "sha512-gLPEccWlTER9NiXcOHZ+dSJ3tgLAQ4mTf3hTlKV7e7dKBTl95jzcemG5S2NJQ7xWPTH3+5K1Bpd+nqZo9EJw3w==", - "dev": true, "requires": { "@uifabric/set-version": "^7.0.23", "@uifabric/styling": "^7.16.19", @@ -4639,7 +4594,6 @@ "version": "7.19.2", "resolved": "https://registry.npmjs.org/@uifabric/merge-styles/-/merge-styles-7.19.2.tgz", "integrity": "sha512-kTlhwglDqwVgIaJq+0yXgzi65plGhmFcPrfme/rXUGMJZoU+qlGT5jXj5d3kuI59p6VB8jWEg9DAxHozhYeu0g==", - "dev": true, "requires": { "@uifabric/set-version": "^7.0.24", "tslib": "^1.10.0" @@ -4649,7 +4603,6 @@ "version": "7.14.0", "resolved": "https://registry.npmjs.org/@uifabric/react-hooks/-/react-hooks-7.14.0.tgz", "integrity": "sha512-Ndu/DEKHF4gFXEZa2AGgSkdWaj+njVrsSyXbkWRh2UZReFWnH1LMko9p/ZCwk1i9kAd5CUmyIfURUzIEya9YCg==", - "dev": true, "requires": { "@fluentui/react-window-provider": "^1.0.2", "@uifabric/set-version": "^7.0.24", @@ -4661,7 +4614,6 @@ "version": "7.0.24", "resolved": "https://registry.npmjs.org/@uifabric/set-version/-/set-version-7.0.24.tgz", "integrity": "sha512-t0Pt21dRqdC707/ConVJC0WvcQ/KF7tKLU8AZY7YdjgJpMHi1c0C427DB4jfUY19I92f60LOQyhJ4efH+KpFEg==", - "dev": true, "requires": { "tslib": "^1.10.0" } @@ -4670,7 +4622,6 @@ "version": "7.20.0", "resolved": "https://registry.npmjs.org/@uifabric/styling/-/styling-7.20.0.tgz", "integrity": "sha512-SoaK5J4cwn8D9DWejRlWo+TmKZaHIiVlkIH+B2zLXE8Uc4ZYcotwYGxaSc1gCA16viLvGQkQU+ieWFq91RxdRw==", - "dev": true, "requires": { "@fluentui/theme": "^1.7.4", "@microsoft/load-themed-styles": "^1.10.26", @@ -4684,7 +4635,6 @@ "version": "7.33.5", "resolved": "https://registry.npmjs.org/@uifabric/utilities/-/utilities-7.33.5.tgz", "integrity": "sha512-I+Oi0deD/xltSluFY8l2EVd/J4mvOaMljxKO2knSD9/KoGDlo/o5GN4gbnVo8nIt76HWHLAk3KtlJKJm6BhbIQ==", - "dev": true, "requires": { "@fluentui/dom-utilities": "^1.1.2", "@uifabric/merge-styles": "^7.19.2", @@ -4869,15 +4819,14 @@ } }, "@webcomponents/custom-elements": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@webcomponents/custom-elements/-/custom-elements-1.4.3.tgz", - "integrity": "sha512-iD0YW46SreUQANGccywK/eC+gZELNHocZZrY2fGwrIlx/biQOTkAF9IohisibHbrmIHmA9pVCIdGwzfO+W0gig==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@webcomponents/custom-elements/-/custom-elements-1.4.1.tgz", + "integrity": "sha512-vNCS1+3sxJOpoIsBjUQiXjGLngakEAGOD5Ale+6ikg6OZG5qI5O39frm3raPhud/IwnF4vec5ags05YBsgzcuA==" }, "@webcomponents/webcomponentsjs": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@webcomponents/webcomponentsjs/-/webcomponentsjs-2.5.0.tgz", - "integrity": "sha512-C0l51MWQZ9kLzcxOZtniOMohpIFdCLZum7/TEHv3XWFc1Fvt5HCpbSX84x8ltka/JuNKcuiDnxXFkiB2gaePcg==", - "dev": true + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@webcomponents/webcomponentsjs/-/webcomponentsjs-2.4.3.tgz", + "integrity": "sha512-cV4+sAmshf8ysU2USutrSRYQkJzEYKHsRCGa0CkMElGpG5747VHtkfsW3NdVIBV/m2MDKXTDydT4lkrysH7IFA==" }, "@xtuc/ieee754": { "version": "1.2.0", @@ -4968,8 +4917,7 @@ "adal-angular": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/adal-angular/-/adal-angular-1.0.16.tgz", - "integrity": "sha1-4rwxvHEqr/ugU6pN1GvITrXSCQ8=", - "dev": true + "integrity": "sha1-4rwxvHEqr/ugU6pN1GvITrXSCQ8=" }, "agent-base": { "version": "4.3.0", @@ -4998,32 +4946,6 @@ } } }, - "ajv": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.5.tgz", - "integrity": "sha1-tjcjTT4mdetfefxlIkKoU6SMtJ8=", - "dev": true, - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "json-schema-traverse": "^0.3.0", - "json-stable-stringify": "^1.0.1" - }, - "dependencies": { - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - } - } - }, "ajv-errors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", @@ -6986,8 +6908,7 @@ "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "commondir": { "version": "1.0.1", @@ -7891,8 +7812,7 @@ "csstype": { "version": "3.0.10", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.10.tgz", - "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==", - "dev": true + "integrity": "sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==" }, "currently-unhandled": { "version": "0.4.1", @@ -7913,7 +7833,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dev": true, "requires": { "es5-ext": "^0.10.50", "type": "^1.0.1" @@ -8495,7 +8414,6 @@ "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, "requires": { "iconv-lite": "^0.6.2" }, @@ -8504,7 +8422,6 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3.0.0" } @@ -8621,7 +8538,6 @@ "version": "0.10.53", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "dev": true, "requires": { "es6-iterator": "~2.0.3", "es6-symbol": "~3.1.3", @@ -8632,7 +8548,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, "requires": { "d": "1", "es5-ext": "^0.10.35", @@ -8642,8 +8557,7 @@ "es6-promise": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" }, "es6-promisify": { "version": "5.0.0", @@ -8658,7 +8572,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dev": true, "requires": { "d": "^1.0.1", "ext": "^1.1.2" @@ -8815,13 +8728,14 @@ }, "dependencies": { "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.21.1.tgz", + "integrity": "sha512-lfEImVbnolPuaSZuLQ52cAxPBHeI77sPwCOWRdy12UG/CNa8an7oBHH1R+Fp1/mUqSJi4c8TIP6FOIPSZAUrEQ==", "dev": true, "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.8.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } } } @@ -9185,7 +9099,6 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", - "dev": true, "requires": { "type": "^2.5.0" }, @@ -9193,8 +9106,7 @@ "type": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", - "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==", - "dev": true + "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==" } } }, @@ -10823,7 +10735,6 @@ "version": "4.7.6", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", - "dev": true, "requires": { "minimist": "^1.2.5", "neo-async": "^2.6.0", @@ -11916,8 +11827,7 @@ "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, "is-string": { "version": "1.0.7", @@ -12019,7 +11929,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", - "dev": true, "requires": { "node-fetch": "^1.0.1", "whatwg-fetch": ">=0.10.0" @@ -12029,7 +11938,6 @@ "version": "1.7.3", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", - "dev": true, "requires": { "encoding": "^0.1.11", "is-stream": "^1.0.1" @@ -13826,8 +13734,7 @@ "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { "version": "3.14.1", @@ -13984,15 +13891,6 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "requires": { - "jsonify": "~0.0.0" - } - }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", @@ -14029,12 +13927,6 @@ "graceful-fs": "^4.1.6" } }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, "jsonparse": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.2.0.tgz", @@ -14445,8 +14337,7 @@ "lodash.get": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", - "dev": true + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" }, "lodash.includes": { "version": "4.3.0", @@ -14475,8 +14366,7 @@ "lodash.isequal": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", - "dev": true + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" }, "lodash.isinteger": { "version": "4.0.4", @@ -14601,7 +14491,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, "requires": { "js-tokens": "^3.0.0 || ^4.0.0" } @@ -15034,8 +14923,7 @@ "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "minipass": { "version": "3.1.5", @@ -15222,9 +15110,9 @@ "dev": true }, "nanoid": { - "version": "3.1.30", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", - "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", + "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", "dev": true }, "nanomatch": { @@ -15268,14 +15156,12 @@ "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, "next-tick": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" }, "nice-try": { "version": "1.0.5", @@ -15737,8 +15623,7 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "object-copy": { "version": "0.1.0", @@ -15909,7 +15794,6 @@ "version": "7.156.0", "resolved": "https://registry.npmjs.org/office-ui-fabric-react/-/office-ui-fabric-react-7.156.0.tgz", "integrity": "sha512-e9EwmkTGRjt+PJiRqB2ZU+8dTOUtDzNcOhiZmyI7Rvmz1XK3LhNDgoExbMQfAuDFEr2TcyvrOidwTAAkoRyWYw==", - "dev": true, "requires": { "@fluentui/date-time-utilities": "^7.9.0", "@fluentui/react-focus": "^7.17.1", @@ -17293,7 +17177,6 @@ "version": "15.7.2", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "dev": true, "requires": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -17491,8 +17374,7 @@ "raw-loader": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", - "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=", - "dev": true + "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=" }, "rc": { "version": "1.2.8", @@ -17520,7 +17402,6 @@ "version": "16.9.0", "resolved": "https://registry.npmjs.org/react/-/react-16.9.0.tgz", "integrity": "sha512-+7LQnFBwkiw+BobzOF6N//BdoNw0ouwmSJTEm9cglOOmsg/TMiFHZLe2sEoN5M7LgJTj9oHH0gxklfnQe66S1w==", - "dev": true, "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -17528,34 +17409,20 @@ } }, "react-dom": { - "version": "16.8.5", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.8.5.tgz", - "integrity": "sha512-VIEIvZLpFafsfu4kgmftP5L8j7P1f0YThfVTrANMhZUFMDOsA6e0kfR6wxw/8xxKs4NB59TZYbxNdPCDW34x4w==", - "dev": true, + "version": "16.9.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.9.0.tgz", + "integrity": "sha512-YFT2rxO9hM70ewk9jq0y6sQk8cL02xm4+IzYBz75CQGlClQQ1Bxq0nhHF6OtSbit+AIahujJgb/CPRibFkMNJQ==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2", - "scheduler": "^0.13.5" - }, - "dependencies": { - "scheduler": { - "version": "0.13.6", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.6.tgz", - "integrity": "sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ==", - "dev": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - } + "scheduler": "^0.15.0" } }, "react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "read": { "version": "1.0.7", @@ -18027,8 +17894,7 @@ "requirejs": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz", - "integrity": "sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==", - "dev": true + "integrity": "sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==" }, "requires-port": { "version": "1.0.0", @@ -18209,8 +18075,7 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sane": { "version": "4.1.0", @@ -18525,7 +18390,6 @@ "version": "0.15.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.15.0.tgz", "integrity": "sha512-xAefmSfN6jqAa7Kuq7LIJY0bwAPG3xlCj0HMEBQk1lxYiDKZscY2xJ5U/61ZTrYbmNQbXa+gc7czPkVo11tnCg==", - "dev": true, "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -19077,8 +18941,7 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-loader": { "version": "0.2.4", @@ -19584,6 +19447,12 @@ } } }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, "sver-compat": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", @@ -20144,8 +20013,7 @@ "tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "tslint": { "version": "5.12.1", @@ -20179,9 +20047,9 @@ } }, "tslint-microsoft-contrib": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tslint-microsoft-contrib/-/tslint-microsoft-contrib-6.2.0.tgz", - "integrity": "sha512-6tfi/2tHqV/3CL77pULBcK+foty11Rr0idRDxKnteTaKm6gWF9qmaCNU17HVssOuwlYNyOmd9Jsmjd+1t3a3qw==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/tslint-microsoft-contrib/-/tslint-microsoft-contrib-5.2.1.tgz", + "integrity": "sha512-PDYjvpo0gN9IfMULwKk0KpVOPMhU6cNoT9VwCOLeDl/QS8v8W2yspRpFFuUS7/c5EIH/n8ApMi8TxJAz1tfFUA==", "dev": true, "requires": { "tsutils": "^2.27.2 <2.29.0" @@ -20237,8 +20105,7 @@ "type": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", - "dev": true + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" }, "type-check": { "version": "0.3.2", @@ -20287,16 +20154,15 @@ } }, "typescript": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.7.tgz", - "integrity": "sha512-MmQdgo/XenfZPvVLtKZOq9jQQvzaUAUpcKW8Z43x9B2fOm4S5g//tPtMweZUIP+SoBqrVPEIm+dJeQ9dfO0QdA==", + "version": "3.3.4000", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.3.4000.tgz", + "integrity": "sha512-jjOcCZvpkl2+z7JFn0yBOoLQyLoIkNZAs/fYJkUG6VKy6zLPHJGfQJYFHzibB6GJaF/8QrcECtlQ5cpvRHSMEA==", "dev": true }, "uglify-js": { "version": "3.4.10", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", - "dev": true, "requires": { "commander": "~2.19.0", "source-map": "~0.6.1" @@ -20305,8 +20171,7 @@ "commander": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", - "dev": true + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==" } } }, @@ -20640,8 +20505,7 @@ "validator": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/validator/-/validator-8.2.0.tgz", - "integrity": "sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA==", - "dev": true + "integrity": "sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA==" }, "value-or-function": { "version": "3.0.0", @@ -21696,8 +21560,7 @@ "whatwg-fetch": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", - "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", - "dev": true + "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==" }, "whatwg-mimetype": { "version": "2.3.0", @@ -21768,8 +21631,7 @@ "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" }, "worker-farm": { "version": "1.7.0", @@ -22150,7 +22012,6 @@ "version": "3.18.4", "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-3.18.4.tgz", "integrity": "sha512-DUOKC/IhbkdLKKiV89gw9DUauTV8U/8yJl1sjf6MtDmzevLKOF2duNJ495S3MFVjqZarr+qNGCPbkg4mu4PpLw==", - "dev": true, "requires": { "commander": "^2.7.1", "lodash.get": "^4.0.0", diff --git a/search-parts/config/package-solution.json b/search-parts/config/package-solution.json index b3322c281..326e49e61 100644 --- a/search-parts/config/package-solution.json +++ b/search-parts/config/package-solution.json @@ -3,7 +3,7 @@ "solution": { "name": "PnP Modern Search - Search Web Parts - v4", "id": "59903278-dd5d-4e9e-bef6-562aae716b8b", - "version": "4.5.3.0", + "version": "4.5.4.0", "includeClientSideAssets": true, "skipFeatureDeployment": true, "isDomainIsolated": false, diff --git a/search-parts/package.json b/search-parts/package.json index 3acf34043..0e915aa5d 100644 --- a/search-parts/package.json +++ b/search-parts/package.json @@ -1,6 +1,6 @@ { "name": "@pnp/modern-search-web-parts", - "version": "4.5.3", + "version": "4.5.4", "private": true, "main": "lib/index.js", "engines": { diff --git a/search-parts/src/components/CollapsibleContentComponent.tsx b/search-parts/src/components/CollapsibleContentComponent.tsx index 762de688b..680672e1d 100644 --- a/search-parts/src/components/CollapsibleContentComponent.tsx +++ b/search-parts/src/components/CollapsibleContentComponent.tsx @@ -131,6 +131,8 @@ export class CollapsibleContentComponent extends React.Component
{ this._onTogglePanel(props); }} diff --git a/search-parts/src/components/PanelComponent.tsx b/search-parts/src/components/PanelComponent.tsx index cfc0e2b35..08aa8f0f7 100644 --- a/search-parts/src/components/PanelComponent.tsx +++ b/search-parts/src/components/PanelComponent.tsx @@ -134,6 +134,8 @@ export class PanelComponent extends React.Component
{ diff --git a/search-parts/src/components/PersonaComponent.tsx b/search-parts/src/components/PersonaComponent.tsx index 8e8702994..a1ecd4dbe 100644 --- a/search-parts/src/components/PersonaComponent.tsx +++ b/search-parts/src/components/PersonaComponent.tsx @@ -85,7 +85,6 @@ export class PersonaComponent extends React.Component - {props.item.name} + + {props.item.name} + = React.createElement("div", { key: this.properties.key }, React.createElement(NonReactiveTextField, { + key: this.properties.componentKey, onUpdate: ((value) => { changeCallback(this.targetProperty, value); }).bind(this), diff --git a/search-parts/src/controls/PropertyPaneNonReactiveTextField/components/INonReactiveTextFieldProps.ts b/search-parts/src/controls/PropertyPaneNonReactiveTextField/components/INonReactiveTextFieldProps.ts index 388e9adfa..c5927581d 100644 --- a/search-parts/src/controls/PropertyPaneNonReactiveTextField/components/INonReactiveTextFieldProps.ts +++ b/search-parts/src/controls/PropertyPaneNonReactiveTextField/components/INonReactiveTextFieldProps.ts @@ -1,5 +1,10 @@ export interface INonReactiveTextFieldProps { + /** + * Unique key for the component + */ + key?: string; + /** * The default value to display */ diff --git a/search-parts/src/controls/PropertyPaneNonReactiveTextField/components/NonReactiveTextField.tsx b/search-parts/src/controls/PropertyPaneNonReactiveTextField/components/NonReactiveTextField.tsx index fb5afd651..801d80a95 100644 --- a/search-parts/src/controls/PropertyPaneNonReactiveTextField/components/NonReactiveTextField.tsx +++ b/search-parts/src/controls/PropertyPaneNonReactiveTextField/components/NonReactiveTextField.tsx @@ -25,6 +25,7 @@ export class NonReactiveTextField extends React.Component 0) { + searchQuery.HitHighlightedProperties = this.properties.hitHighlightedProperties.split(","); + } + return searchQuery; } @@ -929,7 +947,7 @@ export class SharePointSearchDataSource extends BaseDataSource { - const isTerm = /L0\|#(.+)\|/.test(value.name); + const isTerm = TAXONOMY_REFINER_REGEX.test(value.name); if (isTerm) { @@ -939,27 +957,27 @@ export class SharePointSearchDataSource extends BaseDataSource { - // 20210811: We strip the language specific part of the term and use the GP0 value as the filter value + const matches = TAXONOMY_REFINER_REGEX.exec(term); + // We strip the language specific part of the term and use the GP0 value as the filter value // and use also the striped value as the new term/key... // --> 'GP0|#a2cf1afb-44b6-4cf4-bf37-642bb2e9bff3' instead of 'L0|#a2cf1afb-44b6-4cf4-bf37-642bb2e9bff3|Category 1' for the value/filter // --> 'L0|#a2cf1afb-44b6-4cf4-bf37-642bb2e9bff3|' instead of 'L0|#a2cf1afb-44b6-4cf4-bf37-642bb2e9bff3|Category 1' for the name - // Background: if the same term is used on sites with different default language, the indexed taxid property value contains the + // If the same term is used on sites with different default language, the indexed taxid property value contains the // translation of that site collection and therefore it comes back as different values meaning the same with the same id but causing // separate filters. // (Example: 'L0|#a2cf1afb-44b6-4cf4-bf37-642bb2e9bff3|Food' and 'L0|#a2cf1afb-44b6-4cf4-bf37-642bb2e9bff3|Nahrung') - let matches = /L0\|#(.+)\|/.exec(value.name); - let termId = Guid.isValid(matches[1]) ? matches[1] : matches[1].substr(1); - let strippedTermFilter = "GP0|#" + termId.toString(); - let strippedTerm = term.substring(0, term.lastIndexOf('|') + 1); // (we keep the last pipe for compatibility with further code/regexp) + // Using the GP0 refinement will ensure content will be filtered regardless of translations + const strippedTerm = matches[1]; - const fqlFilterValue = `"ǂǂ${this._bytesToHex(this._stringToUTF8Bytes(strippedTermFilter))}"`; + // Use FQL expression here to get the correct output. Otherwise a full match is performed + const fqlFilterValue = `"ǂǂ${this._bytesToHex(this._stringToUTF8Bytes(term))}"`; const existingFilterIdx = updatedValues.map(updatedValue => updatedValue.name).indexOf(strippedTerm); - + if (existingFilterIdx === -1) { // Create a dedicated filter value entry updatedValues.push({ count: value.count, - name: strippedTerm, // New stripped term, ex: 'L0|#a2cf1afb-44b6-4cf4-bf37-642bb2e9bff3' instead of 'L0|#a2cf1afb-44b6-4cf4-bf37-642bb2e9bff3|Category 1' + name: strippedTerm, value: fqlFilterValue } as IDataFilterResultValue); @@ -990,14 +1008,14 @@ export class SharePointSearchDataSource extends BaseDataSource 0) { - let termId = Guid.isValid(matches[1]) ? matches[1] : matches[1].substr(1); // The substr(1) is to cover the case when a '0' is added at the beginning of the GUID for taxonomy values + let termId = matches[3]; // Duplicates can appear if multiple taxonomy filters with the same values are displayed at the same time. if (termsToLocalize.map(t => t.uniqueIdentifier).indexOf(value.value) === -1) { @@ -1069,12 +1087,24 @@ export class SharePointSearchDataSource extends BaseDataSource { return e.uniqueIdentifier === value.value; }); if (existingFilters.length > 0) { - // 20210811: because we have modified the filter value to use the GP0 also for the L0 items, the mapping also returns items which are not L0 - // therefore we have to check the name for L0 again and only replace those... - const isTerm = /L0\|#(.+)\|/.test(value.name); + + const isTerm = TAXONOMY_REFINER_REGEX.test(value.name); if (isTerm) { - value.name = existingFilters[0].localizedTermLabel; + const matches = TAXONOMY_REFINER_REGEX.exec(value.name); + const termId = matches[3]; + const termPrefix = matches[2]; // 'L0' + if (termPrefix.localeCompare("L0") === 0) { + const termFilterWithoutTranslations = `"ǂǂ${this._bytesToHex(this._stringToUTF8Bytes(`GP0|#${termId.toString()}`))}"`; + const termTextFilter = `L0|#${termId.toString()}`; + + // value.value: HEX encoded value => original refiner value + // termFilterWithoutTranslations => language agnostic term value + // termTextFilter => Text value in case the value is a string (ex: a property bag value or a text column) + value.value = `or(${value.value},${termFilterWithoutTranslations},${termTextFilter})`; + } } + + value.name = existingFilters[0].localizedTermLabel; } // Keep only terms (L0). The crawl property ows_taxid_xxx return term sets too. @@ -1103,7 +1133,7 @@ export class SharePointSearchDataSource extends BaseDataSource { + rawResults.forEach((result, index) => { let properties = []; @@ -1136,10 +1166,9 @@ export class SharePointSearchDataSource extends BaseDataSource 0) { resultsToLocalize.push({ - uniqueIdentifier: result.UniqueID, + uniqueIdentifier: index, properties: properties }); } @@ -1213,10 +1242,10 @@ export class SharePointSearchDataSource extends BaseDataSource { + updatedResults = rawResults.map((result, index) => { const existingResults = localizedTerms.filter((e) => { - return e.uniqueIdentifier === result.UniqueID; + return e.uniqueIdentifier === index; }); if (existingResults.length > 0) { diff --git a/search-parts/src/helpers/DataFilterHelper.ts b/search-parts/src/helpers/DataFilterHelper.ts index 994a43092..46a20daa2 100644 --- a/search-parts/src/helpers/DataFilterHelper.ts +++ b/search-parts/src/helpers/DataFilterHelper.ts @@ -1,3 +1,4 @@ +import { isEmpty } from "@microsoft/sp-lodash-subset"; import { IDataFilter, IDataFilterConfiguration, FilterType, IDataFilterResult, FilterComparisonOperator } from "@pnp/modern-search-extensibility"; import { BuiltinTokenNames } from "../services/tokenService/TokenService"; @@ -115,6 +116,17 @@ export class DataFilterHelper { } } + // If the value is null or undefined, we replace it by the FQL expression string('') + // Otherwise the query syntax won't be vaild resuting of to an HTTP 500 + if (isEmpty(value)) { + value = "string('')"; + } + + // Enclose the expression with quotes if the value contains spaces + if (/\s/.test(value)) { + value = `"${value}"`; + } + return /ǂǂ/.test(value) && encodeTokens ? encodeURIComponent(value) : value; }).filter(c => c); @@ -147,6 +159,17 @@ export class DataFilterHelper { refinementToken = `range(min,${refinementToken})`; } } + + // If the value is null or undefined, we replace it by the FQL expression string('') + // Otherwise the query syntax won't be vaild resuting of to an HTTP 500 + if (isEmpty(refinementToken)) { + refinementToken = "string('')"; + } + + // Enclose the expression with quotes if the value contains spaces + if (/\s/.test(refinementToken)) { + refinementToken = `"${refinementToken}"`; + } refinementQueryConditions.push(`${filter.filterName}:${refinementToken}`); } diff --git a/search-parts/src/helpers/DateHelper.ts b/search-parts/src/helpers/DateHelper.ts index 44c96b11f..aa36051e6 100644 --- a/search-parts/src/helpers/DateHelper.ts +++ b/search-parts/src/helpers/DateHelper.ts @@ -11,7 +11,7 @@ export class DateHelper { private pageContext: PageContext; public constructor(serviceScope: ServiceScope) { - serviceScope.whenFinished(()=> { + serviceScope.whenFinished(() => { this.pageContext = serviceScope.consume(PageContext.serviceKey); }); } @@ -26,11 +26,15 @@ export class DateHelper { 'moment' ); + let culture = this.pageContext.cultureInfo.currentUICultureName.toLowerCase(); // Moment is by default 'en-us' - if (['en-us','en'].indexOf(this.pageContext.cultureInfo.currentUICultureName.toLowerCase()) === -1) { + if (['en-us', 'en'].indexOf(culture) === -1) { + if (culture.indexOf("zh") === -1) { + culture = culture.split('-')[0]; + } await import( /* webpackChunkName: 'pnp-modern-search-moment' */ - `moment/locale/${this.pageContext.cultureInfo.currentUICultureName.toLowerCase().split('-')[0]}.js` + `moment/locale/${culture}.js` ); } diff --git a/search-parts/src/helpers/ObjectHelper.ts b/search-parts/src/helpers/ObjectHelper.ts index f665ffef2..bd33be222 100644 --- a/search-parts/src/helpers/ObjectHelper.ts +++ b/search-parts/src/helpers/ObjectHelper.ts @@ -37,13 +37,24 @@ export class ObjectHelper { * Get object proeprty value by its deep path. * @param object the object containg the property path * @param path the property path to get + * @param delimiter if multiple matches are found, sepcifiy the delimiter character to use to separate values in the returned string * @returns the property value as string if found, 'undefined' otherwise */ - public static byPath(object: any, path: string): string { + public static byPath(object: any, path: string, delimiter?: string): string { - if (path && object) { + let isValidPredicate = true; + + // Test if the provided path is a valid predicate https://www.npmjs.com/package/jspath#documentation + try { + jspath.compile(`.${path}`); + } catch (e) { + isValidPredicate = false; + } + + if (path && object && isValidPredicate) { try { + // jsPath always returns an array. See https://www.npmjs.com/package/jspath#result const value: any[] = jspath.apply(`.${path}`, object); @@ -62,12 +73,16 @@ export class ObjectHelper { return JSON.stringify(value); } + if (delimiter && value.length > 1) { + return value.join(delimiter); + } + // Use the default behavior of the toString() method. Arrays of simple values (string, integer, etc.) will be separated by a comma (',') return value.toString(); } catch (error) { // Case when unexpected string or tokens are passed in the path - return object[path]; // fallback to see if the prop is on the object verbatim + return null; } } else { diff --git a/search-parts/src/layouts/results/cards/CardsLayout.ts b/search-parts/src/layouts/results/cards/CardsLayout.ts index 5e04434ff..e4814f3f2 100644 --- a/search-parts/src/layouts/results/cards/CardsLayout.ts +++ b/search-parts/src/layouts/results/cards/CardsLayout.ts @@ -56,7 +56,7 @@ export class CardsLayout extends BaseLayout { [ { name: strings.Layouts.Cards.Fields.Title, field: 'title', value: '{{slot item @root.slots.Title}}', useHandlebarsExpr: true, supportHtml: false }, { name: strings.Layouts.Cards.Fields.Location, field: 'location', value: `{{SiteTitle}}`, useHandlebarsExpr: true, supportHtml: true }, - { name: strings.Layouts.Cards.Fields.Tags, field: 'tags', value: `{{#if (slot item @root.slots.Tags)}}\n\t
\n\t\t\n\t\t{{#each (split (slot item @root.slots.Tags) ',') as |tag| }}\n\t\t\t{{tag}}\n\t{{/each}}\n\t
\n{{/if}}`, useHandlebarsExpr: true, supportHtml: true }, + { name: strings.Layouts.Cards.Fields.Tags, field: 'tags', value: `\n\n{{#if (slot item @root.slots.Tags)}}\n\t
\n\t\t\n\t\t
\n\t\t\t{{#each (split (slot item @root.slots.Tags) ",") as |tag| }}\n\t\t\t\t{{trim tag}}\n\t\t\t{{/each}}\n\t\t
\n\t
\n{{/if}}`, useHandlebarsExpr: true, supportHtml: true }, { name: strings.Layouts.Cards.Fields.PreviewImage, field: 'previewImage', value: "{{slot item @root.slots.PreviewImageUrl}}", useHandlebarsExpr: true, supportHtml: false }, { name: strings.Layouts.Cards.Fields.PreviewUrl, field: 'previewUrl' , value: "{{slot item @root.slots.PreviewUrl}}", useHandlebarsExpr: true, supportHtml: false }, { name: strings.Layouts.Cards.Fields.Date, field: 'date', value: "{{getDate (slot item @root.slots.Date) 'LL'}}", useHandlebarsExpr: true, supportHtml: false }, diff --git a/search-parts/src/layouts/results/people/people.html b/search-parts/src/layouts/results/people/people.html index 461852ae9..b36adc479 100644 --- a/search-parts/src/layouts/results/people/people.html +++ b/search-parts/src/layouts/results/people/people.html @@ -38,7 +38,7 @@
  • {{#> resultTypes item=item}} - {{#if @root.properties.layoutProperties.showPersonaCard}} + {{#and @root.properties.layoutProperties.showPersonaCard (slot item @root.slots.PersonQuery)}}