From 6dc2381ff3d8d0e5362ac4140e71eb11c13f23bd Mon Sep 17 00:00:00 2001 From: Bloom Date: Mon, 27 Jun 2022 09:42:47 +0200 Subject: [PATCH 1/2] 1.6.0 prep (#738) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * In case of no default planner-elements, create a blank plan to avoid planner-webpart error on the front page (#703) * Timeline configuration, timeline rework + support for project deliveries (#698) * Timeline improvements * Update sp-js-provisioning for running hooks (#709) * Add improvements to document template selector (#712) * Fix for GtResourceLoad list column (#710) * Changed list fields to site fields in template * Handling upgrade of existing sites #610 * Added changelog * Order of events * Handling of incorrect field format * Transcripting upgrade * Minor formatting Co-authored-by: Ole Martin Pettersen * More info for #705 * Dynamic and improved aggregated lists for Portfolio (#717) * Fix syntax for letter 'å' in template (Gevinstoversikt) (#721) * Minor fixes and imrovements to #717 (#722) * Update PostInstallUpgrade script to remove unnecessary fields from * Update PreInstallUpgrade script to remove unnecessary fields from * Update Aggregated webparts with properties * Update PreInstallUpgrade script and remove overwrite true from pages * Fix problem where columns wasn't rendered properly * Update changelog * if dataSourceCategory is missing for projects return null (#723) * Add handling of navigation, keep customer customizations and reapply * Add some extra checks for dataSourceCategory (Projectlevel) * Install/upgrade script improvements (#729) * Improved field descriptions of datasources fields (#728) * Field types not in sync with 'Prosjektinnholdskolonner' data (#732) * Add GtColMinWidth to 'Prosjektinnholdskolonner' list + ct * Add 'updateProjectContentColumn' when editing type/minWidth from webpart * Use minWidth value from 'Prosjektinnholdskolonner' list for columns * Initialize dataType for aggregated webpart columns correctly * 736 sync error (#737) * Fix for #736 * linting * Update packages * Further fixes after serving #736 * Changelog * lint fix * Minor changes Co-authored-by: Remi Blom-Ohlsen * Update packages * Hopefully fixed #736 * Fix for #736 after more testing * Minor tweak after #736 * 1.6.0 Co-authored-by: Ole Martin Pettersen Co-authored-by: Tarjei E. Ormestøyl --- .gitignore | 1 + CHANGELOG.md | 30 +- Install/Install.ps1 | 10 +- Install/Scripts/PostInstallUpgrade.ps1 | 39 +- Install/Scripts/PreInstallUpgrade.ps1 | 46 + Install/Scripts/RemoveDeprecatedPages.ps1 | 14 - Install/Scripts/UpgradeAllSitesToLatest.ps1 | 92 +- SharePointFramework/@Shared/package-lock.json | 412 +- SharePointFramework/@Shared/package.json | 9 +- .../@Shared/src/helpers/tryParsePercentage.ts | 6 +- .../@Shared/src/logging/ListLogger.ts | 34 +- .../@Shared/src/models/DataSource.ts | 21 +- .../@Shared/src/models/ProjectColumn.ts | 20 +- .../src/services/DataSourceService/index.ts | 26 +- .../src/services/ExcelExportService/index.ts | 10 +- .../IPortalDataServiceConfiguration.ts | 8 +- .../src/services/ProjectDataService/index.ts | 20 +- .../PortfolioWebParts/package-lock.json | 359 +- .../PortfolioWebParts/package.json | 4 +- .../components/BenefitsOverview/columns.tsx | 2 +- .../FilterPanel/Filter/Filter.module.scss | 2 +- .../FilterPanel/Filter/IFilterState.tsx | 6 - .../components/FilterPanel/Filter/index.tsx | 31 +- .../Filter/{IFilterProps.tsx => types.tsx} | 7 +- .../FilterItem/FilterItem.module.scss | 2 +- .../FilterPanel/FilterItem/index.tsx | 32 +- .../{IFilterItemProps.tsx => types.tsx} | 0 .../src/components/FilterPanel/index.tsx | 54 +- .../src/components/FilterPanel/types.tsx | 4 +- .../ColumnContextMenu/index.tsx | 20 +- .../ColumnFormPanel.module.scss | 2 + .../ColumnFormPanel/index.tsx | 106 +- .../ColumnFormPanel/renderOptions.ts | 24 +- .../PortfolioAggregation/Commands/index.tsx | 112 +- .../ItemModal/ItemModal.module.scss | 12 + .../ItemModal/columns.tsx | 47 + .../PortfolioAggregation/ItemModal/index.tsx | 71 + .../ShowHideColumnPanel.module.scss | 19 + .../ShowHideColumnPanel/index.tsx | 109 + .../components/PortfolioAggregation/filter.ts | 32 + .../components/PortfolioAggregation/index.tsx | 76 +- .../PortfolioAggregation/itemColumn.tsx | 34 +- .../PortfolioAggregation/reducer.ts | 291 +- .../components/PortfolioAggregation/search.ts | 5 +- .../components/PortfolioAggregation/types.ts | 69 +- .../src/components/PortfolioOverview/types.ts | 2 +- .../src/components/ProjectList/index.tsx | 2 +- .../DetailsCallout/DetailsCallout.module.scss | 1 + .../ProjectTimeline/DetailsCallout/index.tsx | 169 +- .../Timeline/Timeline.module.scss | 3 +- .../ProjectTimeline/Timeline/index.tsx | 86 +- .../src/components/ProjectTimeline/index.tsx | 178 +- .../src/components/ProjectTimeline/types.ts | 28 +- .../PortfolioWebParts/src/data/index.ts | 487 ++- .../PortfolioWebParts/src/data/types.ts | 71 +- .../IAggregatedListConfiguration.ts | 7 + .../src/interfaces/IProjectContentColumn.ts | 8 + .../src/interfaces/ITimelineItem.ts | 18 +- .../PortfolioWebParts/src/interfaces/index.ts | 1 + .../PortfolioWebParts/src/loc/mystrings.d.ts | 35 +- .../PortfolioWebParts/src/loc/nb-no.js | 32 +- .../src/models/BenefitBase.ts | 2 + .../src/models/ProjectListModel.ts | 60 +- .../src/models/TimelineContentListModel.ts | 20 +- .../src/webparts/benefitsOverview/index.ts | 51 +- .../webparts/portfolioAggregation/index.tsx | 13 +- .../src/webparts/projectTimeline/index.ts | 26 +- .../webparts/projectTimeline/manifest.json | 3 +- .../config/{serve.json => serve.sample.json} | 0 .../ProgramWebParts/package-lock.json | 125 +- .../ProgramWebParts/package.json | 2 +- .../ProgramTimeline/ProgramTimeline.tsx | 3 +- .../ProgramWebParts/src/data/index.ts | 194 +- .../ProgramWebParts/src/loc/mystrings.d.ts | 9 + .../ProgramWebParts/src/loc/nb-no.js | 12 +- .../src/webparts/programTimeline/index.ts | 33 +- .../webparts/programTimeline/manifest.json | 4 +- .../ProjectExtensions/package-lock.json | 6 +- .../ProjectExtensions/package.json | 5 +- .../DocumentTemplateDialog.module.scss | 1 + .../SelectScreen/index.tsx | 2 +- .../TargetFolderScreen/index.tsx | 4 +- .../ProjectExtensions/src/loc/nb-no.js | 6 +- .../src/projectSetup/index.ts | 2 +- .../projectSetup/tasks/CopyListData/index.ts | 10 +- .../tasks/PlannerConfiguration/index.ts | 16 +- .../ProjectWebParts/package-lock.json | 3444 +++++++++-------- .../ProjectWebParts/package.json | 4 +- .../src/components/ProjectPhases/fetchData.ts | 9 +- .../ProjectPhases/getWelcomePage.ts | 14 + .../src/components/ProjectPhases/index.tsx | 8 +- .../src/components/ProjectPhases/types.ts | 5 + .../src/components/ProjectTimeline/index.tsx | 379 +- .../src/components/ProjectTimeline/types.ts | 39 +- .../ProjectWebParts/src/loc/en-us.js | 11 +- .../ProjectWebParts/src/loc/mystrings.d.ts | 7 + .../ProjectWebParts/src/loc/nb-no.js | 10 +- .../src/webparts/projectTimeline/index.ts | 17 + .../webparts/projectTimeline/manifest.json | 7 +- .../JsonTemplates/_JsonTemplateProgram.json | 12 +- .../JsonTemplates/_JsonTemplateProject.json | 12 +- .../Objects/ClientSidePages/Erfaringslogg.xml | 2 +- .../ClientSidePages/Gevinstoversikt.xml | 2 +- .../Objects/ClientSidePages/Konfigurasjon.xml | 7 +- .../ClientSidePages/Leveranseoversikt.xml | 2 +- .../ClientSidePages/Prosjekttidslinje.xml | 2 +- .../ClientSidePages/Risikooversikt.xml | 2 +- .../Portfolio/Objects/ContentTypes/@.xml | 3 + .../Objects/ContentTypes/Datakilde.xml | 9 +- .../ContentTypes/Prosjektinnholdskolonne.xml | 12 + .../Objects/ContentTypes/Tidslinjeelement.xml | 12 + .../Tidslinjekonfigurasjonselement.xml | 12 + Templates/Portfolio/Objects/Lists/@.xml | 6 +- .../Portfolio/Objects/Lists/Datakilder.xml | 68 +- .../Lists/Prosjektinnholdskolonner.xml | 309 ++ .../Objects/Lists/Tidslinjeinnhold.xml | 30 +- .../Objects/Lists/Tidslinjekonfigurasjon.xml | 72 + .../Lists/Tillatelseskonfigurasjon.xml | 2 +- Templates/Portfolio/Objects/SiteFields/@.xml | 11 + .../Objects/SiteFields/GtElementType.xml | 1 + .../Objects/SiteFields/GtFieldDataType.xml | 3 + .../Objects/SiteFields/GtHexColor.xml | 1 + .../Objects/SiteFields/GtODataQuery.xml | 1 + .../SiteFields/GtProjectContentColumns.xml | 1 + .../SiteFields/GtProjectContentGroupBy.xml | 1 + .../SiteFields/GtProjectContentRefiners.xml | 1 + .../SiteFields/GtShowElementPortfolio.xml | 1 + .../SiteFields/GtShowElementProgram.xml | 1 + .../Objects/SiteFields/GtSiteIdLookup.xml | 1 + .../Objects/SiteFields/GtTimelineFilter.xml | 1 + .../SiteFields/GtTimelineTypeLookup.xml | 1 + Templates/Portfolio/Resources.en-US.resx | 134 +- Templates/Portfolio/Resources.no-NB.resx | 134 +- Templates/package-lock.json | 366 ++ dev/.README | 2 +- package-lock.json | 2 +- package.json | 3 +- 137 files changed, 6453 insertions(+), 2810 deletions(-) create mode 100644 Install/Scripts/PreInstallUpgrade.ps1 delete mode 100644 Install/Scripts/RemoveDeprecatedPages.ps1 delete mode 100644 SharePointFramework/PortfolioWebParts/src/components/FilterPanel/Filter/IFilterState.tsx rename SharePointFramework/PortfolioWebParts/src/components/FilterPanel/Filter/{IFilterProps.tsx => types.tsx} (64%) rename SharePointFramework/PortfolioWebParts/src/components/FilterPanel/FilterItem/{IFilterItemProps.tsx => types.tsx} (100%) create mode 100644 SharePointFramework/PortfolioWebParts/src/components/PortfolioAggregation/ItemModal/ItemModal.module.scss create mode 100644 SharePointFramework/PortfolioWebParts/src/components/PortfolioAggregation/ItemModal/columns.tsx create mode 100644 SharePointFramework/PortfolioWebParts/src/components/PortfolioAggregation/ItemModal/index.tsx create mode 100644 SharePointFramework/PortfolioWebParts/src/components/PortfolioAggregation/ShowHideColumnPanel/ShowHideColumnPanel.module.scss create mode 100644 SharePointFramework/PortfolioWebParts/src/components/PortfolioAggregation/ShowHideColumnPanel/index.tsx create mode 100644 SharePointFramework/PortfolioWebParts/src/components/PortfolioAggregation/filter.ts create mode 100644 SharePointFramework/PortfolioWebParts/src/interfaces/IAggregatedListConfiguration.ts create mode 100644 SharePointFramework/PortfolioWebParts/src/interfaces/IProjectContentColumn.ts rename SharePointFramework/ProgramWebParts/config/{serve.json => serve.sample.json} (100%) create mode 100644 SharePointFramework/ProjectWebParts/src/components/ProjectPhases/getWelcomePage.ts create mode 100644 Templates/Portfolio/Objects/ContentTypes/Prosjektinnholdskolonne.xml create mode 100644 Templates/Portfolio/Objects/ContentTypes/Tidslinjeelement.xml create mode 100644 Templates/Portfolio/Objects/ContentTypes/Tidslinjekonfigurasjonselement.xml create mode 100644 Templates/Portfolio/Objects/Lists/Prosjektinnholdskolonner.xml create mode 100644 Templates/Portfolio/Objects/Lists/Tidslinjekonfigurasjon.xml create mode 100644 Templates/Portfolio/Objects/SiteFields/GtElementType.xml create mode 100644 Templates/Portfolio/Objects/SiteFields/GtHexColor.xml create mode 100644 Templates/Portfolio/Objects/SiteFields/GtODataQuery.xml create mode 100644 Templates/Portfolio/Objects/SiteFields/GtProjectContentColumns.xml create mode 100644 Templates/Portfolio/Objects/SiteFields/GtProjectContentGroupBy.xml create mode 100644 Templates/Portfolio/Objects/SiteFields/GtProjectContentRefiners.xml create mode 100644 Templates/Portfolio/Objects/SiteFields/GtShowElementPortfolio.xml create mode 100644 Templates/Portfolio/Objects/SiteFields/GtShowElementProgram.xml create mode 100644 Templates/Portfolio/Objects/SiteFields/GtSiteIdLookup.xml create mode 100644 Templates/Portfolio/Objects/SiteFields/GtTimelineFilter.xml create mode 100644 Templates/Portfolio/Objects/SiteFields/GtTimelineTypeLookup.xml create mode 100644 Templates/package-lock.json diff --git a/.gitignore b/.gitignore index c81013c90..b0fed95c5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ Install/SiteScripts/*.txt Install/InstallLog.txt +Install/Scripts/UpgradeSites_Log* release/* SharePointFramework/**/.vscode/launch.json SharePointFramework/**/pnpm-lock.yaml diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a6ae3831..bf7c97dd7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,34 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. Every change is marked with issue ID. +## 1.6.0 - 16.06.2022 + +### Added + +- Added timeline configuration list (Customize how timeline elements are displayed, their colors, sorting and more) #678 + - This applies to Portfolio, Project and Program timelines +- Added possibility to include project deliveries on timeline (beta) #679 + - This applies to Portfolio, Project and Program timelines +- Added ability to run hooks in the txt provisioning template #700 + - Example: Trigger API's, Flows, Logic Apps, Azure Functions, etc... +- Added 'Prosjektinnholdskolonner' list to define columns which are used for the aggregated webparts #706 + - 'Datakilder' has been expanded with 'Prosjekt odata spørring' column to filter the projects in the datasource query + +### Changed + +- Expanded aggregated webparts with similar functionality as PortfolioOverview #706 + - Views, Filters, Grouping has been added to make them more dynamic + - The aggregated webparts are: 'Erfaringslogg', 'Leveranseoversikt' and 'Risikooversikt' + - 'Gevinstoversikt'has been reworked as an aggregated webpart and will work the same + - 'Datakilder' list has been expanded with three new columns connected to 'Prosjektinnholdskolonner' list +- Improvements to styling, sorting and information messages for the Document Template Selector #711 + +### Fixed + +- Fixed issue with syncing of project properties not always triggering #736 +- Fixed issue with resource allocation percentage not showing #610. NB: The script UpgradeAllSitesToLatest.ps1 needs to be run to fix the issue for old sites! +- Fixed issue with setup dialog, where having more than 6 default items didn't render well #702 + ## 1.5.0 - 01.04.2022 ### Added @@ -18,7 +46,7 @@ Every change is marked with issue ID. - Gains overview - Timeline - Deliveries - - Risks and benefits + - Risks and benefits ### Changed diff --git a/Install/Install.ps1 b/Install/Install.ps1 index 20fc9f1a5..6a1141742 100644 --- a/Install/Install.ps1 +++ b/Install/Install.ps1 @@ -253,14 +253,14 @@ if (-not $SkipDefaultSiteDesignAssociation.IsPresent) { } #endregion -#region Remove pages with deprecated client side components +#region Pre install if ($Upgrade.IsPresent) { - Try { + Write-Host "[INFO] Running pre-install upgrade steps" + try { Connect-SharePoint -Url $Url -ErrorAction Stop - Write-Host "[INFO] Removing deprecated pages" - ."$PSScriptRoot\Scripts\RemoveDeprecatedPages.ps1" + ."$PSScriptRoot\Scripts\PreInstallUpgrade.ps1" Disconnect-PnPOnline - Write-Host "[SUCCESS] Removed deprecated pages" -ForegroundColor Green + Write-Host "[SUCCESS] Successfully ran pre-install upgrade steps" -ForegroundColor Green } Catch {} } diff --git a/Install/Scripts/PostInstallUpgrade.ps1 b/Install/Scripts/PostInstallUpgrade.ps1 index 3dbc36b74..e51560fc7 100644 --- a/Install/Scripts/PostInstallUpgrade.ps1 +++ b/Install/Scripts/PostInstallUpgrade.ps1 @@ -1,4 +1,4 @@ - + $LastInstall = Get-PnPListItem -List "Installasjonslogg" -Query "" | Select-Object -First 1 -Wait if ($null -ne $LastInstall) { $PreviousVersion = $LastInstall.FieldValues["InstallVersion"] @@ -8,8 +8,41 @@ if ($null -ne $LastInstall) { Add-PnPNavigationNode -Location TopNavigationBar -Title "Prosjekttidslinje" -Url "$($Uri.LocalPath)/SitePages/Prosjekttidslinje.aspx" } if ($PreviousVersion -lt "1.5.0") { - Write-Host "[INFO] Applying PnP template [1.5.0] to [$Url]" + Write-Host "[INFO] Applying PnP upgrade template [1.5.0] to [$Url]" Apply-PnPProvisioningTemplate "$BasePath\1.5.0.pnp" -ErrorAction Stop Write-Host "[SUCCESS] Successfully applied PnP template [1.5.0] to [$Url]" -ForegroundColor Green } -} \ No newline at end of file + if ($PreviousVersion -lt "1.6.0") { + Write-Host "[INFO] In version v1.6.0 we added Project timeline configuration and reworked the TimelineContent list. Merging data now as part of the upgrade" + + $Items = Get-PnPListItem -List "Tidslinjeinnhold" + $Milestone = [Uri]::UnescapeDataString("Milep%C3%A6l") + foreach ($Item in $Items) { + $OldSiteId = $Item.FieldValues["SiteIdLookup"].LookupId + $OldType = $Item.FieldValues["TimelineType"] + + if($null -ne $OldSiteId) { + $Item["GtSiteIdLookup"] = $OldSiteId + } + + if($null -ne $OldType) { + Switch ($OldType) + { + "Prosjekt" { $Item["GtTimelineTypeLookup"] = 1 } + "Fase" { $Item["GtTimelineTypeLookup"] = 2 } + "Delfase" { $Item["GtTimelineTypeLookup"] = 3 } + $Milestone { $Item["GtTimelineTypeLookup"] = 4 } + } + } + + $Item.Update() + Invoke-PnPQuery + } + + Remove-PnPField -List "Tidslinjeinnhold" -Identity "SiteIdLookup" -Force -ErrorAction SilentlyContinue + Remove-PnPField -List "Tidslinjeinnhold" -Identity "TimelineType" -Force -ErrorAction SilentlyContinue + Invoke-PnPQuery + + Apply-PnPProvisioningTemplate "$BasePath\Navigation.xml" -ErrorAction Stop + } +} diff --git a/Install/Scripts/PreInstallUpgrade.ps1 b/Install/Scripts/PreInstallUpgrade.ps1 new file mode 100644 index 000000000..6785b62d6 --- /dev/null +++ b/Install/Scripts/PreInstallUpgrade.ps1 @@ -0,0 +1,46 @@ + +$LastInstall = Get-PnPListItem -List "Installasjonslogg" -Query "" | Select-Object -First 1 -Wait +if ($null -ne $LastInstall) { + $PreviousVersion = $LastInstall.FieldValues["InstallVersion"] + + if ($PreviousVersion -lt "1.4.0") { + Write-Host "[INFO] Removing deprecated pages" + + $DeprecatedIds = @( + "d8558017-1e3b-4d13-82fa-2520e845297b", + "3ec6bcaf-28bc-4f2e-9e90-77e8cebf0b5f", + "57530c94-4fb2-4ca2-9279-16c57881fa19" + ) + + $Pages = Get-PnPFolder -Url SitePages -Includes Files | Select-Object -ExpandProperty Files + + $Pages | ForEach-Object { + $DeprecatedComponents = Get-PnPClientSideComponent -Page $_.Name | Where-Object { $DeprecatedIds.Contains($_.WebPartId) } + if ($DeprecatedComponents.Count -gt 0) { + Remove-PnPClientSidePage $_.Name -Force -ErrorAction SilentlyContinue + } + } + } + + if ($PreviousVersion -lt "1.6.0") { + Get-PnPProvisioningTemplate -Out "$BasePath\Navigation.xml" -Handlers Navigation -Erroraction SilentlyContinue + ((Get-Content -path "$BasePath\Navigation.xml" -Raw) -replace 'false', 'true') | Set-Content -Path "$BasePath\Navigation.xml" -Force -ErrorAction SilentlyContinue + + Write-Host "[INFO] Removing deprecated pages" + Write-Host "[INFO] In version v1.6.0 we reworked the aggregated webparts and removed the benefits webpart as this is now handled in the aggregated webpart. Removing pages so that we overwrite the old pages correctly" + + $PnPClientSidePages = @( + "Gevinstoversikt.aspx", + "Erfaringslogg.aspx", + "Leveranseoversikt.aspx", + "Risikooversikt.aspx" + ) + + $Pages = Get-PnPFolder -Url SitePages -Includes Files | Select-Object -ExpandProperty Files + $Pages | ForEach-Object { + if ($PnPClientSidePages.Contains($_.Name)) { + Remove-PnPClientSidePage -Identity $_.Name -Force -ErrorAction SilentlyContinue + } + } + } +} diff --git a/Install/Scripts/RemoveDeprecatedPages.ps1 b/Install/Scripts/RemoveDeprecatedPages.ps1 deleted file mode 100644 index 1df189d63..000000000 --- a/Install/Scripts/RemoveDeprecatedPages.ps1 +++ /dev/null @@ -1,14 +0,0 @@ -$DeprecatedIds = @( - "d8558017-1e3b-4d13-82fa-2520e845297b", - "3ec6bcaf-28bc-4f2e-9e90-77e8cebf0b5f", - "57530c94-4fb2-4ca2-9279-16c57881fa19" -) - -$Pages = Get-PnPFolder -Url SitePages -Includes Files | Select-Object -ExpandProperty Files - -$Pages | ForEach-Object { - $DeprecatedComponents = Get-PnPClientSideComponent -Page $_.Name | Where-Object { $DeprecatedIds.Contains($_.WebPartId) } - if($DeprecatedComponents.Count -gt 0) { - Remove-PnPClientSidePage $_.Name -Force - } -} \ No newline at end of file diff --git a/Install/Scripts/UpgradeAllSitesToLatest.ps1 b/Install/Scripts/UpgradeAllSitesToLatest.ps1 index de41aaf73..e322e644f 100644 --- a/Install/Scripts/UpgradeAllSitesToLatest.ps1 +++ b/Install/Scripts/UpgradeAllSitesToLatest.ps1 @@ -14,37 +14,99 @@ function EnsureProjectTimelinePage($Url) { Write-Host "`t`tCannot connect to site. Do you have access?" -ForegroundColor Red } else { - $existingNode = $existingNodes | Where-Object { $_.Title -eq "Prosjekttidslinje" } -ErrorAction SilentlyContinue + $existingNode = $existingNodes | Where-Object { $_.Title -eq "Prosjekttidslinje" -or $_.Title -eq "Programtidslinje" } -ErrorAction SilentlyContinue if ($null -eq $existingNode) { - Write-Host "`t`tAdding project timeline page" + Write-Host "`t`tAdding project timeline to site" + Write-Host "`t`t`tAdding project timeline page" $page = Add-PnPClientSidePage -Name "Prosjekttidslinje.aspx" -PromoteAs None -LayoutType SingleWebPartAppPage -CommentsEnabled:$false -Publish - Write-Host "`t`tAdding project timeline app" + Write-Host "`t`t`tAdding project timeline app" $webpart = Add-PnPClientSideWebPart -Page "Prosjekttidslinje" -Component "Prosjekttidslinje" -WebPartProperties '{"listName":"Tidslinjeinnhold","showFilterButton":true,"showTimeline":true,"showInfoMessage":true,"showCmdTimelineList":true,"showTimelineList":true,"title":"Prosjekttidslinje"}' $page = Set-PnPClientSidePage -Identity "Prosjekttidslinje" -LayoutType SingleWebPartAppPage -HeaderType None -Publish - Write-Host "`t`tAdding project timeline navigation item" + Write-Host "`t`t`tAdding project timeline navigation item" $node = Add-PnPNavigationNode -Location QuickLaunch -Title "Prosjekttidslinje" -Url "SitePages/Prosjekttidslinje.aspx" } else { - Write-Host "`t`tThe project already has the project timeline page. " -ForegroundColor Yellow + Write-Host "`t`tThe site already has the project timeline page" -ForegroundColor Green } } } +function EnsureResourceLoadIsSiteColumn($Url) { + Connect-PnPOnline -Url $Url -UseWebLogin + + $ResourceAllocation = Get-PnPList -Identity "Ressursallokering" -ErrorAction SilentlyContinue + if ($null -ne $ResourceAllocation) { + $ResourceLoadSiteColumn = Get-PnPField -Identity "GtResourceLoad" + $ResourceLoadListColumn = Get-PnPField -Identity "GtResourceLoad" -List $ResourceAllocation + if ($null -ne $ResourceLoadSiteColumn) { + Write-Host "`t`tReplacing GtResourceLoad field" + $PreviousValues = Get-PnPListItem -List $ResourceAllocation -Fields "ID", "GtResourceLoad" | ForEach-Object { + @{Id = $_.Id; GtResourceLoad = $_.FieldValues["GtResourceLoad"] } + } + + if ($PreviousValues.length -gt 0) { + Write-Host "`t`t`t" (ConvertTo-Json $PreviousValues -Compress) + } + + $ResourceAllocationContentType = Get-PnPContentType -Identity "Ressursallokering" -List "Ressursallokering" -ErrorAction SilentlyContinue + if ($null -ne $ResourceAllocationContentType) { + Write-Host "`t`t`tRemoving old field" + $RemovedColumn = Remove-PnPField -Identity $ResourceLoadListColumn -List $ResourceAllocation -Force + + + Write-Host "`t`t`tAdding the site field" + $FieldLink = New-Object Microsoft.SharePoint.Client.FieldLinkCreationInformation + $FieldLink.Field = $ResourceLoadSiteColumn + $Output = $ResourceAllocationContentType.FieldLinks.Add($FieldLink) + $ResourceAllocationContentType.Update($false) + $ResourceAllocationContentType.Context.ExecuteQuery() + + Write-Host "`t`t`tAdding the site field to default view" + $DefaultView = Get-PnPView -List $ResourceAllocation -Identity "Alle elementer" -ErrorAction SilentlyContinue + if ($null -ne $DefaultView) { + $DefaultView.ViewFields.Add("GtResourceLoad") + $DefaultView.Update() + $DefaultView.Context.ExecuteQuery() + } + + + if ($PreviousValues.length -gt 0) { + Write-Host "`t`t`tRestoring previous values" + $PreviousValues | ForEach-Object { + $ResourceLoad = $_.GtResourceLoad + + if ($ResourceLoad -gt 2 ) { + # Assuming that noone had more than 200% previously + $ResourceLoad = ($ResourceLoad / 100) # Convert to percentage if it wasn't previously + } + $NewValue = Set-PnPListItem -List $ResourceAllocation -Identity $_.Id -Values @{"GtResourceLoad" = $ResourceLoad } -SystemUpdate + } + } + + Write-Host "`t`t`tField swap completed" -ForegroundColor Green + } + } + else { + Write-Host "`t`tThe site already has the correct GtResourceLoad field" -ForegroundColor Green + } + } +} + function UpgradeSite($Url) { EnsureProjectTimelinePage -Url $Url + EnsureResourceLoadIsSiteColumn -Url $Url } Write-Host "This script will update all existing sites in a Prosjektportalen installation. This requires you to have the SharePoint admin role" +Set-PnPTraceLog -Off +Start-Transcript -Path "$PSScriptRoot\UpgradeSites_Log-$((Get-Date).ToString('yyyy-MM-dd-HH-mm')).txt" + [System.Uri]$Uri = $PortfolioUrl $AdminSiteUrl = (@($Uri.Scheme, "://", $Uri.Authority) -join "").Replace(".sharepoint.com", "-admin.sharepoint.com") -Connect-PnPOnline -Url $AdminSiteUrl -UseWebLogin - -$PPHubSite = Get-PnPHubSite -Identity $PortfolioUrl - -$ProjectsInHub = Get-PP365HubSiteChild -Identity $PPHubSite +Connect-PnPOnline -Url $AdminSiteUrl -UseWebLogin -WarningAction Ignore # Get current logged in user $ctx = Get-PnPContext @@ -52,6 +114,9 @@ $ctx.Load($ctx.Web.CurrentUser) $ctx.ExecuteQuery() $UserName = $ctx.Web.CurrentUser.LoginName +$PPHubSite = Get-PnPHubSite -Identity $PortfolioUrl +$ProjectsInHub = Get-PP365HubSiteChild -Identity $PPHubSite + Write-Host "The following sites were found to be part of the Project Portal hub:" $ProjectsInHub | ForEach-Object { Write-Host "`t$_" } @@ -59,7 +124,7 @@ Write-Host "We can grant $UserName admin access to existing projects. This will do { $YesOrNo = Read-Host "Do you want to grant $UserName access to all sites in the hub (listed above)? (y/n)" } -while ("y","n" -notcontains $YesOrNo) +while ("y", "n" -notcontains $YesOrNo) if ($YesOrNo -eq "y") { $ProjectsInHub | ForEach-Object { @@ -79,7 +144,7 @@ Write-Host "We can remove $UserName's admin access from existing projects." do { $YesOrNo = Read-Host "Do you want to remove $UserName's admin access from all sites in the hub? (y/n)" } -while ("y","n" -notcontains $YesOrNo) +while ("y", "n" -notcontains $YesOrNo) if ($YesOrNo -eq "y") { $ProjectsInHub | ForEach-Object { @@ -90,5 +155,4 @@ if ($YesOrNo -eq "y") { } - - +Stop-Transcript diff --git a/SharePointFramework/@Shared/package-lock.json b/SharePointFramework/@Shared/package-lock.json index c27acc0bf..1bc8f1652 100644 --- a/SharePointFramework/@Shared/package-lock.json +++ b/SharePointFramework/@Shared/package-lock.json @@ -1,6 +1,6 @@ { "name": "pp365-shared", - "version": "1.5.4", + "version": "1.5.4-706.12", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -391,6 +391,36 @@ "prop-types": "^15.7.2", "tslib": "^1.10.0" } + }, + "react": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", + "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + } + }, + "react-dom": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz", + "integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + } + }, + "scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } } } }, @@ -665,6 +695,36 @@ "prop-types": "^15.7.2", "tslib": "^1.10.0" } + }, + "react": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", + "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + } + }, + "react-dom": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz", + "integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + } + }, + "scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } } } }, @@ -862,10 +922,35 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.54.tgz", "integrity": "sha512-kaYyLYf6ICn6/isAyD4K1MyWWd5Q3JgH6bnMN089LUx88+s4W8GvK9Q6JMBVu5vsFFp7pMdSxdKmlBXwH/VFRg==" }, + "@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "dev": true + }, + "@types/react": { + "version": "16.8.8", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.8.8.tgz", + "integrity": "sha512-xwEvyet96u7WnB96kqY0yY7qxx/pEpU51QeACkKFtrgjjXITQn0oO1iwPEraXVgh10ZFPix7gs1R4OJXF7P5sg==", + "dev": true, + "requires": { + "@types/prop-types": "*", + "csstype": "^2.2.0" + } + }, + "@types/react-dom": { + "version": "16.8.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.8.3.tgz", + "integrity": "sha512-HF5hD5YR3z9Mn6kXcW1VKe4AQ04ZlZj1EdLBae61hzQ3eEWWxMgNLUbIxeZp40BnSxqY1eAYLsH9QopQcxzScA==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, "@types/requirejs": { "version": "2.1.29", "resolved": "https://registry.npmjs.org/@types/requirejs/-/requirejs-2.1.29.tgz", - "integrity": "sha1-vEi8gzwHnCwkumr7ym06A7P04vM=" + "integrity": "sha512-61MNgoBY6iEsHhFGiElSjEu8HbHOahJLGh9BdGSfzgAN+2qOuFJKuG3f7F+/ggKr+0yEM3Y4fCWAgxU6es0otg==" }, "@types/scriptjs": { "version": "0.0.2", @@ -902,7 +987,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=" + "integrity": "sha512-ccin7QmRIBE9m5DbUH/wSQT0toq8mkrvDv1uoLulyx6fmTTf+2cvpEFetGR+1pVJ6ldGPVuNx92jjEsrm8UISQ==" }, "@typescript-eslint/eslint-plugin": { "version": "4.15.1", @@ -1174,12 +1259,12 @@ "adal-angular": { "version": "1.0.17", "resolved": "https://registry.npmjs.org/adal-angular/-/adal-angular-1.0.17.tgz", - "integrity": "sha1-bpNuDkH5HTsqiOf/ypwvb29WLMQ=" + "integrity": "sha512-+Z9aq7L25OncsaVcnhSsi7AMR/dlg0gWVNptsdtkL9Ih7hA1oJ14mhWB60CB83JF6DlzamVKLMGbrAcgFQqhCg==" }, "adler-32": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.2.0.tgz", - "integrity": "sha1-aj5r8KY5ALoVZSgIyxXGgT0aXyU=", + "integrity": "sha512-/vUqU/UY4MVeFsg+SsK6c+/05RZXIHZMGJA+PX5JyWI0ZRcBpupnRuPLU/NXXoFwMYCPCoxIfElM2eS+DUXCqQ==", "requires": { "exit-on-epipe": "~1.0.1", "printj": "~1.1.0" @@ -1208,7 +1293,7 @@ "ansi-gray": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", + "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==", "requires": { "ansi-wrap": "0.1.0" } @@ -1216,7 +1301,7 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" }, "ansi-styles": { "version": "3.2.1", @@ -1230,7 +1315,7 @@ "ansi-wrap": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=" + "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==" }, "anymatch": { "version": "2.0.0", @@ -1244,7 +1329,7 @@ "normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", "requires": { "remove-trailing-separator": "^1.0.1" } @@ -1254,7 +1339,7 @@ "append-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", - "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", + "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==", "requires": { "buffer-equal": "^1.0.0" } @@ -1262,7 +1347,7 @@ "archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==" }, "argparse": { "version": "1.0.10", @@ -1276,12 +1361,12 @@ "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==" }, "arr-filter": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", - "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", + "integrity": "sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==", "requires": { "make-iterator": "^1.0.0" } @@ -1294,7 +1379,7 @@ "arr-map": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", - "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", + "integrity": "sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==", "requires": { "make-iterator": "^1.0.0" } @@ -1302,12 +1387,12 @@ "arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==" }, "array-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=" + "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==" }, "array-includes": { "version": "3.1.4", @@ -1325,7 +1410,7 @@ "array-initial": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", - "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", + "integrity": "sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==", "requires": { "array-slice": "^1.0.0", "is-number": "^4.0.0" @@ -1384,7 +1469,7 @@ "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==" }, "array.prototype.flatmap": { "version": "1.2.5", @@ -1400,7 +1485,7 @@ "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==" }, "astral-regex": { "version": "2.0.0", @@ -1427,7 +1512,7 @@ "async-settle": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", - "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", + "integrity": "sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==", "requires": { "async-done": "^1.2.2" } @@ -1440,7 +1525,7 @@ "bach": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", - "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", + "integrity": "sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==", "requires": { "arr-filter": "^1.1.1", "arr-flatten": "^1.0.1", @@ -1480,7 +1565,7 @@ "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "requires": { "is-descriptor": "^1.0.0" } @@ -1561,7 +1646,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "requires": { "is-extendable": "^0.1.0" } @@ -1571,7 +1656,7 @@ "buffer-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=" + "integrity": "sha512-tcBWO2Dl4e7Asr9hTGcpVrCe+F7DubpmqWCTbj4FHLmjqO2hIaC383acQubWtRJhdceqs5uBHs6Es+Sk//RKiQ==" }, "buffer-from": { "version": "1.1.2", @@ -1612,7 +1697,7 @@ "camelcase": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==" }, "cfb": { "version": "1.2.1", @@ -1745,7 +1830,7 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "requires": { "is-descriptor": "^0.1.0" } @@ -1755,7 +1840,7 @@ "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1", @@ -1765,17 +1850,17 @@ "clone": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" }, "clone-buffer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=" + "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==" }, "clone-stats": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==" }, "cloneable-readable": { "version": "1.1.3", @@ -1790,12 +1875,12 @@ "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==" }, "codepage": { "version": "1.14.0", "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.14.0.tgz", - "integrity": "sha1-jL4lSBMjVZ19MHVxsP/5HnodL5k=", + "integrity": "sha512-iz3zJLhlrg37/gYRWgEPkaFTtzmnEv1h+r7NgZum2lFElYQPi0/5bnmuDfODHxfp0INEfnRqyfyeIJDbb7ahRw==", "requires": { "commander": "~2.14.1", "exit-on-epipe": "~1.0.1" @@ -1816,7 +1901,7 @@ "collection-map": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", - "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", + "integrity": "sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==", "requires": { "arr-map": "^2.0.2", "for-own": "^1.0.0", @@ -1826,7 +1911,7 @@ "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", "requires": { "map-visit": "^1.0.0", "object-visit": "^1.0.0" @@ -1866,7 +1951,7 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "concat-stream": { "version": "1.6.2", @@ -1890,7 +1975,7 @@ "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==" }, "copy-props": { "version": "2.0.5", @@ -1949,6 +2034,12 @@ } } }, + "csstype": { + "version": "2.6.20", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz", + "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==", + "dev": true + }, "d": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", @@ -1969,12 +2060,12 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==" }, "deep-is": { "version": "0.1.4", @@ -2000,7 +2091,7 @@ "default-resolution": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", - "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=" + "integrity": "sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==" }, "define-properties": { "version": "1.1.3", @@ -2050,7 +2141,7 @@ "detect-file": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=" + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==" }, "dir-glob": { "version": "3.0.1", @@ -2147,7 +2238,7 @@ "emojis-list": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==" }, "encoding": { "version": "0.1.13", @@ -2247,7 +2338,7 @@ "es6-iterator": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", "requires": { "d": "1", "es5-ext": "^0.10.35", @@ -2257,7 +2348,7 @@ "es6-map": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "integrity": "sha512-mz3UqCh0uPCIqsw1SSAkB/p0rOzF/M0V++vyN7JqlPtSW/VsYgQBvVvqMLmfBuyMzTpLnNqi6JmcSizs4jy19A==", "requires": { "d": "1", "es5-ext": "~0.10.14", @@ -2275,7 +2366,7 @@ "es6-set": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "integrity": "sha512-7S8YXIcUfPMOr3rqJBVMePAbRsD1nWeSMQ86K/lDI76S3WKXz+KWILvTIPbTroubOkZTGh+b+7/xIIphZXNYbA==", "requires": { "d": "1", "es5-ext": "~0.10.14", @@ -2287,7 +2378,7 @@ "es6-symbol": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "integrity": "sha512-exfuQY8UGtn/N+gL1iKkH8fpNd5sJ760nJq6mmZAHldfxMD5kX07lbQuYlspoXsuknXNv9Fb7y2GsPOnQIbxHg==", "requires": { "d": "1", "es5-ext": "~0.10.14" @@ -2589,7 +2680,7 @@ "event-emitter": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", "requires": { "d": "1", "es5-ext": "~0.10.14" @@ -2603,7 +2694,7 @@ "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", "requires": { "debug": "^2.3.3", "define-property": "^0.2.5", @@ -2617,7 +2708,7 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "requires": { "is-descriptor": "^0.1.0" } @@ -2625,7 +2716,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "requires": { "is-extendable": "^0.1.0" } @@ -2635,7 +2726,7 @@ "expand-tilde": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", "requires": { "homedir-polyfill": "^1.0.1" } @@ -2663,7 +2754,7 @@ "extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", "requires": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" @@ -2697,7 +2788,7 @@ "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "requires": { "is-descriptor": "^1.0.0" } @@ -2705,7 +2796,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "requires": { "is-extendable": "^0.1.0" } @@ -2837,7 +2928,7 @@ "fast-levenshtein": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", - "integrity": "sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk=" + "integrity": "sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==" }, "fastq": { "version": "1.13.0", @@ -2876,7 +2967,7 @@ "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", "requires": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -2887,7 +2978,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "requires": { "is-extendable": "^0.1.0" } @@ -2897,7 +2988,7 @@ "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", "requires": { "path-exists": "^2.0.0", "pinkie-promise": "^2.0.0" @@ -2959,12 +3050,12 @@ "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==" }, "for-own": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", "requires": { "for-in": "^1.0.1" } @@ -2977,7 +3068,7 @@ "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", "requires": { "map-cache": "^0.2.2" } @@ -2985,7 +3076,7 @@ "fs-mkdirp-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", - "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", + "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==", "requires": { "graceful-fs": "^4.1.11", "through2": "^2.0.3" @@ -2994,7 +3085,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "fsevents": { "version": "1.2.13", @@ -3045,7 +3136,7 @@ "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==" }, "glob": { "version": "7.2.0", @@ -3063,7 +3154,7 @@ "glob-parent": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", "requires": { "is-glob": "^3.1.0", "path-dirname": "^1.0.0" @@ -3072,7 +3163,7 @@ "is-glob": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", "requires": { "is-extglob": "^2.1.0" } @@ -3082,7 +3173,7 @@ "glob-stream": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", + "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==", "requires": { "extend": "^3.0.0", "glob": "^7.1.1", @@ -3123,7 +3214,7 @@ "global-prefix": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", "requires": { "expand-tilde": "^2.0.2", "homedir-polyfill": "^1.0.1", @@ -3209,7 +3300,7 @@ "gulplog": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "integrity": "sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==", "requires": { "glogg": "^1.0.0" } @@ -3251,7 +3342,7 @@ "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", "requires": { "get-value": "^2.0.6", "has-values": "^1.0.0", @@ -3261,7 +3352,7 @@ "has-values": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", "requires": { "is-number": "^3.0.0", "kind-of": "^4.0.0" @@ -3270,7 +3361,7 @@ "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", "requires": { "is-buffer": "^1.1.5" } @@ -3345,7 +3436,7 @@ "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "requires": { "once": "^1.3.0", "wrappy": "1" @@ -3380,7 +3471,7 @@ "invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==" }, "is-absolute": { "version": "1.0.0", @@ -3394,7 +3485,7 @@ "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", "requires": { "kind-of": "^3.0.2" }, @@ -3402,7 +3493,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "requires": { "is-buffer": "^1.1.5" } @@ -3426,7 +3517,7 @@ "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" }, "is-bigint": { "version": "1.0.4", @@ -3440,7 +3531,7 @@ "is-binary-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", "requires": { "binary-extensions": "^1.0.0" } @@ -3477,7 +3568,7 @@ "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", "requires": { "kind-of": "^3.0.2" }, @@ -3485,7 +3576,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "requires": { "is-buffer": "^1.1.5" } @@ -3526,17 +3617,17 @@ "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", "requires": { "number-is-nan": "^1.0.0" } @@ -3557,7 +3648,7 @@ "is-negated-glob": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=" + "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==" }, "is-negative-zero": { "version": "2.0.2", @@ -3568,7 +3659,7 @@ "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", "requires": { "kind-of": "^3.0.2" }, @@ -3576,7 +3667,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "requires": { "is-buffer": "^1.1.5" } @@ -3595,7 +3686,7 @@ "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==" }, "is-plain-object": { "version": "2.0.4", @@ -3632,7 +3723,7 @@ "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" }, "is-string": { "version": "1.0.7", @@ -3663,12 +3754,12 @@ "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==" }, "is-valid-glob": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=" + "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==" }, "is-weakref": { "version": "1.0.2", @@ -3697,22 +3788,22 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" }, "isomorphic-fetch": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", - "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", + "integrity": "sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==", "requires": { "node-fetch": "^1.0.1", "whatwg-fetch": ">=0.10.0" @@ -3747,12 +3838,12 @@ "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", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" }, "json5": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" + "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==" }, "jsx-ast-utils": { "version": "3.2.1", @@ -3777,7 +3868,7 @@ "last-run": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", - "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", + "integrity": "sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==", "requires": { "default-resolution": "^2.0.0", "es6-weak-map": "^2.0.1" @@ -3794,7 +3885,7 @@ "lcid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", "requires": { "invert-kv": "^1.0.0" } @@ -3802,7 +3893,7 @@ "lead": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", - "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", + "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==", "requires": { "flush-write-stream": "^1.0.2" } @@ -3835,7 +3926,7 @@ "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", "requires": { "graceful-fs": "^4.1.2", "parse-json": "^2.2.0", @@ -3847,7 +3938,7 @@ "loader-utils": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "integrity": "sha512-gkD9aSEG9UGglyPcDJqY9YBTUtCLKaBK6ihD2VP1d1X60lTfFspNZNulGBBbUZLkPygy4LySYHyxBpq+VhjObQ==", "requires": { "big.js": "^3.1.3", "emojis-list": "^2.0.0", @@ -3863,17 +3954,17 @@ "lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" }, "lodash.get": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" }, "lodash.isequal": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" }, "lodash.truncate": { "version": "4.4.2", @@ -3909,12 +4000,12 @@ "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==" }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", "requires": { "object-visit": "^1.0.0" } @@ -3927,7 +4018,7 @@ "matchdep": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", - "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", + "integrity": "sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==", "requires": { "findup-sync": "^2.0.0", "micromatch": "^3.0.4", @@ -3938,7 +4029,7 @@ "findup-sync": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", + "integrity": "sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==", "requires": { "detect-file": "^1.0.0", "is-glob": "^3.1.0", @@ -3949,7 +4040,7 @@ "is-glob": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", "requires": { "is-extglob": "^2.1.0" } @@ -4020,7 +4111,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "msal": { "version": "1.4.13", @@ -4114,17 +4205,17 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==" }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", "requires": { "copy-descriptor": "^0.1.0", "define-property": "^0.2.5", @@ -4134,7 +4225,7 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "requires": { "is-descriptor": "^0.1.0" } @@ -4142,7 +4233,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "requires": { "is-buffer": "^1.1.5" } @@ -4168,7 +4259,7 @@ "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", "requires": { "isobject": "^3.0.0" } @@ -4187,7 +4278,7 @@ "object.defaults": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", "requires": { "array-each": "^1.0.1", "array-slice": "^1.0.0", @@ -4220,7 +4311,7 @@ "object.map": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", + "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==", "requires": { "for-own": "^1.0.0", "make-iterator": "^1.0.0" @@ -4229,7 +4320,7 @@ "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", "requires": { "isobject": "^3.0.1" } @@ -4237,7 +4328,7 @@ "object.reduce": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", - "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", + "integrity": "sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==", "requires": { "for-own": "^1.0.0", "make-iterator": "^1.0.0" @@ -4273,7 +4364,7 @@ "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "requires": { "wrappy": "1" } @@ -4303,7 +4394,7 @@ "ordered-read-streams": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", - "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", + "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==", "requires": { "readable-stream": "^2.0.1" } @@ -4311,7 +4402,7 @@ "os-locale": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", "requires": { "lcid": "^1.0.0" } @@ -4341,7 +4432,7 @@ "parse-filepath": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", "requires": { "is-absolute": "^1.0.0", "map-cache": "^0.2.0", @@ -4351,7 +4442,7 @@ "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", "requires": { "error-ex": "^1.2.0" } @@ -4364,22 +4455,22 @@ "parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==" }, "pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==" }, "path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==" }, "path-exists": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", "requires": { "pinkie-promise": "^2.0.0" } @@ -4387,7 +4478,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, "path-key": { "version": "3.1.1", @@ -4403,7 +4494,7 @@ "path-root": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", "requires": { "path-root-regex": "^0.1.0" } @@ -4411,12 +4502,12 @@ "path-root-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=" + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==" }, "path-type": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", "requires": { "graceful-fs": "^4.1.2", "pify": "^2.0.0", @@ -4432,17 +4523,17 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" }, "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==" }, "pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", "requires": { "pinkie": "^2.0.0" } @@ -4450,7 +4541,7 @@ "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==" }, "prelude-ls": { "version": "1.2.1", @@ -4476,7 +4567,7 @@ "pretty-hrtime": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=" + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==" }, "printj": { "version": "1.1.2", @@ -4543,27 +4634,28 @@ "raw-loader": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", - "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=" + "integrity": "sha512-sf7oGoLuaYAScB4VGr0tzetsYlS8EJH6qnTCfQ/WVEa89hALQ4RQfCKt5xCyPQKPDUbVUAIP1QsxAwfAjlDp7Q==" }, "react": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", - "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", + "version": "16.8.5", + "resolved": "https://registry.npmjs.org/react/-/react-16.8.5.tgz", + "integrity": "sha512-daCb9TD6FZGvJ3sg8da1tRAtIuw29PbKZW++NN4wqkbEvxL+bZpaaYb4xuftW/SpXmgacf1skXl/ddX6CdOlDw==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", - "prop-types": "^15.6.2" + "prop-types": "^15.6.2", + "scheduler": "^0.13.5" } }, "react-dom": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz", - "integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==", + "version": "16.8.5", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.8.5.tgz", + "integrity": "sha512-VIEIvZLpFafsfu4kgmftP5L8j7P1f0YThfVTrANMhZUFMDOsA6e0kfR6wxw/8xxKs4NB59TZYbxNdPCDW34x4w==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2", - "scheduler": "^0.19.1" + "scheduler": "^0.13.5" } }, "react-is": { @@ -4839,9 +4931,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "scheduler": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", - "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "version": "0.13.6", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.6.tgz", + "integrity": "sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -4884,7 +4976,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "requires": { "is-extendable": "^0.1.0" } @@ -4984,7 +5076,7 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "requires": { "is-descriptor": "^0.1.0" } @@ -4992,7 +5084,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", "requires": { "is-extendable": "^0.1.0" } @@ -5012,7 +5104,7 @@ "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", "requires": { "is-descriptor": "^1.0.0" } @@ -5056,7 +5148,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "requires": { "is-buffer": "^1.1.5" } @@ -5353,7 +5445,7 @@ "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", "requires": { "is-descriptor": "^0.1.0" } @@ -5578,7 +5670,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", "requires": { "is-buffer": "^1.1.5" } @@ -5817,7 +5909,7 @@ "has-value": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", "requires": { "get-value": "^2.0.3", "has-values": "^0.1.4", @@ -5827,7 +5919,7 @@ "isobject": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", "requires": { "isarray": "1.0.0" } @@ -5837,7 +5929,7 @@ "has-values": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==" } } }, @@ -5988,7 +6080,7 @@ "normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", "requires": { "remove-trailing-separator": "^1.0.1" } diff --git a/SharePointFramework/@Shared/package.json b/SharePointFramework/@Shared/package.json index f655194e7..ee8edc645 100644 --- a/SharePointFramework/@Shared/package.json +++ b/SharePointFramework/@Shared/package.json @@ -3,7 +3,7 @@ "engines": { "node": "^12" }, - "version": "1.5.4", + "version": "1.5.4-706.12", "description": "Shared utilities, helpers and models", "main": "lib/index.js", "scripts": { @@ -31,6 +31,8 @@ "gulp": "^4.0.2", "object-get": "^2.1.0", "office-ui-fabric-react": "6.214.0", + "react": "16.8.5", + "react-dom": "16.8.5", "react-markdown": "^4.2.2", "scriptjs": "^2.5.9", "sp-entityportal-service": "1.3.3", @@ -40,10 +42,15 @@ "xlsx": "^0.16.9", "xmldom": "^0.1.27" }, + "resolutions": { + "@types/react": "16.8.8" + }, "devDependencies": { "@types/scriptjs": "^0.0.2", "@types/sharepoint": "^2016.1.5", "@types/underscore": "^1.9.3", + "@types/react": "16.8.8", + "@types/react-dom": "16.8.3", "@types/xmldom": "^0.1.29", "@typescript-eslint/eslint-plugin": "4.15.1", "@typescript-eslint/parser": "4.15.1", diff --git a/SharePointFramework/@Shared/src/helpers/tryParsePercentage.ts b/SharePointFramework/@Shared/src/helpers/tryParsePercentage.ts index 3c0b09619..b58ed3d00 100644 --- a/SharePointFramework/@Shared/src/helpers/tryParsePercentage.ts +++ b/SharePointFramework/@Shared/src/helpers/tryParsePercentage.ts @@ -2,9 +2,9 @@ import { tryParseFloat } from './' /** * - * @param {string} str The string to parse - * @param {boolean} addPostfix Add postix (%) - * @param {string | number} fallback Fallback if parse fails + * @param str The string to parse + * @param addPostfix Add postfix (%) + * @param fallback Fallback if parse fails */ export function tryParsePercentage( str: string, diff --git a/SharePointFramework/@Shared/src/logging/ListLogger.ts b/SharePointFramework/@Shared/src/logging/ListLogger.ts index 58809d423..bed7bdcf7 100644 --- a/SharePointFramework/@Shared/src/logging/ListLogger.ts +++ b/SharePointFramework/@Shared/src/logging/ListLogger.ts @@ -20,10 +20,10 @@ export class IListLoggerMemberMap { } export default new (class ListLogger { - private _list: any - private _memberMap: IListLoggerMemberMap - private _webUrl: string = '' - private _scope: string = '' + public list: any + public memberMap: IListLoggerMemberMap + public webUrl: string = '' + public scope: string = '' /** * Initialize ListLogger @@ -34,10 +34,10 @@ export default new (class ListLogger { * @param {string} scope scope */ public init(list: any, memberMap: IListLoggerMemberMap, webUrl?: string, scope?: string) { - this._list = list - this._memberMap = memberMap - this._webUrl = webUrl - this._scope = scope + this.list = list + this.memberMap = memberMap + this.webUrl = webUrl + this.scope = scope } /** @@ -47,7 +47,7 @@ export default new (class ListLogger { */ public log(entry: IListLoggerEntry): Promise { const spItem = this.getSpItem(entry) - return (this._list as List).items.add(spItem) + return (this.list as List).items.add(spItem) } /** @@ -58,7 +58,7 @@ export default new (class ListLogger { * @param {string} functionName Function name */ public write(message: string, level: ListLoggerEntryLevel = 'Info', functionName?: string) { - return this.log({ message, level, functionName, webUrl: this._webUrl, scope: this._scope }) + return this.log({ message, level, functionName, webUrl: this.webUrl, scope: this.scope }) } /** @@ -66,17 +66,17 @@ export default new (class ListLogger { * * @param {IListLoggerEntry} entry Entry */ - private getSpItem(entry: IListLoggerEntry) { + public getSpItem(entry: IListLoggerEntry) { let item: { [key: string]: string } = {} - if (this._webUrl && this._memberMap.webUrl) { - item[this._memberMap.webUrl] = this._webUrl + if (this.webUrl && this.memberMap.webUrl) { + item[this.memberMap.webUrl] = this.webUrl } - if (this._scope && this._memberMap.scope) { - item[this._memberMap.scope] = this._scope + if (this.scope && this.memberMap.scope) { + item[this.memberMap.scope] = this.scope } - item = Object.keys(this._memberMap).reduce((_item, key) => { - const fieldName = this._memberMap[key] + item = Object.keys(this.memberMap).reduce((_item, key) => { + const fieldName = this.memberMap[key] _item[fieldName] = entry[key] return _item }, item) diff --git a/SharePointFramework/@Shared/src/models/DataSource.ts b/SharePointFramework/@Shared/src/models/DataSource.ts index bdf2b2ac6..057e042ee 100644 --- a/SharePointFramework/@Shared/src/models/DataSource.ts +++ b/SharePointFramework/@Shared/src/models/DataSource.ts @@ -1,4 +1,6 @@ /* eslint-disable max-classes-per-file */ +import { ProjectColumn } from './ProjectColumn' + export class SPDataSourceItem { public Id?: number = -1 public Title?: string = '' @@ -6,6 +8,10 @@ export class SPDataSourceItem { public GtSearchQuery?: string = '' public GtDataSourceCategory?: string = '' public GtDataSourceDefault?: boolean = false + public GtProjectContentColumnsId?: any[] = [] + public GtProjectContentRefinersId?: any[] = [] + public GtProjectContentGroupById?: any = null + public GtODataQuery?: string = '' } export class DataSource { @@ -15,18 +21,27 @@ export class DataSource { public searchQuery: string public category: string public isDefault: boolean + public projectColumns: ProjectColumn[] + public projectRefiners: any[] + public projectGroupBy: any + public odataQuery: string /** - * DataSource + * Constructor for DataSource * - * @param {SPDataSourceItem} item Item + * @param item Item + * @param columns Project columns */ - constructor(public item: SPDataSourceItem) { + constructor(public item: SPDataSourceItem, columns: ProjectColumn[] = []) { this.id = item.Id this.title = item.Title this.iconName = item.GtIconName this.searchQuery = item.GtSearchQuery this.category = item.GtDataSourceCategory this.isDefault = item.GtDataSourceDefault + this.projectColumns = columns.filter(col => item.GtProjectContentColumnsId.indexOf(col.id) !== -1) + this.projectRefiners = columns.filter(col => item.GtProjectContentRefinersId.indexOf(col.id) !== -1) + this.projectGroupBy = columns.find(col => col.id === item.GtProjectContentGroupById) + this.odataQuery = item.GtODataQuery } } diff --git a/SharePointFramework/@Shared/src/models/ProjectColumn.ts b/SharePointFramework/@Shared/src/models/ProjectColumn.ts index aaa1894c0..336b5be0a 100644 --- a/SharePointFramework/@Shared/src/models/ProjectColumn.ts +++ b/SharePointFramework/@Shared/src/models/ProjectColumn.ts @@ -41,13 +41,13 @@ export class ProjectColumn implements IColumn { constructor(private _item?: SPProjectColumnItem) { if (_item) { this.id = _item.Id - this.fieldName = _item.GtManagedProperty + this.fieldName = _item.GtManagedProperty || _item.GtInternalName this.key = _item.GtManagedProperty this.name = _item.Title this.sortOrder = _item.GtSortOrder this.internalName = _item.GtInternalName - this.dataType = _item.GtFieldDataType.toLowerCase() - this.isMultiline = this.dataType === 'note' + this.dataType = _item.GtFieldDataType && _item.GtFieldDataType.toLowerCase() + this.isMultiline = this.dataType === 'note' || this.dataType === 'tags' this.isRefinable = _item.GtIsRefinable this.isGroupable = _item.GtIsGroupable this.isResizable = true @@ -70,12 +70,12 @@ export class ProjectColumn implements IColumn { /** * Creates a new ProjectColumn * - * @param {string} key Key - * @param {string} fieldName Field name - * @param {string} name Name - * @param {string} iconName Icon name - * @param {any} onColumnClick On column click - * @param {number} minWidth Min width + * @param key Key + * @param fieldName Field name + * @param name Name + * @param iconName Icon name + * @param onColumnClick On column click + * @param minWidth Min width */ public create( key: string, @@ -107,7 +107,7 @@ export class ProjectColumn implements IColumn { /** * Get search type from field name * - * @param {string} fieldName Field name + * @param fieldName Field name */ private _getSearchType?(fieldName: string): SearchValueType { if (fieldName.indexOf('owsdate') !== -1) { diff --git a/SharePointFramework/@Shared/src/services/DataSourceService/index.ts b/SharePointFramework/@Shared/src/services/DataSourceService/index.ts index 59039406d..0642e67a4 100644 --- a/SharePointFramework/@Shared/src/services/DataSourceService/index.ts +++ b/SharePointFramework/@Shared/src/services/DataSourceService/index.ts @@ -1,17 +1,21 @@ -import { List } from '@pnp/sp' +import { List, Web } from '@pnp/sp' import { DataSource, SPDataSourceItem } from '../../models/DataSource' +import { ProjectColumn } from '../../models/ProjectColumn' export class DataSourceService { private list: List + private columnsList: List /** * Creates a new instance of DataSourceService * - * @param {any} web Web - * @param {string} listName List name + * @param web Web + * @param listName List name + * @param columnsListName Columns list name */ - constructor(web: any, listName: string = 'Datakilder') { + constructor(public web: Web, listName = 'Datakilder', columnsListName = 'Prosjektinnholdskolonner') { this.list = web.lists.getByTitle(listName) + this.columnsList = web.lists.getByTitle(columnsListName) } /** @@ -20,12 +24,16 @@ export class DataSourceService { * @param {string} name Name */ public async getByName(name: string): Promise { - const [item] = await this.list.items - .select(...Object.keys(new SPDataSourceItem())) - .filter(`Title eq '${name}'`) - .get() + const [[item], _columns] = await Promise.all([ + this.list.items + .select(...Object.keys(new SPDataSourceItem())) + .filter(`Title eq '${name}'`) + .get(), + this.columnsList.items.get() + ]) if (item) { - return new DataSource(item) + const columns = _columns.map((item) => new ProjectColumn(item)) + return new DataSource(item, columns) } else { return null } diff --git a/SharePointFramework/@Shared/src/services/ExcelExportService/index.ts b/SharePointFramework/@Shared/src/services/ExcelExportService/index.ts index 10298d0d7..20130e33c 100644 --- a/SharePointFramework/@Shared/src/services/ExcelExportService/index.ts +++ b/SharePointFramework/@Shared/src/services/ExcelExportService/index.ts @@ -9,10 +9,10 @@ import { ExcelExportServiceDefaultConfiguration } from './ExcelExportServiceDefa import { IExcelExportServiceConfiguration } from './IExcelExportServiceConfiguration' export default new (class ExcelExportService { - private _configuration: IExcelExportServiceConfiguration + public configuration: IExcelExportServiceConfiguration public configure(configuration: IExcelExportServiceConfiguration) { - this._configuration = { ...ExcelExportServiceDefaultConfiguration, ...configuration } + this.configuration = { ...ExcelExportServiceDefaultConfiguration, ...configuration } } /** @@ -26,7 +26,7 @@ export default new (class ExcelExportService { const sheets = [] const _columns = columns.filter((column) => column.name) sheets.push({ - name: this._configuration.sheetName, + name: this.configuration.sheetName, data: [ _columns.map((column) => column.name), ...items.map((item) => @@ -39,10 +39,10 @@ export default new (class ExcelExportService { const sheet = XLSX.utils.aoa_to_sheet(s.data) XLSX.utils.book_append_sheet(workBook, sheet, s.name || `Sheet${index + 1}`) }) - const wbout = XLSX.write(workBook, this._configuration.options) + const wbout = XLSX.write(workBook, this.configuration.options) FileSaver.saveAs( new Blob([stringToArrayBuffer(wbout)], { type: 'application/octet-stream' }), - format('{0}-{1}.xlsx', this._configuration.name, new Date().toISOString()) + format('{0}-{1}.xlsx', this.configuration.name, new Date().toISOString()) ) } catch (error) { throw new Error(error) diff --git a/SharePointFramework/@Shared/src/services/PortalDataService/IPortalDataServiceConfiguration.ts b/SharePointFramework/@Shared/src/services/PortalDataService/IPortalDataServiceConfiguration.ts index 430ac403e..712de6ffa 100644 --- a/SharePointFramework/@Shared/src/services/PortalDataService/IPortalDataServiceConfiguration.ts +++ b/SharePointFramework/@Shared/src/services/PortalDataService/IPortalDataServiceConfiguration.ts @@ -6,6 +6,8 @@ export type PortalDataServiceList = | 'PROJECT_COLUMN_CONFIGURATION' | 'PROJECT_STATUS' | 'PORTFOLIO_VIEWS' + | 'PROJECT_CONTENT_COLUMNS' + | 'DATA_SOURCES' export interface IPortalDataServiceConfiguration extends Object { urlOrWeb: string | Web @@ -17,6 +19,8 @@ export interface IPortalDataServiceConfiguration extends Object { PROJECT_COLUMN_CONFIGURATION: string PROJECT_STATUS: string PORTFOLIO_VIEWS: string + PROJECT_CONTENT_COLUMNS: string + DATA_SOURCES: string } templateParametersFieldXml?: string } @@ -27,7 +31,9 @@ export const PortalDataServiceDefaultConfiguration: Partial