diff --git a/.ci/Export-NUnitXml.psm1 b/.ci/Export-NUnitXml.psm1
new file mode 100644
index 0000000000..dc73bdfdd9
--- /dev/null
+++ b/.ci/Export-NUnitXml.psm1
@@ -0,0 +1,107 @@
+Function Export-NUnitXml {
+<#
+.SYNOPSIS
+ Takes results from PSScriptAnalyzer and exports them as a Pester test results file (NUnitXml format).
+
+.DESCRIPTION
+ Takes results from PSScriptAnalyzer and exports them as a Pester test results file (NUnit XML schema).
+ Because the generated file in NUnit-compatible, it can be consumed and published by most continuous integration tools.
+#>
+ [CmdletBinding()]
+ Param (
+ [Parameter(Mandatory, Position=0)]
+ [AllowNull()]
+ [Microsoft.Windows.PowerShell.ScriptAnalyzer.Generic.DiagnosticRecord[]]$ScriptAnalyzerResult,
+
+ [Parameter(Mandatory, Position=1)]
+ [string]$Path
+ )
+
+ $TotalNumber = If ($ScriptAnalyzerResult) { $ScriptAnalyzerResult.Count -as [string] } Else { '1' }
+ $FailedNumber = If ($ScriptAnalyzerResult) { $ScriptAnalyzerResult.Count -as [string] } Else { '0' }
+ $Now = Get-Date
+ $FormattedDate = Get-Date $Now -Format 'yyyy-MM-dd'
+ $FormattedTime = Get-Date $Now -Format 'T'
+ $User = $env:USERNAME
+ $MachineName = $env:COMPUTERNAME
+ $Cwd = $pwd.Path
+ $UserDomain = $env:USERDOMAIN
+ $OS = Get-CimInstance -ClassName Win32_OperatingSystem
+ $Platform = $OS.Caption
+ $OSVersion = $OS.Version
+ $ClrVersion = $PSVersionTable.CLRVersion.ToString()
+ $CurrentCulture = (Get-Culture).Name
+ $UICulture = (Get-UICulture).Name
+
+ Switch ($ScriptAnalyzerResult) {
+ $Null { $TestResult = 'Success'; $TestSuccess = 'True'; Break}
+ Default { $TestResult = 'Failure'; $TestSuccess = 'False'}
+ }
+
+ $Header = @"
+
+
+
+
+
+
+
+ `n
+"@
+
+ $Footer = @"
+
+
+
+
+
+"@
+
+ If ( -not($ScriptAnalyzerResult) ) {
+
+ $TestDescription = 'All PowerShell files pass the specified PSScriptAnalyzer rules'
+ $TestName = "PSScriptAnalyzer.{0}" -f $TestDescription
+
+ $Body = @"
+ `n
+"@
+ }
+ Else { # $ScriptAnalyzerResult is not null
+ $Body = [string]::Empty
+ Foreach ( $Result in $ScriptAnalyzerResult ) {
+
+ $TestDescription = "Rule name : $($Result.RuleName)"
+ $TestName = "PSScriptAnalyzer.{0} - {1} - Line {2}" -f $TestDescription, $($Result.ScriptName), $($Result.Line.ToString())
+
+ # Need to Escape these otherwise we can end up with an invalid XML if the Stacktrace has non XML friendly chars like &, etc
+ $Line = [System.Security.SecurityElement]::Escape($Result.Line)
+ $ScriptPath = [System.Security.SecurityElement]::Escape($Result.ScriptPath)
+ $Text = [System.Security.SecurityElement]::Escape($Result.Extent.Text)
+ $Severity = [System.Security.SecurityElement]::Escape($Result.Severity)
+
+ $TestCase = @"
+
+
+ $($Result.Message)
+ at line: $($Line) in $($ScriptPath)
+ $($Line): $($Text)
+ Rule severity : $($Severity)
+
+
+ `n
+"@
+
+ $Body += $TestCase
+ }
+ }
+ $OutputXml = $Header + $Body + $Footer
+
+ # Checking our output is a well formed XML document
+ Try {
+ $XmlCheck = [xml]$OutputXml
+ }
+ Catch {
+ Throw "There was an problem when attempting to cast the output to XML : $($_.Exception.Message)"
+ }
+ $OutputXml | Out-File -FilePath $Path -Encoding utf8 -Force
+}
diff --git a/.ci/Fudge.ps1 b/.ci/Fudge.ps1
new file mode 100644
index 0000000000..3efcdf6ad3
--- /dev/null
+++ b/.ci/Fudge.ps1
@@ -0,0 +1,448 @@
+<#
+ .SYNOPSIS
+ Fudge is a tool to help you manage and version control Chocolatey packages required for environments to function
+
+ .DESCRIPTION
+ Fudge is a tool to help you manage and version control Chocolatey packages required for environments to function.
+ This is done via a Fudgefile which allows you to specify packages (and their versions) to install. You can also
+ specify dev-specific packages (like git, or fiddler)
+
+ You are also able to define pre/post install/upgrade/downgrade/uninstall scripts for additional required functionality
+
+ Furthermore, Fudge has a section to allow you to specify multiple nuspec files and pack the one you need
+
+ .PARAMETER Action
+ The action that Fudge should undertake
+ Actions: install, upgrade, downgrade, uninstall, reinstall, pack, list, search, new, delete, prune, clean, rebuild,
+ which, help, renew, add, remove
+ [Alias: -a]
+
+ .PARAMETER Key
+ The key represents a package/nuspec name in the Fudgefile
+ [Actions: install, upgrade, downgrade, uninstall, reinstall, pack, new, which, renew, add, remove]
+ [Alias: -k]
+
+ .PARAMETER FudgefilePath
+ This will override looking for a default 'Fudgefile' at the root of the current path, and allow you to specify
+ other files instead. This allows you to have multiple Fudgefiles
+ [Actions: install, upgrade, downgrade, uninstall, reinstall, pack, list, new, delete, prune, rebuild, renew, add, remove]
+ [Default: ./Fudgefile]
+ [Alias: -fp]
+
+ .PARAMETER Limit
+ This argument only applies for the 'search' action. It will limit the amount of packages returned when searching
+ If 0 is supplied, the full list is returned
+ [Actions: search]
+ [Default: 10]
+ [Alias: -l]
+
+ .PARAMETER Source
+ Passing this argument will allow you to specify custom source locations to get/download packages for Chocolatey.
+ This allows you to install packages from local directories, or from custom Chocolatey servers. Passing this will
+ also override the source specified in any Fudgefiles
+ [Default: Chocolatey's server]
+ [Actions: install, upgrade, downgrade, reinstall, search, rebuild, add]
+ [Alias: -s]
+
+ .PARAMETER Parameters
+ This argument allows you to pass parameters to a chocolatey package, as if you were using "--params" on choco.
+ For install/upgrade/downgrade/uninstall/reinstall, this argument only works when "-Adhoc" is also supplied
+ [Default: Empty]
+ [Actions: install, upgrade, downgrade, uninstall, reinstall, add]
+ [Alias: -p]
+
+ .PARAMETER Arguments
+ This argument allows you to pass extra arguments to a chocolatey, such as "--x86" or "--ignore-checksum"
+ For install/upgrade/downgrade/uninstall/reinstall, this argument only works when "-Adhoc" is also supplied
+ [Default: Empty]
+ [Actions: install, upgrade, downgrade, uninstall, reinstall, add]
+ [Alias: -args]
+
+ .PARAMETER Dev
+ Switch parameter, if supplied will also action upon the devPackages in the Fudgefile
+ [Actions: install, upgrade, downgrade, uninstall, reinstall, list, delete, prune, rebuild, add, remove]
+ [Alias: -d]
+
+ .PARAMETER DevOnly
+ Switch parameter, if supplied will only action upon the devPackages in the Fudgefile
+ [Actions: install, upgrade, downgrade, uninstall, reinstall, list, delete, prune, rebuild]
+ [Alias: -do]
+
+ .PARAMETER Install
+ Switch parameter, if supplied will install packages after creating a new Fudgefile
+ [Actions: new, renew, add]
+ [Alias: -i]
+
+ .PARAMETER Uninstall
+ Switch parameter, if supplied will uninstall packages before deleting a Fudgefile
+ [Actions: delete, renew, remove]
+ [Alias: -u]
+
+ .PARAMETER Adhoc
+ Switch parameter, if supplied will install software from Chocolatey whether or not
+ the package is in the Fudgefile
+ [Actions: install, upgrade, downgrade, uninstall, reinstall]
+ [Alias: -ad]
+
+ .PARAMETER Version
+ Switch parameter, if supplied will just display the current version of Fudge installed
+ [Alias: -v]
+
+ .PARAMETER Help
+ Switch parameter, if supplied will just display help output
+ [Alias: -h]
+
+ .EXAMPLE
+ fudge install
+
+ .EXAMPLE
+ fudge install -d # to also install devPackages (-do will only install devPackages)
+
+ .EXAMPLE
+ fudge install git -ad # installs git dispite not being in the Fudgefile
+
+ .EXAMPLE
+ fudge pack website
+
+ .EXAMPLE
+ fudge list
+
+ .EXAMPLE
+ fudge search checksum
+#>
+param (
+ [Alias('a')]
+ [string]
+ $Action,
+
+ [Alias('k')]
+ [string]
+ $Key,
+
+ [Alias('fp')]
+ [string]
+ $FudgefilePath,
+
+ [Alias('l')]
+ [int]
+ $Limit = 10,
+
+ [Alias('s')]
+ [string]
+ $Source,
+
+ [Alias('p')]
+ [string]
+ $Parameters,
+
+ [Alias('args')]
+ [string]
+ $Arguments,
+
+ [Alias('d')]
+ [switch]
+ $Dev,
+
+ [Alias('do')]
+ [switch]
+ $DevOnly,
+
+ [Alias('i')]
+ [switch]
+ $Install,
+
+ [Alias('u')]
+ [switch]
+ $Uninstall,
+
+ [Alias('v')]
+ [switch]
+ $Version,
+
+ [Alias('h')]
+ [switch]
+ $Help,
+
+ [Alias('ad')]
+ [switch]
+ $Adhoc
+)
+
+# ensure if there's an error, we stop
+$ErrorActionPreference = 'Stop'
+
+
+# Import required modules
+$root = Split-Path -Parent -Path $MyInvocation.MyCommand.Path
+Import-Module "$($root)\Modules\FudgeTools.psm1" -Force -ErrorAction Stop
+
+
+# output the version
+$ver = 'v$version$'
+Write-Success "Fudge $($ver)"
+
+# if we were only after the version, just return
+if ($Version -or (@('v', 'version') -icontains $Action))
+{
+ return
+}
+
+
+# if action is just to display Help, show it and return
+if ($Help -or (@('h', 'help') -icontains $Action))
+{
+ Write-Host "`nUsage: fudge "
+ Write-Host "`nWhere is one of:"
+ Write-Host " add, clean, delete, downgrade, help, install, list, new, pack,"
+ Write-Host " prune, rebuild, reinstall, remove, renew, search, uninstall,"
+ Write-Host " upgrade, version, which"
+ Write-Host ""
+ return
+}
+
+
+try
+{
+ # start timer
+ $timer = [DateTime]::UtcNow
+
+
+ # ensure we have a valid action
+ $packageActions = @('install', 'upgrade', 'uninstall', 'reinstall', 'list', 'rebuild', 'downgrade', 'add', 'remove')
+ $maintainActions = @('prune')
+ $packingActions = @('pack')
+ $miscActions = @('search', 'clean', 'which')
+ $newActions = @('new')
+ $alterActions = @('delete', 'renew')
+
+ $actions = ($packageActions + $maintainActions + $packingActions + $miscActions + $newActions + $alterActions)
+ if ((Test-Empty $Action) -or $actions -inotcontains $Action) {
+ Write-Fail "Unrecognised action supplied '$($Action)', should be either: $($actions -join ', ')"
+ return
+ }
+
+
+ # actions that require chocolatey
+ $isChocoAction = (@('which', 'add', 'remove', 'delete') -inotcontains $Action)
+ if (!$isChocoAction -and ($Install -or $Uninstall)) {
+ $isChocoAction = $true
+ }
+
+
+ # if adhoc was supplied for an invalid action
+ if ($Adhoc -and @('install', 'uninstall', 'upgrade', 'downgrade', 'reinstall') -inotcontains $Action) {
+ Write-Fail "Adhoc supplied for invalid action: $($Action)"
+ return
+ }
+
+ # if adhoc supplied with no package name, fail
+ if ($Adhoc -and [string]::IsNullOrWhiteSpace($Key)) {
+ Write-Fail "No package name supplied for adhoc $($Action)"
+ return
+ }
+
+
+ # if -devOnly is passed, set -dev to true
+ if ($DevOnly) {
+ $Dev = $true
+ }
+
+
+ # get the Fudgefile path, if adhoc is supplied set to empty
+ $FudgefilePath = Get-FudgefilePath $FudgefilePath -Adhoc:$Adhoc
+
+
+ # ensure that the Fudgefile exists (for certain actions), and deserialise it
+ if (($packageActions + $maintainActions + $packingActions + $alterActions) -icontains $Action)
+ {
+ $config = $null
+
+ # if adhoc is supplied, we don't need to get the content
+ if (!$Adhoc) {
+ if (!(Test-Path $FudgefilePath)) {
+ Write-Fail "Path to Fudgefile does not exist: $($FudgefilePath)"
+ return
+ }
+
+ $config = Get-FudgefileContent $FudgefilePath
+ }
+
+ # if we have a custom source in the config and no CLI source, set the source
+ if ((Test-Empty $Source) -and ($null -ne $config) -and !(Test-Empty $config.source)) {
+ $Source = $config.source
+ }
+ }
+
+ # ensure that the Fudgefile doesn't exist
+ elseif ($newActions -icontains $Action)
+ {
+ if (Test-Path $FudgefilePath) {
+ Write-Fail "Path to Fudgefile already exists: $($FudgefilePath)"
+ return
+ }
+ }
+
+
+ # if there are no packages to install or nuspecs to pack, just return
+ if ($null -ne $config)
+ {
+ # check nuspecs
+ if ($packingActions -icontains $Action)
+ {
+ if (Test-Empty $config.pack) {
+ Write-Notice "There are no nuspecs to $($Action)"
+ return
+ }
+
+ if (![string]::IsNullOrWhiteSpace($Key) -and [string]::IsNullOrWhiteSpace($config.pack.$Key)) {
+ Write-Notice "Fudgefile does not contain a nuspec pack file for '$($Key)'"
+ return
+ }
+ }
+
+ # check packages
+ elseif ($packageActions -icontains $Action)
+ {
+ if ((Test-Empty $config.packages) -and (!$Dev -or ($Dev -and (Test-Empty $config.devPackages)))) {
+ Write-Notice "There are no packages to $($Action)"
+ return
+ }
+
+ if ($DevOnly -and (Test-Empty $config.devPackages)) {
+ Write-Notice "There are no devPackages to $($Action)"
+ return
+ }
+ }
+ }
+
+
+ # check to see if chocolatey is installed
+ if ($isChocoAction) {
+ $isChocoInstalled = Test-Chocolatey
+ }
+
+
+ # check if the console is elevated (only needs to be done for certain actions)
+ $isAdminAction = @('list', 'search', 'new', 'delete', 'renew', 'which', 'add', 'remove') -inotcontains $Action
+ $actionNeedsAdmin = (@('delete', 'remove') -icontains $Action -and $Uninstall) -or (@('new', 'renew', 'add') -icontains $Action -and $Install)
+
+ if (((!$isChocoInstalled -and $isChocoAction) -or $isAdminAction -or $actionNeedsAdmin) -and !(Test-AdminUser))
+ {
+ Write-Notice 'Must be running with administrator privileges for Fudge to fully function'
+ return
+ }
+
+
+ # if chocolatey isn't installed, install it
+ if (!$isChocoInstalled -and $isChocoAction) {
+ Install-Chocolatey
+ }
+
+
+ # if we are using a global custom source, output it for info
+ if (!(Test-Empty $Source)) {
+ Write-Notice "Source: $($Source)"
+ }
+
+ Write-Host ([string]::Empty)
+
+
+ # retrieve a local list of what's currently installed
+ if ($isChocoAction) {
+ $localList = Get-ChocolateyLocalList
+ }
+
+
+ # invoke chocolatey based on the action required
+ switch ($Action)
+ {
+ {($_ -ieq 'install') -or ($_ -ieq 'uninstall') -or ($_ -ieq 'upgrade') -or ($_ -ieq 'downgrade')}
+ {
+ Invoke-ChocolateyAction -Action $Action -Key $Key -Source $Source -Config $config -LocalList $localList `
+ -Parameters $Parameters -Arguments $Arguments -Dev:$Dev -DevOnly:$DevOnly -Adhoc:$Adhoc
+ }
+
+ {($_ -ieq 'reinstall')}
+ {
+ Invoke-ChocolateyAction -Action 'uninstall' -Key $Key -Source $Source -Config $config -LocalList $localList `
+ -Parameters $Parameters -Arguments $Arguments -Dev:$Dev -DevOnly:$DevOnly -Adhoc:$Adhoc
+
+ Invoke-ChocolateyAction -Action 'install' -Key $Key -Source $Source -Config $config -LocalList $localList `
+ -Parameters $Parameters -Arguments $Arguments -Dev:$Dev -DevOnly:$DevOnly -Adhoc:$Adhoc
+ }
+
+ {($_ -ieq 'pack')}
+ {
+ Invoke-ChocolateyAction -Action 'pack' -Key $Key -Config $config
+ }
+
+ {($_ -ieq 'list')}
+ {
+ Invoke-FudgeLocalDetails -Config $config -Key $Key -LocalList $localList -Dev:$Dev -DevOnly:$DevOnly
+ }
+
+ {($_ -ieq 'search')}
+ {
+ Invoke-Search -Key $Key -Limit $Limit -Source $Source -LocalList $localList
+ }
+
+ {($_ -ieq 'new')}
+ {
+ New-Fudgefile -Path $FudgefilePath -Key $Key -LocalList $localList -Install:$Install -Dev:$Dev -DevOnly:$DevOnly
+ }
+
+ {($_ -ieq 'renew')}
+ {
+ Restore-Fudgefile -Path $FudgefilePath -Key $Key -LocalList $localList -Install:$Install -Uninstall:$Uninstall -Dev:$Dev -DevOnly:$DevOnly
+ }
+
+ {($_ -ieq 'delete')}
+ {
+ Remove-Fudgefile -Path $FudgefilePath -Uninstall:$Uninstall -Dev:$Dev -DevOnly:$DevOnly
+ }
+
+ {($_ -ieq 'prune')}
+ {
+ Invoke-FudgePrune -Config $config -LocalList $localList -Dev:$Dev -DevOnly:$DevOnly
+ }
+
+ {($_ -ieq 'clean')}
+ {
+ Invoke-FudgeClean -LocalList $localList
+ }
+
+ {($_ -ieq 'add')}
+ {
+ Invoke-FudgeAdd -Path $FudgefilePath -Key $Key -Source $Source -Config $config -LocalList $localList `
+ -Parameters $Parameters -Arguments $Arguments -Dev:$Dev -Install:$Install
+ }
+
+ {($_ -ieq 'remove')}
+ {
+ Invoke-FudgeRemove -Path $FudgefilePath -Key $Key -Config $config -LocalList $localList `
+ -Parameters $Parameters -Arguments $Arguments -Dev:$Dev -Uninstall:$Uninstall
+ }
+
+ {($_ -ieq 'which')}
+ {
+ Invoke-FudgeWhich -Key $Key
+ }
+
+ {($_ -ieq 'rebuild')}
+ {
+ Invoke-FudgeClean -LocalList $localList
+ Invoke-ChocolateyAction -Action 'install' -Key $Key -Source $Source -Config $config -Dev:$Dev -DevOnly:$DevOnly
+ }
+
+ default
+ {
+ Write-Fail "Action not recognised: $($_)"
+ }
+ }
+}
+finally
+{
+ # output duration, and cleanup
+ Write-Details "`nDuration: $(([DateTime]::UtcNow - $timer).ToString())"
+ Remove-Module -Name 'FudgeTools' -ErrorAction SilentlyContinue | Out-Null
+}
\ No newline at end of file
diff --git a/.ci/FudgeCI.ps1 b/.ci/FudgeCI.ps1
new file mode 100644
index 0000000000..8f834ce475
--- /dev/null
+++ b/.ci/FudgeCI.ps1
@@ -0,0 +1,183 @@
+if (!($env:FudgeCI)) {
+ if (Test-Path 'assets/fudge/FudgeCI.ps1') {
+ $env:FudgeCI = 'assets/fudge/'
+ }
+ elseif (Test-Path '.ci/FudgeCI.ps1') {
+ $env:FudgeCI = '.ci/'
+ }
+}
+
+. $env:FudgeCI/PrepareAVVM.ps1
+
+Set-StrictMode -Version latest
+
+function Initialize-MinGW {
+ # TODO: Handle versions other than 8.1.0
+ Move-Item C:\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64 C:\MinGW81-x64
+}
+
+function Initialize-AppVeyorPreinstalledProduct {
+ param(
+ [array]
+ $packages
+ )
+
+ foreach ($pkg in $packages) {
+ $name = $pkg.Name
+
+ $product = $pkg.AppVeyor_ID
+ if ($product -eq $true) {
+ Write-Information "No version choices available for AppVeyor $name"
+ continue
+ }
+
+ $version = $pkg.Version
+
+ $version_parts = ($version.Split('.'))
+
+ if (!($env:AppVeyor)) {
+ Write-Verbose "AppVeyor not set; skipping $product $version_parts"
+ continue
+ }
+
+ if ($product -eq 'jdk') {
+ # 8 -> 1.8.0
+ $version = "1." + $version_parts[0] + ".0"
+ }
+ elseif ($product -eq 'MinGW') {
+ Initialize-MinGW
+ }
+ elseif ($product -eq 'miniconda') {
+ # TODO improve translation of real miniconda versions
+ # into AppVeyor versions which are the python version
+ if ($version -eq '4.5.12') {
+ $version = '3.7'
+ }
+
+ if ($version[0] -eq '2') {
+ Initialize-Miniconda27
+ }
+ }
+
+ # Allow the installed version of python to be over
+ if ($product -eq 'python') {
+ if ($env:PYTHON_VERSION) {
+ $version = $env:PYTHON_VERSION
+ }
+ }
+
+ Add-Product $product $version $env:PLATFORM
+ if (Test-Path "C:\avvm\$product\$version\$env:PLATFORM") {
+ Install-Product $product $version $env:PLATFORM
+ }
+ elseif (Test-Path "C:\avvm\$product\$version") {
+ if ($env:PLATFORM -eq 'x86') {
+ $platform = 'x64'
+ }
+ else {
+ $platform = 'x86'
+ }
+ Install-Product $product $version $platform
+ }
+ }
+}
+
+function Initialize-AppVeyorFakeChocoPackage {
+ param(
+ [array]
+ $packages
+ )
+
+ New-Item -ItemType Directory -Force ($env:FudgeCI + '\\nuspecs\\') > $null
+
+ Remove-Item "$env:FudgeCI/nuspecs/*.nupkg" -Force > $null
+
+ foreach ($pkg in $packages) {
+ . $env:FudgeCI/FudgeGenerateFake.ps1
+
+ GenerateFakeNuspec $pkg.Name $pkg.Version
+
+ $name = $pkg.Name
+
+ $pkg.Source = "$env:FudgeCI/nuspecs/"
+
+ $filename = "$env:FudgeCI/nuspecs/$name.nuspec"
+
+ Invoke-Chocolatey -Action pack -Package $pkg.Name -Version $filename
+ }
+}
+
+function Get-Preinstalled {
+ try {
+ if ($config) { }
+ }
+ catch {
+ $config = Get-Content Fudgefile |
+ ConvertFrom-Json
+ }
+
+ $appveyor_preinstalled = New-Object System.Collections.ArrayList
+
+ foreach ($pkg in $config.packages) {
+ try {
+ if ($pkg.AppVeyor_ID) {
+ $appveyor_preinstalled.Add($pkg) > $null
+ }
+ }
+ catch {
+ continue
+ }
+ }
+
+ $appveyor_preinstalled
+}
+
+function Initialize-AppVeyorVM {
+ $appveyor_preinstalled = Get-Preinstalled
+
+ if (!($env:AppVeyor)) {
+ Write-Notice "Not running on AppVeyor; skipping"
+ return
+ }
+
+ Initialize-AppVeyorProductVersion
+
+ Initialize-AppVeyorPreinstalledProduct $appveyor_preinstalled
+}
+
+function Invoke-FudgeAppVeyor {
+ $appveyor_preinstalled = Get-Preinstalled
+
+ if (!($env:AppVeyor)) {
+ Write-Notice "Not running on AppVeyor; skipping"
+ return
+ }
+
+ Initialize-AppVeyorFakeChocoPackage $appveyor_preinstalled
+}
+
+function Repair-Config {
+ foreach ($pkg in $config.packages) {
+ if (!($pkg.Source)) {
+ $pkg.Source = $config.Source
+ }
+ }
+}
+
+function Invoke-FudgeCI {
+ if (!($env:CI)) {
+ Fix-Config
+
+ Write-Notice "Not running on CI; skipping"
+ return
+ }
+
+ Invoke-FudgeAppVeyor
+
+ Repair-Config
+}
+
+$old_EAP = $ErrorActionPreference
+$ErrorActionPreference = 'SilentlyContinue';
+Export-ModuleMember -Function Prepare-AppVeyor-AVVM, Invoke-FudgeCI
+$ErrorActionPreference = $old_EAP;
diff --git a/.ci/FudgeGenerateFake.ps1 b/.ci/FudgeGenerateFake.ps1
new file mode 100644
index 0000000000..ac85e407f2
--- /dev/null
+++ b/.ci/FudgeGenerateFake.ps1
@@ -0,0 +1,42 @@
+Set-StrictMode -Version latest
+
+$template = @'
+
+
+
+ {name}
+ {version}
+ {name} {version}
+ AppVeyor
+ Fake generated {name} package to fulfil dependencies.
+
+
+
+
+
+'@
+
+function GenerateFakeNuspec {
+ param(
+ [Parameter(Mandatory = $true)]
+ [ValidateNotNullOrEmpty()]
+ [string]
+ $name,
+
+ [Parameter(Mandatory = $true)]
+ [ValidateNotNullOrEmpty()]
+ [string]
+ $version
+ )
+
+ $content = $template -replace '{name}', $name
+ $content = $content -replace '{version}', $version
+
+ $nuspec = ($env:FudgeCI + '\nuspecs\' + $name + '.nuspec')
+
+ Set-Content $nuspec $content
+
+ Write-Output "Created $nuspec"
+}
+
+Export-ModuleMember -Function GenerateFakeNuspec
diff --git a/.ci/FudgePostInstall.ps1 b/.ci/FudgePostInstall.ps1
new file mode 100644
index 0000000000..c8df753663
--- /dev/null
+++ b/.ci/FudgePostInstall.ps1
@@ -0,0 +1,52 @@
+. $env:ChocolateyInstall\helpers\functions\Write-FunctionCallLogMessage.ps1
+. $env:ChocolateyInstall\helpers\functions\Get-EnvironmentVariable.ps1
+. $env:ChocolateyInstall\helpers\functions\Get-EnvironmentVariableNames.ps1
+. $env:ChocolateyInstall\helpers\functions\Start-ChocolateyProcessAsAdmin.ps1
+. $env:ChocolateyInstall\helpers\functions\Set-EnvironmentVariable.ps1
+. $env:ChocolateyInstall\helpers\functions\Set-PowerShellExitCode.ps1
+. $env:ChocolateyInstall\helpers\functions\Update-SessionEnvironment.ps1
+. $env:ChocolateyInstall\helpers\functions\Write-FunctionCallLogMessage.ps1
+. $env:ChocolateyInstall\helpers\functions\Install-ChocolateyPath.ps1
+
+Set-StrictMode -Version latest
+
+$deps_base = $env:FudgeCI
+
+function Invoke-PostInstall {
+ choco list --local-only
+
+ Update-SessionEnvironment
+
+ Write-Host "PATH = $env:PATH"
+
+ foreach ($pkg in $config.Packages) {
+ $name = $pkg.Name
+
+ $glob = "$deps_base/deps.$name.ps1"
+
+ if (Test-Path $glob) {
+ Write-Host "Running post-install for $name"
+
+ . $glob
+ Complete-Install
+ }
+ }
+
+ Update-SessionEnvironment
+
+ Write-Host "PATH = $env:PATH"
+
+ foreach ($pkg in $config.Packages) {
+ $name = $pkg.Name
+
+ $glob = "$deps_base/deps.$name-packages.ps1"
+ if (Test-Path $glob) {
+ Write-Host "Running $name package installation"
+
+ . $glob
+ Invoke-ExtraInstallation
+ }
+ }
+}
+
+Export-ModuleMember -Function Invoke-PostInstall
diff --git a/.ci/Modules/FudgeTools.psm1 b/.ci/Modules/FudgeTools.psm1
new file mode 100644
index 0000000000..22b588852a
--- /dev/null
+++ b/.ci/Modules/FudgeTools.psm1
@@ -0,0 +1,1888 @@
+
+function Write-Success
+{
+ param (
+ [Parameter(Mandatory=$true)]
+ [ValidateNotNullOrEmpty()]
+ [string]
+ $Message,
+
+ [switch]
+ $NoNewLine
+ )
+
+ Write-Host $Message -NoNewline:$NoNewLine -ForegroundColor Green
+}
+
+function Write-Information
+{
+ param (
+ [Parameter(Mandatory=$true)]
+ [ValidateNotNullOrEmpty()]
+ [string]
+ $Message,
+
+ [switch]
+ $NoNewLine
+ )
+
+ Write-Host $Message -NoNewline:$NoNewLine -ForegroundColor Magenta
+}
+
+
+function Write-Details
+{
+ param (
+ [Parameter(Mandatory=$true)]
+ [ValidateNotNullOrEmpty()]
+ [string]
+ $Message,
+
+ [switch]
+ $NoNewLine
+ )
+
+ Write-Host $Message -NoNewline:$NoNewLine -ForegroundColor Cyan
+}
+
+
+function Write-Notice
+{
+ param (
+ [Parameter(Mandatory=$true)]
+ [ValidateNotNullOrEmpty()]
+ [string]
+ $Message,
+
+ [switch]
+ $NoNewLine
+ )
+
+ Write-Host $Message -NoNewline:$NoNewLine -ForegroundColor Yellow
+}
+
+
+function Write-Fail
+{
+ param (
+ [Parameter(Mandatory=$true)]
+ [ValidateNotNullOrEmpty()]
+ [string]
+ $Message,
+
+ [switch]
+ $NoNewLine
+ )
+
+ Write-Host $Message -NoNewline:$NoNewLine -ForegroundColor Red
+}
+
+
+# compares two versions, and returns a value specifying if they're equal or different
+# -1: installed version is behind
+# 0: installed version is latest
+# 1: installed version is ahead
+function Compare-Versions
+{
+ param (
+ [Parameter(Mandatory=$true)]
+ [ValidateNotNullOrEmpty()]
+ [string]
+ $Installed,
+
+ [Parameter(Mandatory=$true)]
+ [ValidateNotNullOrEmpty()]
+ [string]
+ $NewVersion
+ )
+
+ if (Test-VersionPassedIsLatest $NewVersion) {
+ return -1
+ }
+
+ $i_parts = $Installed -split '\.'
+ $o_parts = $NewVersion -split '\.'
+
+ $count = $i_parts.Length
+ if ($o_parts.Length -gt $count) {
+ $count = $o_parts.Length
+ }
+
+ for ($i = 0; $i -lt $count; $i++)
+ {
+ if ($i_parts[$i] -eq $o_parts[$i]) {
+ continue
+ }
+
+ if ($i_parts[$i] -lt $o_parts[$i]) {
+ return -1
+ }
+ else {
+ return 1
+ }
+ }
+
+ return 0
+}
+
+
+# takes a package about to be installed, and checks if the version needs to be installed,
+# or just a downgrade/upgrade of what's already installed
+function Get-InstallAction
+{
+ param (
+ [string]
+ $Package,
+
+ [string]
+ $Version,
+
+ $LocalList
+ )
+
+ # if it's not installed, it needs installing
+ $current = $LocalList[$Package]
+ if (Test-Empty $current) {
+ return 'install'
+ }
+
+ # compare the version, and determine if we need to upgrade/downgrade
+ $action = Compare-Versions -Installed $current -NewVersion $Version
+
+ switch ($action)
+ {
+ 1 { return 'downgrade' }
+ -1 { return 'upgrade' }
+ default { return 'install' }
+ }
+}
+
+
+# return the package name from a supplied key
+function Get-PackageFromKey
+{
+ param (
+ [string]
+ $Key
+ )
+
+ return ($Key -isplit '@')[0].Trim()
+}
+
+
+# return the version from a supplied key
+function Get-VersionFromKey
+{
+ param (
+ [string]
+ $Key
+ )
+
+ $parts = ($Key -isplit '@')
+ if ($parts.Length -le 1) {
+ return 'latest'
+ }
+
+ return $parts[1].Trim()
+}
+
+
+# returns the levenshtein distance between two strings
+function Get-Levenshtein
+{
+ param (
+ [string]
+ $Value1,
+
+ [string]
+ $Value2
+ )
+
+ $len1 = $Value1.Length
+ $len2 = $Value2.Length
+
+ if ($len1 -eq 0) { return $len2 }
+ if ($len2 -eq 0) { return $len1 }
+
+ $Value1 = $Value1.ToLowerInvariant()
+ $Value2 = $Value2.ToLowerInvariant()
+
+ $dist = New-Object -Type 'int[,]' -Arg ($len1 + 1), ($len2 + 1)
+
+ 0..$len1 | ForEach-Object { $dist[$_, 0] = $_ }
+ 0..$len2 | ForEach-Object { $dist[0, $_] = $_ }
+
+ $cost = 0
+
+ for ($i = 1; $i -le $len1; $i++)
+ {
+ for ($j = 1; $j -le $len2; $j++)
+ {
+ $cost = 1
+ if ($Value2[$j - 1] -ceq $Value1[$i - 1])
+ {
+ $cost = 0
+ }
+
+ $tempmin = [System.Math]::Min(([int]$dist[($i - 1), $j] + 1), ([int]$dist[$i, ($j - 1)] + 1))
+ $dist[$i, $j] = [System.Math]::Min($tempmin, ([int]$dist[($i - 1), ($j - 1)] + $cost))
+ }
+ }
+
+ # the actual distance is stored in the bottom right cell
+ return $dist[$len1, $len2];
+}
+
+
+# safeguards a string, by return empty or a default if empty
+function Format-SafeguardString
+{
+ param (
+ [string]
+ $Value,
+
+ [string]
+ $Default = $null
+ )
+
+ if (!(Test-Empty $Value)) {
+ return $Value
+ }
+
+ $Value = [string]::Empty
+ if (!(Test-Empty $Default)) {
+ $Value = $Default
+ }
+
+ return $Value
+}
+
+
+# checks to see if a passed version is to use the latest version
+function Test-VersionPassedIsLatest
+{
+ param (
+ [string]
+ $Version
+ )
+
+ return ((Test-Empty $Version) -or ($Version.Trim() -ieq 'latest'))
+}
+
+
+# checks to see if a passed path is a valid nuspec (path, xml, and content)
+function Test-Nuspec
+{
+ param (
+ [string]
+ $Path
+ )
+
+ if (!(Test-NuspecPath $Path))
+ {
+ Write-Fail "Path to nuspec file doesn't exist or is invalid: $($Path)"
+ return $false
+ }
+
+ if (!(Test-XmlContent $Path))
+ {
+ Write-Fail "Nuspec file fails to parse as a valid XML document: $($Path)"
+ return $false
+ }
+
+ $nuspecData = Get-XmlContent $Path
+
+ if (!(Test-NuspecContent $nuspecData))
+ {
+ Write-Fail "Nuspec file is missing the package/metadata XML sections: $($Path)"
+ return $false
+ }
+
+ return $true
+}
+
+
+# checks to see if a passed path is a valid nuspec file path
+function Test-NuspecPath
+{
+ param (
+ [string]
+ $Path
+ )
+
+ # ensure a path was passed
+ if ([string]::IsNullOrWhiteSpace($Path))
+ {
+ return $false
+ }
+
+ # ensure path is exists, or is not just a directory path
+ if (!(Test-Path $Path) -or (Test-PathDirectory $Path))
+ {
+ return $false
+ }
+
+ return $true
+}
+
+
+# checks to see if the file at passed path is a valid XML file
+function Test-XmlContent
+{
+ param (
+ [string]
+ $Path
+ )
+
+ # fail if the path doesn't exist
+ if ([string]::IsNullOrWhiteSpace($Path) -or !(Test-Path $Path))
+ {
+ return $false
+ }
+
+ # ensure the content parses as xml
+ try
+ {
+ [xml](Get-Content $Path) | Out-Null
+ return $true
+ }
+ catch [exception]
+ {
+ return $false
+ }
+}
+
+
+# checks to see if the passed XML content is a valid nuspec file
+function Test-NuspecContent
+{
+ param (
+ [xml]
+ $Content
+ )
+
+ return ($Content -ne $null -and $Content.package -ne $null -and $Content.package.metadata -ne $null)
+}
+
+
+# returns the XML content of the file at the passed path
+function Get-XmlContent
+{
+ param (
+ [string]
+ $Path
+ )
+
+ if (!(Test-XmlContent $Path))
+ {
+ return $null
+ }
+
+ return [xml](Get-Content $Path)
+}
+
+
+# checks to see if a passed path is a directory
+function Test-PathDirectory
+{
+ param (
+ [string]
+ $Path
+ )
+
+ if ([string]::IsNullOrWhiteSpace($Path) -or !(Test-Path $Path))
+ {
+ return $false
+ }
+
+ return ((Get-Item $Path) -is [System.IO.DirectoryInfo])
+}
+
+
+# returns a path to a fidgefile based on a passed path
+function Get-FudgefilePath
+{
+ param (
+ [string]
+ $Path,
+
+ [switch]
+ $Adhoc
+ )
+
+ if ($Adhoc)
+ {
+ return [string]::Empty
+ }
+
+ $rootpath = './Fudgefile'
+ if (![string]::IsNullOrWhiteSpace($Path))
+ {
+ if ((Test-Path $Path) -and (Test-PathDirectory $Path))
+ {
+ $rootpath = Join-Path $Path 'Fudgefile'
+ }
+ else
+ {
+ $rootpath = $Path
+ }
+ }
+
+ return $rootpath
+}
+
+
+# returns the content of a passed fudgefile path
+function Get-FudgefileContent
+{
+ param (
+ [Parameter(Mandatory=$true)]
+ [ValidateNotNullOrEmpty()]
+ [string]
+ $Path
+ )
+
+ if (!(Test-Path $Path)) {
+ throw "Path to Fudgefile does not exist: $($Path)"
+ }
+
+ try {
+ $config = Get-Content -Path $Path -Raw | ConvertFrom-Json
+ }
+ catch {
+ throw "Failed to parse the Fudgefile at: $($Path)`n$($_.Exception)"
+ }
+
+ return $config
+}
+
+
+# removes an existing fudgefile, and if passed attempting to uninstall the packages
+function Remove-Fudgefile
+{
+ param (
+ [Parameter(Mandatory=$true)]
+ [ValidateNotNullOrEmpty()]
+ [string]
+ $Path,
+
+ $LocalList,
+
+ [switch]
+ $Uninstall,
+
+ [switch]
+ $Dev,
+
+ [switch]
+ $DevOnly
+ )
+
+ # ensure the path actually exists
+ if (!(Test-Path $Path))
+ {
+ Write-Fail "Path to Fudgefile does not exist: $($Path)"
+ return
+ }
+
+ # uninstall packages first, if requested
+ if ($Uninstall)
+ {
+ $config = Get-FudgefileContent $Path
+ Invoke-ChocolateyAction -Action 'uninstall' -Key $null -Config $config -LocalList $LocalList -Dev:$Dev -DevOnly:$DevOnly
+ }
+
+ # remove the fudgefile
+ Write-Information "> Deleting Fudgefile" -NoNewLine
+ Remove-Item -Path $Path -Force -Confirm:$false | Out-Null
+ Write-Success " > deleted"
+ Write-Details " > $($Path)"
+}
+
+
+# restores the packages of an existing fudgefile (either empty, from nuspec, or from local)
+function Restore-Fudgefile
+{
+ param (
+ [Parameter(Mandatory=$true)]
+ [ValidateNotNullOrEmpty()]
+ [string]
+ $Path,
+
+ [string]
+ $Key,
+
+ $LocalList,
+
+ [switch]
+ $Install,
+
+ [switch]
+ $Uninstall,
+
+ [switch]
+ $Dev,
+
+ [switch]
+ $DevOnly
+ )
+
+ # retrieve the content of the current fudgefile
+ $content = Get-FudgefileContent $Path
+
+ # check to see if we're restoring this file using local packages
+ if ($Key -ieq 'local')
+ {
+ if (Test-Empty $LocalList)
+ {
+ Write-Fail "No packages installed locally to renew Fudgefile"
+ return
+ }
+
+ Write-Information "> Renewing Fudgefile using $($LocalList.Count) local packages" -NoNewLine
+ }
+
+ # check if there are any nuspecs in the pack section
+ elseif ($Key -ieq 'nuspec')
+ {
+ if (Test-Empty $content.pack)
+ {
+ Write-Fail "No nuspecs in pack section to renew Fudgefile"
+ return
+ }
+
+ Write-Information "> Renewing Fudgefile using nuspecs" -NoNewLine
+ }
+
+ # else if it's not empty, we don't know what they mean
+ elseif (!(Test-Empty $Key))
+ {
+ Write-Fail "Renew command not recognised: $($Key). Should be blank, or either local/nuspec"
+ return
+ }
+
+ # else we're renewing to an empty file
+ else
+ {
+ Write-Information "> Renewing Fudgefile" -NoNewLine
+ }
+
+ # first, uninstall the packages, if requested
+ if ($Uninstall)
+ {
+ Invoke-ChocolateyAction -Action 'uninstall' -Key $null -Config $content -LocalList $LocalList -Dev:$Dev -DevOnly:$DevOnly
+ }
+
+ # remove all current packages
+ if (!$DevOnly)
+ {
+ $content.packages = @()
+ }
+
+ if ($Dev)
+ {
+ $content.devPackages = @()
+ }
+
+ # insert packages from any nuspecs in the pack section
+ if ($Key -ieq 'nuspec')
+ {
+ $nuspecs = $content.pack.psobject.properties.name
+ $nuspecs | ForEach-Object {
+ $content = Add-PackagesFromNuspec -Content $content -Path $content.pack.$_ -Dev:$Dev -DevOnly:$DevOnly
+ }
+ }
+
+ # insert any data from the local packages
+ if ($Key -ieq 'local')
+ {
+ $content = Add-PackagesFromLocal -Content $content -LocalList $LocalList -DevOnly:$DevOnly
+ }
+
+ # save contents as json
+ $content | ConvertTo-Json | Out-File -FilePath $Path -Encoding utf8 -Force
+ Write-Success " > renewed"
+ Write-Details " > $($Path)"
+
+ # now install the packages
+ if ($Install)
+ {
+ Invoke-ChocolateyAction -Action 'install' -Key $null -Config $content -LocalList $LocalList -Dev:$Dev -DevOnly:$DevOnly
+ }
+}
+
+
+# create a new empty fudgefile, or a new one from a nuspec file
+function New-Fudgefile
+{
+ param (
+ [Parameter(Mandatory=$true)]
+ [ValidateNotNullOrEmpty()]
+ [string]
+ $Path,
+
+ [string]
+ $Key,
+
+ $LocalList,
+
+ [switch]
+ $Install,
+
+ [switch]
+ $Dev,
+
+ [switch]
+ $DevOnly
+ )
+
+ # check to see if we're making this file using local packages
+ if ($Key -ieq 'local')
+ {
+ if (Test-Empty $LocalList)
+ {
+ Write-Fail "No packages installed locally to create new Fudgefile"
+ return
+ }
+
+ Write-Information "> Creating new Fudgefile using $($LocalList.Count) local packages" -NoNewLine
+ }
+
+ # if the key is passed, ensure it's a valid nuspec file
+ elseif (!(Test-Empty $Key))
+ {
+ if (!(Test-Nuspec $Key))
+ {
+ return
+ }
+
+ $nuspecName = Split-Path -Leaf -Path $Key
+ Write-Information "> Creating new Fudgefile using $($nuspecName)" -NoNewLine
+ }
+
+ # else it's just an empty file
+ else
+ {
+ Write-Information "> Creating new Fudgefile" -NoNewLine
+ }
+
+ # setup the empty fudgefile
+ $content = @{
+ 'scripts' = @{
+ 'pre' = @{ 'install'= ''; 'uninstall'= ''; 'upgrade'= ''; 'downgrade' = ''; 'pack'= ''; };
+ 'post' = @{ 'install'= ''; 'uninstall'= ''; 'upgrade'= ''; 'downgrade' = ''; 'pack'= ''; };
+ };
+ 'packages' = @();
+ 'devPackages' = @();
+ 'pack' = @{};
+ }
+
+ # insert any data from the nuspec
+ if (!(Test-Empty $nuspecName))
+ {
+ $content = Add-PackagesFromNuspec -Content $content -Path $Key -Dev:$Dev -DevOnly:$DevOnly
+ $name = [System.IO.Path]::GetFileNameWithoutExtension($nuspecName)
+ $content.pack[$name] = $Key
+ }
+
+ # insert any data from the local packages
+ if ($Key -ieq 'local')
+ {
+ $content = Add-PackagesFromLocal -Content $content -LocalList $LocalList -DevOnly:$DevOnly
+ }
+
+ # save contents as json
+ $content | ConvertTo-Json | Out-File -FilePath $Path -Encoding utf8 -Force
+ Write-Success " > created"
+ Write-Details " > $($Path)"
+
+ # now install the packages
+ if ($Install)
+ {
+ $config = Get-FudgefileContent $Path
+ Invoke-ChocolateyAction -Action 'install' -Key $null -Config $config -LocalList $LocalList -Dev:$Dev -DevOnly:$DevOnly
+ }
+}
+
+
+# adds packages to a fudgefile from local packages
+function Add-PackagesFromLocal
+{
+ param (
+ [Parameter(Mandatory=$true)]
+ [ValidateNotNull()]
+ $Content,
+
+ [Parameter(Mandatory=$true)]
+ [ValidateNotNull()]
+ $LocalList,
+
+ [switch]
+ $DevOnly
+ )
+
+ $LocalList.Keys | ForEach-Object {
+ $package = @{
+ 'name' = $_;
+ 'version' = $LocalList[$_];
+ }
+
+ if ($DevOnly)
+ {
+ $Content.devPackages += $package
+ }
+ else
+ {
+ $Content.packages += $package
+ }
+ }
+
+ return $Content
+}
+
+
+# adds packages to a fudgefile from a nuspec file
+function Add-PackagesFromNuspec
+{
+ param (
+ [Parameter(Mandatory=$true)]
+ [ValidateNotNull()]
+ $Content,
+
+ [Parameter(Mandatory=$true)]
+ [ValidateNotNullOrEmpty()]
+ $Path,
+
+ [switch]
+ $Dev,
+
+ [switch]
+ $DevOnly
+ )
+
+ # get the content from the nuspec
+ $data = Get-XmlContent -Path $Path
+ $metadata = $data.package.metadata
+
+ # if we have any dependencies, add them as packages
+ if (!$DevOnly -and $metadata.dependencies -ne $null)
+ {
+ $metadata.dependencies.dependency | ForEach-Object {
+ $version = Format-SafeguardString $_.version 'latest'
+ $Content.packages += @{
+ 'name' = $_.id;
+ 'version' = $version;
+ }
+ }
+ }
+
+ # if we have any devDependencies, add them as devPackages
+ if ($Dev -and $metadata.devDependencies -ne $null)
+ {
+ $metadata.devDependencies.dependency | ForEach-Object {
+ $version = Format-SafeguardString $_.version 'latest'
+ $Content.devPackages += @{
+ 'name' = $_.id;
+ 'version' = $version;
+ }
+ }
+ }
+
+ return $Content
+}
+
+
+# checks to see if the user has administrator privileges
+function Test-AdminUser
+{
+ try
+ {
+ $principal = New-Object System.Security.Principal.WindowsPrincipal([System.Security.Principal.WindowsIdentity]::GetCurrent())
+
+ if ($principal -eq $null)
+ {
+ return $false
+ }
+
+ return $principal.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)
+ }
+ catch [exception]
+ {
+ Write-Fail 'Error checking user administrator privileges'
+ Write-Fail $_.Exception.Message
+ return $false
+ }
+}
+
+
+# checks to see if the passed value is empty
+function Test-Empty
+{
+ param (
+ $Value
+ )
+
+ if ($Value -eq $null)
+ {
+ return $true
+ }
+
+ if ($Value.GetType().Name -ieq 'string')
+ {
+ return [string]::IsNullOrWhiteSpace($Value)
+ }
+
+ $type = $Value.GetType().BaseType.Name.ToLowerInvariant()
+ switch ($type)
+ {
+ 'valuetype'
+ {
+ return $false
+ }
+
+ 'array'
+ {
+ return (($Value | Measure-Object).Count -eq 0 -or $Value.Count -eq 0)
+ }
+ }
+
+ return ([string]::IsNullOrWhiteSpace($Value) -or ($Value | Measure-Object).Count -eq 0 -or $Value.Count -eq 0)
+}
+
+
+# check to see if chocolatey is installed on the current machine
+function Test-Chocolatey
+{
+ try {
+ $output = Invoke-Expression -Command 'choco -v'
+ Write-Details "Chocolatey v$($output)"
+ return $true
+ }
+ catch {
+ return $false
+ }
+}
+
+
+# installs chocolatey
+function Install-Chocolatey
+{
+ Write-Notice "Installing Chocolatey"
+
+ $policies = @('Unrestricted', 'ByPass', 'AllSigned')
+ if ($policies -inotcontains (Get-ExecutionPolicy)) {
+ Set-ExecutionPolicy Bypass -Force
+ }
+
+ Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) | Out-Null
+ Write-Success "Chocolatey installed`n"
+}
+
+
+# invoke scripts for pre/post actions
+function Invoke-Script
+{
+ param (
+ [Parameter(Mandatory=$true)]
+ [ValidateNotNullOrEmpty()]
+ [string]
+ $Action,
+
+ [string]
+ $Stage,
+
+ $Scripts
+ )
+
+ # if there is no stage, return
+ if (Test-Empty $Stage) {
+ return
+ }
+
+ # if there are no scripts, return
+ if ((Test-Empty $Scripts) -or (Test-Empty $Scripts.$Stage)) {
+ return
+ }
+
+ $script = $Scripts.$Stage.$Action
+ if (Test-Empty $script) {
+ return
+ }
+
+ # run the script
+ Invoke-Expression -Command $script
+}
+
+
+# cycle through the passed packages, actioning upon them
+function Start-ActionPackages
+{
+ param (
+ [Parameter(Mandatory=$true)]
+ [ValidateNotNullOrEmpty()]
+ [string]
+ $Action,
+
+ [string]
+ $Key,
+
+ [string]
+ $Source,
+
+ [array]
+ $Packages,
+
+ [string]
+ $Arguments,
+
+ $LocalList
+ )
+
+ # if there are no packages to deal with, return
+ if (Test-Empty $Packages) {
+ return
+ }
+
+ # have we installed anything
+ $installed = $false
+ $haveKey = (![string]::IsNullOrWhiteSpace($Key))
+
+ # loop through each of the packages, and call chocolatey on them
+ foreach ($pkg in $Packages)
+ {
+ # skip if we forcing action on a specific package
+ if ($haveKey -and ($pkg.name -ine $Key)) {
+ continue
+ }
+
+ # use a package specific custom source
+ if (![string]::IsNullOrWhiteSpace($pkg.source)) {
+ $Source = $pkg.source
+ }
+
+ # force a specific action on the package
+ $_action = $Action
+ if (!(Test-Empty $pkg.action)) {
+ $_action = $pkg.action
+ }
+
+ $installed = $true
+
+ Invoke-Chocolatey -Action $_action -Package $pkg.name -Version $pkg.version `
+ -Source $Source -Parameters $pkg.params -Arguments "$($pkg.args) $($Arguments)".Trim() -LocalList $LocalList
+ }
+
+ # if we didn't install anything, and we have a key - say it isn't present in file
+ if (!$installed -and $haveKey) {
+ Write-Notice "Package not found in Fudgefile: $($Key)"
+ }
+}
+
+
+# cycle through the passed nuspecs for packing via nuget
+function Start-ActionPack
+{
+ param (
+ [Parameter(Mandatory=$true)]
+ [ValidateNotNullOrEmpty()]
+ [string]
+ $Action,
+
+ [string]
+ $Key,
+
+ $Nuspecs
+ )
+
+ # if there are no nuspecs to deal with, return
+ if (Test-Empty $Nuspecs) {
+ return
+ }
+
+ # have we packed anything
+ $packed = $false
+ $haveKey = (![string]::IsNullOrWhiteSpace($Key))
+
+ # loop through each of the nuspecs, and call chocolatey on them for packing
+ foreach ($pkg in $Nuspecs.psobject.properties.name)
+ {
+ if ($haveKey -and ($pkg -ine $Key)) {
+ continue
+ }
+
+ $packed = $true
+ Invoke-Chocolatey -Action $Action -Package $pkg -Version ($Nuspecs.$pkg)
+ }
+
+ # if we didn't pavk anything, and we have a key - say it isn't present in file
+ if (!$packed -and $haveKey) {
+ Write-Notice "Nuspec not found in Fudgefile: $($Key)"
+ }
+}
+
+
+# invokes a chocolatey action, which also runs the pre/post scripts
+function Invoke-ChocolateyAction
+{
+ param (
+ [Parameter(Mandatory=$true)]
+ [ValidateNotNullOrEmpty()]
+ [string]
+ $Action,
+
+ [string]
+ $Key,
+
+ [string]
+ $Source,
+
+ $Config,
+
+ $LocalList,
+
+ [string]
+ $Parameters,
+
+ [string]
+ $Arguments,
+
+ [switch]
+ $Dev,
+
+ [switch]
+ $DevOnly,
+
+ [switch]
+ $Adhoc
+ )
+
+ # ensure the config object exists, unless adhoc is supplied
+ if (!$Adhoc -and $null -eq $Config) {
+ throw "Invalid Fudge configuration supplied"
+ }
+
+ # if we're running as adhoc, just call chocolatey directly
+ if ($Adhoc)
+ {
+ $pkg = Get-PackageFromKey -Key $Key
+ $vsn = Get-VersionFromKey -Key $Key
+ Invoke-Chocolatey -Action $Action -Package $pkg -Source $Source -Version $vsn -LocalList $LocalList -Parameters $Parameters -Arguments $Arguments
+ }
+ else
+ {
+ # invoke pre-script for current action
+ Invoke-Script -Action $Action -Stage 'pre' -Scripts $Config.scripts
+
+ # invoke chocolatey based on the action
+ switch ($Action.ToLowerInvariant()) {
+ 'pack' {
+ # run pack on supplied nuspecs
+ Start-ActionPack -Action $Action -Key $Key -Nuspecs $Config.pack
+ }
+
+ default {
+ # install normal packages, unless flagged as dev only
+ if (!$DevOnly) {
+ Start-ActionPackages -Action $Action -Key $Key -Packages $Config.packages -Source $Source -LocalList $LocalList -Arguments $Arguments
+ }
+
+ # install dev packages
+ if ($Dev) {
+ Start-ActionPackages -Action $Action -Key $Key -Packages $Config.devPackages -Source $Source -LocalList $LocalList -Arguments $Arguments
+ }
+ }
+ }
+
+ # invoke post-script for current action
+ Invoke-Script -Action $Action -Stage 'post' -Scripts $Config.scripts
+ }
+}
+
+
+# add the core chocolatey and fudge packages to a package map
+function Add-CoreChocoPackages
+{
+ param (
+ [Parameter(Mandatory=$true)]
+ [ValidateNotNull()]
+ $Packages
+ )
+
+ $Packages['chocolatey'] = 'latest'
+ $Packages['chocolatey-core.extension'] = 'latest'
+ $Packages['fudge'] = 'latest'
+
+ return $Packages
+}
+
+
+# pruning the current machine's packages with what's in the fudgefile
+function Invoke-FudgePrune
+{
+ param (
+ $Config,
+
+ $LocalList,
+
+ [switch]
+ $Dev,
+
+ [switch]
+ $DevOnly
+ )
+
+ # package map for what to leave installed
+ $packages = @{}
+ $pruned = $false
+
+ if (!$DevOnly)
+ {
+ $Config.packages | ForEach-Object { $packages[$_.name] = $_.version }
+ }
+
+ if ($Dev)
+ {
+ $Config.devPackages | ForEach-Object { $packages[$_.name] = $_.version }
+ }
+
+ # add core chocolatey packages (and fudge)
+ $packages = Add-CoreChocoPackages $packages
+
+ # loop through each local package, and remove if not in fudgefile
+ $LocalList.Keys | ForEach-Object {
+ if (!$packages.ContainsKey($_))
+ {
+ $pruned = $true
+ Invoke-Chocolatey -Action 'uninstall' -Package $_
+ }
+ }
+
+ if(!$pruned)
+ {
+ Write-Notice 'Nothing to prune'
+ }
+}
+
+
+# cleaning a machine of all packages currently installed
+function Invoke-FudgeClean
+{
+ param (
+ $LocalList
+ )
+
+ # package map for what to leave installed
+ $packages = @{}
+ $cleaned = $false
+
+ # add core chocolatey packages (and fudge)
+ $packages = Add-CoreChocoPackages $packages
+
+ # loop through each local package, and remove it
+ $LocalList.Keys | ForEach-Object {
+ if (!$packages.ContainsKey($_))
+ {
+ $cleaned = $true
+ Invoke-Chocolatey -Action 'uninstall' -Package $_
+ }
+ }
+
+ if(!$cleaned)
+ {
+ Write-Notice 'Nothing to clean'
+ }
+}
+
+
+# add a package to a fudgefile
+function Invoke-FudgeAdd
+{
+ param (
+ [Parameter(Mandatory=$true)]
+ [ValidateNotNullOrEmpty()]
+ [string]
+ $Path,
+
+ [Parameter(Mandatory=$true)]
+ [ValidateNotNullOrEmpty()]
+ [string]
+ $Key,
+
+ [string]
+ $Source,
+
+ $Config,
+
+ $LocalList,
+
+ [string]
+ $Parameters,
+
+ [string]
+ $Arguments,
+
+ [switch]
+ $Dev,
+
+ [switch]
+ $Install
+ )
+
+ # get name and version from key
+ $KeyName = Get-PackageFromKey -Key $Key
+ $KeyVer = Get-VersionFromKey -Key $Key
+
+ # ensure package isn't already present
+ $pkg_count = ($config.packages | Where-Object { $_.name -ieq $KeyName } | Measure-Object).Count
+ $dev_count = ($config.devPackages | Where-Object { $_.name -ieq $KeyName } | Measure-Object).Count
+
+ if ($pkg_count -ne 0 -or $dev_count -ne 0)
+ {
+ Write-Notice "The package '$($KeyName)' already exists in the Fudgefile"
+ return
+ }
+
+ # attempt to install if specified
+ if ($Install)
+ {
+ Invoke-Chocolatey -Action 'install' -Package $KeyName -Source $Source -Version $KeyVer -LocalList $LocalList -Parameters $Parameters -Arguments $Arguments
+ }
+
+ Write-Information "> Adding $($KeyName)@$($KeyVer) to Fudgefile" -NoNewLine
+
+ # create package json object
+ $obj = @{ 'name' = $KeyName; }
+
+ if (!(Test-Empty $KeyVer))
+ {
+ $obj['version'] = $KeyVer
+ }
+
+ if (!(Test-Empty $Source) -and ($Source -ine $Config.source))
+ {
+ $obj['source'] = $Source
+ }
+
+ # add to config
+ if ($Dev)
+ {
+ [array]$Config.devPackages += $obj
+ }
+ else
+ {
+ [array]$Config.packages += $obj
+ }
+
+ # save new config back
+ $Config | ConvertTo-Json | Out-File -FilePath $Path -Encoding utf8 -Force
+ Write-Success " > added"
+ Write-Details " > $($Path)"
+}
+
+
+# removes a package from a fudgefile
+function Invoke-FudgeRemove
+{
+ param (
+ [Parameter(Mandatory=$true)]
+ [ValidateNotNullOrEmpty()]
+ [string]
+ $Path,
+
+ [Parameter(Mandatory=$true)]
+ [ValidateNotNullOrEmpty()]
+ [string]
+ $Key,
+
+ $Config,
+
+ $LocalList,
+
+ [string]
+ $Parameters,
+
+ [string]
+ $Arguments,
+
+ [switch]
+ $Dev,
+
+ [switch]
+ $Uninstall
+ )
+
+ # get name and version from key
+ $KeyName = Get-PackageFromKey -Key $Key
+
+ # ensure package isn't already removed
+ $pkg_count = ($config.packages | Where-Object { $_.name -ieq $KeyName } | Measure-Object).Count
+ $dev_count = ($config.devPackages | Where-Object { $_.name -ieq $KeyName } | Measure-Object).Count
+
+ if ($pkg_count -eq 0 -and $dev_count -eq 0)
+ {
+ Write-Notice "The package '$($KeyName)' is not present in the Fudgefile"
+ return
+ }
+
+ # attempt to uninstall if specified
+ if ($Uninstall)
+ {
+ Invoke-Chocolatey -Action 'uninstall' -Package $KeyName -LocalList $LocalList -Parameters $Parameters -Arguments $Arguments
+ }
+
+ Write-Information "> Removing $($KeyName) from Fudgefile" -NoNewLine
+
+ # remove to config
+ if ($Dev)
+ {
+ $Config.devPackages = ($Config.devPackages | Where-Object { $_.name -ine $KeyName })
+ }
+ else
+ {
+ $Config.packages = ($Config.packages | Where-Object { $_.name -ine $KeyName })
+ }
+
+ # save new config back
+ $Config | ConvertTo-Json | Out-File -FilePath $Path -Encoding utf8 -Force
+ Write-Success " > removed"
+ Write-Details " > $($Path)"
+}
+
+
+# returns the path for where a command is located
+function Invoke-FudgeWhich
+{
+ param (
+ [string]
+ $Key
+ )
+
+ if (Test-Empty $Key)
+ {
+ Write-Notice 'No command passed to find'
+ }
+ else
+ {
+ $path = (Get-Command -Name $Key -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Definition)
+ if (!(Test-Empty $path))
+ {
+ Write-Host "> $($path)"
+ }
+ else
+ {
+ Write-Notice "Command not found: $($Key)"
+ }
+ }
+}
+
+
+# returns a source argument for chocolatey
+function Format-ChocolateySource
+{
+ param (
+ [string]
+ $Source
+ )
+
+ if (Test-Empty $Source) {
+ return [string]::Empty
+ }
+
+ return "-s '$($Source)'"
+}
+
+
+# returns a params argument for chocolatey
+function Format-ChocolateyParams
+{
+ param (
+ [string]
+ $Parameters
+ )
+
+ if (Test-Empty $Parameters) {
+ return [string]::Empty
+ }
+
+ return "--params='$($Parameters)'"
+}
+
+
+# returns a version argument for chocolatey
+function Format-ChocolateyVersion
+{
+ param (
+ [string]
+ $Version
+ )
+
+ # if the version is latest, return empty
+ if (Test-VersionPassedIsLatest -Version $Version) {
+ return [string]::Empty
+ }
+
+ # return the specific version to install
+ return "--version $($Version)"
+}
+
+
+# returns the list of search returns from chocolatey
+function Get-ChocolateySearchList
+{
+ param (
+ [string]
+ $Key,
+
+ [string]
+ $Source
+ )
+
+ # set the source if we have one
+ $Source = Format-ChocolateySource $Source
+
+ $list = (choco search $Key $Source)
+ if (!$?) {
+ Write-Fail "$($list)"
+ throw 'Failed to retrieve search results from Chocolatey'
+ }
+
+ return (Format-ChocolateyList -List $list)
+}
+
+
+# returns a list of packages installed localled
+function Get-ChocolateyLocalList
+{
+ $list = (choco list -lo)
+ if (!$?) {
+ Write-Fail "$($list)"
+ throw 'Failed to retrieve local list of installed packages'
+ }
+
+ return (Format-ChocolateyList -List $list)
+}
+
+
+# formats list/search results from chocolatey into a hash table
+function Format-ChocolateyList
+{
+ param (
+ [string[]]
+ $List
+ )
+
+ $map = @{}
+
+ $List | ForEach-Object {
+ $row = $_ -ireplace ' Downloads cached for licensed users', ''
+ if ($row -imatch '^(?.*?)\s+(?[\d\.]+(\s+\[Approved\]){0,1}(\s+-\s+Possibly broken){0,1}).*?$')
+ {
+ $map[$Matches['name']] = $Matches['version']
+ }
+ }
+
+ return $map
+}
+
+# get chocolatey search results, filtered by fudge
+function Format-ChocolateySearchResults
+{
+ param (
+ [Parameter()]
+ [string]
+ $Key,
+
+ [Parameter()]
+ [int]
+ $Limit,
+
+ [Parameter()]
+ [string]
+ $Source
+ )
+
+ # get search results from chocolatey
+ $results = Get-ChocolateySearchList -Key $Key -Source $Source
+ $OrganisedResults = @()
+ $count = 0
+
+ # if limit is 0, set to total results returned
+ if ($Limit -eq 0) {
+ $Limit = ($results | Measure-Object).Count
+ }
+
+ # perfect match result
+ if ($results.ContainsKey($Key)) {
+ $count++
+ $OrganisedResults += @{ 'Name' = $Key; 'Version' = $results[$Key]; }
+ $results.Remove($Key)
+ }
+
+ # starts with for sub-packages
+ if ($count -lt $Limit)
+ {
+ $results.Clone().Keys | ForEach-Object {
+ if ($_.StartsWith("$($Key).")) {
+ $count++
+ $OrganisedResults += @{ 'Name' = $_; 'Version' = $results[$_]; }
+ $results.Remove($_)
+ }
+ }
+ }
+
+ # starts with for other packages
+ if ($count -lt $Limit)
+ {
+ $results.Clone().Keys | ForEach-Object {
+ if ($_.StartsWith($Key)) {
+ $count++
+ $OrganisedResults += @{ 'Name' = $_; 'Version' = $results[$_]; }
+ $results.Remove($_)
+ }
+ }
+ }
+
+ # contains the key
+ if ($count -lt $Limit)
+ {
+ $results.Clone().Keys | ForEach-Object {
+ if ($_.Contains($Key)) {
+ $count++
+ $OrganisedResults += @{ 'Name' = $_; 'Version' = $results[$_]; }
+ $results.Remove($_)
+ }
+ }
+ }
+
+ # levenshtein for remaining packages
+ if ($count -lt $Limit)
+ {
+ $leven = @()
+
+ $results.Keys | ForEach-Object {
+ $leven += @{ 'Name' = $_; 'Version' = $results[$_]; 'Dist' = (Get-Levenshtein $Key $_) }
+ }
+
+ $leven | Sort-Object { $_.Dist } | ForEach-Object {
+ $OrganisedResults += @{ 'Name' = $_.name; 'Version' = $_.Version; }
+ }
+ }
+
+ return @($OrganisedResults)
+}
+
+
+# invokes fudge to search chocolatey for a package and display the results
+function Invoke-Search
+{
+ param (
+ [string]
+ $Key,
+
+ [int]
+ $Limit,
+
+ [string]
+ $Source,
+
+ $LocalList
+ )
+
+ # validate the key/package name supplied
+ if ([string]::IsNullOrWhiteSpace($Key)) {
+ Write-Notice 'No search key provided'
+ return
+ }
+
+ # validate the limit supplied
+ if ($Limit -lt 0) {
+ Write-Notice "Limit for searching must be 0 or greater, found: $($Limit)"
+ return
+ }
+
+ # get search results from chocolatey
+ $results = Format-ChocolateySearchResults -Key $Key -Limit $Limit -Source $Source
+
+ # display the search results
+ $results | Select-Object -First $Limit | ForEach-Object {
+ if ($LocalList.ContainsKey($_.Name))
+ {
+ ($_.Version -imatch '^(?[\d\.]+).*?$') | Out-Null
+
+ if ($Matches['version'] -eq $LocalList[$_.Name]) {
+ Write-Success ("{0,-30} {1,-40} (installed: {2})" -f $_.Name, $_.Version, $LocalList[$_.Name])
+ }
+ else {
+ Write-Notice ("{0,-30} {1,-40} (installed: {2})" -f $_.Name, $_.Version, $LocalList[$_.Name])
+ }
+ }
+ else {
+ Write-Host ("{0,-30} {1,-30}" -f $_.Name, $_.Version)
+ }
+ }
+
+ # display the total
+ $total = ($results | Measure-Object).Count
+ Write-Notice "$($total) package(s) found"
+}
+
+
+# invokes fudge to display details of local packages
+function Invoke-FudgeLocalDetails
+{
+ param (
+ $Config,
+
+ [string]
+ $Key,
+
+ $LocalList,
+
+ [switch]
+ $Dev,
+
+ [switch]
+ $DevOnly
+ )
+
+ # maps for filtering packages
+ $installed = @{}
+ $updating = @{}
+ $missing = @{}
+
+ # package map
+ $packages = @{}
+
+ if (!$DevOnly) {
+ $Config.packages | ForEach-Object { $packages[$_.name] = $_.version }
+ }
+
+ if ($Dev) {
+ $Config.devPackages | ForEach-Object { $packages[$_.name] = $_.version }
+ }
+
+ # loop through packages
+ $packages.Keys | ForEach-Object {
+ if ([string]::IsNullOrWhiteSpace($Key) -or $_ -ieq $Key)
+ {
+ $version = $packages[$_]
+
+ if ($LocalList.ContainsKey($_))
+ {
+ if ($LocalList[$_] -ieq $version -or (Test-VersionPassedIsLatest $version)) {
+ $installed[$_] = $version
+ }
+ else {
+ $updating[$_] = $version
+ }
+ }
+ else {
+ $missing[$_] = $version
+ }
+ }
+ }
+
+ if (![string]::IsNullOrWhiteSpace($Key) -and (Test-Empty $installed) -and (Test-Empty $updating) -and (Test-Empty $missing))
+ {
+ $missing[$Key] = 'Not in Fudgefile'
+ }
+
+ # output the details
+ Write-Host "Package details from Fudgefile:"
+ $installed.Keys | Sort-Object | ForEach-Object { Write-Success ("{0,-30} {1,-20} (installed: {2})" -f $_, $installed[$_], $LocalList[$_]) }
+ $updating.Keys | Sort-Object | ForEach-Object { Write-Notice ("{0,-30} {1,-20} (installed: {2})" -f $_, $updating[$_], $LocalList[$_]) }
+ $missing.Keys | Sort-Object | ForEach-Object { Write-Fail ("{0,-30} {1,-20}" -f $_, $missing[$_]) }
+}
+
+function Get-ChocolateyLatestVersion
+{
+ param (
+ [Parameter()]
+ [string]
+ $Package,
+
+ [Parameter()]
+ [string]
+ $Source
+ )
+
+ $result = (Format-ChocolateySearchResults -Key $Package -Limit 1 -Source $Source | Select-Object -First 1)
+ if (!(Test-Empty $result)) {
+ return ($result.Version -split '\s+')[0]
+ }
+
+ return 'latest'
+}
+
+# invoke chocolate for the specific action
+function Invoke-Chocolatey
+{
+ param (
+ [Parameter()]
+ [string]
+ $Action,
+
+ [Parameter()]
+ [string]
+ $Package,
+
+ [Parameter()]
+ [string]
+ $Version,
+
+ [Parameter()]
+ [string]
+ $Source,
+
+ [Parameter()]
+ [string]
+ $Parameters,
+
+ [Parameter()]
+ [string]
+ $Arguments,
+
+ [Parameter()]
+ $LocalList
+ )
+
+ # if there was no package passed, return
+ if (Test-Empty $Package) {
+ return
+ }
+
+ # set the source from which to install/upgrade/downgrade packages
+ $SourceArg = Format-ChocolateySource $Source
+
+ # set the parameters to pass
+ $ParametersArg = Format-ChocolateyParams $Parameters
+
+ # if the version is latest, attempt to get the real current version
+ $latest = Test-VersionPassedIsLatest -Version $Version
+ if ($latest) {
+ $Version = Get-ChocolateyLatestVersion -Package $Package -Source $Source
+ }
+
+ $Version = Format-SafeguardString $Version 'latest'
+
+ # build a version string, so if latest we can show the latest version
+ $VersionStr = "$($Version)"
+ if ($latest) {
+ $VersionStr = "latest [$($Version)]"
+ }
+
+ # set the version arg to pass
+ $VersionArg = Format-ChocolateyVersion $Version
+
+ # if action is 'install', do we need to install, or upgrade/downgrade based on version?
+ if (($Action -ieq 'install') -and ($null -ne $LocalList)) {
+ $Action = Get-InstallAction -Package $Package -Version $Version -LocalList $LocalList
+ }
+
+ # attempt 3 times - mostly do to help prevent timeouts
+ foreach ($i in 1..3)
+ {
+ $success = $true
+
+ # run chocolatey for appropriate action
+ switch ($Action.ToLowerInvariant())
+ {
+ 'install'
+ {
+ if ($i -eq 1) {
+ Write-Information "> Installing $($Package) ($($VersionStr))" -NoNewLine
+ }
+ $output = Invoke-Expression "choco install $($Package) $($VersionArg) -y $($SourceArg) $($ParametersArg) $($Arguments)"
+ }
+
+ 'upgrade'
+ {
+ if ($i -eq 1) {
+ Write-Information "> Upgrading $($Package) to ($($VersionStr))" -NoNewLine
+ }
+ $output = Invoke-Expression "choco upgrade $($Package) $($VersionArg) -y $($SourceArg) $($ParametersArg) $($Arguments)"
+ }
+
+ 'downgrade'
+ {
+ if ($i -eq 1) {
+ Write-Information "> Downgrading $($Package) to ($($VersionStr))" -NoNewLine
+ }
+ $output = Invoke-Expression "choco upgrade $($Package) $($VersionArg) -y $($SourceArg) $($ParametersArg) $($Arguments) --allow-downgrade"
+ }
+
+ 'uninstall'
+ {
+ if ($i -eq 1) {
+ Write-Information "> Uninstalling $($Package)" -NoNewLine
+ }
+ $output = Invoke-Expression "choco uninstall $($Package) -y -x $($ParametersArg) $($Arguments)"
+ }
+
+ 'pack'
+ {
+ Write-Information "> Packing $($Package)" -NoNewLine
+ $path = Split-Path -Parent -Path $Version
+ $name = Split-Path -Leaf -Path $Version
+
+ try {
+ Push-Location $path
+ $output = Invoke-Expression "choco pack $($name) $($Arguments)"
+ }
+ finally {
+ Pop-Location
+ }
+ }
+ }
+
+ # determine if we failed, or if the exit code indicates a reboot is needed,
+ # or we've timed out and need to try
+ $lastcode = $LASTEXITCODE
+ if (!$? -or (@(0, 3010) -notcontains $lastcode))
+ {
+ # flag as failure
+ $success = $false
+
+ # check if the package timed-out, so we can retry again
+ if ($output -ilike '*the operation has timed out*') {
+ Start-Sleep -Seconds 5
+ continue
+ }
+
+ # double check that the error isn't a false positive
+ switch ($Action)
+ {
+ {($_ -ieq 'uninstall')}
+ {
+ $success = ($output -ilike '*has been successfully uninstalled*' -or $output -ilike '*Cannot uninstall a non-existent package*')
+ }
+
+ {($_ -ieq 'install') -or ($_ -ieq 'upgrade') -or ($_ -ieq 'downgrade')}
+ {
+ $success = ($output -ilike '*has been successfully installed*' -or $output -ilike '*has been installed*')
+ }
+ }
+ }
+
+ # if we get here, break out
+ break
+ }
+
+ # if not successful, output the error details
+ if (!$success) {
+ Write-Fail " > failed"
+ Write-Notice "`n`n$($output)`n"
+ throw "Failed to $($Action) package: $($Package)"
+ }
+
+ $actionVerb = ("$($Action)ed" -ireplace 'eed$', 'ed')
+
+ if ($output -ilike '*exit code 3010*' -or $lastcode -eq 3010)
+ {
+ Write-Success " > $($actionVerb)" -NoNewLine
+ Write-Notice " > Reboot Required"
+ }
+ else {
+ Write-Success " > $($actionVerb)"
+ }
+}
\ No newline at end of file
diff --git a/.ci/PSLint.ps1 b/.ci/PSLint.ps1
new file mode 100644
index 0000000000..e989bb044c
--- /dev/null
+++ b/.ci/PSLint.ps1
@@ -0,0 +1,94 @@
+Set-StrictMode -Version Latest
+
+$ErrorActionPreference = 'Stop'
+
+Import-Module -Name 'PsScriptAnalyzer' -Force
+$base = $global:PSScriptRoot
+
+$Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False
+
+function Test-Skip-File {
+ param (
+ [Parameter(Mandatory)]
+ [string]
+ $filename
+ )
+
+ # Ignore imported files
+ # https://github.com/pypa/virtualenv/issues/1371
+ # https://github.com/ogrisel/python-appveyor-demo/issues/55
+ # https://github.com/MathieuBuisson/PowerShell-DevOps/issues/6
+ return (
+ $filename -eq 'Export-NUnitXml.psm1' -or
+ $filename -eq 'Fudge.ps1' -or
+ $filename -eq 'FudgeTools.psm1' -or
+ $filename -eq 'install.ps1' -or
+ $filename -eq 'activate.ps1' -or
+ $filename.EndsWith('.jj2'))
+}
+
+$Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False
+
+$UNIXEOL = "`n"
+
+function ReformatFile {
+ param (
+ [Parameter(Mandatory)]
+ [string]
+ $filename,
+
+ [Parameter(Mandatory)]
+ [string]
+ $eol
+ )
+ $orig = Get-Content -Raw $filename
+ $content = Invoke-Formatter -ScriptDefinition $orig -Settings $base\PSScriptAnalyzerSettings.psd1 -ErrorAction Stop
+
+ if ($content) {
+ $content = $content -split "`r?`n"
+ if (!($content[-1])) {
+ $content = $content[0..($content.length - 2)]
+ }
+ $content = (($content -join $eol) + $eol)
+ [System.IO.File]::WriteAllText($filename, $content, $Utf8NoBomEncoding)
+ }
+}
+
+[Microsoft.Windows.PowerShell.ScriptAnalyzer.Generic.DiagnosticRecord[]]$ScriptAnalyzerResult = $null
+
+Get-ChildItem -Recurse -Force '*.ps*' | ForEach-Object {
+ $path = $_.FullName
+
+ if ( $path.Contains('.git') -or (Test-Skip-File($_.Name)) ) {
+ Write-Output "Skipping $path"
+ }
+ else {
+ $NewResult = Invoke-ScriptAnalyzer -IncludeDefaultRules -Setting $base\PSScriptAnalyzerSettings.psd1 -Path $path
+ if ($ScriptAnalyzerResult) {
+ $ScriptAnalyzerResult += $NewResult
+ }
+ else {
+ $ScriptAnalyzerResult = $NewResult
+ }
+
+ ReformatFile $path $UNIXEOL
+ }
+}
+
+if ($env:APPVEYOR) {
+ Import-Module "$base\Export-NUnitXml.psm1"
+ Export-NUnitXml -ScriptAnalyzerResult $ScriptAnalyzerResult -Path ".\ScriptAnalyzerResult.xml"
+ (New-Object 'System.Net.WebClient').UploadFile(
+ "https://ci.appveyor.com/api/testresults/nunit/$($env:APPVEYOR_JOB_ID)",
+ (Resolve-Path .\ScriptAnalyzerResult.xml)
+ )
+}
+
+git diff
+
+if ($ScriptAnalyzerResult) {
+ Write-Output $ScriptAnalyzerResult
+
+ # Failing the build
+ Throw 'Build failed because there was one or more PSScriptAnalyzer violation. See test results for more information.'
+}
diff --git a/.ci/PSScriptAnalyzerSettings.psd1 b/.ci/PSScriptAnalyzerSettings.psd1
new file mode 100644
index 0000000000..1199c79dad
--- /dev/null
+++ b/.ci/PSScriptAnalyzerSettings.psd1
@@ -0,0 +1,120 @@
+@{
+ Severity = @('Error', 'Warning')
+
+ IncludeDefaultRules = $true
+
+ # List all rules here, otherwise they are excluded.
+ # Some are inactive because they need to be configured before usable.
+
+ IncludeRules = @(
+ 'PSAlignAssignmentStatement'
+ 'PSAvoidAlias'
+ 'PSAvoidAssignmentToAutomaticVariable'
+ 'PSAvoidDefaultTrueValueSwitchParameter'
+ 'PSAvoidDefaultValueForMandatoryParameter'
+ 'PSAvoidEmptyCatchBlock'
+ 'PSAvoidGlobalAliases'
+ 'PSAvoidGlobalFunctions'
+ 'PSAvoidGlobalVars'
+ 'PSAvoidInvokingEmptyMembers'
+ 'PSAvoidNullOrEmptyHelpMessageAttribute'
+ 'PSAvoidPositionalParameters'
+ 'PSAvoidReservedCharInCmdlet'
+ 'PSAvoidReservedParams'
+ 'PSAvoidShouldContinueWithoutForce'
+ 'PSAvoidTrailingWhitespace'
+ 'PSAvoidUserNameAndPasswordParams'
+ 'PSAvoidUsingComputerNameHardcoded'
+ 'PSAvoidUsingConvertToSecureStringWithPlainText'
+ 'PSAvoidUsingDeprecatedManifestFields'
+ 'PSAvoidUsingInvokeExpression'
+ 'PSAvoidUsingPlainTextForPassword'
+ 'PSAvoidUsingWMICmdlet'
+ # Easier to use inside Fudge
+ # 'PSAvoidUsingWriteHost'
+ 'PSDscExamplesPresent'
+ 'PSDscTestsPresent'
+ 'PSMisleadingBacktick'
+ 'PSMissingModuleManifestField'
+ 'PSPlaceCloseBrace'
+ 'PSPlaceOpenBrace'
+ 'PSPossibleIncorrectComparisonWithNull'
+ 'PSPossibleIncorrectUsageOfAssignmentOperator'
+ 'PSPossibleIncorrectUsageOfRedirectionOperator'
+ 'PSProvideCommentHelp'
+ 'PSReturnCorrectTypesForDSCFunctions'
+ 'PSUseApprovedVerbs'
+ # Not suitable for other OS
+ # 'PSUseBOMForUnicodeEncodedFile'
+ 'PSUseCmdletCorrectly'
+ 'PSUseCompatibleCmdlets'
+ 'PSUseConsistentIndentation'
+ 'PSUseConsistentWhitespace'
+ 'PSUseCorrectCasing'
+ 'PSUseDeclaredVarsMoreThanAssignments'
+ 'PSUseIdenticalMandatoryParametersDSC'
+ 'PSUseIdenticalParametersDSC'
+ 'PSUseLiteralInitializerForHashtable'
+ 'PSUseOutputTypeCorrectly'
+ 'PSUsePSCredentialType'
+ 'PSUseShouldProcessCorrectly'
+ 'PSUseShouldProcessForStateChangingFunctions'
+ 'PSUseSingularNouns'
+ 'PSUseStandardDSCFunctionsInResource'
+ 'PSUseSupportsShouldProcess'
+ 'PSUseToExportFieldsInManifest'
+ 'PSUseUTF8EncodingForHelpFile'
+ 'PSUseVerboseMessageInDSCResource'
+ # Compatibility subdirectory
+ 'PSUseCompatibleCommands'
+ 'PSUseCompatibleSyntax'
+ 'PSUseCompatibleTypes'
+ )
+
+ # The Rules here are mostly manually imported from
+ # https://github.com/PowerShell/PSScriptAnalyzer/blob/master/Engine/Settings/CodeFormatting.psd1
+ # except `PSUseConsistentWhitespace.CheckOperator` is disabled as incompatible
+ # https://github.com/PowerShell/PSScriptAnalyzer/issues/769
+
+ Rules = @{
+ PSPlaceOpenBrace = @{
+ Enable = $true
+ OnSameLine = $true
+ NewLineAfter = $true
+ IgnoreOneLineBlock = $true
+ }
+
+ PSPlaceCloseBrace = @{
+ Enable = $true
+ NewLineAfter = $true
+ IgnoreOneLineBlock = $true
+ NoEmptyLineBefore = $false
+ }
+
+ PSUseConsistentIndentation = @{
+ Enable = $true
+ Kind = 'space'
+ PipelineIndentation = 'IncreaseIndentationForFirstPipeline'
+ IndentationSize = 4
+ }
+
+ PSUseConsistentWhitespace = @{
+ Enable = $true
+ CheckInnerBrace = $true
+ CheckOpenBrace = $true
+ CheckOpenParen = $true
+ CheckOperator = $true
+ CheckPipe = $true
+ CheckSeparator = $true
+ }
+
+ PSAlignAssignmentStatement = @{
+ Enable = $true
+ CheckHashtable = $false
+ }
+
+ PSUseCorrectCasing = @{
+ Enable = $true
+ }
+ }
+}
diff --git a/.ci/PrepareAVVM.ps1 b/.ci/PrepareAVVM.ps1
new file mode 100644
index 0000000000..65cfd5fc4a
--- /dev/null
+++ b/.ci/PrepareAVVM.ps1
@@ -0,0 +1,308 @@
+Set-StrictMode -Version latest
+
+$PACKAGES_ROOT = "$env:SYSTEMDRIVE\avvm"
+$REGISTRY_ROOT = 'HKLM:\Software\AppVeyor\VersionManager'
+
+# GetInstalledProductVersion and Get-Version are copied from AVVM.ps1
+function GetInstalledProductVersion ($product) {
+ $productRegPath = "$REGISTRY_ROOT\$product"
+ if (Test-Path $productRegPath) {
+ $ver = Get-ItemProperty -Path $productRegPath
+ @{
+ Product = $product
+ version = $ver.version
+ Platform = $ver.Platform
+ }
+ }
+}
+
+function Get-Version ([string]$str) {
+ $versionDigits = $str.Split('.')
+ $version = @{
+ major = -1
+ minor = -1
+ build = -1
+ revision = -1
+ number = 0
+ value = $null
+ }
+
+ $version.value = $str
+
+ if ($versionDigits -and $versionDigits.Length -gt 0) {
+ $version.major = [int]$versionDigits[0]
+ }
+ if ($versionDigits.Length -gt 1) {
+ $version.minor = [int]$versionDigits[1]
+ }
+ if ($versionDigits.Length -gt 2) {
+ $version.build = [int]$versionDigits[2]
+ }
+ if ($versionDigits.Length -gt 3) {
+ $version.revision = [int]$versionDigits[3]
+ }
+
+ for ($i = 0; $i -lt $versionDigits.Length; $i++) {
+ $version.number += [long]$versionDigits[$i] -shl 16 * (3 - $i)
+ }
+
+ return $version
+}
+
+function SetInstalledProductVersion {
+ param(
+ [Parameter(Mandatory = $true)]
+ [ValidateNotNullOrEmpty()]
+ [string]
+ $product,
+
+ [Parameter(Mandatory = $true)]
+ [ValidateNotNullOrEmpty()]
+ [string]
+ $version,
+
+ [Parameter(Mandatory = $true)]
+ [ValidateNotNullOrEmpty()]
+ [string]
+ $platform
+ )
+
+ $productRegPath = "$REGISTRY_ROOT\$product"
+ New-Item $productRegPath -Force |
+ Out-Null
+
+ New-ItemProperty -Path $productRegPath -Name Version -PropertyType String -Value $version -Force |
+ Out-Null
+
+ New-ItemProperty -Path $productRegPath -Name Platform -PropertyType String -Value $platform -Force |
+ Out-Null
+
+ Write-Output "Creating $PACKAGES_ROOT\$product\$version\$platform"
+
+ if (!(Test-Path "$PACKAGES_ROOT\$product\$version\$platform")) {
+ New-Item -ItemType Directory "$PACKAGES_ROOT\$product\$version\$platform" -Force > $null
+ }
+
+ if (!(Test-Path "$PACKAGES_ROOT\$product\$version\$platform")) {
+ throw "Something went wrong"
+ }
+}
+
+function Add-Product {
+ param(
+ [Parameter(Mandatory = $true)]
+ [ValidateNotNullOrEmpty()]
+ [string]
+ $product,
+
+ [Parameter(Mandatory = $true)]
+ [ValidateNotNullOrEmpty()]
+ [string]
+ $version,
+
+ [string]
+ $platform
+ )
+
+ $name = $product
+
+ if (!$platform) {
+ $platform = $env:platform
+ }
+
+ $installed = GetInstalledProductVersion $Product
+
+ $in_program_files = $false
+
+ $version_parts = Get-Version $version
+
+ if (($product -eq 'jdk') -or ($product -eq 'node')) {
+ $in_program_files = $true
+
+ if (($product -eq 'jdk') -and ($version_parts.minor -gt 8)) {
+ # 1.9.0 -> 9
+ $shortver = $version_parts.minor
+ }
+ else {
+ $shortver = $version
+ }
+
+ if ($platform -eq 'x86') {
+ $dir_name = "Program Files (x86)"
+ }
+ else {
+ $dir_name = "Program Files"
+ }
+ if ($product -eq 'jdk') {
+ $dir_name = "$dir_name\Java"
+ }
+ $dir_name = "$dir_name\$name"
+ }
+ else {
+ $shortver = "{0}{1}" -f ($version_parts.major, $version_parts.minor)
+ $dir_name = $name
+ }
+
+
+ if (Test-Path "$PACKAGES_ROOT\$name\$version\") {
+ Write-Output "$PACKAGES_ROOT\$name\$version exists; skipping"
+
+ if ($product -eq 'node') {
+ $base = 'https://appveyordownloads.blob.core.windows.net/avvm'
+ $versions_content = (New-Object Net.WebClient).DownloadString("$base/$name-versions.txt")
+ Set-Content "$PACKAGES_ROOT\$name-versions.txt" $versions_content
+ return
+ }
+ }
+
+ if ($installed) {
+ $current_version = $installed.version
+ if ((Get-Version $current_version).number -gt $version_parts.number) {
+ $versions_content = "$current_version
+$version
+lts:$version
+stable:$version
+current:$current_version
+"
+ }
+ else {
+ $versions_content = "$version
+$current_version
+lts:$version
+stable:$version
+current:$current_version
+"
+ }
+ }
+ else {
+ $versions_content = "$version
+lts:$version
+stable:$version
+"
+ }
+ Set-Content "$PACKAGES_ROOT\$name-versions.txt" $versions_content
+
+ Write-Output "Wrote $PACKAGES_ROOT\$name-versions.txt"
+
+ if ($product -eq 'MinGW') {
+ if (Test-Path C:\avvm\MinGW) {
+ # This is only needed for 5.3.0 x86, only vs2015 image
+ Write-Output "Deleting pre-existing C:\avvm\MinGW ..."
+ Remove-Item C:\avvm\MinGW
+ }
+ }
+
+ if ($installed) {
+ if ($installed.version -eq $version) {
+ if ($installed.Platform -eq $platform) {
+ Write-Output "$product $version $env:platform already set up"
+ return;
+ }
+ }
+ }
+
+ New-Item -ItemType Directory "$PACKAGES_ROOT\$name" -Force > $null
+
+ New-Item -ItemType Directory "$PACKAGES_ROOT\$name\$version" -Force > $null
+
+ Write-Verbose "Looking for C:\$dir_name$shortver .."
+
+ if (!(Test-Path "C:\$dir_name$shortver")) {
+ if (!(Test-Path "C:\$dir_name$shortver-x64")) {
+ throw "Cant find $dir_name$shortver or C:\$dir_name$shortver-x64"
+ }
+
+ # Use x64 if x86 not available
+ $platform = 'x64'
+ }
+
+ New-Item -ItemType Directory "$PACKAGES_ROOT\$name\$version\$platform" -Force > $null
+
+ if ($in_program_files) {
+ $dir = "C:\$dir_name$shortver"
+ }
+ else {
+ Write-Output "Looking for C:\$name$shortver-x64 .."
+
+ $dir = ''
+ if (Test-Path "C:\$dir_name$shortver-x64") {
+ if ($platform -eq "x64") {
+ $dir = "C:\$dir_name$shortver-x64"
+ }
+ else {
+ $dir = "C:\$dir_name$shortver"
+ }
+ }
+
+ # TODO: Re-arrange to look only for the needed platform
+ if (!$dir) {
+ Write-Output "Looking for C:\$dir_name$shortver-x86 .."
+ }
+
+ if ((!($dir)) -and (Test-Path "C:\$dir_name$shortver-x86")) {
+ if ($platform -eq "x86") {
+ $dir = "C:\$dir_name$shortver-x86"
+ }
+ else {
+ $dir = "C:\$dir_name$shortver"
+ }
+ }
+ }
+
+ if (!($dir)) {
+ throw 'couldnt find x86/x64 directories for $name'
+ }
+
+ if (!(Test-Path $dir)) {
+ throw "Cant find $dir"
+ }
+
+ Write-Output "Coping $dir to $PACKAGES_ROOT\$name\$version\$platform\$name ..."
+
+ Move-Item $dir "$PACKAGES_ROOT\$name\$version\$platform\$name"
+
+ $files_content = ('$files = @{ "' + $name + '" = "C:\' + $name + '" }')
+ $files_path = "$PACKAGES_ROOT\$name\$version\$platform\files.ps1"
+
+ Set-Content $files_path $files_content
+
+ Write-Output "Wrote $files_path"
+}
+
+function Initialize-Miniconda27 {
+ # The algorithm above to prepare products for switching depends on a version
+ # in the directory name, which works for all cases except for Miniconda27.
+ # Use this if you need Miniconda27.
+ Write-Output "Moving C:\Miniconda(-x64) to C:\Miniconda27(-x64)"
+ Move-Item C:\Miniconda C:\Miniconda27
+ Move-Item C:\Miniconda-x64 C:\Miniconda27-x64
+}
+
+function Initialize-AppVeyorProductVersion {
+ # TODO: Only set up default versions for products which are needed
+
+ # This tells Install-Product to load product versions from $PACKAGES_ROOT
+ $env:AVVM_DOWNLOAD_URL = '../../avvm/'
+ Set-ItemProperty -Path 'HKCU:\Environment' -Name 'AVVM_DOWNLOAD_URL' -Value $env:AVVM_DOWNLOAD_URL
+
+ # node already set to 8.x
+ SetInstalledProductVersion go 1.12.3 x64
+
+ # todo: Handle Python27 and Ruby193
+
+ SetInstalledProductVersion miniconda 2.7.15 x86
+ SetInstalledProductVersion miniconda3 3.7.0 x86
+
+ SetInstalledProductVersion jdk 1.6.0 x86
+ SetInstalledProductVersion perl 5.20.1 x86
+ # /C/MinGW is only set on vs2013 and vs2015 images, and it isnt desirable
+ # SetInstalledProductVersion MinGW 5.3.0 x86
+
+ # hg 4.1.1 is pre-installed, but it does not need to be replaced,
+ # and is instead reported as 5.0
+}
+
+$old_EAP = $ErrorActionPreference
+$ErrorActionPreference = 'SilentlyContinue';
+Export-ModuleMember -Function Initialize-AppVeyorProductVersion, Add-Product, Initialize-Miniconda27
+$ErrorActionPreference = $old_EAP;
diff --git a/.ci/appveyor.yml b/.ci/appveyor.yml
index ea56a828c7..2936144eff 100644
--- a/.ci/appveyor.yml
+++ b/.ci/appveyor.yml
@@ -1,100 +1,184 @@
+image: Visual Studio 2015
+
environment:
global:
- # SDK v7.0 MSVC Express 2008's SetEnv.cmd script will fail if the
- # /E:ON and /V:ON options are not enabled in the batch script intepreter
- # See: http://stackoverflow.com/a/13751649/163740
- CMD_IN_ENV: "cmd /E:ON /V:ON /C .\\.ci\\run_with_env.cmd"
PIP_CACHE_DIR: C:\pip_cache
+ PIP_DISABLE_PIP_VERSION_CHECK: 1
+ # Needed if pip uninstall is used
+ PIP_YES: 1
+ YARN_GPG: 'no'
+ FudgeCI: $(APPVEYOR_BUILD_FOLDER)\.ci
+ NUGET_EXE_NO_PROMPT: 1
+ NUGET_HTTP_CACHE_PATH: C:\nuget_http_cache
+ CHOCO_CACHE_DIR: C:\choco_cache
+ MSYS_ROOT: C:\msys64
+ MSYS_BIN: $(MSYS_ROOT)\usr\bin
+ JAVA_HOME: C:\jdk
+ MSSDK_ROOT: C:\Program Files\Microsoft SDKs
+ VS_ROOT: C:\Program Files (x86)\Microsoft Visual Studio
+ VIRTUALENV_NO_DOWNLOAD: 1
+ VIRTUALENV_NO_PIP: 1
+ VIRTUALENV_NO_SETUPTOOLS: 1
+ # Uncomment to debug tox venv problems
+ # VIRTUALENV_VERBOSE: 1
+ GOPATH: C:\gopath
+ # A problem with store_env_in_registry.py means this needs to be explicit
+ PSModulePath: >-
+ $(PSModulePath);C:\Program Files (x86)\WindowsPowerShell\Modules;
+ PATH: >-
+ C:\python;C:\python\Scripts;$(PATH);$(MSYS_BIN);
+ C:\tools\fudge\tools;
+ C:\ruby\bin;
+ C:\jdk\bin;
+ $(GOPATH)\bin;
+ $(APPVEYOR_BUILD_FOLDER)\node_modules\.bin;
+ $(APPVEYOR_BUILD_FOLDER)\vendor\bin;
+ JL_PKG: CoalaBears
+ JULIA_PROJECT: '@.'
+ BEAR_LIST: astyle cppcheck xmllint
+ TOX_TEST_SELECTORS: pip-noreqs-npm-gem-go-perl-php-java8-adhoc
+ TOX_FEATURES: check-noskip-codecov
+ TOXENV: py$(PYTHON_MINOR_NODOTS)-$(TOX_TEST_SELECTORS)-$(TOX_FEATURES)-win
matrix:
- - PYTHON: "C:\\Python34"
- PYTHON_VERSION: "3.4.4"
- PYTHON_ARCH: "32"
- ruby_version: "24"
+ - PYTHON_VERSION: 3.6
+ PYTHON_MINOR_NODOTS: 36
+ - PYTHON_VERSION: 3.5
+ PYTHON_MINOR_NODOTS: 35
+ - PYTHON_VERSION: 3.4
+ PYTHON_MINOR_NODOTS: 34
- - PYTHON: "C:\\Python34-x64"
- PYTHON_VERSION: "3.4.4"
- PYTHON_ARCH: "64"
- ruby_version: "24-x64"
+platform:
+ - x86
+ - x64
cache:
+ - C:\nuget_http_cache
+ - C:\choco_cache
- "C:\\pip_cache"
- "node_modules"
- "C:\\Users\\appveyor\\AppData\\Local\\coala-bears\\coala-bears"
- "C:\\Users\\appveyor\\AppData\\Roaming\\nltk_data"
+ - "%LOCALAPPDATA%\\Composer"
branches:
except:
- /^sils\/.*/
+# This forces unix style line endings in the clone, which is necessary to
+# avoid warning regarding EOLs when running git diff on Windows
+init: git config --global core.autocrlf false
+
install:
- # Prepend newly installed Python to the PATH of this build (this cannot be
- # done from inside the powershell script as it would require to restart
- # the parent CMD process).
- - "SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PATH%"
- - "SET PATH=C:\\Program\ Files\\Java\\jdk1.7.0\\bin;%PATH%"
+ # Show initial state
+ - powershell -c "$PSVersionTable"
+ # Uncomment to debug
+ # printenv
+ - python --version
+ - "python -c \"import struct; print(struct.calcsize('P') * 8)\""
+ - python -m pip --version
+ - python -c "import setuptools; print(setuptools.__version__)"
+ - node --version
+ - which npm
+ - npm --version
+ - npm config get prefix
+ - ruby --version
+ - bundler --version
+ - go version
+ - which java
+ - java -version
+ - which javac
+ - javac -version
+ # JAVA_HOME set above is not populated yet
+ - echo %JAVA_HOME%
+ - ls %JAVA_HOME%/bin/java & exit 0
+ - which perl
+ - perl --version
+ - which gcc & exit 0
+ - gcc --version & exit 0
+ - which cl & exit 0
+
+ # Stores environment in registry, with minor tweaks
+ - python .ci/store_env_in_registry.py
+ - refreshenv
+
+ # Set up AppVeyor product versions, and install dummy choco entries for them
+ - ps: . .ci/FudgeCI.ps1; Initialize-AppVeyorVM
+ - refreshenv
+ - echo %PATH%
+ # Avoid tools finding and using MinGW
+ - mv C:\MinGW %TEMP%
+ # TODO: Avoid tools finding and using Visual Studio
+
+ # Show updated SOE; versions should be as defined in top of the Fudgefile
+ - python --version
+ - "python -c \"import struct; print(struct.calcsize('P') * 8)\""
+ - node --version
+ - which npm
+ - npm --version
+ - npm config get prefix
+ - go version
+ - ruby --version
+ - which java
+ - java -version
+ - which javac
+ - javac -version
+ - ls %JAVA_HOME%/bin/java
+ - perl --version
+ - which ppm
+ - ppm --version
+ - which gcc & exit 0
+ - gcc --version & exit 0
+
+ - "%MSYS_BIN%\\date.exe"
+ - cp .ci/choco.config
+ %ChocolateyInstall%\config\chocolatey.config
+ # Install remainer of the Fudgefile with chocolatey using Fudge
+ - ps: . .ci/Fudge.ps1 install
+ - refreshenv
+ - echo %PATH%
- # language-tool needs the registry tweaked here since it determines the java
- # version wrong (since appveyor has both, 1.7 and 1.8 in x86 and x64).
- - "SET KEY_NAME=HKLM\\Software\\JavaSoft\\Java Runtime Environment"
- - "REG add \"%KEY_NAME%\" /v CurrentVersion /t REG_SZ /d 1.7 /f"
+ - ps: if ($env:APPVEYOR_JOB_NUMBER -eq 1) { . .ci/PSLint.ps1 }
# Check that we have the expected version and architecture for Python
- "python --version"
- "python -c \"import struct; print(struct.calcsize('P') * 8)\""
- - "%CMD_IN_ENV% python -m pip install --upgrade setuptools==21 pip==9"
- - "%CMD_IN_ENV% python -m pip install -r test-requirements.txt \
- -r requirements.txt -r docs-requirements.txt"
- - ps: "Install-Product node ''" # Use latest node v5.x.x
- - "npm config set loglevel warn"
- - "sed -i '/alex/d' package.json"
- - "sed -i '/coffeelint/d' package.json"
- - "sed -i '/csscomb/d' package.json"
- - "sed -i '/docker/d' package.json"
- - "sed -i '/elm/d' package.json"
- - "sed -i '/gherkin/d' package.json"
- - "sed -i '/jshint/d' package.json"
- - "sed -i '/remark/d' package.json"
- - "sed -i '/postcss/d' package.json"
- - "sed -i '/sass/d' package.json"
- - "sed -i '/textlint/d' package.json"
- - "sed -i '/tslint/d' package.json"
- - "npm install"
- - "SET PATH=node_modules\\.bin;%PATH%"
- - "DEL node_modules\\.bin\\eslint*"
-
- # Commands for Ruby
- - "sed -i '/sqlint/d' Gemfile"
- - "SET PATH=C:\\Ruby%ruby_version%\\bin;%PATH%"
- - "bundle install"
+ # Confirm other versions
+ - node --version
+ - which npm
+ - npm --version
+ - npm config get prefix
+ - go version
+ - ruby --version
+ - perl --version
+ - which java
+ - java -version
+ - which javac
+ - javac -version
+ - ls %JAVA_HOME%/bin/java
+ # Newly installed versions
+ - which composer & exit 0
+ - composer --version & exit 0
+ - ppm --version & exit 0
+
+
+ - "%MSYS_BIN%\\date.exe"
build: false # Not a C# project, build stuff at the test step instead.
test_script:
- # Force DOS format, as Checkstyle configs enable NewlineAtEndOfFile,
- # which defaults to CRLF on Windows, and Appveyor CI ignores .gitattributes
- # http://help.appveyor.com/discussions/problems/5687-gitattributes-changes-dont-have-any-effect
- - unix2dos tests/java/test_files/CheckstyleGood.java
- # Clang DLLs x64 were nowadays installed, but the x64 version hangs, so we
- # exclude according tests. See https://github.com/appveyor/ci/issues/495 and
- # https://github.com/appveyor/ci/issues/688
- - >
- "%CMD_IN_ENV% python -m pytest
- --cov -k "not ClangASTPrintBear and not ClangCloneDetectionBear and
- not ClangComplexityBear and not ClangCountVectorCreator and
- not ClangCountingConditions and not RuboCopBearTest and
- not CSVLintBearTest"
- - "%CMD_IN_ENV% python setup.py install"
- - "%CMD_IN_ENV% python -m pip install \
- git+https://github.com/coala/coala"
- - sed -i '/ShellCheckBear/d' .coafile
- - "%CMD_IN_ENV% coala --ci"
-
-on_success:
- - codecov
-
-on_failure:
- - codecov
+ - python -m pip --version
+ - python -c "import setuptools; print(setuptools.__version__)"
+
+ - "sed -i 's/^envlist.*$/envlist: %TOXENV%/' tox.ini"
+ - python -m tox --sitepackages
+
+ - python setup.py install
+
+
+ - rm -rf .tox
+
+ - coala --ci
matrix:
fast_finish: true
diff --git a/.ci/choco.config b/.ci/choco.config
new file mode 100644
index 0000000000..026715ec07
--- /dev/null
+++ b/.ci/choco.config
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.ci/constants.ps1 b/.ci/constants.ps1
new file mode 100644
index 0000000000..f8979db466
--- /dev/null
+++ b/.ci/constants.ps1
@@ -0,0 +1,9 @@
+
+New-Variable -Scope global -Name project_name -Value 'coala-bears'
+New-Variable -Scope global -Name pip_version -Value '9.0.1'
+New-Variable -Scope global -Name setuptools_version -Value '21.2.2'
+
+$old_EAP = $ErrorActionPreference
+$ErrorActionPreference = 'SilentlyContinue'
+Export-ModuleMember -Variable name, pip_version, setuptools_version
+$ErrorActionPreference = $old_EAP
diff --git a/.ci/deps.ActivePerl-packages.ps1 b/.ci/deps.ActivePerl-packages.ps1
new file mode 100644
index 0000000000..dd3e21058c
--- /dev/null
+++ b/.ci/deps.ActivePerl-packages.ps1
@@ -0,0 +1,9 @@
+function Install-Perl-Modules {
+ cpanm --quiet --installdeps --with-develop --notest .
+
+ Remove-Item -Force MYMETA.yml -ErrorAction Ignore
+}
+
+function Invoke-ExtraInstallation {
+ Install-Perl-Modules
+}
diff --git a/.ci/deps.ActivePerl.ps1 b/.ci/deps.ActivePerl.ps1
new file mode 100644
index 0000000000..4464207b19
--- /dev/null
+++ b/.ci/deps.ActivePerl.ps1
@@ -0,0 +1,11 @@
+Set-StrictMode -Version latest
+
+function Install-PPM-cpanm {
+ ppm install App-cpanminus
+}
+
+function Complete-Install {
+ Install-PPM-cpanm
+}
+
+Export-ModuleMember -Function Install-PPM-cpanm, Complete-Install
diff --git a/.ci/deps.alex.sh b/.ci/deps.alex.sh
new file mode 100644
index 0000000000..37e47144c5
--- /dev/null
+++ b/.ci/deps.alex.sh
@@ -0,0 +1,7 @@
+ALEX=$(which alex || true)
+# Delete 'alex' if it is not in a node_modules directory,
+# which means it is ghc-alex.
+if [[ -n "$ALEX" && "${ALEX/node_modules/}" == "${ALEX}" ]]; then
+ echo "Removing $ALEX"
+ sudo rm -rf $ALEX
+fi
diff --git a/.ci/deps.apt-new.sh b/.ci/deps.apt-new.sh
new file mode 100755
index 0000000000..07b7225a63
--- /dev/null
+++ b/.ci/deps.apt-new.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+set -e -x
+
+if [[ "$DIST" != "" && "$DIST" != "precise" && "$DIST" != "trusty" && "$DIST" != "debian-sid" ]]; then
+ echo "deb http://archive.ubuntu.com/ubuntu/ $DIST main universe" | sudo tee -a /etc/apt/sources.list.d/$DIST.list > /dev/null
+ echo "deb http://archive.ubuntu.com/ubuntu/ $DIST-updates main universe" | sudo tee -a /etc/apt/sources.list.d/$DIST.list > /dev/null
+ echo "deb http://archive.ubuntu.com/ubuntu/ $DIST-backports main universe" | sudo tee -a /etc/apt/sources.list.d/$DIST.list > /dev/null
+ sudo apt-get -y update
+ sudo apt-get -y --no-install-recommends install chktex cppcheck default-jre flawfinder indent libperl-critic-perl libxml2-utils mono-mcs php7.0-cli php-codesniffer verilator
+fi
+
+# Change environment for flawfinder from python to python2
+if [[ -n "$(which flawfinder)" ]]; then
+ sed -e '1s/.*/#!\/usr\/bin\/env python2/' $(which flawfinder) > $HOME/bin/flawfinder;
+ chmod a+x $HOME/bin/flawfinder;
+fi
diff --git a/.ci/deps.apt_get.sh b/.ci/deps.apt_get.sh
new file mode 100755
index 0000000000..4fe9bd53dd
--- /dev/null
+++ b/.ci/deps.apt_get.sh
@@ -0,0 +1 @@
+.ci/deps.flawfinder.sh
diff --git a/.ci/deps.bakalint.sh b/.ci/deps.bakalint.sh
new file mode 100755
index 0000000000..363e822eae
--- /dev/null
+++ b/.ci/deps.bakalint.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+set -e -x
+
+# VHDL Bakalint Installation
+if [ ! -e ~/.local/bin/bakalint.pl ]; then
+ BAKALINT_VERSION=0.4.0
+ wget "http://downloads.sourceforge.net/project/fpgalibre/bakalint/0.4.0/bakalint-0.4.0.tar.gz?r=https%3A%2F%2Fsourceforge.net%2Fprojects%2Ffpgalibre%2Ffiles%2Fbakalint%2F0.4.0%2F&ts=1461844926&use_mirror=netcologne" -O ~/bl.tar.gz
+ tar xf ~/bl.tar.gz -C ~/
+ mv ~/bakalint-$BAKALINT_VERSION/bakalint.pl ~/.local/bin/
+fi
diff --git a/.ci/deps.cabal.sh b/.ci/deps.cabal.sh
index b8980b7741..d103d91f2d 100755
--- a/.ci/deps.cabal.sh
+++ b/.ci/deps.cabal.sh
@@ -7,6 +7,8 @@ cabal --version
cabal update
+cabal install happy
+
cabal install --only-dependencies --avoid-reinstalls
# Force ghc-mod to resolve its Cabal version
diff --git a/.ci/deps.composer-packages.ps1 b/.ci/deps.composer-packages.ps1
new file mode 100644
index 0000000000..9a99c0d5b2
--- /dev/null
+++ b/.ci/deps.composer-packages.ps1
@@ -0,0 +1,9 @@
+function Install-Composer-DependList {
+ $composer_phar = "C:\ProgramData\ComposerSetup\bin\composer.phar"
+
+ php.exe $composer_phar install
+}
+
+function Invoke-ExtraInstallation {
+ Install-Composer-DependList
+}
diff --git a/.ci/deps.composer.sh b/.ci/deps.composer.sh
new file mode 100755
index 0000000000..d8b6030dd6
--- /dev/null
+++ b/.ci/deps.composer.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+composer install
diff --git a/.ci/deps.elm-platform-packages.ps1 b/.ci/deps.elm-platform-packages.ps1
new file mode 100644
index 0000000000..cb3edf8ef3
--- /dev/null
+++ b/.ci/deps.elm-platform-packages.ps1
@@ -0,0 +1,12 @@
+function Install-Elm-Format {
+ elm-compiler --version
+ wget https://github.com/avh4/elm-format/releases/download/0.8.1/elm-format-0.8.1-win-i386.zip
+ 7z e elm-format-0.8.1-win-i386.zip
+ mv elm-format.exe ./node_modules/.bin
+ touch elm-package.json
+ # For elm 0.19, touch elm.json instead.
+}
+
+function Invoke-ExtraInstallation {
+ Install-Elm-Format
+}
diff --git a/.ci/deps.elm.sh b/.ci/deps.elm.sh
new file mode 100755
index 0000000000..e60bf614d0
--- /dev/null
+++ b/.ci/deps.elm.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+set -e -x
+
+# elm-format Installation
+if [ ! -e ~/.local/bin/elm-format ]; then
+ curl -fsSL -o elm-format.tgz https://github.com/avh4/elm-format/releases/download/0.5.2-alpha/elm-format-0.17-0.5.2-alpha-linux-x64.tgz
+ tar -xvzf elm-format.tgz -C ~/.local/bin/
+fi
+
+if [ "$TRAVIS_ELM_VERSION" = "0.18.0" ]; then
+ touch elm-package.json
+else
+ touch elm.json
+fi
diff --git a/.ci/deps.flawfinder.sh b/.ci/deps.flawfinder.sh
new file mode 100755
index 0000000000..60d6b2d12a
--- /dev/null
+++ b/.ci/deps.flawfinder.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+# Change environment for flawfinder from python to python2
+if [ ! -e ~/.local/bin/flawfinder ]; then
+ cp /usr/bin/flawfinder ~/.local/bin/flawfinder
+ sed -i '1s/.*/#!\/usr\/bin\/env python2/' ~/.local/bin/flawfinder
+ chmod +x ~/.local/bin/flawfinder
+fi
diff --git a/.ci/deps.gem.sh b/.ci/deps.gem.sh
new file mode 100755
index 0000000000..5ef51ca82d
--- /dev/null
+++ b/.ci/deps.gem.sh
@@ -0,0 +1,3 @@
+if [ -z "$TRAVIS_LANGUAGE" ]; then
+ bundle install --path=vendor/bundle --binstubs=vendor/bin --jobs=8 --retry=3
+fi
diff --git a/.ci/deps.generic.sh b/.ci/deps.generic.sh
new file mode 100755
index 0000000000..5a3991a058
--- /dev/null
+++ b/.ci/deps.generic.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+# TODO implement DISABLE_BEARS here
+if [ -n "$BEARS" ]; then
+ for item in $BEARS $BEAR_LIST; do
+ if [ -f ".ci/deps.$item.sh" ]; then
+ bash -e -x ".ci/deps.$item.sh"
+ fi
+ done
+fi
diff --git a/.ci/deps.ghc-mod.sh b/.ci/deps.ghc-mod.sh
new file mode 100755
index 0000000000..75446c0e35
--- /dev/null
+++ b/.ci/deps.ghc-mod.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+# This causes ghc-mod to try to install them all
+rm coala-bears.cabal
diff --git a/.ci/deps.ghc-packages.ps1 b/.ci/deps.ghc-packages.ps1
new file mode 100644
index 0000000000..f590fcdf1e
--- /dev/null
+++ b/.ci/deps.ghc-packages.ps1
@@ -0,0 +1,7 @@
+function Install-Cabal-Deps {
+ cabal install --only-dependencies --avoid-reinstalls
+}
+
+function Invoke-ExtraInstallation {
+ Install-Cabal-Deps
+}
diff --git a/.ci/deps.go.sh b/.ci/deps.go.sh
index f42575be59..7d0b582e1e 100755
--- a/.ci/deps.go.sh
+++ b/.ci/deps.go.sh
@@ -7,3 +7,5 @@ go get -u github.com/alecthomas/gometalinter
gometalinter --install
go get -u github.com/BurntSushi/toml/cmd/tomlv
+
+go get -u sourcegraph.com/sqs/goreturns
diff --git a/.ci/deps.golang-packages.ps1 b/.ci/deps.golang-packages.ps1
new file mode 100644
index 0000000000..26d102032d
--- /dev/null
+++ b/.ci/deps.golang-packages.ps1
@@ -0,0 +1,10 @@
+function Install-GoMetalinter-Linters {
+ gometalinter.v2.exe '--install'
+}
+
+function Invoke-ExtraInstallation {
+ Install-GoMetalinter-Linters
+
+ go get -u github.com/BurntSushi/toml/cmd/tomlv
+ go get -u sourcegraph.com/sqs/goreturns
+}
diff --git a/.ci/deps.golang.ps1 b/.ci/deps.golang.ps1
new file mode 100644
index 0000000000..5adf27ab5b
--- /dev/null
+++ b/.ci/deps.golang.ps1
@@ -0,0 +1,18 @@
+Set-StrictMode -Version latest
+
+function Install-GoPM {
+ go.exe get -u github.com/gpmgo/gopm
+ go.exe install github.com/gpmgo/gopm
+}
+
+function Install-GoMetaLinter {
+ go.exe get -u gopkg.in/alecthomas/gometalinter.v2
+}
+
+function Complete-Install {
+ Install-GoMetaLinter
+
+ Install-GoPM
+}
+
+Export-ModuleMember -Function Install-GoPM, Install-GoMetaLinter, Complete-Install
diff --git a/.ci/deps.haskell.sh b/.ci/deps.haskell.sh
new file mode 120000
index 0000000000..56766436e4
--- /dev/null
+++ b/.ci/deps.haskell.sh
@@ -0,0 +1 @@
+deps.cabal.sh
\ No newline at end of file
diff --git a/.ci/deps.infer.sh b/.ci/deps.infer.sh
new file mode 100755
index 0000000000..f2c74bc304
--- /dev/null
+++ b/.ci/deps.infer.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+INFER_URL="https://github.com/facebook/infer/releases/download/v$INFER_VERSION/infer-linux64-v$INFER_VERSION.tar.xz"
+curl -sSL "$INFER_URL" | tar -C ~/ -xJ
diff --git a/.ci/deps.java.sh b/.ci/deps.java.sh
index 236b136d76..d499069ef6 100755
--- a/.ci/deps.java.sh
+++ b/.ci/deps.java.sh
@@ -1,22 +1,18 @@
-#!/bin/sh
+#!/bin/bash
-set -e
-set -x
+set -e -x
-# PMD commands
-PMD_VERSION=5.4.1
-if [ ! -e ~/.local/bin/pmd ]; then
- wget -nc -O ~/pmd.zip https://github.com/pmd/pmd/releases/download/pmd_releases%2F5.4.1/pmd-bin-5.4.1.zip
- unzip ~/pmd.zip -d ~/
- cp -r ~/pmd-bin-$PMD_VERSION/* ~/.local/
+if [ -n "$TRAVIS_JDK_VERSION" ]; then
+ jdk_version=${TRAVIS_JDK_VERSION#openjdk}
+ jdk_version=${jdk_version#oraclejdk}
fi
-# Tailor (Swift) commands
-# Comment out the hardcoded PREFIX, so we can put it into ~/.local
-if [ ! -e ~/.local/tailor/tailor-latest ]; then
- curl -fsSL -o install.sh https://tailor.sh/install.sh
- sed -i 's/read -r CONTINUE < \/dev\/tty/CONTINUE=y/;;s/^PREFIX.*/# PREFIX=""/;' install.sh
- PREFIX=$HOME/.local bash ./install.sh
- # Provide a constant path for the executable
- ln -s ~/.local/tailor/tailor-* ~/.local/tailor/tailor-latest
+if [ -z "$jdk_version" ] || [ $jdk_version -eq 8 ]; then
+ .ci/deps.tailor.sh
fi
+
+if [ -z "$(which pmd || true)" ]; then
+ .ci/deps.pmd.sh
+fi
+
+#bash -e -x .ci/deps.coala-bears.sh
diff --git a/.ci/deps.julia.jl b/.ci/deps.julia.jl
new file mode 100644
index 0000000000..ec2e28fa51
--- /dev/null
+++ b/.ci/deps.julia.jl
@@ -0,0 +1,7 @@
+if VERSION < v"0.7.0-DEV.5183"
+ Pkg.clone(pwd(), ENV["JL_PKG"])
+ Pkg.build(ENV["JL_PKG"])
+else
+ using Pkg
+ Pkg.build()
+end
diff --git a/.ci/deps.julia.sh b/.ci/deps.julia.sh
new file mode 100755
index 0000000000..7369a704b4
--- /dev/null
+++ b/.ci/deps.julia.sh
@@ -0,0 +1,12 @@
+#julia -e "Pkg.add(\"Lint\")"
+
+#julia -e "import Lint.lintfile"
+
+#mkdir deps
+#echo 'Pkg.add("Lint")' > deps/build.jl
+
+#cat Manifest.toml || true
+
+# Normal package management not possible due to
+# https://github.com/tonyhffong/Lint.jl/issues/254
+julia -e 'using Pkg; Pkg.add(PackageSpec(url="https://github.com/tonyhffong/Lint.jl", rev="v0.6.0"))'
diff --git a/.ci/deps.lua.sh b/.ci/deps.lua.sh
new file mode 100755
index 0000000000..6641e38e6c
--- /dev/null
+++ b/.ci/deps.lua.sh
@@ -0,0 +1 @@
+luarocks install --local --deps-mode=none luacheck
diff --git a/.ci/deps.minimal.sh b/.ci/deps.minimal.sh
new file mode 120000
index 0000000000..e78c42d4d0
--- /dev/null
+++ b/.ci/deps.minimal.sh
@@ -0,0 +1 @@
+deps.generic.sh
\ No newline at end of file
diff --git a/.ci/deps.node_js.sh b/.ci/deps.node_js.sh
new file mode 100755
index 0000000000..0f9e9c9f2b
--- /dev/null
+++ b/.ci/deps.node_js.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+set -e -x
+
+# NPM commands
+source .ci/deps.alex.sh
+
+if [ -z "$TRAVIS_LANGUAGE" ]; then
+ npm install
+ npm list --depth=0
+fi
+
+source .ci/deps.elm.sh
diff --git a/.ci/deps.nodejs-packages.ps1 b/.ci/deps.nodejs-packages.ps1
new file mode 100644
index 0000000000..5db9b8d665
--- /dev/null
+++ b/.ci/deps.nodejs-packages.ps1
@@ -0,0 +1,33 @@
+function Install-Node-Packages {
+ npm config set loglevel warn
+
+ # pnpm setting
+ npm config set reporter silent
+
+ cp -force package.json package.json.bak
+
+ # elm-platform should be added to Fudgefile
+ # https://github.com/coala/coala-bears/issues/2924
+ sed -i '/elm/d' package.json
+
+ # textlint-plugin-asciidoc-loose requires a compiler
+ # and should be replaced with textlint-plugin-asciidoctor
+ sed -i '/textlint-plugin-asciidoc-loose/d' package.json
+
+ # If gyp fails, use npm config python to help locate Python 2.7
+
+ $old_EAP = $ErrorActionPreference
+ $ErrorActionPreference = 'Continue'
+
+ npm install
+
+ $ErrorActionPreference = $old_EAP
+
+ mv -force package.json.bak package.json
+
+ npm config set reporter default
+}
+
+function Invoke-ExtraInstallation {
+ Install-Node-Packages
+}
diff --git a/.ci/deps.npm.sh b/.ci/deps.npm.sh
new file mode 100755
index 0000000000..5fdd18ffd2
--- /dev/null
+++ b/.ci/deps.npm.sh
@@ -0,0 +1 @@
+npm install
diff --git a/.ci/deps.objective_c.sh b/.ci/deps.objective_c.sh
new file mode 120000
index 0000000000..41a87f2ce0
--- /dev/null
+++ b/.ci/deps.objective_c.sh
@@ -0,0 +1 @@
+deps.tailor.sh
\ No newline at end of file
diff --git a/.ci/deps.opam.sh b/.ci/deps.opam.sh
index 3dc030cac0..c003f80c35 100755
--- a/.ci/deps.opam.sh
+++ b/.ci/deps.opam.sh
@@ -24,7 +24,18 @@ if [ ! -e ~/infer-linux64-v0.7.0/infer/bin ]; then
# See https://github.com/coala/coala-bears/issues/1763
opam pin add --yes --no-action reason 1.13.5
+ opam pin add --yes --no-action javalib 2.3.1
+
opam pin add --yes --no-action infer .
+
+ opam init -y --reinit --disable-sandboxing
+
+ cp ~/.opam/config ~/.opam/config.orig
+ cat ~/.opam/config
+ sed -i '/wrap-/d;/sandbox.sh/d' ~/.opam/config
+
+ eval $(opam env)
+
opam install --deps-only --yes infer
./build-infer.sh java
fi
diff --git a/.ci/deps.pear.sh b/.ci/deps.pear.sh
new file mode 100755
index 0000000000..2e97d5bf9d
--- /dev/null
+++ b/.ci/deps.pear.sh
@@ -0,0 +1,2 @@
+pear install pear/PHP_CodeSniffer
+phpenv rehash
diff --git a/.ci/deps.perl.sh b/.ci/deps.perl.sh
new file mode 120000
index 0000000000..5fdd9fa4b3
--- /dev/null
+++ b/.ci/deps.perl.sh
@@ -0,0 +1 @@
+deps.bakalint.sh
\ No newline at end of file
diff --git a/.ci/deps.php.ps1 b/.ci/deps.php.ps1
new file mode 100644
index 0000000000..1991fc9314
--- /dev/null
+++ b/.ci/deps.php.ps1
@@ -0,0 +1,123 @@
+Set-StrictMode -Version latest
+
+function Get-PHP-Root {
+ $PHP_ROOT = ''
+ Get-ChildItem -Directory 'C:\tools\' -Filter 'php*' |
+ ForEach-Object {
+ $PHP_ROOT = $_.FullName.ToString()
+
+ Write-Host "Setting PHP_ROOT='$PHP_ROOT'"
+
+ $env:PHP_ROOT = $PHP_ROOT
+ Set-ItemProperty -Path 'HKCU:\Environment' -Name 'PHP_ROOT' -Value $PHP_ROOT
+ }
+
+ if ($PHP_ROOT) {
+ return $PHP_ROOT
+ }
+
+ throw ('php not found in ' + $list)
+}
+
+# This is not needed with the recent choco php packages
+function Initialize-PHP-Ini {
+ param (
+ [Parameter(Mandatory = $true)]
+ [ValidateNotNullOrEmpty()]
+ [string]
+ $PHP_ROOT
+ )
+
+ $PHP_INI = ($PHP_ROOT + '\php.ini')
+
+ Write-Host 'Creating '$PHP_INI
+
+ cp ($PHP_INI + '-production') $PHP_INI
+ sed -i 's/;date.timezone =.*/date.timezone=UTC/' $PHP_INI
+
+ $list = (Get-ChildItem -Recurse $PHP_ROOT |
+ Out-String)
+
+ Write-Verbose ('php dir ' + $list)
+
+ Write-Host 'Enabling PHP openssl ...'
+
+ $openssl_dll = ''
+
+ Get-ChildItem $PHP_ROOT -Recurse -filter '*openssl*.dll' |
+ ForEach-Object {
+ $openssl_dll = $_.FullName
+
+ Write-Host ' found '$openssl_dll
+ }
+
+ if (! $openssl_dll) {
+ Write-Host ' not found'
+
+ throw ('openssl not found in ' + $list)
+ }
+
+ sed -i 's/;extension=openssl/extension=openssl/' $PHP_INI
+
+ $dir = Split-Path -Path $openssl_dll
+
+ Write-Host 'Setting extension directory: '$dir
+
+ (Get-Content $PHP_INI) |
+ ForEach-Object {
+ $_ -replace ';extension_dir *=.*', ('extension_dir="' + $dir + '"')
+ } |
+ Set-Content $PHP_INI
+
+ grep '^extension' $PHP_INI
+}
+
+function Install-PEAR {
+ param(
+ [Parameter(Mandatory = $true)]
+ [ValidateNotNullOrEmpty()]
+ [string]
+ $PHP_ROOT
+ )
+
+ $PHP_INI = "$PHP_ROOT\php.ini"
+
+ grep '^extension' $PHP_INI
+
+ $PHP = "$PHP_ROOT\php.exe"
+
+ Write-Output 'Installing PEAR'
+
+ $pear_install_url = 'http://pear.php.net/install-pear-nozlib.phar'
+ $phar = $env:TMP + '\install-pear.phar'
+
+ curl -o $phar $pear_install_url
+
+ php.exe $phar -b $PHP_ROOT -d $PHP_ROOT -p $PHP
+}
+
+function Sync-PEAR {
+ param(
+ [Parameter(Mandatory = $true)]
+ [ValidateNotNullOrEmpty()]
+ [string]
+ $PHP_ROOT
+ )
+
+ Write-Output 'Updating PEAR channel pear.php.net'
+
+ php.exe $PHP_ROOT\pearcmd.php channel-update pear.php.net
+}
+
+function Complete-Install {
+ $PHP_ROOT = Get-PHP-Root
+
+ Write-Host "PHP_ROOT = $PHP_ROOT"
+
+ $env:PATH = ($env:PATH + ';' + $PHP_ROOT)
+
+ Install-PEAR $PHP_ROOT
+ Sync-PEAR $PHP_ROOT
+}
+
+Export-ModuleMember -Function Get-PHP-Root, Initialize-PHP-Ini, Install-PEAR, Sync-PEAR
diff --git a/.ci/deps.php.sh b/.ci/deps.php.sh
new file mode 120000
index 0000000000..1133214314
--- /dev/null
+++ b/.ci/deps.php.sh
@@ -0,0 +1 @@
+deps.composer.sh
\ No newline at end of file
diff --git a/.ci/deps.pmd.sh b/.ci/deps.pmd.sh
new file mode 100755
index 0000000000..bca89db899
--- /dev/null
+++ b/.ci/deps.pmd.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e -x
+
+# PMD commands
+PMD_VERSION=5.4.1
+if [ ! -e ~/.local/bin/pmd ]; then
+ wget -nc -O ~/pmd.zip https://github.com/pmd/pmd/releases/download/pmd_releases%2F5.4.1/pmd-bin-5.4.1.zip
+ unzip ~/pmd.zip -d ~/
+ cp -r ~/pmd-bin-$PMD_VERSION/* ~/.local/
+fi
diff --git a/.ci/deps.pyenv.sh b/.ci/deps.pyenv.sh
new file mode 100755
index 0000000000..e315aa4e69
--- /dev/null
+++ b/.ci/deps.pyenv.sh
@@ -0,0 +1,17 @@
+set -e -x
+if [ -z "$(which pyenv)" ]; then
+ git clone https://github.com/pyenv/pyenv.git ~/.pyenv;
+ export PYENV_ROOT="$HOME/.pyenv";
+ export PATH="$PYENV_ROOT/bin:$PATH";
+fi
+# https://github.com/doloopwhile/pyenv-register/pull/3
+git clone https://github.com/garyp/pyenv-register.git \
+ $(pyenv root)/plugins/pyenv-register
+
+SYSTEM_PYTHONS=$(ls /usr/bin/python[23] \
+ /usr/bin/python[23].[0-9] \
+ /usr/bin/python[23].[0-9].[0-9] 2>/dev/null || true)
+for pybin in $SYSTEM_PYTHONS $(which python2.7) $(which python3.6); do
+ pyenv register -f $pybin || true
+done
+set +x
diff --git a/.ci/deps.python-packages.ps1 b/.ci/deps.python-packages.ps1
new file mode 100644
index 0000000000..97bc0f5fb6
--- /dev/null
+++ b/.ci/deps.python-packages.ps1
@@ -0,0 +1,186 @@
+$ci_directory = $env:FudgeCI
+
+if (!($ci_directory)) {
+ $ci_directory = '.ci'
+}
+
+. $ci_directory/constants.ps1
+
+function Checkpoint-Pip-Constraints {
+ python -m pip freeze --all > constraints.txt
+}
+
+function Install-Pip-Requirement {
+ param (
+ [parameter(Mandatory, ValueFromPipeline)]
+ [string]
+ $requirement
+ )
+
+ if ($requirement.EndsWith('.txt')) {
+ python -m pip install --constraint constraints.txt -r $requirement
+ }
+ else {
+ python -m pip install --constraint constraints.txt $requirement.Split()
+ }
+}
+
+function Install-Binary-Packages {
+ # Install lxml needed by for coala-bears as a wheel as libxml2 and libxslt
+ # headers and library files are not available, and STATIC_DEPS=true often
+ # results in linter problems due to different VS compilers and MS runtimes.
+ # Also use cffi wheel to avoid need for VS compilers
+ python -m pip install --prefer-binary cffi lxml
+ # pycparser not a wheel, but ensure it is installable before proceeding
+ # https://github.com/eliben/pycparser/issues/251
+ python -m pip --verbose install pycparser
+ # pyrsistent->jsonschema->nbformat fails on old setuptools if no MS VC 9
+ # https://github.com/tobgu/pyrsistent/issues/172
+ python -m pip install -U setuptools
+ python -m pip install pyrsistent
+}
+
+function Install-coala {
+ param (
+ [string]
+ $stop_at
+ )
+
+ python -m pip install -U six pip==$pip_version setuptools==$setuptools_version
+
+ if (!(Test-Path constraints.txt)) {
+ if ($stop_at -eq 'coala-bears') {
+ cp bear-requirements.txt constraints.txt
+ }
+ elseif (Test-Path 'requirements.txt') {
+ cp requirements.txt constraints.txt
+ }
+ else {
+ Checkpoint-Pip-Constraints
+ }
+ }
+
+ if (!($stop_at -eq 'PyPrint')) {
+ Write-Output "Installing PyPrint"
+ Install-Pip-Requirement 'git+https://gitlab.com/coala/PyPrint#egg=PyPrint'
+
+ if (!($stop_at -eq 'coala_utils')) {
+ Write-Output "Installing coala_utils"
+
+ Checkpoint-Pip-Constraints
+
+ Install-Pip-Requirement 'git+https://gitlab.com/coala/coala-utils#egg=coala-utils'
+
+ if (!($stop_at -eq 'dependency-management')) {
+ Write-Output "Installing sarge with Windows support"
+
+ Install-Pip-Requirement 'hg+https://bitbucket.org/jayvdb/sarge@win-reg-lookup#egg=sarge'
+
+ if (!(Test-Path $env:TEMP/pm-master)) {
+ $PM_URL = "https://gitlab.com/coala/package_manager.git/"
+ git clone $PM_URL $env:TEMP/pm-master
+ }
+ rm $env:TEMP/pm-master/test-requirements.txt
+ rm $env:TEMP/pm-master/requirements.txt
+ touch $env:TEMP/pm-master/test-requirements.txt
+ touch $env:TEMP/pm-master/requirements.txt
+
+ Install-Pip-Requirement "$env:TEMP/pm-master"
+
+ if (!($stop_at -eq 'coala')) {
+ Write-Output "Installing coala"
+
+ Checkpoint-Pip-Constraints
+
+ Install-Pip-Requirement 'git+https://github.com/coala/coala#egg=coala'
+
+ if (!($stop_at -eq 'coala-bears')) {
+ Write-Output "Installing coala-bears"
+
+ Checkpoint-Pip-Constraints
+
+ Install-Pip-Requirement 'git+https://github.com/coala/coala-bears#egg=coala-bears'
+ }
+ }
+ }
+ }
+ }
+}
+
+function Install-Project-Dependency-Packages {
+ Write-Output "Installing dependencies of $project_name"
+ Install-coala $project_name
+}
+
+function Install-Project {
+ if (Test-Path 'requirements.txt') {
+ Write-Output "Installing $project_name requirements.txt"
+
+ Install-Pip-Requirement 'requirements.txt'
+ }
+
+ if (Test-Path 'setup.py') {
+ Write-Output "Installing $project_name setup.py"
+ Install-Pip-Requirement '.'
+ }
+}
+
+function Install-Test-Packages {
+ if (Test-Path docs-requirements.txt) {
+ Write-Output "Installing docs-requirements.txt"
+
+ Checkpoint-Pip-Constraints
+
+ Install-Pip-Requirement 'docs-requirements.txt'
+ }
+
+ Checkpoint-Pip-Constraints
+
+ Write-Output "Installing test-requirements.txt"
+
+ Install-Pip-Requirement 'test-requirements.txt'
+ Install-Pip-Requirement 'pytest-spec'
+
+ if ($project_name -eq 'coala-bears') {
+ Write-Output "Installing tox"
+ # Avoid previous cache entry for setuptools, as it
+ # causes a deserialisation error
+ python -m pip install -U --no-cache-dir setuptools
+
+ Checkpoint-Pip-Constraints
+
+ # tox 3.13 uses pluggy 0.12.0 which is incompatible with a pytest 3.6.4
+ Install-Pip-Requirement 'tox~=3.12.0 tox-backticks'
+ }
+}
+
+function Invoke-ExtraInstallation {
+
+ $old_pip_check_flag = 0
+ if ($env:PIP_DISABLE_PIP_VERSION_CHECK) {
+ $old_pip_check_flag = 1
+ }
+ $env:PIP_DISABLE_PIP_VERSION_CHECK = 1
+
+ Install-Binary-Packages
+
+ if (!($env:PYTHON_VERSION -eq '2.7')) {
+ Install-Project-Dependency-Packages
+ }
+
+ Install-Project
+
+ Install-Test-Packages
+
+ if (Test-Path constraints.txt) {
+ Move-Item constraints.txt $env:TEMP -Force
+ }
+
+ if (!$old_pip_check_flag) {
+ Remove-Item Env:\PIP_DISABLE_PIP_VERSION_CHECK
+ }
+}
+
+$ErrorActionPreference = 'SilentlyContinue';
+Export-ModuleMember -Function Invoke-ExtraInstallation -ErrorAction:Ignore
+$ErrorActionPreference = 'Continue';
diff --git a/.ci/deps.python36.sh b/.ci/deps.python36.sh
new file mode 100755
index 0000000000..854d328705
--- /dev/null
+++ b/.ci/deps.python36.sh
@@ -0,0 +1,6 @@
+if [ -z "$(pyenv versions | fgrep '3.6' --max-count 1)" ]; then
+ git clone https://github.com/s1341/pyenv-alias.git \
+ $(pyenv root)/plugins/pyenv-alias;
+
+ VERSION_ALIAS=3.6 pyenv install 3.6.3;
+fi
diff --git a/.ci/deps.r.sh b/.ci/deps.r.sh
index 8e32ff8057..9776608766 100755
--- a/.ci/deps.r.sh
+++ b/.ci/deps.r.sh
@@ -4,7 +4,7 @@ set -e
set -x
# R commands
-echo '.libPaths( c( "'"$R_LIB_USER"'", .libPaths()) )' >> .Rprofile
+echo '.libPaths( c( "/usr/local/lib/R/site-library", .libPaths()) )' >> ~/.Rprofile
echo 'options(repos=structure(c(CRAN="http://cran.rstudio.com")))' >> .Rprofile
-R -q -e 'install.packages("lintr")'
-R -q -e 'install.packages("formatR")'
+#R -q -e 'install.packages("lintr")'
+#R -q -e 'install.packages("formatR")'
diff --git a/.ci/deps.ruby-packages.ps1 b/.ci/deps.ruby-packages.ps1
new file mode 100644
index 0000000000..e4b54e1dba
--- /dev/null
+++ b/.ci/deps.ruby-packages.ps1
@@ -0,0 +1,27 @@
+function Install-Gemfile {
+ cp -force Gemfile Gemfile.bak
+
+ # Unbuildable on Windows
+ sed -i '/sqlint/d' Gemfile
+ # https://github.com/coala/coala-bears/issues/2909
+ sed -i '/csvlint/d' Gemfile
+
+ # pusher-client 0.4.0 doesnt depend on json, which requires
+ # a compiler and the GMP library
+ Write-Output 'gem "pusher-client", "~>0.4.0", require: false' |
+ Out-File -FilePath Gemfile -Append -Encoding ascii
+
+ # The build crawls if DevKit is included in the PATH
+ $old_PATH = $env:PATH
+ $env:PATH = ($env:ChocolateyToolsLocation + '\DevKit2\bin;' + $env:PATH)
+
+ bundle install
+
+ $env:PATH = $old_PATH
+
+ mv -force Gemfile.bak Gemfile
+}
+
+function Invoke-ExtraInstallation {
+ Install-Gemfile
+}
diff --git a/.ci/deps.ruby.ps1 b/.ci/deps.ruby.ps1
new file mode 100644
index 0000000000..429f970475
--- /dev/null
+++ b/.ci/deps.ruby.ps1
@@ -0,0 +1,11 @@
+Set-StrictMode -Version latest
+
+function Install-Bundler {
+ gem install bundler
+}
+
+function Complete-Install {
+ Install-Bundler
+}
+
+Export-ModuleMember -Function Complete-Install
diff --git a/.ci/deps.ruby.sh b/.ci/deps.ruby.sh
new file mode 100755
index 0000000000..dcb844d7be
--- /dev/null
+++ b/.ci/deps.ruby.sh
@@ -0,0 +1 @@
+gem install bundler -v 1.16.1
diff --git a/.ci/deps.sh b/.ci/deps.sh
index 7722a69ea5..6e402ed5e3 100755
--- a/.ci/deps.sh
+++ b/.ci/deps.sh
@@ -3,58 +3,18 @@
set -e
set -x
-# NPM commands
-ALEX=$(which alex || true)
-# Delete 'alex' if it is not in a node_modules directory,
-# which means it is ghc-alex.
-if [[ -n "$ALEX" && "${ALEX/node_modules/}" == "${ALEX}" ]]; then
- echo "Removing $ALEX"
- sudo rm -rf $ALEX
-fi
-npm install
-npm list --depth=0
-
-# Ruby commands
-bundle install --path=vendor/bundle --binstubs=vendor/bin --jobs=8 --retry=3
-
-# Dart Lint commands
-if ! dartanalyzer -v &> /dev/null; then
- wget -nc -O ~/dart-sdk.zip https://storage.googleapis.com/dart-archive/channels/stable/release/1.14.2/sdk/dartsdk-linux-x64-release.zip
- unzip -n ~/dart-sdk.zip -d ~/
- cp -rp ~/dart-sdk/* ~/.local/
-fi
-
-# VHDL Bakalint Installation
-if [ ! -e ~/.local/bin/bakalint.pl ]; then
- BAKALINT_VERSION=0.4.0
- wget "http://downloads.sourceforge.net/project/fpgalibre/bakalint/0.4.0/bakalint-0.4.0.tar.gz?r=https%3A%2F%2Fsourceforge.net%2Fprojects%2Ffpgalibre%2Ffiles%2Fbakalint%2F0.4.0%2F&ts=1461844926&use_mirror=netcologne" -O ~/bl.tar.gz
- tar xf ~/bl.tar.gz -C ~/
- mv ~/bakalint-$BAKALINT_VERSION/bakalint.pl ~/.local/bin/
-fi
-
-# elm-format Installation
-if [ ! -e ~/.local/bin/elm-format ]; then
- curl -fsSL -o elm-format.tgz https://github.com/avh4/elm-format/releases/download/0.5.2-alpha/elm-format-0.17-0.5.2-alpha-linux-x64.tgz
- tar -xvzf elm-format.tgz -C ~/.local/bin/
-fi
-
-# Julia commands
-julia -e "Pkg.add(\"Lint\")"
-
-# Lua commands
-luarocks install --local --deps-mode=none luacheck
-
-# PHPMD installation
-if [ ! -e ~/.local/bin/phpmd ]; then
- PHPMD='http://static.phpmd.org/php/latest/phpmd.phar'
- mkdir -p ~/.local/bin
- curl -fsSL -o ~/.local/bin/phpmd "$PHPMD"
- chmod +x ~/.local/bin/phpmd
-fi
-
-# Change environment for flawfinder from python to python2
-if [ ! -e ~/.local/bin/flawfinder ]; then
- cp /usr/bin/flawfinder ~/.local/bin/flawfinder
- sed -i '1s/.*/#!\/usr\/bin\/env python2/' ~/.local/bin/flawfinder
- chmod +x ~/.local/bin/flawfinder
-fi
+.ci/deps.node_js.sh
+
+.ci/deps.gem.sh
+
+.ci/deps.dart.sh
+
+.ci/deps.perl.sh
+
+.ci/deps.julia.sh
+
+.ci/deps.lua.sh
+
+.ci/deps.php.sh
+
+.ci/deps.flawfinder.sh
diff --git a/.ci/deps.tailor.sh b/.ci/deps.tailor.sh
new file mode 100755
index 0000000000..2c681ab887
--- /dev/null
+++ b/.ci/deps.tailor.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+set -e
+set -x
+
+# Tailor (Swift) commands
+# Comment out the hardcoded PREFIX, so we can put it into ~/.local
+if [ ! -e ~/.local/tailor/tailor-latest ]; then
+ curl -fsSL -o install.sh https://tailor.sh/install.sh
+ sed -i 's/read -r CONTINUE < \/dev\/tty/CONTINUE=y/;;s/^PREFIX.*/# PREFIX=""/;' install.sh
+ PREFIX=$HOME/.local bash ./install.sh
+ # Provide a constant path for the executable
+ ln -s ~/.local/tailor/tailor-* ~/.local/tailor/tailor-latest
+fi
diff --git a/.ci/generate_bear_metadata.py b/.ci/generate_bear_metadata.py
new file mode 100755
index 0000000000..4fdac6b746
--- /dev/null
+++ b/.ci/generate_bear_metadata.py
@@ -0,0 +1,515 @@
+#!/usr/bin/env python3
+
+# This program is free software: you can redistribute it and/or modify it
+# under the terms of the GNU Affero General Public License as published by the
+# Free Software Foundation, either version 3 of the License, or (at your
+# option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
+# for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
+
+import argparse
+import collections
+import copy
+import itertools
+import logging
+import os
+import sys
+
+from ruamel.yaml import YAML, RoundTripDumper
+from ruamel.yaml.comments import CommentedMap
+
+from coalib.bears.BEAR_KIND import BEAR_KIND
+from coalib.collecting.Collectors import collect_bears
+
+from dependency_management.requirements.AnyOneOfRequirements import (
+ AnyOneOfRequirements,
+)
+from dependency_management.requirements.DistributionRequirement import (
+ DistributionRequirement,
+)
+from dependency_management.requirements.ExecutableRequirement import (
+ ExecutableRequirement,
+)
+
+DISABLED_BEARS = []
+
+yaml = YAML(typ='rt')
+yaml.default_flow_style = False
+yaml.Dumper = RoundTripDumper
+
+BEAR_METADATA_YAML = 'bear-metadata.yaml'
+BEAR_REQUIREMENTS_YAML = 'bear-requirements.yaml'
+BEAR_LANGUAGES_YAML = 'bear-languages.yaml'
+
+_VERSION_OPERATORS = ('<', '>', '~', '=', '-', '!')
+
+THIS_DIR = os.path.dirname(os.path.abspath(__file__))
+
+PROJECT_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
+
+PROJECT_BEAR_DIR = os.path.abspath(os.path.join(PROJECT_DIR, 'bears'))
+
+
+def get_args():
+ parser = argparse.ArgumentParser(
+ description='This program generates a yaml requirement file for '
+ 'installation of linters that are used by the bears.')
+ parser.add_argument('--output', '-o',
+ help='name of file to generate, or - for stdout',
+ default=os.path.join(PROJECT_DIR,
+ BEAR_REQUIREMENTS_YAML))
+ parser.add_argument('--bear-dirs', '-d', nargs='+', metavar='DIR',
+ help='additional directories which may contain bears')
+
+ parser.add_argument('--debug', action='store_true',
+ help='sets logging level to debug.')
+ parser.add_argument('--check', '-c', action='store_true',
+ help='performs a dry run, and reports differences.')
+ parser.add_argument('--update', '-u', action='store_true',
+ help='updates "bear-requirements.yaml" '
+ 'instead of overwriting')
+ args = parser.parse_args()
+
+ return args
+
+
+def get_all_bears(bear_dirs):
+ local_bears, global_bears = collect_bears(
+ bear_dirs,
+ ['**'],
+ [BEAR_KIND.LOCAL, BEAR_KIND.GLOBAL],
+ warn_if_unused_glob=False)
+ return list(itertools.chain(local_bears, global_bears))
+
+
+def get_inherited_requirements():
+ inherited_requirements = set()
+
+ in_inherited = False
+ with open(os.path.join(PROJECT_DIR, 'requirements.txt'), 'r') as file:
+ for line in file.read().splitlines():
+ if 'inherited' in line:
+ in_inherited = True
+ continue
+ if in_inherited:
+ if line.startswith('# '):
+ requirement = line[2:]
+ inherited_requirements.add(requirement.replace('-', '_'))
+ inherited_requirements.add(requirement.replace('_', '-'))
+ else:
+ in_inherited = False
+
+ return inherited_requirements
+
+
+INHERITED_PIP_REQUIREMENTS = get_inherited_requirements()
+
+REQUIREMENT_TYPES = collections.OrderedDict({
+ 'PipRequirement': {
+ 'prefix': 'pip',
+ 'version_operator': '~=',
+ 'exclude': INHERITED_PIP_REQUIREMENTS,
+ },
+ 'NpmRequirement': {
+ 'prefix': 'npm',
+ 'version_operator': '~',
+ },
+ 'GemRequirement': {
+ 'prefix': 'gem',
+ 'version_operator': '~>',
+ },
+ 'ComposerRequirement': {
+ 'prefix': 'composer',
+ 'version_operator': '~',
+ },
+ 'CabalRequirement': {
+ 'prefix': 'cabal',
+ 'version_operator': '==',
+ },
+ 'RscriptRequirement': {
+ 'prefix': 'r_script',
+ 'version_operator': '>=',
+ 'allow_missing_version': True,
+ },
+ 'DistributionRequirement': {
+ 'prefix': 'distro',
+ 'version_operator': '>=',
+ 'allow_missing_version': True,
+ },
+ 'ExecutableRequirement': {
+ 'prefix': 'exe',
+ 'version_operator': '>=',
+ 'allow_missing_version': True,
+ },
+ 'JuliaRequirement': {
+ 'prefix': 'julia',
+ 'version_operator': '>=',
+ 'allow_missing_version': True,
+ },
+ 'GoRequirement': {
+ 'prefix': 'go',
+ 'version_operator': '>=',
+ 'allow_missing_version': True,
+ },
+ 'LuarocksRequirement': {
+ 'prefix': 'luarocks',
+ 'version_operator': '>=',
+ 'allow_missing_version': True,
+ },
+ 'CondaRequirement': {
+ 'prefix': 'conda',
+ 'version_operator': '>=',
+ },
+})
+
+
+def helper(requirements, instance_dict):
+ for requirement in requirements:
+ if isinstance(requirement, AnyOneOfRequirements):
+ helper(requirement.requirements, instance_dict)
+ elif requirement.__class__.__name__ not in REQUIREMENT_TYPES:
+ raise RuntimeError(
+ '{} not configured'.format(repr(requirement)))
+ else:
+ instance_dict[type(requirement).__name__].add(requirement)
+
+
+def get_all_requirements(bears):
+ bear_requirements = {}
+
+ for bear in bears:
+ instance_dict = collections.defaultdict(set)
+ executable = None
+ if hasattr(bear, 'get_executable'):
+ executable = bear.get_executable()
+ if executable:
+ requirement = ExecutableRequirement(executable)
+ instance_dict['ExecutableRequirement'].add(requirement)
+ helper(bear.REQUIREMENTS, instance_dict)
+ bear_requirements[str(bear.name)] = instance_dict
+
+ return bear_requirements
+
+
+def _to_entry(requirement, default_operator):
+ entry = {}
+
+ if isinstance(requirement, DistributionRequirement):
+ entry['packages'] = dict(sorted(requirement.packages.items()))
+
+ if not requirement.version:
+ requirement_type = requirement.__class__.__name__
+ settings = REQUIREMENT_TYPES[requirement_type]
+ if settings.get('allow_missing_version', False) is True:
+ return entry or None
+ else:
+ raise RuntimeError(
+ '{}({}) has no version'.format(requirement_type,
+ requirement.package))
+
+ if requirement.version[0].isdigit():
+ entry['version'] = default_operator + requirement.version
+ else:
+ assert requirement.version[0] in _VERSION_OPERATORS, \
+ 'Unknown version operator in %s' % requirement.version
+ entry['version'] = requirement.version
+ return entry
+
+
+def _get_requirements(requirements, default_operator, exclude=[]):
+ return dict(
+ (requirement.package, _to_entry(requirement, default_operator))
+ for requirement in requirements
+ if requirement.package not in exclude
+ )
+
+
+def _create_sorted_commented_map(input_dict):
+ if not input_dict:
+ return CommentedMap()
+ return CommentedMap(sorted(input_dict.items(),
+ key=lambda t: t[0]))
+
+
+def get_languages(bears):
+ language_dict = {}
+ for bear in bears:
+ language_dict[str(bear.name)] = list(sorted(bear.LANGUAGES))
+ for key, value in language_dict.items():
+ if 'All' in value:
+ value.remove('All')
+ if 'default' in value:
+ value.remove('default')
+ if not value:
+ language_dict[key] = None
+
+ return language_dict
+
+
+def get_bear_requirement_metadata(bear_requirement_sets, storage=None,
+ old_labels=False):
+ if not storage:
+ storage = {}
+
+ for requirement_type, settings in REQUIREMENT_TYPES.items():
+ requirements = _get_requirements(
+ bear_requirement_sets[requirement_type],
+ settings['version_operator'],
+ settings.get('exclude', [])
+ )
+ if not requirements:
+ continue
+
+ label = settings['prefix']
+ if old_labels:
+ label += '_requirements'
+
+ storage[label] = requirements
+
+ return storage
+
+
+def get_bear_tags(bear, metadata):
+ tags = set()
+
+ requirements = metadata['requirements'] or {}
+ for requirement_type, requirement_items in requirements.items():
+ if requirement_type == 'distro':
+ for name, settings in requirement_items.items():
+ tags.add(name)
+ tags.update(settings['packages'])
+ elif 'default-jre' in requirement_items:
+ tags.add('java')
+
+ tags.add(requirement_type)
+
+ # Extra pip dependencies does not make the bear a pip bear
+ # Allow for 'exe' dependency
+ if 'pip' in tags and tags not in (set(['pip']), set(['pip', 'exe'])):
+ tags.remove('pip')
+
+ if not requirements:
+ tags.add('noreqs')
+
+ tags.add(metadata['subdir'].replace('_', '-').replace('/', '-'))
+
+ if bear.name == 'VHDLLintBear':
+ tags.add('perl')
+
+ if 'exe' in requirements:
+ tags.update(requirements['exe'].keys())
+
+ if requirements.get('pip', {}).get('libclang-py3'):
+ tags.add('clang')
+
+ if 'swift' in tags:
+ tags.add('java')
+
+ # Special cases
+ if bear.name == 'InferBear':
+ # Processes java, but not written in Java
+ if 'java' in tags:
+ tags.remove('java')
+ tags.add('opam')
+
+ elif bear.name == 'CPDBear':
+ # Has no requirements defined yet
+ tags.remove('noreqs')
+ tags.add('java')
+
+ elif bear.name == 'LanguageToolBear':
+ # Has no requirements defined yet
+ tags.add('java')
+ tags.add('languagetool')
+
+ elif bear.name == 'JavaPMDBear':
+ # Has no executable defined
+ tags.add('pmd')
+
+ elif bear.name == 'CPDBear':
+ # Has no executable defined
+ tags.add('cpd')
+
+ elif bear.name == 'VHDLLintBear':
+ # Has no executable defined
+ tags.add('bakalint')
+
+ if bear.name in DISABLED_BEARS:
+ tags.add('disabled')
+
+ return tags
+
+
+def get_metadata(bears, bear_requirements, bear_languages):
+ # Add 1 for the path separator after bears
+ bear_dir_prefix_len = len(PROJECT_BEAR_DIR) + 1
+ metadata = {}
+ for bear in bears:
+ name = str(bear.name)
+ requirements = bear_requirements[name]
+ requirement_metadata = get_bear_requirement_metadata(requirements)
+ if requirement_metadata:
+ requirement_metadata = _create_sorted_commented_map(
+ requirement_metadata)
+ else:
+ requirement_metadata = None
+ directory, filename = os.path.split(bear.source_location)
+ bears_subdirs = directory[bear_dir_prefix_len:].split(os.path.sep)
+ language_metadata = bear_languages[name]
+ if language_metadata:
+ assert sorted(language_metadata) == language_metadata
+ metadata[name] = {
+ 'name': name,
+ 'subdir': '/'.join(bears_subdirs),
+ 'filename': filename,
+ 'requirements': requirement_metadata,
+ 'languages': bear_languages[name],
+ }
+ tags = get_bear_tags(bear, metadata[name])
+ metadata[name]['tags'] = sorted(tags)
+
+ return metadata
+
+
+def deep_update(target, src):
+ for key, value in src.items():
+ if target.get(key) is None:
+ target[key] = copy.deepcopy(value)
+ else:
+ if isinstance(value, list):
+ target[key].extend(value)
+ elif isinstance(value, dict):
+ deep_update(target[key], value)
+ elif isinstance(value, set):
+ target[key].update(value.copy())
+ else:
+ target[key] = copy.copy(value)
+
+
+def deep_diff(target, src):
+ errors = []
+ for key, value in src.items():
+ if key not in target:
+ errors.append((key, 'Missing'))
+ elif target[key] != value:
+ if isinstance(value, list):
+ if [x for x in value if x not in target[key]]:
+ errors.append(key)
+ elif isinstance(value, dict):
+ if target[key] != value:
+ errors.append((key, deep_diff(target[key], value)))
+ elif isinstance(value, set):
+ if set(target[key]).symmetric_difference(value):
+ errors.append(key)
+ else:
+ errors.append((key, target[key]))
+ return errors
+
+
+def merge_requirements(bear_requirements, exclude=['ExecutableRequirement']):
+ merged_requirements = collections.defaultdict(set)
+
+ for bear, bear_requirement_sets in bear_requirements.items():
+ for requirement_type, requirements in bear_requirement_sets.items():
+ if requirement_type not in exclude:
+ for requirement in requirements:
+ merged_requirements[requirement_type].add(requirement)
+
+ return merged_requirements
+
+
+def sort_requirements(req_dict):
+ for _type, settings in REQUIREMENT_TYPES.items():
+ key = settings['prefix'] + '_requirements'
+ req_dict[key] = _create_sorted_commented_map(req_dict.get(key))
+
+
+YAML_MISSING = (
+ 'bear-requirements.yaml not found or is empty. '
+ 'Please fetch it from the repository.'
+)
+
+
+if __name__ == '__main__':
+ args = get_args()
+
+ logging.basicConfig(
+ level=logging.DEBUG if args.debug else logging.WARNING,
+ )
+
+ bear_dirs = [PROJECT_BEAR_DIR]
+
+ if args.bear_dirs is not None:
+ bear_dirs.extend(args.bear_dirs)
+
+ all_bears = get_all_bears(bear_dirs)
+
+ bear_requirements = get_all_requirements(all_bears)
+ instance_dict = merge_requirements(bear_requirements)
+
+ requirements = CommentedMap()
+ requirements.yaml_set_start_comment(
+ 'This is an automatically generated file.\n'
+ 'And should not be edited by hand.')
+
+ requirements['overrides'] = 'package-manager-requirements.yaml'
+ get_bear_requirement_metadata(bear_requirement_sets=instance_dict,
+ storage=requirements, old_labels=True)
+
+ if args.update or args.check:
+ input_file_path = os.path.join(PROJECT_DIR, BEAR_REQUIREMENTS_YAML)
+
+ try:
+ input_file = open(input_file_path, 'r')
+ except FileNotFoundError:
+ print(YAML_MISSING)
+ exit(1)
+
+ input_requirments = yaml.load(input_file)
+
+ if not input_requirments:
+ print(YAML_MISSING)
+ exit(1)
+
+ new_requirments = copy.deepcopy(input_requirments)
+ deep_update(new_requirments, requirements)
+
+ if args.update:
+ requirements = new_requirments
+
+ if args.check:
+ changed = deep_diff(input_requirments, new_requirments)
+ if changed:
+ yaml.dump(changed, sys.stdout)
+ exit(1)
+
+ sort_requirements(requirements)
+
+ if args.output == '-':
+ output = sys.stdout
+ else:
+ output = open(args.output, 'w')
+
+ yaml.dump(requirements, output)
+ output.close()
+
+ language_requirements = get_languages(all_bears)
+ bear_languages = language_requirements
+ language_requirements = _create_sorted_commented_map(language_requirements)
+ file_path = os.path.join(PROJECT_DIR, BEAR_LANGUAGES_YAML)
+ with open(file_path, 'w') as outfile:
+ yaml.indent(mapping=2, sequence=4, offset=2)
+ yaml.dump(language_requirements, outfile)
+
+ metadata = get_metadata(all_bears, bear_requirements, bear_languages)
+ metadata = _create_sorted_commented_map(metadata)
+ file_path = os.path.join(PROJECT_DIR, BEAR_METADATA_YAML)
+ with open(file_path, 'w') as outfile:
+ yaml.indent(mapping=2, sequence=4, offset=2)
+ yaml.dump(metadata, outfile)
diff --git a/.ci/generate_bear_requirements.py b/.ci/generate_bear_requirements.py
deleted file mode 100755
index 1d9b0d871e..0000000000
--- a/.ci/generate_bear_requirements.py
+++ /dev/null
@@ -1,308 +0,0 @@
-#!/usr/bin/env python3
-
-# This program is free software: you can redistribute it and/or modify it
-# under the terms of the GNU Affero General Public License as published by the
-# Free Software Foundation, either version 3 of the License, or (at your
-# option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License
-# for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-
-import argparse
-import collections
-import copy
-import itertools
-import os
-import sys
-
-from ruamel.yaml import YAML, RoundTripDumper
-from ruamel.yaml.comments import CommentedMap
-
-from coalib.bears.BEAR_KIND import BEAR_KIND
-from coalib.collecting.Collectors import collect_bears
-
-from dependency_management.requirements.AnyOneOfRequirements import (
- AnyOneOfRequirements)
-
-yaml = YAML(typ='rt')
-yaml.default_flow_style = False
-yaml.Dumper = RoundTripDumper
-
-BEAR_REQUIREMENTS_YAML = 'bear-requirements.yaml'
-BEAR_LANGUAGES_YAML = 'bear-languages.yaml'
-
-_VERSION_OPERATORS = ('<', '>', '~', '=', '-', '!')
-
-THIS_DIR = os.path.dirname(os.path.abspath(__file__))
-
-PROJECT_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
-
-PROJECT_BEAR_DIR = os.path.abspath(os.path.join(PROJECT_DIR, 'bears'))
-
-SUPPORTED_INSTANCES = (
- 'PipRequirement',
- 'NpmRequirement',
- 'GemRequirement',
- 'ComposerRequirement',
- 'CabalRequirement',
- 'RscriptRequirement',
-)
-
-INSTANCE_NAMES = (
- 'pip_requirements',
- 'npm_requirements',
- 'gem_requirements',
- 'composer_requirements',
- 'cabal_requirements',
- 'r_script_requirements',
-)
-
-
-def get_args():
- parser = argparse.ArgumentParser(
- description='This program generates a yaml requirement file for '
- 'installation of linters that are used by the bears.')
- parser.add_argument('--output', '-o',
- help='name of file to generate, or - for stdout',
- default=os.path.join(PROJECT_DIR,
- BEAR_REQUIREMENTS_YAML))
- parser.add_argument('--bear-dirs', '-d', nargs='+', metavar='DIR',
- help='additional directories which may contain bears')
-
- parser.add_argument('--check', '-c', action='store_true',
- help='performs a dry run, and reports differences.')
- parser.add_argument('--update', '-u', action='store_true',
- help='updates "bear-requirements.yaml" '
- 'instead of overwriting')
- args = parser.parse_args()
-
- return args
-
-
-def get_all_bears(bear_dirs):
- local_bears, global_bears = collect_bears(
- bear_dirs,
- ['**'],
- [BEAR_KIND.LOCAL, BEAR_KIND.GLOBAL],
- warn_if_unused_glob=False)
- return list(itertools.chain(local_bears, global_bears))
-
-
-def get_inherited_requirements():
- inherited_requirements = set()
-
- in_inherited = False
- with open(os.path.join(PROJECT_DIR, 'requirements.txt'), 'r') as file:
- for line in file.read().splitlines():
- if 'inherited' in line:
- in_inherited = True
- continue
- if in_inherited:
- if line.startswith('# '):
- requirement = line[2:]
- inherited_requirements.add(requirement.replace('-', '_'))
- inherited_requirements.add(requirement.replace('_', '-'))
- else:
- in_inherited = False
-
- return inherited_requirements
-
-
-def helper(requirements, instance_dict):
- for requirement in requirements:
- if isinstance(requirement, AnyOneOfRequirements):
- helper(requirement.requirements, instance_dict)
- elif any(type(requirement).__name__ == instance
- for instance in SUPPORTED_INSTANCES):
- instance_dict[type(requirement).__name__].add(requirement)
-
-
-def get_all_requirements(bears):
- instance_dict = collections.defaultdict(set)
-
- for bear in bears:
- helper(bear.REQUIREMENTS, instance_dict)
-
- return instance_dict
-
-
-def _to_entry(requirement, default_operator):
- assert requirement.version, '%s has no version' % requirement.package
- entry = {}
-
- if requirement.version[0].isdigit():
- entry['version'] = default_operator + requirement.version
- else:
- assert requirement.version[0] in _VERSION_OPERATORS, \
- 'Unknown version operator in %s' % requirement.version
- entry['version'] = requirement.version
- return entry
-
-
-def _get_requirements(requirements, default_operator, exclude=[]):
- return dict(
- (requirement.package, _to_entry(requirement, default_operator))
- for requirement in requirements
- if requirement.package not in exclude
- )
-
-
-def get_gem_requirements(requirements):
- return _get_requirements(requirements, '~>')
-
-def get_r_requirements(requirements):
- return _get_requirements(requirements, '>=')
-
-def get_npm_requirements(requirements):
- return _get_requirements(requirements, '~')
-
-
-def get_composer_requirements(requirements):
- return _get_requirements(requirements, '~')
-
-
-def get_pip_requirements(requirements):
- inherited_requirements = get_inherited_requirements()
- return _get_requirements(requirements, '~=', inherited_requirements)
-
-
-def get_cabal_requirements(requirements):
- return _get_requirements(requirements, '==')
-
-
-def _create_sorted_commented_map(input_dict):
- return CommentedMap(sorted(input_dict.items(),
- key=lambda t: t[0]))
-
-
-def get_languages(bears):
- language_dict = {}
- for bear in bears:
- language_dict[str(bear.name)] = list(sorted(bear.LANGUAGES))
- for key, value in language_dict.items():
- if 'All' in value:
- value.remove('All')
- if 'default' in value:
- value.remove('default')
- if not value:
- language_dict[key] = None
-
- return language_dict
-
-
-def deep_update(target, src):
- for key, value in src.items():
- if key not in target:
- target[key] = copy.deepcopy(value)
- else:
- if isinstance(value, list):
- target[key].extend(value)
- elif isinstance(value, dict):
- deep_update(target[key], value)
- elif isinstance(value, set):
- target[key].update(value.copy())
- else:
- target[key] = copy.copy(value)
-
-
-def deep_diff(target, src):
- errors = []
- for key, value in src.items():
- if key not in target:
- errors.append((key, 'Missing'))
- elif target[key] != value:
- if isinstance(value, list):
- if [x for x in value if x not in target[key]]:
- errors.append(key)
- elif isinstance(value, dict):
- if target[key] != value:
- errors.append((key, deep_diff(target[key], value)))
- elif isinstance(value, set):
- if set(target[key]).symmetric_difference(value):
- errors.append(key)
- else:
- errors.append((key, target[key]))
- return errors
-
-
-
-def sort_requirements(req_dict):
- for key in INSTANCE_NAMES:
- req_dict[key] = _create_sorted_commented_map(req_dict[key])
-
-
-if __name__ == '__main__':
- args = get_args()
-
- bear_dirs = [PROJECT_BEAR_DIR]
-
- if args.bear_dirs is not None:
- bear_dirs.extend(args.bear_dirs)
-
- all_bears = get_all_bears(bear_dirs)
-
- instance_dict = get_all_requirements(all_bears)
-
- requirements = CommentedMap()
- requirements.yaml_set_start_comment(
- 'This is an automatically generated file.\n'
- 'And should not be edited by hand.')
-
- requirements['overrides'] = 'coala-build.yaml'
- requirements['gem_requirements'] = get_gem_requirements(
- instance_dict['GemRequirement'])
- requirements['r_script_requirements'] = get_r_requirements(
- instance_dict['RscriptRequirement'])
- requirements['npm_requirements'] = get_npm_requirements(
- instance_dict['NpmRequirement'])
- requirements['pip_requirements'] = get_pip_requirements(
- instance_dict['PipRequirement'])
- requirements['composer_requirements'] = get_composer_requirements(
- instance_dict['ComposerRequirement'])
- requirements['cabal_requirements'] = get_cabal_requirements(
- instance_dict['CabalRequirement'])
-
- if args.update or args.check:
- input_file_path = os.path.join(PROJECT_DIR, BEAR_REQUIREMENTS_YAML)
-
- try:
- input_file = open(input_file_path, 'r')
- except FileNotFoundError:
- print('bear-requirements.yaml not found. '
- 'Run without flags to generate it.')
- exit(1)
-
- input_requirments = yaml.load(input_file)
-
- new_requirments = copy.deepcopy(input_requirments)
- deep_update(new_requirments, requirements)
-
- if args.update:
- requirements = new_requirments
-
- if args.check:
- changed = deep_diff(input_requirments, new_requirments)
- if changed:
- yaml.dump(changed, sys.stdout)
- exit(1)
-
- if args.output == '-':
- output = sys.stdout
- else:
- output = open(args.output, 'w')
-
- language_requirements = get_languages(all_bears)
- language_requirements = _create_sorted_commented_map(language_requirements)
- file_path = os.path.join(PROJECT_DIR, BEAR_LANGUAGES_YAML)
- with open(file_path, 'w') as outfile:
- yaml.indent(mapping=2, sequence=4, offset=2)
- yaml.dump(language_requirements, outfile)
-
- sort_requirements(requirements)
- yaml.dump(requirements, output)
- output.close()
diff --git a/.ci/generate_coverage_thresholds.py b/.ci/generate_coverage_thresholds.py
new file mode 100755
index 0000000000..0ebaa1dadb
--- /dev/null
+++ b/.ci/generate_coverage_thresholds.py
@@ -0,0 +1,30 @@
+#!/usr/bin/env python3
+
+import json
+import os
+import sys
+
+IS_WIN = os.name == 'nt'
+
+
+def main():
+ args = sys.argv[1:]
+ thresholds = {}
+ for test in args:
+ bear = test.replace('tests/', 'bears/')
+ bear = bear.replace('Test.py', '.py').replace('*', '.*')
+
+ threshold = 100
+ if IS_WIN:
+ bear = bear.replace('/', '\\\\')
+ if 'CheckstyleBear' in bear or 'CMakeLintBear' in bear:
+ threshold = 90
+
+ thresholds[bear] = threshold
+
+ with open('.threshold.json', 'w') as f:
+ json.dump(thresholds, f)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/.ci/get_bears.py b/.ci/get_bears.py
new file mode 100755
index 0000000000..7bdb67093e
--- /dev/null
+++ b/.ci/get_bears.py
@@ -0,0 +1,55 @@
+#!/usr/bin/env python3
+
+import glob
+import os
+import os.path
+import sys
+
+THIS_DIR = os.path.dirname(os.path.abspath(__file__))
+
+PROJECT_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
+
+PROJECT_BEAR_DIR = os.path.abspath(os.path.join(PROJECT_DIR, 'bears'))
+
+
+def main():
+ args = sys.argv[1:]
+ do_missing = do_all = False
+ if args[0] == '--all':
+ do_all = True
+ args = args[1:]
+ elif args[0] == '--missing':
+ do_missing = True
+ args = args[1:]
+
+ if do_all or do_missing:
+ all_bears = glob.glob('{}/**/*.py'.format(PROJECT_BEAR_DIR))
+ all_bears = [
+ bear[len(PROJECT_DIR) + 1:].replace(os.path.sep, '/')
+ for bear in all_bears
+ if not bear.endswith('__init__.py')
+ ]
+ if do_all:
+ print(' '.join(sorted(all_bears)))
+ return
+
+ all_bears = set(all_bears)
+
+ bears = set()
+
+ for arg in args:
+ if arg.startswith('tests/'):
+ bear = arg.replace('tests/', 'bears/')
+ bear = bear[:bear.find('Test')] + '.py'
+ else:
+ bear = arg
+ bears.add(bear)
+
+ if do_missing:
+ bears = all_bears - bears
+
+ print(' '.join(sorted(bears)))
+
+
+if __name__ == '__main__':
+ main()
diff --git a/.ci/get_codecov_tags.py b/.ci/get_codecov_tags.py
new file mode 100755
index 0000000000..d3b5edc768
--- /dev/null
+++ b/.ci/get_codecov_tags.py
@@ -0,0 +1,18 @@
+#!/usr/bin/env python3
+
+import sys
+
+# Tags like list, check and collectonly shouldnt appear on codecov
+# but they also shouldnt be submitted to codecov, so they are not
+# removed here as that would hide a bug in tox.ini
+REJECT_TAGS = set(['codecov', 'skip', 'noskip'])
+
+
+def main():
+ env_factors = set(sys.argv[1].split('-'))
+
+ print(','.join(sorted(env_factors - REJECT_TAGS)))
+
+
+if __name__ == '__main__':
+ main()
diff --git a/.ci/get_cov_args.py b/.ci/get_cov_args.py
new file mode 100755
index 0000000000..2331a3f7d7
--- /dev/null
+++ b/.ci/get_cov_args.py
@@ -0,0 +1,20 @@
+#!/usr/bin/env python3
+
+import sys
+
+
+def main():
+ args = sys.argv[1:]
+
+ bears = set()
+
+ for test in args:
+ bear = test.replace('tests/', 'bears/')
+ bear = bear[:bear.find('Test')] + '.py'
+ bears.add(bear)
+
+ print('--cov=' + ' --cov='.join(sorted(bears)))
+
+
+if __name__ == '__main__':
+ main()
diff --git a/.ci/get_tests.py b/.ci/get_tests.py
new file mode 100755
index 0000000000..95895ff5eb
--- /dev/null
+++ b/.ci/get_tests.py
@@ -0,0 +1,142 @@
+#!/usr/bin/env python3
+
+import glob
+import os
+import os.path
+import sys
+
+import yaml
+
+THIS_DIR = os.path.dirname(os.path.abspath(__file__))
+
+PROJECT_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
+
+IS_WIN = os.name == 'nt'
+
+# Clang DLLs x64 were nowadays installed, but the x64 version hangs, so we
+# exclude according tests. See https://github.com/appveyor/ci/issues/495 and
+# https://github.com/appveyor/ci/issues/688
+
+WINDOWS_BROKEN = set((
+ 'bakalint', # not installed
+ 'phpcs', # https://github.com/coala/coala-bears/issues/2916
+ 'pmd', 'cpd', # https://github.com/coala/coala-bears/issues/2908
+ 'mcs', # choco mono isnt providing this in the PATH
+ 'tailor', # installer fails
+ 'shellcheck', # https://github.com/coala/coala-bears/issues/2920
+ # pip
+ 'apertium_lint', # https://gitlab.com/jpsinghgoud/apertium-lint/issues/5
+ 'bandit', # RuntimeError: Unable to output report using 'json' formatter
+ 'clang', # see note above
+ 'cppclean', # https://github.com/myint/cppclean/issues/120
+ 'scspell', # https://github.com/coala/coala-bears/issues/2926
+ 'vint', # https://github.com/Kuniwak/vint/issues/290
+ # gem
+ 'csvlint', # https://github.com/coala/coala-bears/issues/2909
+ 'sqlint', # https://github.com/coala/coala-bears/issues/2923
+ # npm ; try different version
+ 'alex', # https://github.com/coala/coala-bears/issues/2922
+ 'coffeelint', # Extra windows results
+ 'csscomb', # Linter errors
+ 'dockerfile_lint', # test case bug
+ 'elm-format', # https://github.com/coala/coala-bears/issues/2925
+ 'gherkin', # result json decode exception
+ 'jshint', # test case bug
+ 'remark', # remark result text difference due to unicode
+ 'postcss', # https://github.com/coala/coala-bears/issues/2921
+ 'sass-lint', # rule `!important not allowed` not trigger
+ 'textlint', # Unexpected extra result in test
+ # Also textlint plugin for asciidoc requires a compiler.
+ # and should be replaced with plugin asciidoctor which does
+ # not need a compiler
+
+ # No information from linter bear
+ 'eslint', # Two of tests fail
+ 'tslint', # Half of tests fail
+))
+
+
+DISABLE_BEARS = set(os.environ.get('DISABLE_BEARS', '').split(' '))
+
+
+def get_metadata():
+ with open('bear-metadata.yaml') as f:
+ metadata = yaml.load(f, Loader=yaml.BaseLoader)
+
+ return metadata
+
+
+def get_bears(metadata, args, include_disabled=False):
+ bears = []
+
+ for arg in args:
+ for bear in metadata.values():
+ tags = set(bear['tags'])
+
+ if tags.intersection(DISABLE_BEARS):
+ tags.add('disabled')
+
+ if IS_WIN and tags.intersection(WINDOWS_BROKEN):
+ tags.add('disabled')
+
+ if arg in tags and (include_disabled or 'disabled' not in tags):
+ bears.append(bear)
+
+ return bears
+
+
+CLANG_EXTRA_TESTS = [
+ 'tests/c_languages/codeclone_detection/ClangCountingConditionsTest.py',
+ 'tests/c_languages/codeclone_detection/ClangCountVectorCreatorTest.py',
+ 'tests/c_languages/codeclone_detection/CountVectorTest.py',
+ 'tests/c_languages/codeclone_detection/CloneDetectionRoutinesTest.py',
+]
+
+
+def get_tests(bears):
+ # Add 1 for the path separator after bears
+ project_dir_prefix_len = len(PROJECT_DIR) + 1
+
+ tests = set()
+ for bear in bears:
+ name = bear['name']
+ if name.startswith('_'):
+ continue
+ subdir = bear['subdir']
+ # A few test modules are FoobearSomethingTest.py, like
+ # PySafetyBearWithoutMockTest.py
+ testpath = os.path.join('tests', subdir, '{}*Test.py'.format(name))
+ files = glob.glob(testpath)
+ for filename in files:
+ filename = filename.replace(os.path.sep, '/')
+ if filename.startswith('/'):
+ filename = filename[project_dir_prefix_len:]
+ tests.add(filename)
+
+ if subdir == 'c_languages/codeclone_detection':
+ tests.update(CLANG_EXTRA_TESTS)
+
+ elif subdir.startswith('vcs'):
+ tests.add('tests/vcs/CommitBearTest.py')
+
+ return tests
+
+
+def main():
+ args = sys.argv[1:]
+ metadata = get_metadata()
+
+ include_disabled = False
+ if args[0] == '--disabled':
+ include_disabled = True
+ args = args[1:]
+
+ # TODO: pass through any args which are literal test filenames
+
+ bears = get_bears(metadata, args, include_disabled)
+ tests = get_tests(bears)
+ print(' '.join(sorted(tests)))
+
+
+if __name__ == '__main__':
+ main()
diff --git a/.ci/refreshenv.sh b/.ci/refreshenv.sh
new file mode 100644
index 0000000000..49701d4348
--- /dev/null
+++ b/.ci/refreshenv.sh
@@ -0,0 +1,29 @@
+# shellcheck disable=SC2059,SC2154
+# as shellcheck believes the $ in the heredoc are shell variables
+
+function refreshenv
+{
+ powershell -NonInteractive - <<\EOF
+Import-Module "$env:ChocolateyInstall\helpers\chocolateyProfile.psm1"
+
+Update-SessionEnvironment
+
+# Round brackets in variable names cause problems with bash
+Get-ChildItem env:* | %{
+ if (!($_.Name.Contains('('))) {
+ $value = $_.Value
+ if ($_.Name -eq 'PATH') {
+ $value = $value -replace ';',':'
+ }
+ Write-Output ("export " + $_.Name + "='" + $value + "'")
+ }
+} | Out-File -Encoding ascii $env:TEMP\refreshenv.sh
+
+EOF
+
+ # shellcheck disable=SC1090
+ # as shellcheck can not follow this `source`
+ source "$TEMP/refreshenv.sh"
+}
+
+alias RefreshEnv=refreshenv
diff --git a/.ci/run_with_env.cmd b/.ci/run_with_env.cmd
deleted file mode 100644
index da8e020a54..0000000000
--- a/.ci/run_with_env.cmd
+++ /dev/null
@@ -1,88 +0,0 @@
-:: To build extensions for 64 bit Python 3, we need to configure environment
-:: variables to use the MSVC 2010 C++ compilers from GRMSDKX_EN_DVD.iso of:
-:: MS Windows SDK for Windows 7 and .NET Framework 4 (SDK v7.1)
-::
-:: To build extensions for 64 bit Python 2, we need to configure environment
-:: variables to use the MSVC 2008 C++ compilers from GRMSDKX_EN_DVD.iso of:
-:: MS Windows SDK for Windows 7 and .NET Framework 3.5 (SDK v7.0)
-::
-:: 32 bit builds, and 64-bit builds for 3.5 and beyond, do not require specific
-:: environment configurations.
-::
-:: Note: this script needs to be run with the /E:ON and /V:ON flags for the
-:: cmd interpreter, at least for (SDK v7.0)
-::
-:: More details at:
-:: https://github.com/cython/cython/wiki/64BitCythonExtensionsOnWindows
-:: http://stackoverflow.com/a/13751649/163740
-::
-:: Author: Olivier Grisel
-:: License: CC0 1.0 Universal: https://creativecommons.org/publicdomain/zero/1.0/
-::
-:: Notes about batch files for Python people:
-::
-:: Quotes in values are literally part of the values:
-:: SET FOO="bar"
-:: FOO is now five characters long: " b a r "
-:: If you don't want quotes, don't include them on the right-hand side.
-::
-:: The CALL lines at the end of this file look redundant, but if you move them
-:: outside of the IF clauses, they do not run properly in the SET_SDK_64==Y
-:: case, I don't know why.
-@ECHO OFF
-
-SET COMMAND_TO_RUN=%*
-SET WIN_SDK_ROOT=C:\Program Files\Microsoft SDKs\Windows
-SET WIN_WDK=c:\Program Files (x86)\Windows Kits\10\Include\wdf
-
-:: Extract the major and minor versions, and allow for the minor version to be
-:: more than 9. This requires the version number to have two dots in it.
-SET MAJOR_PYTHON_VERSION=%PYTHON_VERSION:~0,1%
-IF "%PYTHON_VERSION:~3,1%" == "." (
- SET MINOR_PYTHON_VERSION=%PYTHON_VERSION:~2,1%
-) ELSE (
- SET MINOR_PYTHON_VERSION=%PYTHON_VERSION:~2,2%
-)
-
-:: Based on the Python version, determine what SDK version to use, and whether
-:: to set the SDK for 64-bit.
-IF %MAJOR_PYTHON_VERSION% == 2 (
- SET WINDOWS_SDK_VERSION="v7.0"
- SET SET_SDK_64=Y
-) ELSE (
- IF %MAJOR_PYTHON_VERSION% == 3 (
- SET WINDOWS_SDK_VERSION="v7.1"
- IF %MINOR_PYTHON_VERSION% LEQ 4 (
- SET SET_SDK_64=Y
- ) ELSE (
- SET SET_SDK_64=N
- IF EXIST "%WIN_WDK%" (
- :: See: https://connect.microsoft.com/VisualStudio/feedback/details/1610302/
- REN "%WIN_WDK%" 0wdf
- )
- )
- ) ELSE (
- ECHO Unsupported Python version: "%MAJOR_PYTHON_VERSION%"
- EXIT 1
- )
-)
-
-IF %PYTHON_ARCH% == 64 (
- IF %SET_SDK_64% == Y (
- ECHO Configuring Windows SDK %WINDOWS_SDK_VERSION% for Python %MAJOR_PYTHON_VERSION% on a 64 bit architecture
- SET DISTUTILS_USE_SDK=1
- SET MSSdk=1
- "%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Setup\WindowsSdkVer.exe" -q -version:%WINDOWS_SDK_VERSION%
- "%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Bin\SetEnv.cmd" /x64 /release
- ECHO Executing: %COMMAND_TO_RUN%
- call %COMMAND_TO_RUN% || EXIT 1
- ) ELSE (
- ECHO Using default MSVC build environment for 64 bit architecture
- ECHO Executing: %COMMAND_TO_RUN%
- call %COMMAND_TO_RUN% || EXIT 1
- )
-) ELSE (
- ECHO Using default MSVC build environment for 32 bit architecture
- ECHO Executing: %COMMAND_TO_RUN%
- call %COMMAND_TO_RUN% || EXIT 1
-)
diff --git a/.ci/store_env_in_registry.py b/.ci/store_env_in_registry.py
new file mode 100755
index 0000000000..6f766d5c03
--- /dev/null
+++ b/.ci/store_env_in_registry.py
@@ -0,0 +1,85 @@
+import os
+
+KEY = 'System\\CurrentControlSet\\Control\\Session Manager\\Environment'
+
+DISCARD_KEYWORDS = tuple([
+ 'awscli',
+ 'azure',
+ 'coverity',
+ 'dnvm',
+ 'mspec',
+ 'nunit',
+ 'odbc',
+ 'privateassemblies',
+ 'python27',
+ 'ruby193',
+ 'service fabric',
+ 'sql',
+ 'subversion',
+ 'testwindow',
+ 'xunit',
+])
+
+# TODOs:
+# - Also get raw unexpanded values from registry to reduce length, and
+# merge them with the current PATH which AppVeyor has populated
+# - also fetch and filter user env vars, also de-duplicate wrt system vars
+# (see https://github.com/reider-roque/pathvar)
+# - Convert to Windows path names, not /c/foo/bar
+# - Replace \\ and \.\ with \
+
+
+def get_tidy_path(original):
+ parts = []
+ dups = set()
+ discard_matches = set()
+
+ for part in original.split(';'):
+ # This will break directories with a trailing space
+ part = part.strip().rstrip('\\')
+ if part in parts:
+ dups.add(part)
+ continue
+
+ part_lower = part.lower()
+ for word in DISCARD_KEYWORDS:
+ if word in part_lower:
+ discard_matches.add(word)
+ break
+ else:
+ parts.append(part)
+
+ if dups:
+ print('Discarded dups:\n {}'.format('\n '.join(sorted(dups))))
+
+ if discard_matches:
+ print('Discarded keyword matches: '
+ '{}'.format(', '.join(sorted(discard_matches))))
+
+ return ';'.join(parts)
+
+
+def set_envvar_in_registry(envvar, value):
+ try:
+ import winreg
+ except ImportError:
+ import _winreg as winreg
+
+ reg = winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE)
+ with winreg.OpenKey(reg, KEY, 0, winreg.KEY_ALL_ACCESS) as regkey:
+ winreg.SetValueEx(regkey, envvar, 0, winreg.REG_EXPAND_SZ, value)
+
+
+def do_all_environ():
+ for key, value in os.environ.items():
+ if key.upper() in ['PWD', 'OLDPWD', 'CWD']:
+ continue
+
+ if key.upper() in ['PATH', 'PSMODULEPATH']:
+ value = get_tidy_path(value)
+ print('%s (len %d) set to:\n%s' % (key, len(value), value))
+ set_envvar_in_registry(key, value)
+
+
+if __name__ == '__main__':
+ do_all_environ()
diff --git a/.coafile b/.coafile
index 0cd53326c0..eb34428d39 100644
--- a/.coafile
+++ b/.coafile
@@ -1,7 +1,8 @@
[all]
files = *.py, bears/**/*.py, tests/**/*.py, .moban.dt/*.py.in
ignore = tests/python/test_files/pylint_test.py, tests/python/bandit_test_files/*,
- tests/python/vulture_test_files/*
+ tests/python/vulture_test_files/*,
+ .ci/Fudge*.ps*
max_line_length = 80
use_spaces = True
@@ -70,6 +71,7 @@ ignore = *.py
[all.yml]
bears = YAMLLintBear
files = *.yml, *.yaml, .ci/*.yml, tests/**/*.yml
+ignore = MYMETA.yml
[bash]
bears = ShellCheckBear
diff --git a/.moban.dt/requirements.txt.jj2 b/.moban.dt/requirements.txt.jj2
index 38b3c91f6f..0fc199a511 100644
--- a/.moban.dt/requirements.txt.jj2
+++ b/.moban.dt/requirements.txt.jj2
@@ -1,4 +1,4 @@
-# NOTE: This file is parsed by .ci/generate_bear_requirements.py
+# NOTE: This file is parsed by .ci/generate_bear_metadata.py
# Edit coala_dependency in coala-build.yaml
git+https://github.com/coala/coala#egg=coala
# Dependencies inherited from coala
diff --git a/.moban.yaml b/.moban.yaml
index 6ac3d2a1b3..2e648987a2 100644
--- a/.moban.yaml
+++ b/.moban.yaml
@@ -12,31 +12,91 @@ package_module: bears
docs_source_dir: API
docs_dir: docs
test_prevent_skips: false
+pip_constraints_file: bear-requirements.txt
+appveyor_global_environment:
+ # Needed for Julia
+ JL_PKG: CoalaBears
+ JULIA_PROJECT: "'@.'"
+ BEAR_LIST: astyle cppcheck xmllint
+ TOX_TEST_SELECTORS: pip-noreqs-npm-gem-go-perl-php-java8-adhoc
+ TOX_FEATURES: check-noskip-codecov
+ TOXENV: py$(PYTHON_MINOR_NODOTS)-$(TOX_TEST_SELECTORS)-$(TOX_FEATURES)-win
+
+python_versions:
+ - 3.6
+ - 3.5
+ - 3.4.4
+
+tox: true
entry_points:
coalabears:
- coala_official_bears = bears
+choco_requirements:
+ # overrides for package managers not yet used
+ visualstudio2017-workload-vctools: false
+ MinGW: false
+ miniconda3: false
+ R.Project: false # https://github.com/coala/coala-bears/issues/2919
+ luarocks: false # https://github.com/coala/coala-bears/issues/2918
+ julia: false # A bit tricky to get Lint.jl to build
+ ghc: false # Compiling from source broken on Travis
+ haskell-stack: false
+ rust: false # https://github.com/coala/coala-bears/issues/50
+ bower: false
+ # extra deps for bears
+ elm-platform: false # https://github.com/coala/coala-bears/issues/2925
+ astyle: true
+ cppcheck: true
+ xsltproc: true
+ ShellCheck: true # https://github.com/coala/coala-bears/issues/2920
+
+requires:
+ - https://gitlab.com/coala/package_manager/
+
configuration:
template_dir:
- .moban.dt/
- - .ci/
- ../coala-mobans/templates/
- ../coala-mobans/assets/
+ - 'package_manager:'
configuration: .moban.yaml
configuration_dir: ../coala-mobans/
targets:
- - setup.py: bears-setup.py.jj2
- - setup.cfg: bears-setup.cfg.jj2
+ # setup.py: bears-setup.py.jj2
+ # setup.cfg: bears-setup.cfg.jj2
+ - Fudgefile: Fudgefile.jj2
+ # Powershell Linting
+ - .ci/PSLint.ps1: ci/PSLint.ps1
+ - .ci/Export-NUnitXml.psm1: ci/Export-NUnitXml.psm1
+ - .ci/PSScriptAnalyzerSettings.psd1: ci/PSScriptAnalyzerSettings.psd1
+ # Fudge
+ - .ci/Fudge.ps1: fudge/Fudge.ps1
+ - .ci/Modules/FudgeTools.psm1: fudge/Modules/FudgeTools.psm1
+ - .ci/FudgeCI.ps1: fudge/FudgeCI.ps1
+ - .ci/PrepareAVVM.ps1: fudge/PrepareAVVM.ps1
+ - .ci/FudgeGenerateFake.ps1: fudge/FudgeGenerateFake.ps1
+ - .ci/FudgePostInstall.ps1: fudge/FudgePostInstall.ps1
+ - .ci/store_env_in_registry.py: ci/store_env_in_registry.py
+ - .ci/refreshenv.sh: ci/refreshenv.sh
+ - .ci/constants.ps1: constants.ps1.jj2
+ - .ci/deps.python-packages.ps1: fudge/deps.python-packages.ps1
- requirements.txt: requirements.txt.jj2
- - test-requirements.txt: bears-test-requirements.txt.jj2
+ # test-requirements.txt: bears-test-requirements.txt.jj2
- bears/VERSION: VERSION.jj2
- Gemfile: Gemfile.jj2
- - DESCRIPTION: DESCRIPTION.jj2
- - package.json: package.json.jj2
- - bear-requirements.txt: bear-requirements.txt.jj2
+ # Needs fix in pm repo
+ # DESCRIPTION: DESCRIPTION.jj2
+ # needs fix to bear
+ # package.json: package.json.jj2
+ # bear-requirements.txt: bear-requirements.txt.jj2
- .ci/appveyor.yml: ci/appveyor.yml.jj2
- - .ci/run_with_env.cmd: run_with_env.cmd
+ # from package manager
+ - .ci/deps.golang.ps1: .ci/deps.golang.ps1
+ - .ci/deps.ActivePerl.ps1: .ci/deps.ActivePerl.ps1
+ - .ci/deps.php.ps1: .ci/deps.php.ps1
+ # Other
- .ci/check_unsupported.sh: ci/check_unsupported.sh.jj2
- runtime.txt: runtime.txt
- netlify.toml: docs/netlify.toml
diff --git a/.travis.yml b/.travis.yml
index 9544d7517b..5343788488 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,14 +1,10 @@
sudo: false
-
-language: python
-python:
- - 3.4
- - 3.5
- - 3.6
+python: 3.6
.disable_global: &disable_global
addons: false
cache: pip
+ python: false
before_install: false
install: false
before_script: false
@@ -21,13 +17,19 @@ python:
stages:
- name: sentinel
if: branch != master OR type = pull_request
- - test
+ - test-python
+ - test-languages
+ - test-other-versions
+ - test-apt
- moban
+ - name: test-master
+ if: branch = master AND type = push
- name: unsupported
if: branch = master AND type = push
.check_moban: &check_moban
<<: *disable_global
+ language: python
python: 3.6
stage: moban
install: pip install moban
@@ -39,11 +41,13 @@ jobs:
- stage: sentinel
# All other jobs will be cancelled if the sentinel job fails
<<: *disable_global
+ language: python
python: 3.6
install: pip install -r requirements.txt ".[alldeps]"
script: coala --non-interactive -V
- python: 2.7
+ language: python
stage: unsupported
env: PIP_NO_COMPILE=1
addons: false
@@ -52,6 +56,7 @@ jobs:
before_script: true
script: .ci/check_unsupported.sh
- python: 3.3
+ language: python
stage: unsupported
env: PIP_NO_COMPILE=1
addons: false
@@ -59,7 +64,9 @@ jobs:
install: true
before_script: true
script: .ci/check_unsupported.sh
+
- python: 3.6
+ language: python
stage: moban
addons: false
cache: pip
@@ -70,67 +77,326 @@ jobs:
after_success: false
after_failure: false
if: branch = master AND type = push
+
+ - stage: test-languages
+ os: windows
+ language: bash
+ python: 3.6.8
+ env:
+ BEAR_LIST="astyle cppcheck xmllint"
+ TOX_TEST_SELECTORS=pip-noreqs-npm-gem-go-perl-php-java8-adhoc
+ cache:
+ directories:
+ - /C/nuget_http_cache
+ - /C/choco_cache
+ - /C/pip_cache
+ before_install:
+ - bash --version
+ - powershell -c "$PSVersionTable"
+ - powershell -c 'Set-MpPreference -DisableRealtimeMonitoring $true'
+ - powershell -c 'Set-MpPreference -DisableArchiveScanning $true'
+ - powershell -cs 'Set-MpPreference -DisableBehaviorMonitoring $true'
+
+ - export NUGET_HTTP_CACHE_PATH=/C/nuget_http_cache
+ - export CHOCO_CACHE_DIR=/C/choco_cache
+ - export PIP_CACHE_DIR=/C/pip_cache
+
+ - export TOXENV=py36-${TOX_TEST_SELECTORS}-${TOX_FEATURES}-win
+
+ - printenv
+
+ - cp .ci/choco.config $ChocolateyInstall/config/chocolatey.config
+ - powershell -c "Set-ExecutionPolicy -ExecutionPolicy Unrestricted
+ -Scope LocalMachine"
+
+ # TODO: move into post-install
+ # These are empty at this stage, and probably not used at all
+ # but pip complains about them not being in the PATH, which might
+ # be for --user support
+ - ls /C/Users/travis/AppData/Roaming/ || true
+ - ls /C/Users/travis/AppData/Roaming/Python/ || true
+ - ls /C/Users/travis/AppData/Roaming/Python/Python36/ || true
+ - ls /C/Users/travis/AppData/Roaming/Python/Python36/Scripts/ || true
+ - PYTHON_PATH=/C/Users/travis/AppData/Roaming/Python/Python36
+ - export PATH="$PYTHON_PATH:$PYTHON_PATH/Scripts:$PATH"
+ - echo $PATH
+
+ - python .ci/store_env_in_registry.py
+ - source .ci/refreshenv.sh
+
+ # TODO: Add support for disabling pre-installed vctools which is
+ # disabled in choco_requirements. Uninstalling vctools fails
+ install:
+ - powershell -c ". .ci/Fudge.ps1 install"
+ - refreshenv
+ - taskkill -IM "gpg-agent.exe" || true
+ before_script:
+ - python --version
+ script:
+ - "sed -i 's/^envlist.*$/envlist: '$TOXENV/ tox.ini"
+ - python -m tox --sitepackages
+ - git checkout tox.ini
+
+ - stage: test-python
+
+ language: python
+ python: 3.6
+ addons:
+ apt:
+ packages: clang-3.4
+ - language: python
+ python: 3.5
+ addons:
+ apt:
+ packages: clang-3.4
+ - language: python
+ python: 3.4
+ addons:
+ apt:
+ packages: clang-3.4
+
+ - stage: test-languages
+ language: csharp
+ mono: 5.20.1
+
+ - language: r
+ r: release
+
+ - language: node_js
+ node_js: 10
+
+ - language: julia
+ # default language is 0.6.4, and has problems with pre-installed Lint.jl
+ julia: 1.1
+ env: JL_PKG=CoalaBears
+ # install not provided https://github.com/travis-ci/travis-build/pull/1571
+ install:
+ - julia --color=yes .ci/deps.julia.jl
+ # Verify compilation works
+ - julia -e 'import Lint.lintfile'
+
+ - language: dart
+ dart: 1.15.0
+
+ - language: perl
+ perl: 5.14
+
+ - language: go
+ go: 1.11
+ install: true
+
+ - language: ruby
+ rvm: 2.4
+
+ - language: php
+ php: 7.2
+
+ - language: java
+ jdk: oraclejdk8
+
+ - language: scala
+ scala: 2.11
+
+ - language: lua
+ env: BEARS=lua
+ addons:
+ apt:
+ packages:
+ - luarocks
+
+ - language: generic
+ env: BEARS=opam INFER_VERSION=0.7.0
+ PATH=$PATH:$HOME/infer-linux64-v$INFER_VERSION/infer/bin
+ addons:
+ apt:
+ sources:
+ - avsm
+ packages:
+ - camlp4-extra
+ - ocaml
+ - opam
+
+ # This is in generic image, as language: haskell isnt working yet
+ - language: generic
+ dist: xenial
+ env: DIST=xenial BEARS=adhoc BEAR_LIST="ghc-mod hlint"
+ # ghc-mod needs parts of ghc, specifically at least /usr/lib/ghc/settings
+ # ghc-mod needs cabal-install
+ # shellcheck is failing in xenial
+ addons:
+ apt:
+ packages:
+ - cabal-install
+ - ghc
+ - ghc-mod
+ - hlint
+
+ # BEARS=apt_get rather than 'apt' to avoid invoking .deps.apt.sh
+ # which is the old circle init
+ - stage: test-apt
+ language: generic
+ dist: xenial
+ env: DIST=xenial BEARS=apt_get DISABLE_BEARS=shellcheck
+ addons:
+ apt:
+ packages:
+ - chktex
+ - cppcheck
+ - devscripts
+ - flawfinder
+ - indent
+ - libperl-critic-perl
+ - libxml2-utils
+ - mono-mcs
+ - php7.0-cli
+ - phpmd
+ - php-codesniffer
+ - verilator
+
+ - stage: test-apt
+ language: generic
+ dist: xenial
+ env: DIST=xenial BEARS=adhoc BEAR_LIST="bakalint default-jre"
+
+ - stage: test-apt
+ language: generic
+ env: DIST=trusty BEARS=adhoc BEAR_LIST=astyle
+ addons:
+ apt:
+ sources:
+ - sourceline: # astyle
+ deb http://ppa.launchpad.net/cs50/ppa/ubuntu trusty main
+ key_url:
+ https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x5BDA2E974A0E822C
+ packages:
+ - astyle
+
+ - stage: test-other-versions
+
+ language: node_js
+ node_js: 9
+ - language: node_js
+ node_js: 8
+ - language: node_js
+ node_js: 7
+ - language: node_js
+ node_js: 6
+
+ - language: ruby
+ rvm: 2.5
+ env: DISABLE_BEARS=csvlint
+ - language: ruby
+ rvm: 2.3
+ - language: ruby
+ rvm: 2.2
+ - language: ruby
+ rvm: 2.1
+
+ - language: go
+ go: '1.10'
+ install: true
+
+ - language: php
+ php: hhvm-3.18
+ - language: php
+ php: 5.5
+
+ - language: scala
+ jdk: oraclejdk8
+ scala: 2.12.2
+
+ # oraclejdk10 is EOL
+ - language: java
+ jdk: oraclejdk9
+ env: DISABLE_BEARS="languagetool tailor"
+
+ - language: java
+ jdk: openjdk11
+ env: DISABLE_BEARS="languagetool tailor"
+ - language: java
+ jdk: openjdk10
+ env: DISABLE_BEARS="languagetool tailor"
+ - language: java
+ jdk: openjdk9
+ env: DISABLE_BEARS="languagetool tailor"
+ - language: java
+ jdk: openjdk7
+ env: DISABLE_BEARS=tailor
+
+ - language: dart
+ dart: 1.14.2
+
+ - language: julia
+ julia: 1.0
+ env: JL_PKG=CoalaBears
+ install:
+ - julia --color=yes .ci/deps.julia.jl
+ - julia -e 'import Lint.lintfile'
+
+ - language: julia
+ julia: 0.7.0
+ env: JL_PKG=CoalaBears
+ install:
+ - julia --color=yes .ci/deps.julia.jl
+ - julia -e 'import Lint.lintfile'
+
+ - language: r
+ r: devel
+
+ - language: r
+ r: oldrel
+
+ - language: generic
+ env: DIST=trusty BEARS=apt_get
+ addons:
+ apt:
+ packages:
+ - chktex
+ - cppcheck
+ - devscripts
+ - flawfinder
+ - indent
+ - libperl-critic-perl
+ - libxml2-utils
+ - mono-mcs
+ - php5-cli
+ - php-codesniffer
+ - shellcheck
+ - verilator
+
+ - stage: test-apt
+ language: generic
+ env: DIST=precise BEARS=apt_get
+ dist: precise
+ addons:
+ apt:
+ packages:
+ - chktex
+ - cppcheck
+ - devscripts
+ - flawfinder
+ - indent
+ - libperl-critic-perl
+ - libxml2-utils
+ - mono-mcs
+ - php5-cli
+ - python3
+ - verilator
+
+ - stage: test-master
+
+ # This is under other languages, as the only bear is tailor
+ # which is java, already covered above. Listed first to schedule
+ # it early onto osx, as they take a while to spin up
+ language: objective_c
+ os: osx
+ dist: false
+
- *check_moban
allow_failures:
- *check_moban
-dist: trusty
-
-.apt_sources: &apt_sources
- - ubuntu-toolchain-r-test
- # avsm # OPAM stable
- - hvr-ghc # Haskell
- - sourceline: # R
- deb https://cloud.r-project.org/bin/linux/ubuntu trusty-cran35/
- key_url:
- https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x51716619E084DAB9
- - sourceline: # Julia
- deb http://ppa.launchpad.net/staticfloat/juliareleases/ubuntu trusty main
- key_url:
- https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xCF979FFA3D3D3ACC
- - sourceline: # astyle
- deb http://ppa.launchpad.net/cs50/ppa/ubuntu trusty main
- key_url:
- https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x5BDA2E974A0E822C
-
-addons:
- apt:
- sources: *apt_sources
- packages:
- - aspcud
- - astyle
- - cabal-install-1.24
- - chktex
- - clang-3.4
- - cppcheck
- - devscripts
- - flawfinder
- - gfortran
- - ghc
- - happy
- - indent
- - julia
- - libarpack2
- - libblas-dev
- - libcolamd2.8.0
- - libfftw3-3
- - liblapack-dev
- - libopenblas-base
- - libpaper-utils
- - libperl-critic-perl
- - libumfpack5.6.2
- - libxml2-utils
- - luarocks
- - mercurial
- # menhir
- - mono-mcs
- # ocaml
- # opam
- - php-codesniffer
- - r-base
- - verilator
-
-cache:
+.cache:
pip: true
directories:
- docs/_build
@@ -147,6 +413,7 @@ cache:
# coala managed data
- ~/nltk_data
# Installed linters
+ # Check this version works
- ~/infer-linux64-v$INFER_VERSION
- ~/.local/
@@ -154,47 +421,93 @@ env:
global:
- TERM=dumb
- R_LIB_USER=~/R/Library
+ - R_PROFILE=~/.Rprofile
- LINTR_COMMENT_BOT=false
- CABAL_VERSION=1.24
- - INFER_VERSION=0.7.0
- - PATH="$HOME/.local/bin:/opt/cabal/$CABAL_VERSION/bin:$PATH:$TRAVIS_BUILD_DIR/node_modules/.bin:$TRAVIS_BUILD_DIR/vendor/bin:$HOME/.cabal/bin:$HOME/infer-linux64-v$INFER_VERSION/infer/bin:$HOME/.local/tailor/tailor-latest/bin:$HOME/.luarocks/bin"
+ - PATH="$HOME/.nuget/packages/fudge/1.3.0/tools:$HOME/.local/bin:/opt/cabal/$CABAL_VERSION/bin:$PATH:$TRAVIS_BUILD_DIR/node_modules/.bin:$TRAVIS_BUILD_DIR/vendor/bin:$HOME/.cabal/bin:$HOME/.local/tailor/tailor-latest/bin:$HOME/.luarocks/bin"
+ # These are only needed by Windows
+ - NUGET_EXE_NO_PROMPT=true
+ - VIRTUALENV_NO_DOWNLOAD=1
+ - VIRTUALENV_NO_PIP=1
+ - VIRTUALENV_NO_SETUPTOOLS=1
+ - VIRTUALENV_VERBOSE=1
+ - PIP_DISABLE_PIP_VERSION_CHECK=1
+ - PIP_YES=1
+ - FudgeCI=${TRAVIS_BUILD_DIR}/.ci/
+ - TOX_FEATURES=check-noskip-codecov
before_install:
- # Install latest stable version of Go using gimme
- - gimme 1.11.5 > setup_go_root.sh
- - source setup_go_root.sh
- - nvm install 6.10.2
- # Remove Ruby directive from Gemfile as this image has 2.2.5
- - sed -i '/^ruby/d' Gemfile
- - .ci/deps.sh
- - .ci/deps.go.sh
- - .ci/deps.cabal.sh
- - .ci/deps.r.sh
- # .ci/deps.opam.sh
- - .ci/deps.java.sh
+ - printenv
+ - mkdir -p ~/bin ~/.local/bin
+
+ - if [ -z "$GOPATH" ]; then
+ export GOPATH="/home/travis/gopath";
+ fi
+ # TODO: implement DISABLE_BEARS globally, esp deps.generic.sh
+
+ - if [ -f .ci/deps.$TRAVIS_LANGUAGE.sh ]; then
+ bash -e -x .ci/deps.$TRAVIS_LANGUAGE.sh;
+ fi
+
+ - python --version
+ # ~/bin is uncached; ~/local/bin is cached; we dont want python/pip in latter
+ - rm -f ~/.local/bin/python* ~/.local/bin/pip*
+
+ - source .ci/deps.pyenv.sh
+ - pyenv versions
+ - pyenv versions --bare
+ # node-gpy needs py27
+ - if [ "$TRAVIS_LANGUAGE" = "node_js" ]; then pyenv global 2.7; hash -r; fi
+ - if [ "$BEARS" = "infer" ]; then pyenv global 2.7; hash -r; fi
+ - pyenv versions
+ - python --version
+
+ # Remove Ruby directive from Gemfile as we test many versions
+ - sed -i.bak '/^ruby/d' Gemfile
+
+ # Used by go, to do nothing; not working
+ - if [ -f .ci/$TRAVIS_LANGUAGE.GNUMakefile ]; then
+ ln -s .ci/$TRAVIS_LANGUAGE.GNUMakefile ./GNUMakefile;
+ fi
# https://github.com/coala/coala/issues/3183
- cp requirements.txt requirements.orig
- - printf '%s\n%s\n%s\n'
+ # Move these requirements into test-requirements.txt
+ - printf '%s\n%s\n%s\n%s\n%s\n%s\n%s\n'
+ "tox~=3.12.0" "tox-travis" "tox-backticks" "tox-pyenv" "tox-venv"
"$(cat test-requirements.txt)"
"$(grep -v '^-r' docs-requirements.txt)"
"$(cat bear-requirements.txt requirements.txt)"
> requirements.txt
+ - ls -al requirements.txt GNUMakefile || true
before_script:
+ - source .ci/deps.python36.sh
+ - hash -r
+ - pyenv versions
+ - python --version
- mv requirements.orig requirements.txt
- - .ci/deps.coala-bears.sh
script:
- - python setup.py bdist_wheel
- - pip install $(ls ./dist/*.whl)"[alldeps]"
- # Ensure bear requirements are in sync with the bear PipRequirement
- - .ci/generate_bear_requirements.py --check --update
- - coala --non-interactive
- - rm bears/java/InferBear.py tests/java/InferBearTest.py
- - rm bears/go/GoReturnsBear.py tests/go/GoReturnsBearTest.py
- - pytest
- - codecov
- - python setup.py docs
+ # TODO: reactivate these
+ # python setup.py bdist_wheel
+ # pip install $(ls ./dist/*.whl)"[alldeps]"
+ # coala --non-interactive
+ - if [ -z "$TRAVIS_PYTHON_VERSION" ]; then
+ pyenv global $(pyenv versions --bare | fgrep '3.6' --max-count 1)
+ $(pyenv versions --bare | fgrep '2.7' --max-count 1);
+ hash -r;
+ fi
+ - python --version
+ # Ensure metadata files are in sync with the bear metadata in the source
+ - if [ -n "$TRAVIS_PYTHON_VERSION" ]; then
+ PYTHONPATH=. .ci/generate_bear_metadata.py --debug --update;
+ fi
+ - if [ -z "$TRAVIS_PYTHON_VERSION" ]; then
+ python -m pip install --upgrade --user
+ tox~=3.12.0 tox-travis tox-backticks tox-pyenv tox-venv;
+ fi
+ - python -m tox
+ # python setup.py docs
notifications:
email: false
diff --git a/DESCRIPTION b/DESCRIPTION
index 643cc9b57f..3a4a67993e 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,3 +1,6 @@
Package: coala
Version: 0.10
Depends: R (>= 3.1.0), lintr, formatR
+Imports:
+ lintr,
+ formatR
diff --git a/Fudgefile b/Fudgefile
new file mode 100644
index 0000000000..ba5a989ea2
--- /dev/null
+++ b/Fudgefile
@@ -0,0 +1,111 @@
+{
+ "pack": {
+ "ActivePerl": ".ci/nuspecs/ActivePerl.nuspec",
+ "adoptopenjdk": ".ci/nuspecs/adoptopenjdk.nuspec",
+ "golang": ".ci/nuspecs/golang.nuspec",
+ "hg": ".ci/nuspecs/hg.nuspec",
+ "maven": ".ci/nuspecs/maven.nuspec",
+ "nodejs": ".ci/nuspecs/nodejs.nuspec",
+ "python": ".ci/nuspecs/python.nuspec",
+ "ruby": ".ci/nuspecs/ruby.nuspec",
+ "ruby2.devkit": ".ci/nuspecs/ruby2.devkit.nuspec"
+ },
+ "packages": [
+ {
+ "name": "msys2",
+ "params": "/InstallDir:C:\\msys64 /NoUpdate",
+ "source": ""
+ },
+ {
+ "appveyor_id": true,
+ "name": "hg",
+ "source": "",
+ "version": "5.0"
+ },
+ {
+ "appveyor_id": "python",
+ "name": "python",
+ "source": "",
+ "version": "3.6.8"
+ },
+ {
+ "appveyor_id": "node",
+ "name": "nodejs",
+ "source": "",
+ "version": "11.13.0"
+ },
+ {
+ "appveyor_id": "ruby",
+ "name": "ruby",
+ "source": "",
+ "version": "2.5.3.1"
+ },
+ {
+ "appveyor_id": true,
+ "name": "ruby2.devkit",
+ "source": "",
+ "version": "4.7.2.2013022403"
+ },
+ {
+ "appveyor_id": "go",
+ "name": "golang",
+ "source": "",
+ "version": "1.9.7"
+ },
+ {
+ "appveyor_id": "jdk",
+ "name": "adoptopenjdk",
+ "source": "",
+ "version": "8.192"
+ },
+ {
+ "appveyor_id": true,
+ "name": "ActivePerl",
+ "source": "",
+ "version": "5.24.3.2404"
+ },
+ {
+ "appveyor_id": true,
+ "name": "maven",
+ "source": "",
+ "version": "3.5.4"
+ },
+ {
+ "name": "php",
+ "source": ""
+ },
+ {
+ "name": "composer",
+ "source": ""
+ },
+ {
+ "name": "PSScriptAnalyzer",
+ "source": ""
+ },
+ {
+ "name": "astyle",
+ "source": ""
+ },
+ {
+ "name": "cppcheck",
+ "source": ""
+ },
+ {
+ "name": "xsltproc",
+ "source": ""
+ },
+ {
+ "name": "ShellCheck",
+ "source": ""
+ }
+ ],
+ "scripts": {
+ "post": {
+ "install": ". $env:FudgeCI/FudgePostInstall.ps1; Invoke-PostInstall"
+ },
+ "pre": {
+ "install": ". $env:FudgeCI/FudgeCI.ps1; Invoke-FudgeCI"
+ }
+ },
+ "source": "https://chocolatey.org/api/v2/"
+}
diff --git a/JuliaProject.toml b/JuliaProject.toml
new file mode 100644
index 0000000000..237ecc7ee8
--- /dev/null
+++ b/JuliaProject.toml
@@ -0,0 +1,5 @@
+name = "CoalaBears"
+uuid = "6344a49d-a50a-4848-8f08-86ec175de5a8"
+
+[deps]
+Lint = "d4b2101a-7710-563d-8e49-77b01dd33fad"
diff --git a/Makefile.PL b/Makefile.PL
new file mode 100644
index 0000000000..e889d73de6
--- /dev/null
+++ b/Makefile.PL
@@ -0,0 +1,6 @@
+use ExtUtils::MakeMaker;
+WriteMakefile(
+ NAME => 'Coala::Bears',
+ VERSION => '0.10',
+ PREREQ_PM => {Perl::Critic => 1.126},
+);
diff --git a/Project.toml b/Project.toml
new file mode 120000
index 0000000000..e7e293e6cd
--- /dev/null
+++ b/Project.toml
@@ -0,0 +1 @@
+JuliaProject.toml
\ No newline at end of file
diff --git a/REQUIRE b/REQUIRE
new file mode 100644
index 0000000000..eb8ae24fed
--- /dev/null
+++ b/REQUIRE
@@ -0,0 +1,2 @@
+julia
+Lint
diff --git a/bear-languages.yaml b/bear-languages.yaml
index 2569a95f01..b8095b55a9 100644
--- a/bear-languages.yaml
+++ b/bear-languages.yaml
@@ -160,6 +160,8 @@ GitCommitBear:
- Git
GitCommitMetadataBear:
- Git
+GitIgnoreBear:
+ - Git
GitLinearCommitBear:
- Git
GitRevertInspectBear:
diff --git a/bear-metadata.yaml b/bear-metadata.yaml
new file mode 100644
index 0000000000..2f3a2e6104
--- /dev/null
+++ b/bear-metadata.yaml
@@ -0,0 +1,2590 @@
+AlexBear:
+ name: AlexBear
+ subdir: natural_language
+ filename: AlexBear.py
+ requirements:
+ exe:
+ alex:
+ npm:
+ alex:
+ version: ~3
+ languages:
+ - Natural Language
+ tags:
+ - alex
+ - exe
+ - natural-language
+ - npm
+AnnotationBear:
+ name: AnnotationBear
+ subdir: general
+ filename: AnnotationBear.py
+ requirements:
+ languages:
+ tags:
+ - general
+ - noreqs
+ApertiumLintBear:
+ name: ApertiumLintBear
+ subdir: apertium
+ filename: ApertiumLintBear.py
+ requirements:
+ exe:
+ apertium_lint:
+ pip:
+ apertium-lint:
+ version: ~=0.29
+ lxml:
+ version: ==3.6.0
+ languages:
+ - Apertium
+ tags:
+ - apertium
+ - apertium_lint
+ - exe
+ - pip
+ArtisticStyleBear:
+ name: ArtisticStyleBear
+ subdir: c_languages
+ filename: ArtisticStyleBear.py
+ requirements:
+ distro:
+ astyle:
+ packages:
+ apt_get: astyle
+ dnf: astyle
+ exe:
+ astyle:
+ languages:
+ - C
+ - C#
+ - CPP
+ - Java
+ - Objective-C
+ tags:
+ - apt_get
+ - astyle
+ - c-languages
+ - distro
+ - dnf
+ - exe
+BanditBear:
+ name: BanditBear
+ subdir: python
+ filename: BanditBear.py
+ requirements:
+ exe:
+ bandit:
+ pip:
+ bandit:
+ version: ~=1.2
+ languages:
+ - Python
+ - Python 2
+ - Python 3
+ tags:
+ - bandit
+ - exe
+ - pip
+ - python
+BashateBear:
+ name: BashateBear
+ subdir: shell
+ filename: BashateBear.py
+ requirements:
+ exe:
+ bashate:
+ pip:
+ bashate:
+ version: ~=0.5.1
+ languages:
+ - bash
+ tags:
+ - bashate
+ - exe
+ - pip
+ - shell
+BootLintBear:
+ name: BootLintBear
+ subdir: hypertext
+ filename: BootLintBear.py
+ requirements:
+ exe:
+ bootlint:
+ npm:
+ bootlint:
+ version: ~0
+ languages:
+ - HTML
+ tags:
+ - bootlint
+ - exe
+ - hypertext
+ - npm
+CISkipInspectBear:
+ name: CISkipInspectBear
+ subdir: vcs/git
+ filename: CISkipInspectBear.py
+ requirements:
+ languages:
+ - Git
+ tags:
+ - noreqs
+ - vcs-git
+CMakeLintBear:
+ name: CMakeLintBear
+ subdir: cmake
+ filename: CMakeLintBear.py
+ requirements:
+ exe:
+ cmakelint:
+ pip:
+ cmakelint:
+ version: ~=1.3
+ languages:
+ - CMake
+ tags:
+ - cmake
+ - cmakelint
+ - exe
+ - pip
+CPDBear:
+ name: CPDBear
+ subdir: general
+ filename: CPDBear.py
+ requirements:
+ languages:
+ - C#
+ - CPP
+ - Fortran
+ - Go
+ - JSP
+ - Java
+ - JavaScript
+ - Matlab
+ - Objective-C
+ - Octave
+ - PHP
+ - PLSQL
+ - Python
+ - Python 2
+ - Python 3
+ - Ruby
+ - Scala
+ - Swift
+ tags:
+ - cpd
+ - general
+ - java
+CPPCheckBear:
+ name: CPPCheckBear
+ subdir: c_languages
+ filename: CPPCheckBear.py
+ requirements:
+ distro:
+ cppcheck:
+ packages:
+ apt_get: cppcheck
+ brew: cppcheck
+ dnf: cppcheck
+ pacman: cppcheck
+ pkg: cppcheck
+ portage: cppcheck
+ xbps: cppcheck
+ yum: cppcheck
+ zypper: cppcheck
+ exe:
+ cppcheck:
+ languages:
+ - C
+ - CPP
+ tags:
+ - apt_get
+ - brew
+ - c-languages
+ - cppcheck
+ - distro
+ - dnf
+ - exe
+ - pacman
+ - pkg
+ - portage
+ - xbps
+ - yum
+ - zypper
+CPPCleanBear:
+ name: CPPCleanBear
+ subdir: c_languages
+ filename: CPPCleanBear.py
+ requirements:
+ exe:
+ cppclean:
+ pip:
+ cppclean:
+ version: ~=0.12.0
+ languages:
+ - CPP
+ tags:
+ - c-languages
+ - cppclean
+ - exe
+ - pip
+CPPLintBear:
+ name: CPPLintBear
+ subdir: c_languages
+ filename: CPPLintBear.py
+ requirements:
+ exe:
+ cpplint:
+ pip:
+ cpplint:
+ version: ~=1.3
+ languages:
+ - CPP
+ tags:
+ - c-languages
+ - cpplint
+ - exe
+ - pip
+CSSAutoPrefixBear:
+ name: CSSAutoPrefixBear
+ subdir: css
+ filename: CSSAutoPrefixBear.py
+ requirements:
+ exe:
+ postcss:
+ npm:
+ postcss-cli:
+ version: ~2
+ autoprefixer:
+ version: ~7.2.0
+ languages:
+ - CSS
+ tags:
+ - css
+ - exe
+ - npm
+ - postcss
+CSSCombBear:
+ name: CSSCombBear
+ subdir: css
+ filename: CSSCombBear.py
+ requirements:
+ exe:
+ csscomb:
+ npm:
+ csscomb:
+ version: ~4.2.0
+ languages:
+ - CSS
+ tags:
+ - css
+ - csscomb
+ - exe
+ - npm
+CSSLintBear:
+ name: CSSLintBear
+ subdir: css
+ filename: CSSLintBear.py
+ requirements:
+ exe:
+ csslint:
+ npm:
+ csslint:
+ version: ~1
+ languages:
+ - CSS
+ tags:
+ - css
+ - csslint
+ - exe
+ - npm
+CSVLintBear:
+ name: CSVLintBear
+ subdir: csv
+ filename: CSVLintBear.py
+ requirements:
+ exe:
+ csvlint:
+ gem:
+ csvlint:
+ version: ~>0.4.0
+ languages:
+ - CSV
+ tags:
+ - csv
+ - csvlint
+ - exe
+ - gem
+CSecurityBear:
+ name: CSecurityBear
+ subdir: c_languages
+ filename: CSecurityBear.py
+ requirements:
+ distro:
+ flawfinder:
+ packages:
+ apt_get: flawfinder
+ brew: flawfinder
+ dnf: flawfinder
+ pacman: flawfinder
+ pkg: flawfinder
+ portage: flawfinder
+ xbps: flawfinder
+ yum: flawfinder
+ zypper: flawfinder
+ exe:
+ flawfinder:
+ languages:
+ - C
+ - CPP
+ tags:
+ - apt_get
+ - brew
+ - c-languages
+ - distro
+ - dnf
+ - exe
+ - flawfinder
+ - pacman
+ - pkg
+ - portage
+ - xbps
+ - yum
+ - zypper
+CSharpLintBear:
+ name: CSharpLintBear
+ subdir: c_languages
+ filename: CSharpLintBear.py
+ requirements:
+ distro:
+ mono:
+ packages:
+ apt_get: mono-mcs
+ brew: mono
+ dnf: mono
+ pacman: mono
+ pkg: mono
+ portage: dev-lang/mono
+ xbps: mono
+ yum: mono
+ zypper: mono
+ exe:
+ mcs:
+ languages:
+ - C#
+ tags:
+ - apt_get
+ - brew
+ - c-languages
+ - distro
+ - dnf
+ - exe
+ - mcs
+ - mono
+ - pacman
+ - pkg
+ - portage
+ - xbps
+ - yum
+ - zypper
+CheckstyleBear:
+ name: CheckstyleBear
+ subdir: java
+ filename: CheckstyleBear.py
+ requirements:
+ distro:
+ default-jre:
+ packages:
+ apt_get: default-jre
+ exe:
+ java:
+ languages:
+ - Java
+ tags:
+ - apt_get
+ - default-jre
+ - distro
+ - exe
+ - java
+ClangASTPrintBear:
+ name: ClangASTPrintBear
+ subdir: c_languages/codeclone_detection
+ filename: ClangASTPrintBear.py
+ requirements:
+ pip:
+ libclang-py3:
+ version: ~=3.4.0
+ languages:
+ - C
+ - CPP
+ - CUDA
+ - Objective-C
+ - Objective-CPP
+ - OpenCL
+ - OpenMP
+ tags:
+ - c-languages-codeclone-detection
+ - clang
+ - pip
+ClangBear:
+ name: ClangBear
+ subdir: c_languages
+ filename: ClangBear.py
+ requirements:
+ pip:
+ libclang-py3:
+ version: ~=3.4.0
+ languages:
+ - C
+ - CPP
+ - CUDA
+ - Objective-C
+ - Objective-CPP
+ - OpenCL
+ - OpenMP
+ tags:
+ - c-languages
+ - clang
+ - pip
+ClangCloneDetectionBear:
+ name: ClangCloneDetectionBear
+ subdir: c_languages/codeclone_detection
+ filename: ClangCloneDetectionBear.py
+ requirements:
+ pip:
+ libclang-py3:
+ version: ~=3.4.0
+ languages:
+ - C
+ - CPP
+ - CUDA
+ - Objective-C
+ - Objective-CPP
+ - OpenCL
+ - OpenMP
+ tags:
+ - c-languages-codeclone-detection
+ - clang
+ - pip
+ClangComplexityBear:
+ name: ClangComplexityBear
+ subdir: c_languages
+ filename: ClangComplexityBear.py
+ requirements:
+ pip:
+ libclang-py3:
+ version: ~=3.4.0
+ languages:
+ - C
+ - CPP
+ - CUDA
+ - Objective-C
+ - Objective-CPP
+ - OpenCL
+ - OpenMP
+ tags:
+ - c-languages
+ - clang
+ - pip
+ClangFunctionDifferenceBear:
+ name: ClangFunctionDifferenceBear
+ subdir: c_languages/codeclone_detection
+ filename: ClangFunctionDifferenceBear.py
+ requirements:
+ pip:
+ munkres3:
+ version: ~=1.0
+ libclang-py3:
+ version: ~=3.4.0
+ languages:
+ - C
+ - CPP
+ - CUDA
+ - Objective-C
+ - Objective-CPP
+ - OpenCL
+ - OpenMP
+ tags:
+ - c-languages-codeclone-detection
+ - clang
+ - pip
+CoffeeLintBear:
+ name: CoffeeLintBear
+ subdir: coffee_script
+ filename: CoffeeLintBear.py
+ requirements:
+ exe:
+ coffeelint:
+ npm:
+ coffeelint:
+ version: ~1
+ languages:
+ - CoffeeScript
+ tags:
+ - coffee-script
+ - coffeelint
+ - exe
+ - npm
+DartLintBear:
+ name: DartLintBear
+ subdir: dart
+ filename: DartLintBear.py
+ requirements:
+ distro:
+ dart:
+ packages:
+ brew: dart
+ exe:
+ dartanalyzer:
+ languages:
+ - Dart
+ tags:
+ - brew
+ - dart
+ - dartanalyzer
+ - distro
+ - exe
+DennisBear:
+ name: DennisBear
+ subdir: gettext
+ filename: DennisBear.py
+ requirements:
+ exe:
+ dennis-cmd:
+ pip:
+ dennis:
+ version: ~=0.9
+ languages:
+ - po
+ - pot
+ tags:
+ - dennis-cmd
+ - exe
+ - gettext
+ - pip
+DocGrammarBear:
+ name: DocGrammarBear
+ subdir: documentation
+ filename: DocGrammarBear.py
+ requirements:
+ pip:
+ language-check:
+ version: ~=1.0
+ languages:
+ - c
+ - cpp
+ - cs
+ - fortran
+ - golang
+ - java
+ - objective-c
+ - php
+ - python
+ - python3
+ - tcl
+ - vhdl
+ tags:
+ - documentation
+ - pip
+DockerfileLintBear:
+ name: DockerfileLintBear
+ subdir: configfiles
+ filename: DockerfileLintBear.py
+ requirements:
+ exe:
+ dockerfile_lint:
+ npm:
+ dockerfile_lint:
+ version: ~0.3.2
+ languages:
+ - Dockerfile
+ tags:
+ - configfiles
+ - dockerfile_lint
+ - exe
+ - npm
+DocumentationStyleBear:
+ name: DocumentationStyleBear
+ subdir: documentation
+ filename: DocumentationStyleBear.py
+ requirements:
+ languages:
+ - c
+ - cpp
+ - cs
+ - fortran
+ - golang
+ - java
+ - objective-c
+ - php
+ - python
+ - python3
+ - tcl
+ - vhdl
+ tags:
+ - documentation
+ - noreqs
+DuplicateFileBear:
+ name: DuplicateFileBear
+ subdir: general
+ filename: DuplicateFileBear.py
+ requirements:
+ languages:
+ tags:
+ - general
+ - noreqs
+ESLintBear:
+ name: ESLintBear
+ subdir: js
+ filename: ESLintBear.py
+ requirements:
+ exe:
+ eslint:
+ npm:
+ typescript-eslint-parser:
+ version: ~12.0.0
+ eslint-plugin-typescript:
+ version: ~0.8.1
+ eslint-plugin-markdown:
+ version: ~1.0.0-beta.6
+ babel-eslint:
+ version: ~8.0
+ eslint-plugin-import:
+ version: ~2
+ eslint-plugin-html:
+ version: ~3.2.2
+ eslint:
+ version: ~3
+ languages:
+ - HTML
+ - JSX
+ - JavaScript
+ - Markdown
+ - Typescript
+ tags:
+ - eslint
+ - exe
+ - js
+ - npm
+ElmLintBear:
+ name: ElmLintBear
+ subdir: elm
+ filename: ElmLintBear.py
+ requirements:
+ exe:
+ elm-format:
+ npm:
+ elm:
+ version: ~0.18
+ languages:
+ - Elm
+ tags:
+ - elm
+ - elm-format
+ - exe
+ - npm
+FilenameBear:
+ name: FilenameBear
+ subdir: general
+ filename: FilenameBear.py
+ requirements:
+ languages:
+ tags:
+ - general
+ - noreqs
+FormatRBear:
+ name: FormatRBear
+ subdir: r
+ filename: FormatRBear.py
+ requirements:
+ distro:
+ r-cran-formatr:
+ packages:
+ apt_get: r-cran-formatr
+ zypper: R-formatR
+ exe:
+ Rscript:
+ r_script:
+ formatR:
+ languages:
+ - R
+ tags:
+ - Rscript
+ - apt_get
+ - distro
+ - exe
+ - r
+ - r-cran-formatr
+ - r_script
+ - zypper
+GNUIndentBear:
+ name: GNUIndentBear
+ subdir: c_languages
+ filename: GNUIndentBear.py
+ requirements:
+ distro:
+ indent:
+ packages:
+ apt_get: indent
+ brew: indent
+ dnf: indent
+ pacman: indent
+ pkg: indent
+ portage: indent
+ xbps: indent
+ yum: indent
+ zypper: indent
+ exe:
+ indent:
+ languages:
+ - C
+ - CPP
+ tags:
+ - apt_get
+ - brew
+ - c-languages
+ - distro
+ - dnf
+ - exe
+ - indent
+ - pacman
+ - pkg
+ - portage
+ - xbps
+ - yum
+ - zypper
+GhcModBear:
+ name: GhcModBear
+ subdir: haskell
+ filename: GhcModBear.py
+ requirements:
+ cabal:
+ ghc-mod:
+ version: ==5.6.0.0
+ distro:
+ ghc-mod:
+ packages:
+ apt_get: ghc-mod
+ brew: ghc-mod
+ dnf: ghc-mod
+ pacman: ghc-mod
+ pkg: ghc-mod
+ portage: ghc-mod
+ xbps: ghc-mod
+ yum: ghc-mod
+ zypper: ghc-mod
+ exe:
+ ghc-mod:
+ languages:
+ - Haskell
+ tags:
+ - apt_get
+ - brew
+ - cabal
+ - distro
+ - dnf
+ - exe
+ - ghc-mod
+ - haskell
+ - pacman
+ - pkg
+ - portage
+ - xbps
+ - yum
+ - zypper
+GherkinLintBear:
+ name: GherkinLintBear
+ subdir: gherkin
+ filename: GherkinLintBear.py
+ requirements:
+ exe:
+ gherkin-lint:
+ npm:
+ gherkin-lint:
+ version: ~2
+ languages:
+ - Gherkin
+ tags:
+ - exe
+ - gherkin
+ - gherkin-lint
+ - npm
+GitCommitBear:
+ name: GitCommitBear
+ subdir: vcs/git
+ filename: GitCommitBear.py
+ requirements:
+ pip:
+ git-url-parse:
+ version: ~=1.1
+ nltk:
+ version: ~=3.2
+ languages:
+ - Git
+ tags:
+ - pip
+ - vcs-git
+GitCommitMetadataBear:
+ name: GitCommitMetadataBear
+ subdir: vcs/git
+ filename: GitCommitMetadataBear.py
+ requirements:
+ languages:
+ - Git
+ tags:
+ - noreqs
+ - vcs-git
+GitIgnoreBear:
+ name: GitIgnoreBear
+ subdir: vcs/git
+ filename: GitIgnoreBear.py
+ requirements:
+ languages:
+ - Git
+ tags:
+ - noreqs
+ - vcs-git
+GitLinearCommitBear:
+ name: GitLinearCommitBear
+ subdir: vcs/git
+ filename: GitLinearCommitBear.py
+ requirements:
+ languages:
+ - Git
+ tags:
+ - noreqs
+ - vcs-git
+GitRevertInspectBear:
+ name: GitRevertInspectBear
+ subdir: vcs/git
+ filename: GitRevertInspectBear.py
+ requirements:
+ languages:
+ - Git
+ tags:
+ - noreqs
+ - vcs-git
+GoErrCheckBear:
+ name: GoErrCheckBear
+ subdir: go
+ filename: GoErrCheckBear.py
+ requirements:
+ exe:
+ errcheck:
+ go:
+ github.com/kisielk/errcheck:
+ languages:
+ - Go
+ tags:
+ - errcheck
+ - exe
+ - go
+GoImportsBear:
+ name: GoImportsBear
+ subdir: go
+ filename: GoImportsBear.py
+ requirements:
+ exe:
+ goimports:
+ go:
+ golang.org/x/tools/cmd/goimports:
+ languages:
+ - Go
+ tags:
+ - exe
+ - go
+ - goimports
+GoLintBear:
+ name: GoLintBear
+ subdir: go
+ filename: GoLintBear.py
+ requirements:
+ exe:
+ golint:
+ go:
+ github.com/golang/lint/golint:
+ languages:
+ - Go
+ tags:
+ - exe
+ - go
+ - golint
+GoReturnsBear:
+ name: GoReturnsBear
+ subdir: go
+ filename: GoReturnsBear.py
+ requirements:
+ exe:
+ goreturns:
+ go:
+ sourcegraph.com/sqs/goreturns:
+ languages:
+ - Go
+ tags:
+ - exe
+ - go
+ - goreturns
+GoTypeBear:
+ name: GoTypeBear
+ subdir: go
+ filename: GoTypeBear.py
+ requirements:
+ exe:
+ gotype:
+ go:
+ golang.org/x/tools/cmd/gotype:
+ languages:
+ - Go
+ tags:
+ - exe
+ - go
+ - gotype
+GoVetBear:
+ name: GoVetBear
+ subdir: go
+ filename: GoVetBear.py
+ requirements:
+ exe:
+ go:
+ go:
+ golang.org/cmd/vet:
+ languages:
+ - Go
+ tags:
+ - exe
+ - go
+GofmtBear:
+ name: GofmtBear
+ subdir: go
+ filename: GofmtBear.py
+ requirements:
+ exe:
+ gofmt:
+ go:
+ golang.org/cmd/gofmt:
+ languages:
+ - Go
+ tags:
+ - exe
+ - go
+ - gofmt
+HAMLLintBear:
+ name: HAMLLintBear
+ subdir: haml
+ filename: HAMLLintBear.py
+ requirements:
+ exe:
+ haml-lint:
+ gem:
+ haml_lint:
+ version: ~>0.27.0
+ languages:
+ - Haml
+ tags:
+ - exe
+ - gem
+ - haml
+ - haml-lint
+HTMLHintBear:
+ name: HTMLHintBear
+ subdir: hypertext
+ filename: HTMLHintBear.py
+ requirements:
+ exe:
+ htmlhint:
+ npm:
+ htmlhint:
+ version: ~0.9.13
+ languages:
+ - HTML
+ tags:
+ - exe
+ - htmlhint
+ - hypertext
+ - npm
+HTMLLintBear:
+ name: HTMLLintBear
+ subdir: hypertext
+ filename: HTMLLintBear.py
+ requirements:
+ exe:
+ /usr/bin/python3:
+ pip:
+ html-linter:
+ version: ~=0.4.0
+ languages:
+ - HTML
+ - Jinja2
+ - PHP
+ tags:
+ - /usr/bin/python3
+ - exe
+ - hypertext
+ - pip
+HTTPSBear:
+ name: HTTPSBear
+ subdir: general
+ filename: HTTPSBear.py
+ requirements:
+ languages:
+ tags:
+ - general
+ - noreqs
+HTTPoliceLintBear:
+ name: HTTPoliceLintBear
+ subdir: hypertext
+ filename: HTTPoliceLintBear.py
+ requirements:
+ exe:
+ httpolice:
+ pip:
+ HTTPolice:
+ version: ~=0.5.2
+ languages:
+ - HAR
+ tags:
+ - exe
+ - httpolice
+ - hypertext
+ - pip
+HappinessLintBear:
+ name: HappinessLintBear
+ subdir: js
+ filename: HappinessLintBear.py
+ requirements:
+ exe:
+ happiness:
+ npm:
+ happiness:
+ version: ~10
+ languages:
+ - JavaScript
+ tags:
+ - exe
+ - happiness
+ - js
+ - npm
+HaskellLintBear:
+ name: HaskellLintBear
+ subdir: haskell
+ filename: HaskellLintBear.py
+ requirements:
+ cabal:
+ hlint:
+ version: ==1.9.27
+ distro:
+ hlint:
+ packages:
+ apt_get: hlint
+ exe:
+ hlint:
+ languages:
+ - Haskell
+ tags:
+ - apt_get
+ - cabal
+ - distro
+ - exe
+ - haskell
+ - hlint
+HgCommitBear:
+ name: HgCommitBear
+ subdir: vcs/mercurial
+ filename: HgCommitBear.py
+ requirements:
+ pip:
+ git-url-parse:
+ version: ~=1.1
+ nltk:
+ version: ~=3.2
+ languages:
+ - Hg
+ tags:
+ - pip
+ - vcs-mercurial
+IndentationBear:
+ name: IndentationBear
+ subdir: general
+ filename: IndentationBear.py
+ requirements:
+ languages:
+ tags:
+ - general
+ - noreqs
+InferBear:
+ name: InferBear
+ subdir: java
+ filename: InferBear.py
+ requirements:
+ exe:
+ infer:
+ languages:
+ - Java
+ tags:
+ - exe
+ - infer
+ - opam
+InvalidLinkBear:
+ name: InvalidLinkBear
+ subdir: general
+ filename: InvalidLinkBear.py
+ requirements:
+ languages:
+ tags:
+ - general
+ - noreqs
+JSComplexityBear:
+ name: JSComplexityBear
+ subdir: js
+ filename: JSComplexityBear.py
+ requirements:
+ exe:
+ cr:
+ npm:
+ complexity-report:
+ version: ~2.0.0-alpha
+ languages:
+ - JavaScript
+ tags:
+ - cr
+ - exe
+ - js
+ - npm
+JSHintBear:
+ name: JSHintBear
+ subdir: js
+ filename: JSHintBear.py
+ requirements:
+ exe:
+ jshint:
+ npm:
+ jshint:
+ version: ~2.9.5
+ languages:
+ - JavaScript
+ tags:
+ - exe
+ - js
+ - jshint
+ - npm
+JSONFormatBear:
+ name: JSONFormatBear
+ subdir: js
+ filename: JSONFormatBear.py
+ requirements:
+ languages:
+ - JSON
+ tags:
+ - js
+ - noreqs
+JSStandardBear:
+ name: JSStandardBear
+ subdir: js
+ filename: JSStandardBear.py
+ requirements:
+ exe:
+ standard:
+ npm:
+ standard:
+ version: ~10
+ languages:
+ - JSX
+ - JavaScript
+ tags:
+ - exe
+ - js
+ - npm
+ - standard
+JavaPMDBear:
+ name: JavaPMDBear
+ subdir: java
+ filename: JavaPMDBear.py
+ requirements:
+ exe:
+ bash:
+ languages:
+ - Java
+ tags:
+ - bash
+ - pmd
+ - exe
+ - java
+Jinja2Bear:
+ name: Jinja2Bear
+ subdir: jinja2
+ filename: Jinja2Bear.py
+ requirements:
+ languages:
+ - Jinja2
+ tags:
+ - jinja2
+ - noreqs
+JuliaLintBear:
+ name: JuliaLintBear
+ subdir: julia
+ filename: JuliaLintBear.py
+ requirements:
+ exe:
+ julia:
+ julia:
+ Lint:
+ languages:
+ - Julia
+ tags:
+ - exe
+ - julia
+KeywordBear:
+ name: KeywordBear
+ subdir: general
+ filename: KeywordBear.py
+ requirements:
+ languages:
+ tags:
+ - general
+ - noreqs
+LanguageToolBear:
+ name: LanguageToolBear
+ subdir: natural_language
+ filename: LanguageToolBear.py
+ requirements:
+ pip:
+ guess-language-spirit:
+ version: ~=0.5.2
+ language-check:
+ version: ~=1.0
+ languages:
+ - Natural Language
+ tags:
+ - java
+ - languagetool
+ - natural-language
+ - pip
+LatexLintBear:
+ name: LatexLintBear
+ subdir: latex
+ filename: LatexLintBear.py
+ requirements:
+ distro:
+ chktex:
+ packages:
+ apt_get: chktex
+ brew: chktex
+ dnf: chktex
+ pacman: chktex
+ pkg: chktex
+ portage: chktex
+ xbps: chktex
+ yum: chktex
+ zypper: texlive-chktex
+ exe:
+ chktex:
+ languages:
+ - Tex
+ tags:
+ - apt_get
+ - brew
+ - chktex
+ - distro
+ - dnf
+ - exe
+ - latex
+ - pacman
+ - pkg
+ - portage
+ - xbps
+ - yum
+ - zypper
+LicenseCheckBear:
+ name: LicenseCheckBear
+ subdir: general
+ filename: LicenseCheckBear.py
+ requirements:
+ distro:
+ devscripts:
+ packages:
+ apt_get: devscripts
+ dnf: licensecheck
+ portage:
+ zypper: devscripts
+ exe:
+ licensecheck:
+ languages:
+ tags:
+ - apt_get
+ - devscripts
+ - distro
+ - dnf
+ - exe
+ - general
+ - licensecheck
+ - portage
+ - zypper
+LicenseHeaderBear:
+ name: LicenseHeaderBear
+ subdir: general
+ filename: LicenseHeaderBear.py
+ requirements:
+ languages:
+ tags:
+ - general
+ - noreqs
+LineContinuationBear:
+ name: LineContinuationBear
+ subdir: general
+ filename: LineContinuationBear.py
+ requirements:
+ languages:
+ tags:
+ - general
+ - noreqs
+LineCountBear:
+ name: LineCountBear
+ subdir: general
+ filename: LineCountBear.py
+ requirements:
+ languages:
+ tags:
+ - general
+ - noreqs
+LineLengthBear:
+ name: LineLengthBear
+ subdir: general
+ filename: LineLengthBear.py
+ requirements:
+ languages:
+ tags:
+ - general
+ - noreqs
+LuaLintBear:
+ name: LuaLintBear
+ subdir: lua
+ filename: LuaLintBear.py
+ requirements:
+ exe:
+ luacheck:
+ luarocks:
+ luacheck:
+ languages:
+ - Lua
+ tags:
+ - exe
+ - lua
+ - luacheck
+ - luarocks
+MarkdownBear:
+ name: MarkdownBear
+ subdir: markdown
+ filename: MarkdownBear.py
+ requirements:
+ exe:
+ remark:
+ npm:
+ remark-lint:
+ version: ~5
+ remark-validate-links:
+ version: ~5
+ remark-cli:
+ version: ~2
+ languages:
+ - Markdown
+ tags:
+ - exe
+ - markdown
+ - npm
+ - remark
+MatlabIndentationBear:
+ name: MatlabIndentationBear
+ subdir: matlab
+ filename: MatlabIndentationBear.py
+ requirements:
+ languages:
+ - Matlab
+ - Octave
+ tags:
+ - matlab
+ - noreqs
+MementoBear:
+ name: MementoBear
+ subdir: general
+ filename: MementoBear.py
+ requirements:
+ pip:
+ memento-client:
+ version: ~=0.6.1
+ languages:
+ tags:
+ - general
+ - pip
+MypyBear:
+ name: MypyBear
+ subdir: python
+ filename: MypyBear.py
+ requirements:
+ exe:
+ /usr/bin/python3:
+ pip:
+ mypy:
+ version: ==0.590
+ languages:
+ - Python
+ - Python 2
+ - Python 3
+ tags:
+ - /usr/bin/python3
+ - exe
+ - pip
+ - python
+PEP8Bear:
+ name: PEP8Bear
+ subdir: python
+ filename: PEP8Bear.py
+ requirements:
+ pip:
+ autopep8:
+ version: ~=1.2
+ languages:
+ - Python
+ - Python 2
+ - Python 3
+ tags:
+ - pip
+ - python
+PEP8NotebookBear:
+ name: PEP8NotebookBear
+ subdir: python
+ filename: PEP8NotebookBear.py
+ requirements:
+ pip:
+ nbformat:
+ version: ~=4.1
+ autopep8:
+ version: ~=1.2
+ languages:
+ - Python
+ - Python 2
+ - Python 3
+ tags:
+ - pip
+ - python
+PHPCodeSnifferBear:
+ name: PHPCodeSnifferBear
+ subdir: php
+ filename: PHPCodeSnifferBear.py
+ requirements:
+ composer:
+ squizlabs/php_codesniffer:
+ version: ~3.3.2
+ distro:
+ php-codesniffer:
+ packages:
+ apt_get: php-codesniffer
+ zypper: php-pear-php_codesniffer
+ exe:
+ phpcs:
+ languages:
+ - CSS
+ - JavaScript
+ - PHP
+ tags:
+ - apt_get
+ - composer
+ - distro
+ - exe
+ - php
+ - php-codesniffer
+ - phpcs
+ - zypper
+PHPLintBear:
+ name: PHPLintBear
+ subdir: php
+ filename: PHPLintBear.py
+ requirements:
+ distro:
+ php-cli:
+ packages:
+ apt_get: php-cli
+ exe:
+ php:
+ languages:
+ - PHP
+ tags:
+ - apt_get
+ - distro
+ - exe
+ - php
+ - php-cli
+PHPMessDetectorBear:
+ name: PHPMessDetectorBear
+ subdir: php
+ filename: PHPMessDetectorBear.py
+ requirements:
+ composer:
+ phpmd/phpmd:
+ version: ~2.6.0
+ distro:
+ phpmd:
+ packages:
+ apt_get: phpmd
+ dnf: php-phpmd-PHP-PMD
+ exe:
+ phpmd:
+ languages:
+ - PHP
+ tags:
+ - apt_get
+ - composer
+ - distro
+ - dnf
+ - exe
+ - php
+ - phpmd
+PerlCriticBear:
+ name: PerlCriticBear
+ subdir: perl
+ filename: PerlCriticBear.py
+ requirements:
+ distro:
+ libperl-critic-perl:
+ packages:
+ apt_get: libperl-critic-perl
+ brew:
+ dnf: perl-Perl-Critic
+ portage: dev-perl/Perl-Critic
+ xbps:
+ yum: perl-Perl-Critic
+ zypper: perl-Perl-Critic
+ exe:
+ perlcritic:
+ languages:
+ - Perl
+ tags:
+ - apt_get
+ - brew
+ - distro
+ - dnf
+ - exe
+ - libperl-critic-perl
+ - perl
+ - perlcritic
+ - portage
+ - xbps
+ - yum
+ - zypper
+PinRequirementsBear:
+ name: PinRequirementsBear
+ subdir: python/requirements
+ filename: PinRequirementsBear.py
+ requirements:
+ languages:
+ - Python 2 Requirements
+ - Python 3 Requirements
+ - Python Requirements
+ tags:
+ - noreqs
+ - python-requirements
+PrettierLintBear:
+ name: PrettierLintBear
+ subdir: js
+ filename: PrettierLintBear.py
+ requirements:
+ exe:
+ prettier:
+ npm:
+ prettier:
+ version: ~1.9.2
+ languages:
+ - CSS
+ - GraphQL
+ - JSON
+ - JavaScript
+ - Less
+ - Markdown
+ - SCSS
+ - TypeScript
+ - Vue
+ tags:
+ - exe
+ - js
+ - npm
+ - prettier
+ProseLintBear:
+ name: ProseLintBear
+ subdir: natural_language
+ filename: ProseLintBear.py
+ requirements:
+ exe:
+ proselint:
+ pip:
+ proselint:
+ version: ~=0.7.0
+ languages:
+ - Natural Language
+ tags:
+ - exe
+ - natural-language
+ - pip
+ - proselint
+PugLintBear:
+ name: PugLintBear
+ subdir: pug
+ filename: PugLintBear.py
+ requirements:
+ exe:
+ pug-lint:
+ npm:
+ pug-lint:
+ version: ~2.4.0
+ languages:
+ - Pug
+ tags:
+ - exe
+ - npm
+ - pug
+ - pug-lint
+PuppetLintBear:
+ name: PuppetLintBear
+ subdir: configfiles
+ filename: PuppetLintBear.py
+ requirements:
+ exe:
+ puppet-lint:
+ gem:
+ puppet-lint:
+ version: ~>2.1.1
+ languages:
+ - Puppet
+ tags:
+ - configfiles
+ - exe
+ - gem
+ - puppet-lint
+PyCommentedCodeBear:
+ name: PyCommentedCodeBear
+ subdir: python
+ filename: PyCommentedCodeBear.py
+ requirements:
+ pip:
+ eradicate:
+ version: ~=0.1.6
+ languages:
+ - Python
+ - Python 2
+ - Python 3
+ tags:
+ - pip
+ - python
+PyDocStyleBear:
+ name: PyDocStyleBear
+ subdir: python
+ filename: PyDocStyleBear.py
+ requirements:
+ exe:
+ pydocstyle:
+ pip:
+ pydocstyle:
+ version: ~=2.0
+ languages:
+ - Python
+ - Python 2
+ - Python 3
+ tags:
+ - exe
+ - pip
+ - pydocstyle
+ - python
+PyFlakesBear:
+ name: PyFlakesBear
+ subdir: python
+ filename: PyFlakesBear.py
+ requirements:
+ exe:
+ pyflakes:
+ pip:
+ pyflakes:
+ version: ~=2.0.0
+ languages:
+ - Python
+ - Python 3
+ tags:
+ - exe
+ - pip
+ - pyflakes
+ - python
+PyImportSortBear:
+ name: PyImportSortBear
+ subdir: python
+ filename: PyImportSortBear.py
+ requirements:
+ pip:
+ isort:
+ version: ~=4.2
+ languages:
+ - Python
+ - Python 2
+ - Python 3
+ tags:
+ - pip
+ - python
+PyLintBear:
+ name: PyLintBear
+ subdir: python
+ filename: PyLintBear.py
+ requirements:
+ exe:
+ pylint:
+ pip:
+ pylint:
+ version: ~=1.7.2
+ languages:
+ - Python
+ - Python 2
+ - Python 3
+ tags:
+ - exe
+ - pip
+ - pylint
+ - python
+PySafetyBear:
+ name: PySafetyBear
+ subdir: python/requirements
+ filename: PySafetyBear.py
+ requirements:
+ pip:
+ safety:
+ version: ~=1.8.2
+ languages:
+ - Python 2 Requirements
+ - Python 3 Requirements
+ - Python Requirements
+ tags:
+ - pip
+ - python-requirements
+PyStringConcatBear:
+ name: PyStringConcatBear
+ subdir: python
+ filename: PyStringConcatBear.py
+ requirements:
+ languages:
+ - Python
+ - Python 2
+ - Python 3
+ tags:
+ - noreqs
+ - python
+PyUnusedCodeBear:
+ name: PyUnusedCodeBear
+ subdir: python
+ filename: PyUnusedCodeBear.py
+ requirements:
+ pip:
+ autoflake:
+ version: ~=0.7
+ languages:
+ - Python
+ - Python 2
+ - Python 3
+ tags:
+ - pip
+ - python
+PycodestyleBear:
+ name: PycodestyleBear
+ subdir: python
+ filename: PycodestyleBear.py
+ requirements:
+ exe:
+ pycodestyle:
+ pip:
+ pycodestyle:
+ version: ~=2.2
+ languages:
+ - Python
+ - Python 2
+ - Python 3
+ tags:
+ - exe
+ - pip
+ - pycodestyle
+ - python
+PyromaBear:
+ name: PyromaBear
+ subdir: python
+ filename: PyromaBear.py
+ requirements:
+ pip:
+ pyroma:
+ version: ~=2.2.0
+ languages:
+ - Python
+ - Python 3
+ tags:
+ - pip
+ - python
+PythonPackageInitBear:
+ name: PythonPackageInitBear
+ subdir: python
+ filename: PythonPackageInitBear.py
+ requirements:
+ languages:
+ - Python
+ - Python 2
+ - Python 3
+ tags:
+ - noreqs
+ - python
+QuotesBear:
+ name: QuotesBear
+ subdir: general
+ filename: QuotesBear.py
+ requirements:
+ languages:
+ tags:
+ - general
+ - noreqs
+RAMLLintBear:
+ name: RAMLLintBear
+ subdir: yaml
+ filename: RAMLLintBear.py
+ requirements:
+ exe:
+ ramllint:
+ npm:
+ ramllint:
+ version: '>=1.2.2 <1.2.4 || >=1.2.5 <1.3.0'
+ languages:
+ - RAML
+ tags:
+ - exe
+ - npm
+ - ramllint
+ - yaml
+RLintBear:
+ name: RLintBear
+ subdir: r
+ filename: RLintBear.py
+ requirements:
+ distro:
+ r-base:
+ packages:
+ apt_get: r-base
+ version: '>=3.1.1'
+ exe:
+ Rscript:
+ r_script:
+ lintr:
+ languages:
+ - R
+ tags:
+ - Rscript
+ - apt_get
+ - distro
+ - exe
+ - r
+ - r-base
+ - r_script
+RSTcheckBear:
+ name: RSTcheckBear
+ subdir: rest
+ filename: RSTcheckBear.py
+ requirements:
+ exe:
+ rstcheck:
+ pip:
+ rstcheck:
+ version: ~=3.1
+ languages:
+ - reStructuredText
+ tags:
+ - exe
+ - pip
+ - rest
+ - rstcheck
+RadonBear:
+ name: RadonBear
+ subdir: python
+ filename: RadonBear.py
+ requirements:
+ pip:
+ radon:
+ version: ==1.4.0
+ languages:
+ - Python
+ - Python 2
+ - Python 3
+ tags:
+ - pip
+ - python
+RuboCopBear:
+ name: RuboCopBear
+ subdir: ruby
+ filename: RuboCopBear.py
+ requirements:
+ exe:
+ rubocop:
+ gem:
+ rubocop:
+ version: ~>0.51.0
+ pip:
+ pyyaml:
+ version: ~=3.12
+ languages:
+ - Ruby
+ tags:
+ - exe
+ - gem
+ - rubocop
+ - ruby
+RubyFastererBear:
+ name: RubyFastererBear
+ subdir: ruby
+ filename: RubyFastererBear.py
+ requirements:
+ exe:
+ fasterer:
+ gem:
+ fasterer:
+ version: ~>0.4.1
+ languages:
+ - Ruby
+ tags:
+ - exe
+ - fasterer
+ - gem
+ - ruby
+RubySecurityBear:
+ name: RubySecurityBear
+ subdir: ruby
+ filename: RubySecurityBear.py
+ requirements:
+ exe:
+ brakeman:
+ gem:
+ brakeman:
+ version: ~>4.1.1
+ languages:
+ - Ruby
+ tags:
+ - brakeman
+ - exe
+ - gem
+ - ruby
+RubySmellBear:
+ name: RubySmellBear
+ subdir: ruby
+ filename: RubySmellBear.py
+ requirements:
+ exe:
+ reek:
+ gem:
+ reek:
+ version: ~>4.6
+ languages:
+ - Ruby
+ tags:
+ - exe
+ - gem
+ - reek
+ - ruby
+RubySyntaxBear:
+ name: RubySyntaxBear
+ subdir: ruby
+ filename: RubySyntaxBear.py
+ requirements:
+ conda:
+ ruby:
+ version: '>=2.2.3'
+ distro:
+ ruby:
+ packages:
+ apt_get: ruby
+ brew: ruby
+ dnf: ruby
+ pacman: ruby
+ pkg: ruby
+ portage: ruby
+ xbps: ruby
+ yum: ruby
+ zypper: ruby
+ exe:
+ ruby:
+ languages:
+ - Ruby
+ tags:
+ - apt_get
+ - brew
+ - conda
+ - distro
+ - dnf
+ - exe
+ - pacman
+ - pkg
+ - portage
+ - ruby
+ - xbps
+ - yum
+ - zypper
+SASSLintBear:
+ name: SASSLintBear
+ subdir: scss
+ filename: SASSLintBear.py
+ requirements:
+ exe:
+ sass-lint:
+ npm:
+ sass-lint:
+ version: ~1.12.1
+ languages:
+ - SASS
+ - SCSS
+ tags:
+ - exe
+ - npm
+ - sass-lint
+ - scss
+SCSSLintBear:
+ name: SCSSLintBear
+ subdir: scss
+ filename: SCSSLintBear.py
+ requirements:
+ exe:
+ scss-lint:
+ gem:
+ scss_lint:
+ version: ~>0.56.0
+ pip:
+ pyyaml:
+ version: ~=3.12
+ languages:
+ - SCSS
+ tags:
+ - exe
+ - gem
+ - scss
+ - scss-lint
+SQLFormatBear:
+ name: SQLFormatBear
+ subdir: sql
+ filename: SQLFormatBear.py
+ requirements:
+ pip:
+ sqlparse:
+ version: ~=0.2.4
+ languages:
+ - SQL
+ tags:
+ - pip
+ - sql
+SQLintBear:
+ name: SQLintBear
+ subdir: sql
+ filename: SQLintBear.py
+ requirements:
+ exe:
+ sqlint:
+ gem:
+ sqlint:
+ version: ~>0.1.5
+ languages:
+ - SQL
+ tags:
+ - exe
+ - gem
+ - sql
+ - sqlint
+ScalaLintBear:
+ name: ScalaLintBear
+ subdir: scala
+ filename: ScalaLintBear.py
+ requirements:
+ distro:
+ default-jre:
+ packages:
+ apt_get: default-jre
+ exe:
+ java:
+ languages:
+ - Scala
+ tags:
+ - apt_get
+ - default-jre
+ - distro
+ - exe
+ - java
+ - scala
+ShellCheckBear:
+ name: ShellCheckBear
+ subdir: shell
+ filename: ShellCheckBear.py
+ requirements:
+ cabal:
+ ShellCheck:
+ version: ==0.4.1
+ distro:
+ shellcheck:
+ packages:
+ apt_get: shellcheck
+ brew: shellcheck
+ dnf: shellcheck
+ pacman: shellcheck
+ pkg: shellcheck
+ portage: shellcheck
+ xbps: shellcheck
+ yum: shellcheck
+ zypper: shellcheck
+ exe:
+ shellcheck:
+ languages:
+ - bash
+ - dash
+ - ksh
+ - sh
+ tags:
+ - apt_get
+ - brew
+ - cabal
+ - distro
+ - dnf
+ - exe
+ - pacman
+ - pkg
+ - portage
+ - shell
+ - shellcheck
+ - xbps
+ - yum
+ - zypper
+SpaceConsistencyBear:
+ name: SpaceConsistencyBear
+ subdir: general
+ filename: SpaceConsistencyBear.py
+ requirements:
+ languages:
+ tags:
+ - general
+ - noreqs
+SpellCheckBear:
+ name: SpellCheckBear
+ subdir: natural_language
+ filename: SpellCheckBear.py
+ requirements:
+ exe:
+ scspell:
+ pip:
+ scspell3k:
+ version: ~=2.0
+ languages:
+ - Natural Language
+ tags:
+ - exe
+ - natural-language
+ - pip
+ - scspell
+StyleLintBear:
+ name: StyleLintBear
+ subdir: css
+ filename: StyleLintBear.py
+ requirements:
+ exe:
+ stylelint:
+ npm:
+ stylelint:
+ version: ~7
+ languages:
+ - CSS
+ - SCSS
+ tags:
+ - css
+ - exe
+ - npm
+ - stylelint
+StylintBear:
+ name: StylintBear
+ subdir: stylus
+ filename: StylintBear.py
+ requirements:
+ exe:
+ stylint:
+ npm:
+ stylint:
+ version: ~1.5.9
+ languages:
+ - Stylus
+ tags:
+ - exe
+ - npm
+ - stylint
+ - stylus
+TOMLBear:
+ name: TOMLBear
+ subdir: configfiles
+ filename: TOMLBear.py
+ requirements:
+ exe:
+ tomlv:
+ go:
+ github.com/BurntSushi/toml/cmd/tomlv:
+ languages:
+ - TOML
+ tags:
+ - configfiles
+ - exe
+ - go
+ - tomlv
+TSLintBear:
+ name: TSLintBear
+ subdir: typescript
+ filename: TSLintBear.py
+ requirements:
+ exe:
+ tslint:
+ npm:
+ typescript:
+ version: '>=1.7.3'
+ tslint:
+ version: '>=3.0 <6.0'
+ languages:
+ - TypeScript
+ tags:
+ - exe
+ - npm
+ - tslint
+ - typescript
+TailorBear:
+ name: TailorBear
+ subdir: swift
+ filename: TailorBear.py
+ requirements:
+ exe:
+ tailor:
+ languages:
+ - Swift
+ tags:
+ - exe
+ - java
+ - swift
+ - tailor
+TextLintBear:
+ name: TextLintBear
+ subdir: general
+ filename: TextLintBear.py
+ requirements:
+ exe:
+ textlint:
+ npm:
+ textlint-rule-write-good:
+ version: ~1.6.0
+ textlint:
+ version: ~7.3.0
+ textlint-plugin-asciidoc-loose:
+ version: ~1.0.1
+ textlint-plugin-html:
+ version: ~0.1.5
+ textlint-plugin-review:
+ version: ~0.3.3
+ textlint-plugin-rst:
+ version: ~0.1.1
+ textlint-rule-alex:
+ version: ~1.2.0
+ textlint-rule-common-misspellings:
+ version: ~1.0.1
+ textlint-rule-date-weekday-mismatch:
+ version: ~1.0.5
+ textlint-rule-ginger:
+ version: '>=2.1.0 <2.1.2'
+ textlint-rule-max-comma:
+ version: ~1.0.4
+ textlint-rule-max-number-of-lines:
+ version: ~1.0.3
+ textlint-rule-ng-word:
+ version: ~1.0.0
+ textlint-rule-no-dead-link:
+ version: ~3.1.1
+ textlint-rule-no-empty-section:
+ version: ~1.1.0
+ textlint-rule-no-start-duplicated-conjunction:
+ version: ~1.1.3
+ textlint-rule-no-todo:
+ version: ~2.0.0
+ textlint-rule-period-in-list-item:
+ version: ~0.2.0
+ textlint-rule-rousseau:
+ version: ~1.4.5
+ textlint-rule-unexpanded-acronym:
+ version: ~1.2.1
+ pip:
+ docutils-ast-writer:
+ version: ~=0.1.2
+ languages:
+ - HTML
+ - Markdown
+ - reStructuredText
+ tags:
+ - exe
+ - general
+ - npm
+ - textlint
+TravisLintBear:
+ name: TravisLintBear
+ subdir: yaml
+ filename: TravisLintBear.py
+ requirements:
+ exe:
+ travis:
+ gem:
+ travis:
+ version: ~>1.8.8
+ languages:
+ - YAML
+ tags:
+ - exe
+ - gem
+ - travis
+ - yaml
+URLBear:
+ name: URLBear
+ subdir: general
+ filename: URLBear.py
+ requirements:
+ pip:
+ aenum:
+ version: ~=2.0.8
+ languages:
+ tags:
+ - general
+ - pip
+URLHeadBear:
+ name: URLHeadBear
+ subdir: general
+ filename: URLHeadBear.py
+ requirements:
+ languages:
+ tags:
+ - general
+ - noreqs
+VCSCommitMetadataBear:
+ name: VCSCommitMetadataBear
+ subdir: vcs
+ filename: VCSCommitMetadataBear.py
+ requirements:
+ languages:
+ - Git
+ tags:
+ - noreqs
+ - vcs
+VHDLLintBear:
+ name: VHDLLintBear
+ subdir: vhdl
+ filename: VHDLLintBear.py
+ requirements:
+ distro:
+ perl:
+ packages:
+ apt_get: perl
+ brew: perl
+ dnf: perl
+ pacman: perl
+ pkg: perl
+ portage: perl
+ xbps: perl
+ yum: perl
+ zypper: perl
+ exe:
+ perl:
+ languages:
+ - VHDL
+ tags:
+ - apt_get
+ - bakalint
+ - brew
+ - distro
+ - dnf
+ - exe
+ - pacman
+ - perl
+ - pkg
+ - portage
+ - vhdl
+ - xbps
+ - yum
+ - zypper
+VerilogLintBear:
+ name: VerilogLintBear
+ subdir: verilog
+ filename: VerilogLintBear.py
+ requirements:
+ distro:
+ verilator:
+ packages:
+ apt_get: verilator
+ brew:
+ dnf: verilator
+ portage:
+ yum: verilator
+ zypper: verilator
+ exe:
+ verilator:
+ languages:
+ - Verilog
+ tags:
+ - apt_get
+ - brew
+ - distro
+ - dnf
+ - exe
+ - portage
+ - verilator
+ - verilog
+ - yum
+ - zypper
+VintBear:
+ name: VintBear
+ subdir: vimscript
+ filename: VintBear.py
+ requirements:
+ exe:
+ vint:
+ pip:
+ vim-vint:
+ version: ~=0.3.12,!=0.3.19
+ languages:
+ - VimScript
+ tags:
+ - exe
+ - pip
+ - vimscript
+ - vint
+VultureBear:
+ name: VultureBear
+ subdir: python
+ filename: VultureBear.py
+ requirements:
+ pip:
+ vulture:
+ version: ~=0.25.0
+ languages:
+ - Python
+ - Python 3
+ tags:
+ - pip
+ - python
+WriteGoodLintBear:
+ name: WriteGoodLintBear
+ subdir: natural_language
+ filename: WriteGoodLintBear.py
+ requirements:
+ exe:
+ write-good:
+ npm:
+ write-good:
+ version: ~0.9.1
+ languages:
+ - Natural Language
+ tags:
+ - exe
+ - natural-language
+ - npm
+ - write-good
+XMLBear:
+ name: XMLBear
+ subdir: xml2
+ filename: XMLBear.py
+ requirements:
+ distro:
+ libxml2:
+ packages:
+ apt_get: libxml2-utils
+ brew: libxml2
+ dnf: libxml2
+ pacman: libxml2
+ pkg: libxml2
+ portage: dev-libs/libxml2
+ xbps: libxml2
+ yum: libxml2
+ zypper: libxml2
+ exe:
+ xmllint:
+ languages:
+ - XML
+ tags:
+ - apt_get
+ - brew
+ - distro
+ - dnf
+ - exe
+ - libxml2
+ - pacman
+ - pkg
+ - portage
+ - xbps
+ - xml2
+ - xmllint
+ - yum
+ - zypper
+YAMLLintBear:
+ name: YAMLLintBear
+ subdir: yaml
+ filename: YAMLLintBear.py
+ requirements:
+ exe:
+ yamllint:
+ pip:
+ yamllint:
+ version: ~=1.12.0
+ languages:
+ - YAML
+ tags:
+ - exe
+ - pip
+ - yaml
+ - yamllint
+YapfBear:
+ name: YapfBear
+ subdir: python
+ filename: YapfBear.py
+ requirements:
+ pip:
+ yapf:
+ version: ~=0.21.0
+ languages:
+ - Python
+ - Python 2
+ - Python 3
+ tags:
+ - pip
+ - python
+_CommitBear:
+ name: _CommitBear
+ subdir: vcs
+ filename: CommitBear.py
+ requirements:
+ pip:
+ nltk:
+ version: ~=3.2
+ git-url-parse:
+ version: ~=1.1
+ languages:
+ tags:
+ - pip
+ - vcs
+coalaBear:
+ name: coalaBear
+ subdir: general
+ filename: coalaBear.py
+ requirements:
+ languages:
+ tags:
+ - general
+ - noreqs
+reSTLintBear:
+ name: reSTLintBear
+ subdir: rest
+ filename: reSTLintBear.py
+ requirements:
+ pip:
+ restructuredtext-lint:
+ version: ~=1.0
+ languages:
+ - reStructuredText
+ tags:
+ - pip
+ - rest
diff --git a/bear-requirements.txt b/bear-requirements.txt
index 578a2eebd5..bb0f96b678 100644
--- a/bear-requirements.txt
+++ b/bear-requirements.txt
@@ -17,7 +17,7 @@ html-linter~=0.4.0
isort~=4.2
language-check~=1.0
libclang-py3~=3.4.0
-lxml==3.6.0
+lxml
memento-client~=0.6.1
munkres3~=1.0
mypy==0.590
diff --git a/bear-requirements.yaml b/bear-requirements.yaml
index af53071f3b..bb6d19c583 100644
--- a/bear-requirements.yaml
+++ b/bear-requirements.yaml
@@ -1,32 +1,91 @@
# This is an automatically generated file.
# And should not be edited by hand.
-overrides: coala-build.yaml
-gem_requirements:
- brakeman:
- version: ~>4.1.1
- csvlint:
- version: ~>0.4.0
- fasterer:
- version: ~>0.4.1
- haml_lint:
- version: ~>0.27.0
- puppet-lint:
- version: ~>2.1.1
- reek:
- version: ~>4.6
- rubocop:
- version: ~>0.51.0
- scss_lint:
- version: ~>0.56.0
- sqlint:
- version: ~>0.1.5
- travis:
- version: ~>1.8.8
-r_script_requirements:
- formatR:
- version: '>1.5'
- lintr:
- version: '>=1.0.2'
+overrides: pm-requirements.yaml
+pip_requirements:
+ HTTPolice:
+ version: ~=0.5.2
+ aenum:
+ version: ~=2.0.8
+ apertium-lint:
+ version: ~=0.29
+ autoflake:
+ version: ~=0.7
+ autopep8:
+ version: ~=1.2
+ bandit:
+ version: ~=1.2
+ bashate:
+ version: ~=0.5.1
+ cmakelint:
+ version: ~=1.3
+ cppclean:
+ version: ~=0.12.0
+ cpplint:
+ version: ~=1.3
+ dennis:
+ version: ~=0.9
+ docutils-ast-writer:
+ version: ~=0.1.2
+ eradicate:
+ version: ~=0.1.6
+ git-url-parse:
+ version: ~=1.1
+ guess-language-spirit:
+ version: ~=0.5.2
+ html-linter:
+ version: ~=0.4.0
+ isort:
+ version: ~=4.2
+ language-check:
+ version: ~=1.0
+ libclang-py3:
+ version: ~=3.4.0
+ lxml:
+ version: ==3.6.0
+ memento-client:
+ version: ~=0.6.1
+ munkres3:
+ version: ~=1.0
+ mypy:
+ version: ==0.590
+ nbformat:
+ version: ~=4.1
+ nltk:
+ version: ~=3.2
+ proselint:
+ version: ~=0.7.0
+ pycodestyle:
+ version: ~=2.2
+ pydocstyle:
+ version: ~=2.0
+ pyflakes:
+ version: ~=2.0.0
+ pylint:
+ version: ~=1.7.2
+ pyroma:
+ version: ~=2.2.0
+ pyyaml:
+ version: ~=3.12
+ radon:
+ version: ==1.4.0
+ restructuredtext-lint:
+ version: ~=1.0
+ rstcheck:
+ version: ~=3.1
+ safety:
+ version: ~=1.8.2
+ scspell3k:
+ version: ~=2.0
+ sqlparse:
+ version: ~=0.2.4
+ vim-vint:
+ version: ~=0.3.12,!=0.3.19
+ vulture:
+ version: ~=0.25.0
+ yamllint:
+ version: ~=1.12.0
+ yapf:
+ version: ~=0.21.0
npm_requirements:
alex:
version: ~3
@@ -136,91 +195,27 @@ npm_requirements:
version: ~12.0.0
write-good:
version: ~0.9.1
-pip_requirements:
- HTTPolice:
- version: ~=0.5.2
- aenum:
- version: ~=2.0.8
- apertium-lint:
- version: ~=0.29
- autoflake:
- version: ~=0.7
- autopep8:
- version: ~=1.2
- bandit:
- version: ~=1.2
- bashate:
- version: ~=0.5.1
- cmakelint:
- version: ~=1.3
- cppclean:
- version: ~=0.12.0
- cpplint:
- version: ~=1.3
- dennis:
- version: ~=0.9
- docutils-ast-writer:
- version: ~=0.1.2
- eradicate:
- version: ~=0.1.6
- git-url-parse:
- version: ~=1.1
- guess-language-spirit:
- version: ~=0.5.2
- html-linter:
- version: ~=0.4.0
- isort:
- version: ~=4.2
- language-check:
- version: ~=1.0
- libclang-py3:
- version: ~=3.4.0
- lxml:
- version: ==3.6.0
- memento-client:
- version: ~=0.6.1
- munkres3:
- version: ~=1.0
- mypy:
- version: ==0.590
- nbformat:
- version: ~=4.1
- nltk:
- version: ~=3.2
- proselint:
- version: ~=0.7.0
- pycodestyle:
- version: ~=2.2
- pydocstyle:
- version: ~=2.0
- pyflakes:
- version: ~=2.0.0
- pylint:
- version: ~=1.7.2
- pyroma:
- version: ~=2.2.0
- pyyaml:
- version: ~=3.12
- radon:
- version: ==1.4.0
- restructuredtext-lint:
- version: ~=1.0
- rstcheck:
- version: ~=3.1
- safety:
- version: ~=1.8.2
- scspell3k:
- version: ~=2.0
- sqlparse:
- version: ~=0.2.4
- vim-vint:
- version: ~=0.3.12,!=0.3.19
- vulture:
- version: ~=0.25.0
- yamllint:
- version: ~=1.12.0
- yapf:
- version: ~=0.21.0
+gem_requirements:
+ brakeman:
+ version: ~>4.1.1
+ csvlint:
+ version: ~>0.4.0
+ fasterer:
+ version: ~>0.4.1
+ haml_lint:
+ version: ~>0.27.0
+ puppet-lint:
+ version: ~>2.1.1
+ reek:
+ version: ~>4.6
+ rubocop:
+ version: ~>0.51.0
+ scss_lint:
+ version: ~>0.56.0
+ sqlint:
+ version: ~>0.1.5
+ travis:
+ version: ~>1.8.8
composer_requirements:
phpmd/phpmd:
version: ~2.6.0
@@ -233,3 +228,189 @@ cabal_requirements:
version: ==5.6.0.0
hlint:
version: ==1.9.27
+r_script_requirements:
+ formatR:
+ lintr:
+distro_requirements:
+ astyle:
+ packages:
+ apt_get: astyle
+ dnf: astyle
+ chktex:
+ packages:
+ apt_get: chktex
+ brew: chktex
+ dnf: chktex
+ pacman: chktex
+ pkg: chktex
+ portage: chktex
+ xbps: chktex
+ yum: chktex
+ zypper: texlive-chktex
+ cppcheck:
+ packages:
+ apt_get: cppcheck
+ brew: cppcheck
+ dnf: cppcheck
+ pacman: cppcheck
+ pkg: cppcheck
+ portage: cppcheck
+ xbps: cppcheck
+ yum: cppcheck
+ zypper: cppcheck
+ dart:
+ packages:
+ brew: dart
+ default-jre:
+ packages:
+ apt_get: default-jre
+ devscripts:
+ packages:
+ apt_get: devscripts
+ dnf: licensecheck
+ portage:
+ zypper: devscripts
+ flawfinder:
+ packages:
+ apt_get: flawfinder
+ brew: flawfinder
+ dnf: flawfinder
+ pacman: flawfinder
+ pkg: flawfinder
+ portage: flawfinder
+ xbps: flawfinder
+ yum: flawfinder
+ zypper: flawfinder
+ ghc-mod:
+ packages:
+ apt_get: ghc-mod
+ brew: ghc-mod
+ dnf: ghc-mod
+ pacman: ghc-mod
+ pkg: ghc-mod
+ portage: ghc-mod
+ xbps: ghc-mod
+ yum: ghc-mod
+ zypper: ghc-mod
+ hlint:
+ packages:
+ apt_get: hlint
+ indent:
+ packages:
+ apt_get: indent
+ brew: indent
+ dnf: indent
+ pacman: indent
+ pkg: indent
+ portage: indent
+ xbps: indent
+ yum: indent
+ zypper: indent
+ libperl-critic-perl:
+ packages:
+ apt_get: libperl-critic-perl
+ brew:
+ dnf: perl-Perl-Critic
+ portage: dev-perl/Perl-Critic
+ xbps:
+ yum: perl-Perl-Critic
+ zypper: perl-Perl-Critic
+ libxml2:
+ packages:
+ apt_get: libxml2-utils
+ brew: libxml2
+ dnf: libxml2
+ pacman: libxml2
+ pkg: libxml2
+ portage: dev-libs/libxml2
+ xbps: libxml2
+ yum: libxml2
+ zypper: libxml2
+ mono:
+ packages:
+ apt_get: mono-mcs
+ brew: mono
+ dnf: mono
+ pacman: mono
+ pkg: mono
+ portage: dev-lang/mono
+ xbps: mono
+ yum: mono
+ zypper: mono
+ perl:
+ packages:
+ apt_get: perl
+ brew: perl
+ dnf: perl
+ pacman: perl
+ pkg: perl
+ portage: perl
+ xbps: perl
+ yum: perl
+ zypper: perl
+ php-cli:
+ packages:
+ apt_get: php-cli
+ php-codesniffer:
+ packages:
+ apt_get: php-codesniffer
+ zypper: php-pear-php_codesniffer
+ phpmd:
+ packages:
+ apt_get: phpmd
+ dnf: php-phpmd-PHP-PMD
+ r-base:
+ packages:
+ apt_get: r-base
+ version: '>=3.1.1'
+ r-cran-formatr:
+ packages:
+ apt_get: r-cran-formatr
+ zypper: R-formatR
+ ruby:
+ packages:
+ apt_get: ruby
+ brew: ruby
+ dnf: ruby
+ pacman: ruby
+ pkg: ruby
+ portage: ruby
+ xbps: ruby
+ yum: ruby
+ zypper: ruby
+ shellcheck:
+ packages:
+ apt_get: shellcheck
+ brew: shellcheck
+ dnf: shellcheck
+ pacman: shellcheck
+ pkg: shellcheck
+ portage: shellcheck
+ xbps: shellcheck
+ yum: shellcheck
+ zypper: shellcheck
+ verilator:
+ packages:
+ apt_get: verilator
+ brew:
+ dnf: verilator
+ portage:
+ yum: verilator
+ zypper: verilator
+julia_requirements:
+ Lint:
+go_requirements:
+ github.com/BurntSushi/toml/cmd/tomlv:
+ github.com/golang/lint/golint:
+ github.com/kisielk/errcheck:
+ golang.org/cmd/gofmt:
+ golang.org/cmd/vet:
+ golang.org/x/tools/cmd/goimports:
+ golang.org/x/tools/cmd/gotype:
+ sourcegraph.com/sqs/goreturns:
+luarocks_requirements:
+ luacheck:
+conda_requirements:
+ ruby:
+ version: '>=2.2.3'
+exe_requirements: {}
diff --git a/bears/apertium/ApertiumLintBear.py b/bears/apertium/ApertiumLintBear.py
index c0b3b48abc..e8fc25fb94 100644
--- a/bears/apertium/ApertiumLintBear.py
+++ b/bears/apertium/ApertiumLintBear.py
@@ -26,7 +26,7 @@ class ApertiumLintBear:
"""
LANGUAGES = {'Apertium'}
REQUIREMENTS = {PipRequirement('apertium-lint', '0.29'),
- PipRequirement('lxml', '==3.6.0')}
+ PipRequirement('lxml', '==4.2.1')}
AUTHORS = {'The coala developers'}
AUTHORS_EMAILS = {'coala-devel@googlegroups.com'}
LICENSE = 'AGPL-3.0'
diff --git a/bears/c_languages/CSharpLintBear.py b/bears/c_languages/CSharpLintBear.py
index e18b299987..71cfa61940 100644
--- a/bears/c_languages/CSharpLintBear.py
+++ b/bears/c_languages/CSharpLintBear.py
@@ -9,7 +9,7 @@
output_format='regex',
output_regex=r'.+\((?P\d+),(?P\d+)\): '
r'(?Perror|warning) \w+: (?P.+)')
-class CSharpLintBear: # pragma nt: no cover
+class CSharpLintBear:
"""
Checks C# code for syntactical correctness using the ``mcs`` compiler.
"""
diff --git a/bears/general/TextLintBear.py b/bears/general/TextLintBear.py
index d0c070b461..e0059495a1 100644
--- a/bears/general/TextLintBear.py
+++ b/bears/general/TextLintBear.py
@@ -19,7 +19,7 @@ class TextLintBear:
LANGUAGES = {'HTML', 'Markdown', 'reStructuredText'}
REQUIREMENTS = {NpmRequirement('textlint', '7.3.0'),
- NpmRequirement('textlint-plugin-asciidoc-loose', '1.0.1'),
+ NpmRequirement('textlint-plugin-asciidoctor', '1.0.3'),
NpmRequirement('textlint-plugin-html', '0.1.5'),
NpmRequirement('textlint-plugin-review', '0.3.3'),
NpmRequirement('textlint-plugin-rst', '0.1.1'),
diff --git a/bears/r/FormatRBear.py b/bears/r/FormatRBear.py
index c4e53cc0b7..8232935a2f 100644
--- a/bears/r/FormatRBear.py
+++ b/bears/r/FormatRBear.py
@@ -16,9 +16,7 @@ def _map_to_r_bool(py_bool):
@linter(executable='Rscript',
output_format='corrected',
- prerequisite_check_command=('Rscript', '-e', 'library(formatR)'),
- prerequisite_check_fail_message='Please install formatR for this bear '
- 'to work.')
+ )
class FormatRBear:
"""
Check and correct formatting of R Code using known formatR utility.
@@ -33,7 +31,7 @@ class FormatRBear:
zypper='R-formatR',
),
RscriptRequirement('formatR',
- version='>1.5'),
+ ),
]
)
}
diff --git a/bears/r/RLintBear.py b/bears/r/RLintBear.py
index fed30158ef..26de072531 100644
--- a/bears/r/RLintBear.py
+++ b/bears/r/RLintBear.py
@@ -15,8 +15,7 @@
severity_map={'style': RESULT_SEVERITY.NORMAL,
'warning': RESULT_SEVERITY.NORMAL,
'error': RESULT_SEVERITY.MAJOR},
- prerequisite_check_command=('Rscript', '-e', 'library(lintr)'),
- prerequisite_check_fail_message='R library "lintr" is not installed.')
+ )
class RLintBear:
"""
Checks the code with ``lintr``.
@@ -25,7 +24,7 @@ class RLintBear:
AUTHORS = {'The coala developers'}
AUTHORS_EMAILS = {'coala-devel@googlegroups.com'}
REQUIREMENTS = {RscriptRequirement('lintr',
- version='>=1.0.2'),
+ ),
DistributionRequirement(apt_get='r-base',
version='>=3.1.1')}
LICENSE = 'AGPL-3.0'
diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000000..d14f37262a
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,6 @@
+{
+ "require-dev": {
+ "phpmd/phpmd": "^2.6",
+ "squizlabs/php_codesniffer": "^3.4"
+ }
+}
diff --git a/package-lock.json b/package-lock.json
deleted file mode 100644
index 4d29e32c0b..0000000000
--- a/package-lock.json
+++ /dev/null
@@ -1,10381 +0,0 @@
-{
- "name": "coala-bears",
- "version": "0.8.0",
- "lockfileVersion": 1,
- "requires": true,
- "dependencies": {
- "@azu/format-text": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@azu/format-text/-/format-text-1.0.1.tgz",
- "integrity": "sha1-aWc1CpRkD2sChVFpvYl85U1s6+I="
- },
- "@azu/style-format": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@azu/style-format/-/style-format-1.0.0.tgz",
- "integrity": "sha1-5wGH+Khi4ZGxvObAJo8TrNOlayA=",
- "requires": {
- "@azu/format-text": "1.0.1"
- }
- },
- "@babel/code-frame": {
- "version": "7.0.0-beta.31",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.31.tgz",
- "integrity": "sha512-yd7CkUughvHQoEahQqcMdrZw6o/6PwUxiRkfZuVDVHCDe77mysD/suoNyk5mK6phTnRW1kyIbPHyCJgxw++LXg==",
- "requires": {
- "chalk": "2.4.1",
- "esutils": "2.0.2",
- "js-tokens": "3.0.2"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "requires": {
- "color-convert": "1.9.1"
- }
- },
- "chalk": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
- "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
- "requires": {
- "ansi-styles": "3.2.1",
- "escape-string-regexp": "1.0.5",
- "supports-color": "5.4.0"
- }
- },
- "supports-color": {
- "version": "5.4.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
- "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
- "requires": {
- "has-flag": "3.0.0"
- }
- }
- }
- },
- "@babel/helper-function-name": {
- "version": "7.0.0-beta.31",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.31.tgz",
- "integrity": "sha512-c+DAyp8LMm2nzSs2uXEuxp4LYGSUYEyHtU3fU57avFChjsnTmmpWmXj2dv0yUxHTEydgVAv5fIzA+4KJwoqWDA==",
- "requires": {
- "@babel/helper-get-function-arity": "7.0.0-beta.31",
- "@babel/template": "7.0.0-beta.31",
- "@babel/traverse": "7.0.0-beta.31",
- "@babel/types": "7.0.0-beta.31"
- }
- },
- "@babel/helper-get-function-arity": {
- "version": "7.0.0-beta.31",
- "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.31.tgz",
- "integrity": "sha512-m7rVVX/dMLbbB9NCzKYRrrFb0qZxgpmQ4Wv6y7zEsB6skoJHRuXVeb/hAFze79vXBbuD63ci7AVHXzAdZSk9KQ==",
- "requires": {
- "@babel/types": "7.0.0-beta.31"
- }
- },
- "@babel/template": {
- "version": "7.0.0-beta.31",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.31.tgz",
- "integrity": "sha512-97IRmLvoDhIDSQkqklVt3UCxJsv0LUEVb/0DzXWtc8Lgiyxj567qZkmTG9aR21CmcJVVIvq2Y/moZj4oEpl5AA==",
- "requires": {
- "@babel/code-frame": "7.0.0-beta.31",
- "@babel/types": "7.0.0-beta.31",
- "babylon": "7.0.0-beta.31",
- "lodash": "4.17.10"
- }
- },
- "@babel/traverse": {
- "version": "7.0.0-beta.31",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.31.tgz",
- "integrity": "sha512-3N+VJW+KlezEjFBG7WSYeMyC5kIqVLPb/PGSzCDPFcJrnArluD1GIl7Y3xC7cjKiTq2/JohaLWHVPjJWHlo9Gg==",
- "requires": {
- "@babel/code-frame": "7.0.0-beta.31",
- "@babel/helper-function-name": "7.0.0-beta.31",
- "@babel/types": "7.0.0-beta.31",
- "babylon": "7.0.0-beta.31",
- "debug": "3.1.0",
- "globals": "10.4.0",
- "invariant": "2.2.4",
- "lodash": "4.17.10"
- }
- },
- "@babel/types": {
- "version": "7.0.0-beta.31",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.31.tgz",
- "integrity": "sha512-exAHB+NeFGxkfQ5dSUD03xl3zYGneeSk2Mw2ldTt/nTvYxuDiuSp3DlxgUBgzbdTFG4fbwPk0WtKWOoTXCmNGg==",
- "requires": {
- "esutils": "2.0.2",
- "lodash": "4.17.10",
- "to-fast-properties": "2.0.0"
- }
- },
- "@types/babel-types": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.2.tgz",
- "integrity": "sha512-ylggu8DwwxT6mk3jVoJeohWAePWMNWEYm06MSoJ19kwp3hT9eY2Z4NNZn3oevzgFmClgNQ2GQF500hPDvNsGHg=="
- },
- "@types/babylon": {
- "version": "6.16.2",
- "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.2.tgz",
- "integrity": "sha512-+Jty46mPaWe1VAyZbfvgJM4BAdklLWxrT5tc/RjvCgLrtk6gzRY6AOnoWFv4p6hVxhJshDdr2hGVn56alBp97Q==",
- "requires": {
- "@types/babel-types": "7.0.2"
- }
- },
- "JSONStream": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.2.tgz",
- "integrity": "sha1-wQI3G27Dp887hHygDCC7D85Mbeo=",
- "requires": {
- "jsonparse": "1.3.1",
- "through": "2.3.8"
- }
- },
- "accepts": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
- "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
- "requires": {
- "mime-types": "2.1.18",
- "negotiator": "0.6.1"
- }
- },
- "acorn": {
- "version": "5.5.3",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz",
- "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ=="
- },
- "acorn-jsx": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz",
- "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=",
- "requires": {
- "acorn": "3.3.0"
- },
- "dependencies": {
- "acorn": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
- "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo="
- }
- }
- },
- "adverb-where": {
- "version": "0.0.9",
- "resolved": "https://registry.npmjs.org/adverb-where/-/adverb-where-0.0.9.tgz",
- "integrity": "sha1-CcXN3Y1QO5/l924LjcXHCo8ZPjQ="
- },
- "ajv": {
- "version": "4.11.8",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
- "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
- "requires": {
- "co": "4.6.0",
- "json-stable-stringify": "1.0.1"
- }
- },
- "ajv-keywords": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz",
- "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw="
- },
- "alex": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/alex/-/alex-3.1.0.tgz",
- "integrity": "sha1-tn7y1Mz/I7tvsDfE9onSfVvsYYE=",
- "requires": {
- "bail": "1.0.3",
- "get-stdin": "5.0.1",
- "glob": "7.1.2",
- "globby": "5.0.0",
- "meow": "3.7.0",
- "minimatch": "3.0.4",
- "remark-message-control": "2.0.3",
- "remark-parse": "1.1.0",
- "remark-retext": "2.0.0",
- "retext-english": "2.0.0",
- "retext-equality": "2.5.0",
- "retext-profanities": "3.1.0",
- "to-vfile": "1.0.0",
- "unified": "4.2.1",
- "update-notifier": "1.0.3",
- "vfile": "1.4.0",
- "vfile-find-down": "1.0.0",
- "vfile-find-up": "1.0.0",
- "vfile-reporter": "1.5.0",
- "vfile-sort": "1.0.0"
- }
- },
- "amdefine": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
- "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU="
- },
- "ansi-align": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-1.1.0.tgz",
- "integrity": "sha1-LwwWWIKXOa3V67FeawxuNCPwFro=",
- "requires": {
- "string-width": "1.0.2"
- }
- },
- "ansi-escapes": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz",
- "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4="
- },
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
- },
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
- },
- "anymatch": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz",
- "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==",
- "requires": {
- "micromatch": "2.3.11",
- "normalize-path": "2.1.1"
- }
- },
- "argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "requires": {
- "sprintf-js": "1.0.3"
- }
- },
- "arr-diff": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
- "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
- "requires": {
- "arr-flatten": "1.1.0"
- }
- },
- "arr-filter": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz",
- "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=",
- "requires": {
- "make-iterator": "1.0.1"
- },
- "dependencies": {
- "kind-of": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
- },
- "make-iterator": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz",
- "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==",
- "requires": {
- "kind-of": "6.0.2"
- }
- }
- }
- },
- "arr-flatten": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
- "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg=="
- },
- "array-differ": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz",
- "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE="
- },
- "array-every": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/array-every/-/array-every-0.1.2.tgz",
- "integrity": "sha1-vlTPf7/ExHd7uoXHr37awoNtg+0=",
- "requires": {
- "make-iterator": "0.1.1"
- }
- },
- "array-find-index": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
- "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E="
- },
- "array-flatten": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
- "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
- },
- "array-includes": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz",
- "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=",
- "requires": {
- "define-properties": "1.1.2",
- "es-abstract": "1.11.0"
- }
- },
- "array-intersection": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/array-intersection/-/array-intersection-0.1.2.tgz",
- "integrity": "sha1-sU7wId8l6cnYBBFshHzGoNZ8+s4=",
- "requires": {
- "array-every": "0.1.2",
- "array-slice": "0.2.3",
- "array-unique": "0.2.1",
- "filter-array": "0.2.0",
- "index-of": "0.1.1"
- }
- },
- "array-iterate": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-1.1.2.tgz",
- "integrity": "sha512-1hWSHTIlG/8wtYD+PPX5AOBtKWngpDFjrsrHgZpe+JdgNGz0udYu6ZIkAa/xuenIUEqFv7DvE2Yr60jxweJSrQ=="
- },
- "array-slice": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz",
- "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU="
- },
- "array-union": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
- "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
- "requires": {
- "array-uniq": "1.0.3"
- }
- },
- "array-uniq": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
- "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY="
- },
- "array-unique": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz",
- "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM="
- },
- "array.prototype.find": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.0.4.tgz",
- "integrity": "sha1-VWpcU2LAhkgyPdrrnenRS8GGTJA=",
- "requires": {
- "define-properties": "1.1.2",
- "es-abstract": "1.11.0"
- }
- },
- "arrify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
- "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0="
- },
- "asap": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
- "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
- },
- "asn1": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
- "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y="
- },
- "assert-plus": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
- "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ="
- },
- "async": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
- "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo="
- },
- "async-each": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
- "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0="
- },
- "attach-ware": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/attach-ware/-/attach-ware-1.1.1.tgz",
- "integrity": "sha1-KPUTk92LuL2q2XI0JRm/CWIaNaM=",
- "requires": {
- "unherit": "1.1.1"
- }
- },
- "autoprefixer": {
- "version": "7.2.6",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.6.tgz",
- "integrity": "sha512-Iq8TRIB+/9eQ8rbGhcP7ct5cYb/3qjNYAR2SnzLCEcwF6rvVOax8+9+fccgXk4bEhQGjOZd5TLhsksmAdsbGqQ==",
- "requires": {
- "browserslist": "2.11.3",
- "caniuse-lite": "1.0.30000846",
- "normalize-range": "0.1.2",
- "num2fraction": "1.2.2",
- "postcss": "6.0.22",
- "postcss-value-parser": "3.3.0"
- }
- },
- "aws-sign2": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
- "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8="
- },
- "aws4": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz",
- "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w=="
- },
- "babel-code-frame": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
- "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
- "requires": {
- "chalk": "1.1.3",
- "esutils": "2.0.2",
- "js-tokens": "3.0.2"
- }
- },
- "babel-eslint": {
- "version": "8.0.3",
- "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-8.0.3.tgz",
- "integrity": "sha512-7D4iUpylEiKJPGbeSAlNddGcmA41PadgZ6UAb6JVyh003h3d0EbZusYFBR/+nBgqtaVJM2J2zUVa3N0hrpMH6g==",
- "requires": {
- "@babel/code-frame": "7.0.0-beta.31",
- "@babel/traverse": "7.0.0-beta.31",
- "@babel/types": "7.0.0-beta.31",
- "babylon": "7.0.0-beta.31"
- }
- },
- "babel-polyfill": {
- "version": "6.23.0",
- "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz",
- "integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=",
- "requires": {
- "babel-runtime": "6.26.0",
- "core-js": "2.5.7",
- "regenerator-runtime": "0.10.5"
- }
- },
- "babel-runtime": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
- "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
- "requires": {
- "core-js": "2.5.7",
- "regenerator-runtime": "0.11.1"
- },
- "dependencies": {
- "regenerator-runtime": {
- "version": "0.11.1",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
- "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
- }
- }
- },
- "babel-types": {
- "version": "6.26.0",
- "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
- "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
- "requires": {
- "babel-runtime": "6.26.0",
- "esutils": "2.0.2",
- "lodash": "4.17.10",
- "to-fast-properties": "1.0.3"
- },
- "dependencies": {
- "to-fast-properties": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
- "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc="
- }
- }
- },
- "babylon": {
- "version": "7.0.0-beta.31",
- "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.31.tgz",
- "integrity": "sha512-6lm2mV3S51yEnKmQQNnswoABL1U1H1KHoCCVwdwI3hvIv+W7ya4ki7Aw4o4KxtUHjNKkK5WpZb22rrMMOcJXJQ=="
- },
- "bail": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.3.tgz",
- "integrity": "sha512-1X8CnjFVQ+a+KW36uBNMTU5s8+v5FzeqrP7hTG5aTb4aPreSbZJlhwPon9VKMuEVgV++JM+SQrALY3kr7eswdg=="
- },
- "balanced-match": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
- },
- "bash-color": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/bash-color/-/bash-color-0.0.3.tgz",
- "integrity": "sha1-DAiSHsATk6tW6kRPCCXlSTyg5qI="
- },
- "basic-auth": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.0.tgz",
- "integrity": "sha1-AV2z81PgLlY3d1X5YnQuiYHnu7o=",
- "requires": {
- "safe-buffer": "5.1.1"
- },
- "dependencies": {
- "safe-buffer": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
- "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
- }
- }
- },
- "bcrypt-pbkdf": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
- "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
- "optional": true,
- "requires": {
- "tweetnacl": "0.14.5"
- }
- },
- "binary-extensions": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz",
- "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU="
- },
- "binary-search": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/binary-search/-/binary-search-1.3.3.tgz",
- "integrity": "sha512-T/jKp3vw1JI+6KQgsyT5R6CcRhMtxlHojeKrA5gX5WG50BQaoujRfoJJKMkuokNuZ0w2S+1wHufEWzw6Qhj30Q=="
- },
- "bl": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz",
- "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==",
- "requires": {
- "readable-stream": "2.3.6",
- "safe-buffer": "5.1.2"
- }
- },
- "block-stream": {
- "version": "0.0.9",
- "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
- "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
- "requires": {
- "inherits": "2.0.3"
- }
- },
- "bluebird": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
- "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA=="
- },
- "body-parser": {
- "version": "1.18.3",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz",
- "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=",
- "requires": {
- "bytes": "3.0.0",
- "content-type": "1.0.4",
- "debug": "2.6.9",
- "depd": "1.1.2",
- "http-errors": "1.6.3",
- "iconv-lite": "0.4.23",
- "on-finished": "2.3.0",
- "qs": "6.5.2",
- "raw-body": "2.3.3",
- "type-is": "1.6.16"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- }
- }
- },
- "boolbase": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
- "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
- },
- "boom": {
- "version": "2.10.1",
- "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
- "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
- "requires": {
- "hoek": "2.16.3"
- }
- },
- "bootlint": {
- "version": "0.14.2",
- "resolved": "https://registry.npmjs.org/bootlint/-/bootlint-0.14.2.tgz",
- "integrity": "sha1-wEw3PWXf0KTQ33wtuz4ppuFQy3A=",
- "requires": {
- "binary-search": "1.3.3",
- "bluebird": "3.5.1",
- "body-parser": "1.18.3",
- "chalk": "1.1.3",
- "cheerio": "0.19.0",
- "commander": "2.15.1",
- "debug": "2.6.9",
- "express": "4.16.3",
- "glob": "6.0.4",
- "morgan": "1.9.0",
- "semver": "5.5.0",
- "void-elements": "2.0.1"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "glob": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
- "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
- "requires": {
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
- }
- }
- }
- },
- "boundary": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/boundary/-/boundary-1.0.1.tgz",
- "integrity": "sha1-TWfcJgLAzBbdm85+v4fpSCkPWBI="
- },
- "boxen": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/boxen/-/boxen-0.6.0.tgz",
- "integrity": "sha1-g2TUJIrDT/DvGy8r9JpsYM4NgbY=",
- "requires": {
- "ansi-align": "1.1.0",
- "camelcase": "2.1.1",
- "chalk": "1.1.3",
- "cli-boxes": "1.0.0",
- "filled-array": "1.1.0",
- "object-assign": "4.1.1",
- "repeating": "2.0.1",
- "string-width": "1.0.2",
- "widest-line": "1.0.0"
- }
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "requires": {
- "balanced-match": "1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "1.8.5",
- "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz",
- "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
- "requires": {
- "expand-range": "1.8.2",
- "preserve": "0.2.0",
- "repeat-element": "1.1.2"
- }
- },
- "browserslist": {
- "version": "2.11.3",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz",
- "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==",
- "requires": {
- "caniuse-lite": "1.0.30000846",
- "electron-to-chromium": "1.3.48"
- }
- },
- "bubble-stream-error": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/bubble-stream-error/-/bubble-stream-error-1.0.0.tgz",
- "integrity": "sha1-fa2X8XEo2jlhab83raSssZU2HjA=",
- "requires": {
- "once": "1.4.0",
- "sliced": "1.0.1"
- }
- },
- "buffer-alloc": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
- "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
- "requires": {
- "buffer-alloc-unsafe": "1.1.0",
- "buffer-fill": "1.0.0"
- }
- },
- "buffer-alloc-unsafe": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
- "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
- },
- "buffer-fill": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
- "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw="
- },
- "builtin-modules": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
- "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8="
- },
- "bytes": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
- "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
- },
- "call-me-maybe": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz",
- "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms="
- },
- "caller-path": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz",
- "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=",
- "requires": {
- "callsites": "0.2.0"
- }
- },
- "callsites": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz",
- "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo="
- },
- "camelcase": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
- "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8="
- },
- "camelcase-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
- "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
- "requires": {
- "camelcase": "2.1.1",
- "map-obj": "1.0.1"
- }
- },
- "caniuse-db": {
- "version": "1.0.30000846",
- "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000846.tgz",
- "integrity": "sha1-2chvkUc4202gmO7e2ZdBPERWG9I="
- },
- "caniuse-lite": {
- "version": "1.0.30000846",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000846.tgz",
- "integrity": "sha512-qxUOHr5mTaadWH1ap0ueivHd8x42Bnemcn+JutVr7GWmm2bU4zoBhjuv5QdXgALQnnT626lOQros7cCDf8PwCg=="
- },
- "capture-stack-trace": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz",
- "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0="
- },
- "carrack": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/carrack/-/carrack-0.0.5.tgz",
- "integrity": "sha1-qyj77c2NK5U9FkM1PiYicr8MS9s=",
- "requires": {
- "bluebird": "3.5.1"
- }
- },
- "caseless": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz",
- "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c="
- },
- "ccount": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.3.tgz",
- "integrity": "sha512-Jt9tIBkRc9POUof7QA/VwWd+58fKkEEfI+/t1/eOlxKM7ZhrczNzMFefge7Ai+39y1pR/pP6cI19guHy3FSLmw=="
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "requires": {
- "ansi-styles": "2.2.1",
- "escape-string-regexp": "1.0.5",
- "has-ansi": "2.0.0",
- "strip-ansi": "3.0.1",
- "supports-color": "2.0.0"
- }
- },
- "character-entities": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.2.tgz",
- "integrity": "sha512-sMoHX6/nBiy3KKfC78dnEalnpn0Az0oSNvqUWYTtYrhRI5iUIYsROU48G+E+kMFQzqXaJ8kHJZ85n7y6/PHgwQ=="
- },
- "character-entities-html4": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.2.tgz",
- "integrity": "sha512-sIrXwyna2+5b0eB9W149izTPJk/KkJTg6mEzDGibwBUkyH1SbDa+nf515Ppdi3MaH35lW0JFJDWeq9Luzes1Iw=="
- },
- "character-entities-legacy": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.2.tgz",
- "integrity": "sha512-9NB2VbXtXYWdXzqrvAHykE/f0QJxzaKIpZ5QzNZrrgQ7Iyxr2vnfS8fCBNVW9nUEZE0lo57nxKRqnzY/dKrwlA=="
- },
- "character-parser": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz",
- "integrity": "sha1-x84o821LzZdE5f/CxfzeHHMmH8A=",
- "requires": {
- "is-regex": "1.0.4"
- }
- },
- "character-reference-invalid": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.2.tgz",
- "integrity": "sha512-7I/xceXfKyUJmSAn/jw8ve/9DyOP7XxufNYLI9Px7CmsKgEUaZLUTax6nZxGQtaoiZCjpu6cHPj20xC/vqRReQ=="
- },
- "charenc": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
- "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc="
- },
- "check-ends-with-period": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/check-ends-with-period/-/check-ends-with-period-1.0.1.tgz",
- "integrity": "sha1-19KdYUy8PtFatUGQ9P2k3qoxQdg=",
- "requires": {
- "array.prototype.find": "2.0.4",
- "emoji-regex": "6.5.1",
- "end-with": "1.0.2"
- },
- "dependencies": {
- "emoji-regex": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.5.1.tgz",
- "integrity": "sha512-PAHp6TxrCy7MGMFidro8uikr+zlJJKJ/Q6mm2ExZ7HwkyR9lSVFfE3kt36qcwa24BQL7y0G9axycGjK1A/0uNQ=="
- }
- }
- },
- "check-types": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/check-types/-/check-types-4.3.0.tgz",
- "integrity": "sha1-90OvhLqh4hpXohv2AZsOM+tqEsE="
- },
- "cheerio": {
- "version": "0.19.0",
- "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.19.0.tgz",
- "integrity": "sha1-dy5wFfLuKZZQltcepBdbdas1SSU=",
- "requires": {
- "css-select": "1.0.0",
- "dom-serializer": "0.1.0",
- "entities": "1.1.1",
- "htmlparser2": "3.8.3",
- "lodash": "3.10.1"
- },
- "dependencies": {
- "lodash": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
- "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y="
- }
- }
- },
- "chokidar": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz",
- "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=",
- "requires": {
- "anymatch": "1.3.2",
- "async-each": "1.0.1",
- "fsevents": "1.2.4",
- "glob-parent": "2.0.0",
- "inherits": "2.0.3",
- "is-binary-path": "1.0.1",
- "is-glob": "2.0.1",
- "path-is-absolute": "1.0.1",
- "readdirp": "2.1.0"
- }
- },
- "chrono-node": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/chrono-node/-/chrono-node-1.3.5.tgz",
- "integrity": "sha1-oklSmKMtqCvMAa2b59d++l4kQSI=",
- "requires": {
- "moment": "2.22.1"
- }
- },
- "ci-info": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.3.tgz",
- "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg=="
- },
- "circular-json": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
- "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A=="
- },
- "cli": {
- "version": "0.6.6",
- "resolved": "https://registry.npmjs.org/cli/-/cli-0.6.6.tgz",
- "integrity": "sha1-Aq1Eo4Cr8nraxebwzdewQ9dMU+M=",
- "requires": {
- "exit": "0.1.2",
- "glob": "3.2.11"
- },
- "dependencies": {
- "glob": {
- "version": "3.2.11",
- "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz",
- "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=",
- "requires": {
- "inherits": "2.0.3",
- "minimatch": "0.3.0"
- }
- },
- "minimatch": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz",
- "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=",
- "requires": {
- "lru-cache": "2.7.3",
- "sigmund": "1.0.1"
- }
- }
- }
- },
- "cli-boxes": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz",
- "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM="
- },
- "cli-color": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-1.2.0.tgz",
- "integrity": "sha1-OlrnT9drYmevZm5p4q+70B3vNNE=",
- "requires": {
- "ansi-regex": "2.1.1",
- "d": "1.0.0",
- "es5-ext": "0.10.44",
- "es6-iterator": "2.0.3",
- "memoizee": "0.4.12",
- "timers-ext": "0.1.5"
- }
- },
- "cli-cursor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz",
- "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=",
- "requires": {
- "restore-cursor": "1.0.1"
- }
- },
- "cli-table": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz",
- "integrity": "sha1-9TsFJmqLGguTSz0IIebi3FkUriM=",
- "requires": {
- "colors": "1.0.3"
- }
- },
- "cli-width": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
- "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk="
- },
- "cliui": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
- "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
- "requires": {
- "string-width": "1.0.2",
- "strip-ansi": "3.0.1",
- "wrap-ansi": "2.1.0"
- }
- },
- "clone": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz",
- "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs="
- },
- "clone-regexp": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-1.0.1.tgz",
- "integrity": "sha512-Fcij9IwRW27XedRIJnSOEupS7RVcXtObJXbcUOX93UCLqqOdRpkvzKywOOSizmEK/Is3S/RHX9dLdfo6R1Q1mw==",
- "requires": {
- "is-regexp": "1.0.0",
- "is-supported-regexp-flag": "1.0.1"
- }
- },
- "co": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
- "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
- },
- "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="
- },
- "coffee-script": {
- "version": "1.11.1",
- "resolved": "https://registry.npmjs.org/coffee-script/-/coffee-script-1.11.1.tgz",
- "integrity": "sha1-vxxHrWREOg2V0S3ysUfMCk2q1uk="
- },
- "coffeelint": {
- "version": "1.16.2",
- "resolved": "https://registry.npmjs.org/coffeelint/-/coffeelint-1.16.2.tgz",
- "integrity": "sha512-6mzgOo4zb17WfdrSui/cSUEgQ0AQkW3gXDht+6lHkfkqGUtSYKwGdGcXsDfAyuScVzTlTtKdfwkAlJWfqul7zg==",
- "requires": {
- "coffee-script": "1.11.1",
- "glob": "7.1.2",
- "ignore": "3.3.8",
- "optimist": "0.6.1",
- "resolve": "0.6.3",
- "strip-json-comments": "1.0.4"
- },
- "dependencies": {
- "strip-json-comments": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz",
- "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E="
- }
- }
- },
- "collapse-white-space": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.4.tgz",
- "integrity": "sha512-YfQ1tAUZm561vpYD+5eyWN8+UsceQbSrqqlc/6zDY2gtAE+uZLSdkkovhnGpmCThsvKBFakq4EdY/FF93E8XIw=="
- },
- "color-convert": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz",
- "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-diff": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/color-diff/-/color-diff-0.1.7.tgz",
- "integrity": "sha1-bbeM2UgqjkWdQIIer0tQMoPcuOI="
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
- },
- "colorguard": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/colorguard/-/colorguard-1.2.1.tgz",
- "integrity": "sha512-qYVKTg626qpDg4/eBnPXidEPXn5+krbYqHVfyyEFBWV5z3IF4p44HKY/eE2t1ohlcrlIkDgHmFJMfQ8qMLnSFw==",
- "requires": {
- "chalk": "1.1.3",
- "color-diff": "0.1.7",
- "log-symbols": "1.0.2",
- "object-assign": "4.1.1",
- "pipetteur": "2.0.3",
- "plur": "2.1.2",
- "postcss": "5.2.18",
- "postcss-reporter": "1.4.1",
- "text-table": "0.2.0",
- "yargs": "1.3.3"
- },
- "dependencies": {
- "has-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
- "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo="
- },
- "postcss": {
- "version": "5.2.18",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
- "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
- "requires": {
- "chalk": "1.1.3",
- "js-base64": "2.4.5",
- "source-map": "0.5.7",
- "supports-color": "3.2.3"
- }
- },
- "postcss-reporter": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-1.4.1.tgz",
- "integrity": "sha1-wTbwpbFhkV83ndN2XGEHX357mvI=",
- "requires": {
- "chalk": "1.1.3",
- "lodash": "4.17.10",
- "log-symbols": "1.0.2",
- "postcss": "5.2.18"
- }
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
- },
- "supports-color": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
- "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
- "requires": {
- "has-flag": "1.0.0"
- }
- },
- "yargs": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-1.3.3.tgz",
- "integrity": "sha1-BU3oth8i7v23IHBZ6u+da4P7kxo="
- }
- }
- },
- "colors": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
- "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs="
- },
- "columnify": {
- "version": "1.5.4",
- "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz",
- "integrity": "sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=",
- "requires": {
- "strip-ansi": "3.0.1",
- "wcwidth": "1.0.1"
- }
- },
- "combined-stream": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
- "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
- "requires": {
- "delayed-stream": "1.0.0"
- }
- },
- "commander": {
- "version": "2.15.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
- "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag=="
- },
- "complexity-report": {
- "version": "2.0.0-alpha",
- "resolved": "https://registry.npmjs.org/complexity-report/-/complexity-report-2.0.0-alpha.tgz",
- "integrity": "sha1-nzsB5HCwuhHMpHJrQut/IaoEOxw=",
- "requires": {
- "async": "1.5.2",
- "check-types": "4.3.0",
- "commander": "2.15.1",
- "escomplex": "2.0.0-alpha",
- "esprima": "2.7.3"
- }
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
- },
- "concat-stream": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz",
- "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=",
- "requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.0.6",
- "typedarray": "0.0.6"
- },
- "dependencies": {
- "process-nextick-args": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
- "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
- },
- "readable-stream": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
- "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "1.0.0",
- "process-nextick-args": "1.0.7",
- "string_decoder": "0.10.31",
- "util-deprecate": "1.0.2"
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
- }
- }
- },
- "configstore": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/configstore/-/configstore-2.1.0.tgz",
- "integrity": "sha1-c3o6cDbpiGECqmCZ5HuzOrGroaE=",
- "requires": {
- "dot-prop": "3.0.0",
- "graceful-fs": "4.1.11",
- "mkdirp": "0.5.1",
- "object-assign": "4.1.1",
- "os-tmpdir": "1.0.2",
- "osenv": "0.1.5",
- "uuid": "2.0.3",
- "write-file-atomic": "1.3.4",
- "xdg-basedir": "2.0.0"
- }
- },
- "console-browserify": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
- "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
- "requires": {
- "date-now": "0.1.4"
- }
- },
- "constantinople": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz",
- "integrity": "sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw==",
- "requires": {
- "@types/babel-types": "7.0.2",
- "@types/babylon": "6.16.2",
- "babel-types": "6.26.0",
- "babylon": "6.18.0"
- },
- "dependencies": {
- "babylon": {
- "version": "6.18.0",
- "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
- "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ=="
- }
- }
- },
- "contains-path": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
- "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo="
- },
- "content-disposition": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
- "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ="
- },
- "content-type": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
- "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
- },
- "cookie": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
- "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
- },
- "cookie-signature": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
- },
- "core-js": {
- "version": "2.5.7",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz",
- "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw=="
- },
- "core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
- },
- "cosmiconfig": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz",
- "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==",
- "requires": {
- "is-directory": "0.3.1",
- "js-yaml": "3.11.0",
- "minimist": "1.2.0",
- "object-assign": "4.1.1",
- "os-homedir": "1.0.2",
- "parse-json": "2.2.0",
- "require-from-string": "1.2.1"
- },
- "dependencies": {
- "esprima": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
- "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw=="
- },
- "js-yaml": {
- "version": "3.11.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz",
- "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==",
- "requires": {
- "argparse": "1.0.10",
- "esprima": "4.0.0"
- }
- }
- }
- },
- "crc": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/crc/-/crc-3.2.1.tgz",
- "integrity": "sha1-XZyPt3okXNXsopHl0tAFM0urAII="
- },
- "create-error-class": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
- "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=",
- "requires": {
- "capture-stack-trace": "1.0.0"
- }
- },
- "cross-spawn": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
- "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
- "requires": {
- "lru-cache": "4.1.3",
- "shebang-command": "1.2.0",
- "which": "1.3.1"
- },
- "dependencies": {
- "lru-cache": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz",
- "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==",
- "requires": {
- "pseudomap": "1.0.2",
- "yallist": "2.1.2"
- }
- }
- }
- },
- "crypt": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
- "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs="
- },
- "cryptiles": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
- "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
- "requires": {
- "boom": "2.10.1"
- }
- },
- "crypto-random-string": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
- "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4="
- },
- "css-color-names": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.3.tgz",
- "integrity": "sha1-3gzvFvTYqoIioyDVttfpu62nufY="
- },
- "css-rule-stream": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/css-rule-stream/-/css-rule-stream-1.1.0.tgz",
- "integrity": "sha1-N4bnGYmD2WWibjGVfgkHjLt3BaI=",
- "requires": {
- "css-tokenize": "1.0.1",
- "duplexer2": "0.0.2",
- "ldjson-stream": "1.2.1",
- "through2": "0.6.5"
- },
- "dependencies": {
- "duplexer2": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz",
- "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=",
- "requires": {
- "readable-stream": "1.1.14"
- }
- },
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
- },
- "readable-stream": {
- "version": "1.1.14",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
- "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "0.0.1",
- "string_decoder": "0.10.31"
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
- }
- }
- },
- "css-select": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.0.0.tgz",
- "integrity": "sha1-sRIcpRhI3SZOIkTQWM7iVN7rRLA=",
- "requires": {
- "boolbase": "1.0.0",
- "css-what": "1.0.0",
- "domutils": "1.4.3",
- "nth-check": "1.0.1"
- }
- },
- "css-selector-parser": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.3.0.tgz",
- "integrity": "sha1-XxrUPi2O77/cME/NOaUhZklD4+s="
- },
- "css-tokenize": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/css-tokenize/-/css-tokenize-1.0.1.tgz",
- "integrity": "sha1-RiXLHtohwUOFi3+B1oA8HSb8FL4=",
- "requires": {
- "inherits": "2.0.3",
- "readable-stream": "1.1.14"
- },
- "dependencies": {
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
- },
- "readable-stream": {
- "version": "1.1.14",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
- "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "0.0.1",
- "string_decoder": "0.10.31"
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
- }
- }
- },
- "css-what": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-1.0.0.tgz",
- "integrity": "sha1-18wt9FGAZm+Z0rFEYmOUaeAPc2w="
- },
- "csscomb": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/csscomb/-/csscomb-4.2.0.tgz",
- "integrity": "sha512-HXXCSVTpHck64PUMIn/2I8auBGmIpx+cD/Hs+KnYH+p9iaMTN0cd38l22qYVp8vEp6v9w+Bbi0SD8iN8fgrINg==",
- "requires": {
- "babel-polyfill": "6.23.0",
- "glob": "7.1.2",
- "gonzales-pe": "3.4.7",
- "minimatch": "3.0.2",
- "minimist": "1.1.3",
- "vow": "0.4.4",
- "vow-fs": "0.3.6"
- },
- "dependencies": {
- "glob": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
- "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
- "requires": {
- "fs.realpath": "1.0.0",
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
- },
- "dependencies": {
- "minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "requires": {
- "brace-expansion": "1.1.11"
- }
- }
- }
- },
- "minimatch": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz",
- "integrity": "sha1-DzmKcwDqRB6cNIyD2Yq4ydv5xAo=",
- "requires": {
- "brace-expansion": "1.1.11"
- }
- },
- "minimist": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz",
- "integrity": "sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag="
- }
- }
- },
- "csslint": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/csslint/-/csslint-1.0.5.tgz",
- "integrity": "sha1-Gcw+2jIhYP0/cjKvHLKjYOiYouk=",
- "requires": {
- "clone": "2.1.1",
- "parserlib": "1.1.1"
- }
- },
- "currently-unhandled": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
- "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
- "requires": {
- "array-find-index": "1.0.2"
- }
- },
- "cuss": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/cuss/-/cuss-1.8.0.tgz",
- "integrity": "sha512-1vDkoOC7UnYKksgE0NCLI5wO/3k694vRbgKWLrQVCD7YMIxnyI2cIveYfF54qOc6OB202t5Kb1EDPsrCLeO9Uw=="
- },
- "cycle": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz",
- "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI="
- },
- "d": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
- "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
- "requires": {
- "es5-ext": "0.10.44"
- }
- },
- "dashdash": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
- "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
- "requires": {
- "assert-plus": "1.0.0"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
- }
- }
- },
- "date-now": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
- "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs="
- },
- "debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "debug-log": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz",
- "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8="
- },
- "decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
- },
- "deep-equal": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
- "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU="
- },
- "deep-extend": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
- "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
- },
- "deep-is": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
- "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ="
- },
- "defaults": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz",
- "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
- "requires": {
- "clone": "1.0.4"
- },
- "dependencies": {
- "clone": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
- "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4="
- }
- }
- },
- "define-properties": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz",
- "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=",
- "requires": {
- "foreach": "2.0.5",
- "object-keys": "1.0.11"
- }
- },
- "deglob": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.0.tgz",
- "integrity": "sha1-TUSr4W7zLHebSXK9FBqAMlApoUo=",
- "requires": {
- "find-root": "1.1.0",
- "glob": "7.1.2",
- "ignore": "3.3.8",
- "pkg-config": "1.1.1",
- "run-parallel": "1.1.9",
- "uniq": "1.0.1"
- }
- },
- "del": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz",
- "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=",
- "requires": {
- "globby": "5.0.0",
- "is-path-cwd": "1.0.0",
- "is-path-in-cwd": "1.0.1",
- "object-assign": "4.1.1",
- "pify": "2.3.0",
- "pinkie-promise": "2.0.1",
- "rimraf": "2.6.2"
- }
- },
- "delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
- },
- "depd": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
- },
- "destroy": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
- "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
- },
- "diff": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/diff/-/diff-2.2.3.tgz",
- "integrity": "sha1-YOr9DSjukG5Oj/ClLBIpUhAzv5k="
- },
- "docker-modem": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-1.0.6.tgz",
- "integrity": "sha512-kDwWa5QaiVMB8Orbb7nXdGdwEZHKfEm7iPwglXe1KorImMpmGNlhC7A5LG0p8rrCcz1J4kJhq/o63lFjDdj8rQ==",
- "requires": {
- "JSONStream": "1.3.2",
- "debug": "3.1.0",
- "readable-stream": "1.0.34",
- "split-ca": "1.0.1"
- },
- "dependencies": {
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
- },
- "readable-stream": {
- "version": "1.0.34",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
- "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "0.0.1",
- "string_decoder": "0.10.31"
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
- }
- }
- },
- "dockerfile_lint": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/dockerfile_lint/-/dockerfile_lint-0.3.2.tgz",
- "integrity": "sha512-CyJ5I2l4LMP8crxGcGxoej+zxDcAA41ZnucDAUW9ccxQKFbxyuzvzUtxRbWYfByksQI3Fuk5c6vmvV/bTJi/ig==",
- "requires": {
- "commander": "2.9.0",
- "dockerode": "2.5.5",
- "js-yaml": "3.2.7",
- "lodash": "2.4.2",
- "winston": "2.4.2"
- },
- "dependencies": {
- "commander": {
- "version": "2.9.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz",
- "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=",
- "requires": {
- "graceful-readlink": "1.0.1"
- }
- },
- "lodash": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
- "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4="
- }
- }
- },
- "dockerode": {
- "version": "2.5.5",
- "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-2.5.5.tgz",
- "integrity": "sha512-H3HX18xKmy51wqpPHvGDwPOotJMy9l/AWfiaVu4imrgBGr384rINEB2FwTwoYU++krkZjseVYyiVK8CnRz2tkw==",
- "requires": {
- "concat-stream": "1.5.2",
- "docker-modem": "1.0.6",
- "tar-fs": "1.12.0"
- }
- },
- "doctrine": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
- "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
- "requires": {
- "esutils": "2.0.2"
- }
- },
- "doiuse": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/doiuse/-/doiuse-2.6.0.tgz",
- "integrity": "sha1-GJLRC2Gpo1at2/K2FJM+gfi7ODQ=",
- "requires": {
- "browserslist": "1.7.7",
- "caniuse-db": "1.0.30000846",
- "css-rule-stream": "1.1.0",
- "duplexer2": "0.0.2",
- "jsonfilter": "1.1.2",
- "ldjson-stream": "1.2.1",
- "lodash": "4.17.10",
- "multimatch": "2.1.0",
- "postcss": "5.2.18",
- "source-map": "0.4.4",
- "through2": "0.6.5",
- "yargs": "3.32.0"
- },
- "dependencies": {
- "browserslist": {
- "version": "1.7.7",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
- "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
- "requires": {
- "caniuse-db": "1.0.30000846",
- "electron-to-chromium": "1.3.48"
- }
- },
- "duplexer2": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz",
- "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=",
- "requires": {
- "readable-stream": "1.1.14"
- }
- },
- "has-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
- "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo="
- },
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
- },
- "postcss": {
- "version": "5.2.18",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
- "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
- "requires": {
- "chalk": "1.1.3",
- "js-base64": "2.4.5",
- "source-map": "0.5.7",
- "supports-color": "3.2.3"
- },
- "dependencies": {
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
- }
- }
- },
- "readable-stream": {
- "version": "1.1.14",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
- "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "0.0.1",
- "string_decoder": "0.10.31"
- }
- },
- "source-map": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
- "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
- "requires": {
- "amdefine": "1.0.1"
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
- },
- "supports-color": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
- "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
- "requires": {
- "has-flag": "1.0.0"
- }
- },
- "window-size": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz",
- "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY="
- },
- "yargs": {
- "version": "3.32.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz",
- "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=",
- "requires": {
- "camelcase": "2.1.1",
- "cliui": "3.2.0",
- "decamelize": "1.2.0",
- "os-locale": "1.4.0",
- "string-width": "1.0.2",
- "window-size": "0.1.4",
- "y18n": "3.2.1"
- }
- }
- }
- },
- "dom-serializer": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
- "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=",
- "requires": {
- "domelementtype": "1.1.3",
- "entities": "1.1.1"
- },
- "dependencies": {
- "domelementtype": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz",
- "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs="
- }
- }
- },
- "domelementtype": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz",
- "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI="
- },
- "domhandler": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz",
- "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=",
- "requires": {
- "domelementtype": "1.3.0"
- }
- },
- "domutils": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.4.3.tgz",
- "integrity": "sha1-CGVRN5bGswYDGFDhdVFrr4C3Km8=",
- "requires": {
- "domelementtype": "1.3.0"
- }
- },
- "dot-prop": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz",
- "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=",
- "requires": {
- "is-obj": "1.0.1"
- }
- },
- "duplexer": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz",
- "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E="
- },
- "duplexer2": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
- "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
- "requires": {
- "readable-stream": "2.3.6"
- }
- },
- "duplexer3": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
- "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI="
- },
- "duplexify": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz",
- "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==",
- "requires": {
- "end-of-stream": "1.4.1",
- "inherits": "2.0.3",
- "readable-stream": "2.3.6",
- "stream-shift": "1.0.0"
- }
- },
- "e-prime": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/e-prime/-/e-prime-0.10.2.tgz",
- "integrity": "sha1-6pN165hWNt6IATx6n7EprZ4V7/g="
- },
- "ecc-jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
- "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
- "optional": true,
- "requires": {
- "jsbn": "0.1.1"
- }
- },
- "ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
- },
- "electron-to-chromium": {
- "version": "1.3.48",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.48.tgz",
- "integrity": "sha1-07DYWTgUBE4JLs4hCPw6ya6kuQA="
- },
- "elm": {
- "version": "0.18.0",
- "resolved": "https://registry.npmjs.org/elm/-/elm-0.18.0.tgz",
- "integrity": "sha1-kZuDCc2Tnf4v+dJS2WG2yJUJuXA=",
- "requires": {
- "mkdirp": "0.5.1",
- "promise": "7.1.1",
- "request": "2.74.0",
- "tar": "2.2.1"
- }
- },
- "emoji-regex": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.1.1.tgz",
- "integrity": "sha1-xs0OwbBkLio8Z6ETfvxeeW2k+I4="
- },
- "encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
- },
- "encoding": {
- "version": "0.1.12",
- "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
- "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
- "requires": {
- "iconv-lite": "0.4.23"
- }
- },
- "end-of-stream": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
- "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
- "requires": {
- "once": "1.4.0"
- }
- },
- "end-with": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/end-with/-/end-with-1.0.2.tgz",
- "integrity": "sha1-pDJ1WrT1Hn/HTzpxnGuB311mi9w="
- },
- "ent": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz",
- "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0="
- },
- "entities": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz",
- "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA="
- },
- "error-ex": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
- "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
- "requires": {
- "is-arrayish": "0.2.1"
- }
- },
- "es-abstract": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.11.0.tgz",
- "integrity": "sha512-ZnQrE/lXTTQ39ulXZ+J1DTFazV9qBy61x2bY071B+qGco8Z8q1QddsLdt/EF8Ai9hcWH72dWS0kFqXLxOxqslA==",
- "requires": {
- "es-to-primitive": "1.1.1",
- "function-bind": "1.1.1",
- "has": "1.0.1",
- "is-callable": "1.1.3",
- "is-regex": "1.0.4"
- }
- },
- "es-to-primitive": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz",
- "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=",
- "requires": {
- "is-callable": "1.1.3",
- "is-date-object": "1.0.1",
- "is-symbol": "1.0.1"
- }
- },
- "es5-ext": {
- "version": "0.10.44",
- "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.44.tgz",
- "integrity": "sha512-TO4Vt9IhW3FzDKLDOpoA8VS9BCV4b9WTf6BqvMOgfoa8wX73F3Kh3y2J7yTstTaXlQ0k1vq4DH2vw6RSs42z+g==",
- "requires": {
- "es6-iterator": "2.0.3",
- "es6-symbol": "3.1.1",
- "next-tick": "1.0.0"
- }
- },
- "es6-iterator": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
- "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
- "requires": {
- "d": "1.0.0",
- "es5-ext": "0.10.44",
- "es6-symbol": "3.1.1"
- }
- },
- "es6-map": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz",
- "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=",
- "requires": {
- "d": "1.0.0",
- "es5-ext": "0.10.44",
- "es6-iterator": "2.0.3",
- "es6-set": "0.1.5",
- "es6-symbol": "3.1.1",
- "event-emitter": "0.3.5"
- }
- },
- "es6-promise": {
- "version": "4.2.4",
- "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz",
- "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ=="
- },
- "es6-promisify": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
- "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
- "requires": {
- "es6-promise": "4.2.4"
- }
- },
- "es6-set": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz",
- "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=",
- "requires": {
- "d": "1.0.0",
- "es5-ext": "0.10.44",
- "es6-iterator": "2.0.3",
- "es6-symbol": "3.1.1",
- "event-emitter": "0.3.5"
- }
- },
- "es6-symbol": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
- "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
- "requires": {
- "d": "1.0.0",
- "es5-ext": "0.10.44"
- }
- },
- "es6-weak-map": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz",
- "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=",
- "requires": {
- "d": "1.0.0",
- "es5-ext": "0.10.44",
- "es6-iterator": "2.0.3",
- "es6-symbol": "3.1.1"
- }
- },
- "escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
- },
- "escomplex": {
- "version": "2.0.0-alpha",
- "resolved": "https://registry.npmjs.org/escomplex/-/escomplex-2.0.0-alpha.tgz",
- "integrity": "sha1-/Wp5hl2br1fEw+0bL+Z3cU5ElgY=",
- "requires": {
- "check-types": "5.1.0"
- },
- "dependencies": {
- "check-types": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/check-types/-/check-types-5.1.0.tgz",
- "integrity": "sha1-NzlN07YEKlEVXpJsOpF1PUmeXcg="
- }
- }
- },
- "escope": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz",
- "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=",
- "requires": {
- "es6-map": "0.1.5",
- "es6-weak-map": "2.0.2",
- "esrecurse": "4.2.1",
- "estraverse": "4.2.0"
- }
- },
- "eslint": {
- "version": "3.19.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz",
- "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=",
- "requires": {
- "babel-code-frame": "6.26.0",
- "chalk": "1.1.3",
- "concat-stream": "1.5.2",
- "debug": "2.6.9",
- "doctrine": "2.1.0",
- "escope": "3.6.0",
- "espree": "3.5.4",
- "esquery": "1.0.1",
- "estraverse": "4.2.0",
- "esutils": "2.0.2",
- "file-entry-cache": "2.0.0",
- "glob": "7.1.2",
- "globals": "9.18.0",
- "ignore": "3.3.8",
- "imurmurhash": "0.1.4",
- "inquirer": "0.12.0",
- "is-my-json-valid": "2.17.2",
- "is-resolvable": "1.1.0",
- "js-yaml": "3.11.0",
- "json-stable-stringify": "1.0.1",
- "levn": "0.3.0",
- "lodash": "4.17.10",
- "mkdirp": "0.5.1",
- "natural-compare": "1.4.0",
- "optionator": "0.8.2",
- "path-is-inside": "1.0.2",
- "pluralize": "1.2.1",
- "progress": "1.1.8",
- "require-uncached": "1.0.3",
- "shelljs": "0.7.8",
- "strip-bom": "3.0.0",
- "strip-json-comments": "2.0.1",
- "table": "3.8.3",
- "text-table": "0.2.0",
- "user-home": "2.0.0"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "esprima": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
- "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw=="
- },
- "globals": {
- "version": "9.18.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
- "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ=="
- },
- "js-yaml": {
- "version": "3.11.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz",
- "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==",
- "requires": {
- "argparse": "1.0.10",
- "esprima": "4.0.0"
- }
- },
- "strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM="
- }
- }
- },
- "eslint-config-happiness": {
- "version": "10.2.1",
- "resolved": "https://registry.npmjs.org/eslint-config-happiness/-/eslint-config-happiness-10.2.1.tgz",
- "integrity": "sha1-WOPSyCBTUrmCuogmELbWAg38ouQ="
- },
- "eslint-config-happiness-jsx": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/eslint-config-happiness-jsx/-/eslint-config-happiness-jsx-4.0.2.tgz",
- "integrity": "sha1-GNi825fUSOexn6MaJUkOygC1aDU="
- },
- "eslint-config-standard": {
- "version": "10.2.1",
- "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz",
- "integrity": "sha1-wGHk0GbzedwXzVYsZOgZtN1FRZE="
- },
- "eslint-config-standard-jsx": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-4.0.2.tgz",
- "integrity": "sha512-F8fRh2WFnTek7dZH9ZaE0PCBwdVGkwVWZmizla/DDNOmg7Tx6B/IlK5+oYpiX29jpu73LszeJj5i1axEZv6VMw=="
- },
- "eslint-import-resolver-node": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz",
- "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==",
- "requires": {
- "debug": "2.6.9",
- "resolve": "1.7.1"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "resolve": {
- "version": "1.7.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz",
- "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
- "requires": {
- "path-parse": "1.0.5"
- }
- }
- }
- },
- "eslint-module-utils": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz",
- "integrity": "sha1-snA2LNiLGkitMIl2zn+lTphBF0Y=",
- "requires": {
- "debug": "2.6.9",
- "pkg-dir": "1.0.0"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- }
- }
- },
- "eslint-plugin-import": {
- "version": "2.12.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.12.0.tgz",
- "integrity": "sha1-2tMXgSktZmSyUxf9BJ0uKy8CIF0=",
- "requires": {
- "contains-path": "0.1.0",
- "debug": "2.6.9",
- "doctrine": "1.5.0",
- "eslint-import-resolver-node": "0.3.2",
- "eslint-module-utils": "2.2.0",
- "has": "1.0.1",
- "lodash": "4.17.10",
- "minimatch": "3.0.4",
- "read-pkg-up": "2.0.0",
- "resolve": "1.7.1"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "doctrine": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
- "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
- "requires": {
- "esutils": "2.0.2",
- "isarray": "1.0.0"
- }
- },
- "find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
- "requires": {
- "locate-path": "2.0.0"
- }
- },
- "load-json-file": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
- "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
- "requires": {
- "graceful-fs": "4.1.11",
- "parse-json": "2.2.0",
- "pify": "2.3.0",
- "strip-bom": "3.0.0"
- }
- },
- "path-type": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
- "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
- "requires": {
- "pify": "2.3.0"
- }
- },
- "read-pkg": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
- "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
- "requires": {
- "load-json-file": "2.0.0",
- "normalize-package-data": "2.4.0",
- "path-type": "2.0.0"
- }
- },
- "read-pkg-up": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
- "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
- "requires": {
- "find-up": "2.1.0",
- "read-pkg": "2.0.0"
- }
- },
- "resolve": {
- "version": "1.7.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz",
- "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
- "requires": {
- "path-parse": "1.0.5"
- }
- },
- "strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM="
- }
- }
- },
- "eslint-plugin-node": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-4.2.3.tgz",
- "integrity": "sha512-vIUQPuwbVYdz/CYnlTLsJrRy7iXHQjdEe5wz0XhhdTym3IInM/zZLlPf9nZ2mThsH0QcsieCOWs2vOeCy/22LQ==",
- "requires": {
- "ignore": "3.3.8",
- "minimatch": "3.0.4",
- "object-assign": "4.1.1",
- "resolve": "1.7.1",
- "semver": "5.3.0"
- },
- "dependencies": {
- "resolve": {
- "version": "1.7.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz",
- "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
- "requires": {
- "path-parse": "1.0.5"
- }
- },
- "semver": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
- "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8="
- }
- }
- },
- "eslint-plugin-promise": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.5.0.tgz",
- "integrity": "sha1-ePu2/+BHIBYnVp6FpsU3OvKmj8o="
- },
- "eslint-plugin-react": {
- "version": "6.10.3",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz",
- "integrity": "sha1-xUNb6wZ3ThLH2y9qut3L+QDNP3g=",
- "requires": {
- "array.prototype.find": "2.0.4",
- "doctrine": "1.5.0",
- "has": "1.0.1",
- "jsx-ast-utils": "1.4.1",
- "object.assign": "4.1.0"
- },
- "dependencies": {
- "doctrine": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
- "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
- "requires": {
- "esutils": "2.0.2",
- "isarray": "1.0.0"
- }
- }
- }
- },
- "eslint-plugin-standard": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz",
- "integrity": "sha1-NNDJFbRe3G8BA5PH7vOCOwhWXPI="
- },
- "espree": {
- "version": "3.5.4",
- "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz",
- "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==",
- "requires": {
- "acorn": "5.5.3",
- "acorn-jsx": "3.0.1"
- }
- },
- "esprima": {
- "version": "2.7.3",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
- "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE="
- },
- "esquery": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
- "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
- "requires": {
- "estraverse": "4.2.0"
- }
- },
- "esrecurse": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
- "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
- "requires": {
- "estraverse": "4.2.0"
- }
- },
- "estraverse": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
- "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM="
- },
- "esutils": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
- "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs="
- },
- "etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
- },
- "event-emitter": {
- "version": "0.3.5",
- "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
- "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
- "requires": {
- "d": "1.0.0",
- "es5-ext": "0.10.44"
- }
- },
- "event-stream": {
- "version": "3.1.7",
- "resolved": "http://registry.npmjs.org/event-stream/-/event-stream-3.1.7.tgz",
- "integrity": "sha1-tMVAAS0P4UmEIPPYlGAI22OTw3o=",
- "requires": {
- "duplexer": "0.1.1",
- "from": "0.1.7",
- "map-stream": "0.1.0",
- "pause-stream": "0.0.11",
- "split": "0.2.10",
- "stream-combiner": "0.0.4",
- "through": "2.3.8"
- },
- "dependencies": {
- "stream-combiner": {
- "version": "0.0.4",
- "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz",
- "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=",
- "requires": {
- "duplexer": "0.1.1"
- }
- }
- }
- },
- "execa": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
- "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
- "requires": {
- "cross-spawn": "5.1.0",
- "get-stream": "3.0.0",
- "is-stream": "1.1.0",
- "npm-run-path": "2.0.2",
- "p-finally": "1.0.0",
- "signal-exit": "3.0.2",
- "strip-eof": "1.0.0"
- }
- },
- "execall": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/execall/-/execall-1.0.0.tgz",
- "integrity": "sha1-c9CQTjlbPKsGWLCNCewlMH8pu3M=",
- "requires": {
- "clone-regexp": "1.0.1"
- }
- },
- "exit": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
- "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw="
- },
- "exit-hook": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz",
- "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g="
- },
- "expand-brackets": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz",
- "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
- "requires": {
- "is-posix-bracket": "0.1.1"
- }
- },
- "expand-range": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz",
- "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
- "requires": {
- "fill-range": "2.2.4"
- }
- },
- "express": {
- "version": "4.16.3",
- "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz",
- "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=",
- "requires": {
- "accepts": "1.3.5",
- "array-flatten": "1.1.1",
- "body-parser": "1.18.2",
- "content-disposition": "0.5.2",
- "content-type": "1.0.4",
- "cookie": "0.3.1",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "depd": "1.1.2",
- "encodeurl": "1.0.2",
- "escape-html": "1.0.3",
- "etag": "1.8.1",
- "finalhandler": "1.1.1",
- "fresh": "0.5.2",
- "merge-descriptors": "1.0.1",
- "methods": "1.1.2",
- "on-finished": "2.3.0",
- "parseurl": "1.3.2",
- "path-to-regexp": "0.1.7",
- "proxy-addr": "2.0.3",
- "qs": "6.5.1",
- "range-parser": "1.2.0",
- "safe-buffer": "5.1.1",
- "send": "0.16.2",
- "serve-static": "1.13.2",
- "setprototypeof": "1.1.0",
- "statuses": "1.4.0",
- "type-is": "1.6.16",
- "utils-merge": "1.0.1",
- "vary": "1.1.2"
- },
- "dependencies": {
- "body-parser": {
- "version": "1.18.2",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz",
- "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=",
- "requires": {
- "bytes": "3.0.0",
- "content-type": "1.0.4",
- "debug": "2.6.9",
- "depd": "1.1.2",
- "http-errors": "1.6.3",
- "iconv-lite": "0.4.19",
- "on-finished": "2.3.0",
- "qs": "6.5.1",
- "raw-body": "2.3.2",
- "type-is": "1.6.16"
- }
- },
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "iconv-lite": {
- "version": "0.4.19",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
- "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ=="
- },
- "qs": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
- "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A=="
- },
- "raw-body": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz",
- "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=",
- "requires": {
- "bytes": "3.0.0",
- "http-errors": "1.6.2",
- "iconv-lite": "0.4.19",
- "unpipe": "1.0.0"
- },
- "dependencies": {
- "depd": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
- "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k="
- },
- "http-errors": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz",
- "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=",
- "requires": {
- "depd": "1.1.1",
- "inherits": "2.0.3",
- "setprototypeof": "1.0.3",
- "statuses": "1.4.0"
- }
- },
- "setprototypeof": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
- "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ="
- }
- }
- },
- "safe-buffer": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
- "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
- },
- "statuses": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
- "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
- }
- }
- },
- "extend": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
- "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ="
- },
- "extglob": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz",
- "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
- "requires": {
- "is-extglob": "1.0.0"
- }
- },
- "extsprintf": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
- },
- "eyes": {
- "version": "0.1.8",
- "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz",
- "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A="
- },
- "fast-deep-equal": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
- "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
- },
- "fast-json-stable-stringify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
- "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
- },
- "fault": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.2.tgz",
- "integrity": "sha512-o2eo/X2syzzERAtN5LcGbiVQ0WwZSlN3qLtadwAz3X8Bu+XWD16dja/KMsjZLiQr+BLGPDnHGkc4yUJf1Xpkpw==",
- "requires": {
- "format": "0.2.2"
- }
- },
- "figures": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
- "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
- "requires": {
- "escape-string-regexp": "1.0.5",
- "object-assign": "4.1.1"
- }
- },
- "file-entry-cache": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz",
- "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=",
- "requires": {
- "flat-cache": "1.3.0",
- "object-assign": "4.1.1"
- }
- },
- "filename-regex": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
- "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY="
- },
- "fill-range": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
- "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
- "requires": {
- "is-number": "2.1.0",
- "isobject": "2.1.0",
- "randomatic": "3.0.0",
- "repeat-element": "1.1.2",
- "repeat-string": "1.6.1"
- }
- },
- "filled-array": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/filled-array/-/filled-array-1.1.0.tgz",
- "integrity": "sha1-w8T2xmO5I0WamqKZEtLQMfFQf4Q="
- },
- "filter-array": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/filter-array/-/filter-array-0.2.0.tgz",
- "integrity": "sha1-n29M6vW16Ka2dKW1RgU3cUqMUfE=",
- "requires": {
- "arr-filter": "1.1.2",
- "kind-of": "1.1.0",
- "micromatch": "2.3.11"
- }
- },
- "finalhandler": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
- "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
- "requires": {
- "debug": "2.6.9",
- "encodeurl": "1.0.2",
- "escape-html": "1.0.3",
- "on-finished": "2.3.0",
- "parseurl": "1.3.2",
- "statuses": "1.4.0",
- "unpipe": "1.0.0"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "statuses": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
- "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
- }
- }
- },
- "find-line-column": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/find-line-column/-/find-line-column-0.5.2.tgz",
- "integrity": "sha1-2wAjj/hoVRoYLnShA0FtKVqYyMo="
- },
- "find-root": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
- "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng=="
- },
- "find-up": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
- "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
- "requires": {
- "path-exists": "2.1.0",
- "pinkie-promise": "2.0.1"
- }
- },
- "findup-sync": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.3.0.tgz",
- "integrity": "sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY=",
- "requires": {
- "glob": "5.0.15"
- },
- "dependencies": {
- "glob": {
- "version": "5.0.15",
- "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
- "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
- "requires": {
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
- }
- }
- }
- },
- "flat-cache": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz",
- "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=",
- "requires": {
- "circular-json": "0.3.3",
- "del": "2.2.2",
- "graceful-fs": "4.1.11",
- "write": "0.2.1"
- }
- },
- "flatmap": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/flatmap/-/flatmap-0.0.3.tgz",
- "integrity": "sha1-Hxik2TgVLUlZZfnJWNkjqy3WabQ="
- },
- "flatten": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz",
- "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I="
- },
- "fn-name": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz",
- "integrity": "sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc="
- },
- "for-in": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
- "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA="
- },
- "for-own": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz",
- "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
- "requires": {
- "for-in": "1.0.2"
- }
- },
- "foreach": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
- "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k="
- },
- "forever-agent": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
- },
- "form-data": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.1.tgz",
- "integrity": "sha1-rjFduaSQf6BlUCMEpm13M0de43w=",
- "requires": {
- "async": "2.6.1",
- "combined-stream": "1.0.6",
- "mime-types": "2.1.18"
- },
- "dependencies": {
- "async": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
- "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
- "requires": {
- "lodash": "4.17.10"
- }
- }
- }
- },
- "format": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz",
- "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs="
- },
- "format-util": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/format-util/-/format-util-1.0.3.tgz",
- "integrity": "sha1-Ay3KShFiYqEsQ/TD7IVmQWxbLZU="
- },
- "forwarded": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
- "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
- },
- "fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
- },
- "from": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz",
- "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4="
- },
- "front-matter": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-2.1.2.tgz",
- "integrity": "sha1-91mDufL0E75ljJPf172M5AePXNs=",
- "requires": {
- "js-yaml": "3.11.0"
- },
- "dependencies": {
- "esprima": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
- "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw=="
- },
- "js-yaml": {
- "version": "3.11.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz",
- "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==",
- "requires": {
- "argparse": "1.0.10",
- "esprima": "4.0.0"
- }
- }
- }
- },
- "fs-constants": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
- "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
- },
- "fs-extra": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz",
- "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=",
- "requires": {
- "graceful-fs": "4.1.11",
- "jsonfile": "3.0.1",
- "universalify": "0.1.1"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
- },
- "fsevents": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz",
- "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==",
- "optional": true,
- "requires": {
- "nan": "2.10.0",
- "node-pre-gyp": "0.10.0"
- },
- "dependencies": {
- "abbrev": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
- "optional": true
- },
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
- },
- "aproba": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
- "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
- "optional": true
- },
- "are-we-there-yet": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz",
- "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=",
- "optional": true,
- "requires": {
- "delegates": "1.0.0",
- "readable-stream": "2.3.6"
- }
- },
- "balanced-match": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "requires": {
- "balanced-match": "1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "chownr": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz",
- "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=",
- "optional": true
- },
- "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="
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
- },
- "console-control-strings": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
- "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
- },
- "core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
- "optional": true
- },
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "optional": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "deep-extend": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz",
- "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==",
- "optional": true
- },
- "delegates": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
- "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
- "optional": true
- },
- "detect-libc": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
- "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=",
- "optional": true
- },
- "fs-minipass": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz",
- "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==",
- "optional": true,
- "requires": {
- "minipass": "2.2.4"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
- "optional": true
- },
- "gauge": {
- "version": "2.7.4",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
- "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
- "optional": true,
- "requires": {
- "aproba": "1.2.0",
- "console-control-strings": "1.1.0",
- "has-unicode": "2.0.1",
- "object-assign": "4.1.1",
- "signal-exit": "3.0.2",
- "string-width": "1.0.2",
- "strip-ansi": "3.0.1",
- "wide-align": "1.1.2"
- }
- },
- "glob": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
- "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
- "optional": true,
- "requires": {
- "fs.realpath": "1.0.0",
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
- }
- },
- "has-unicode": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
- "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
- "optional": true
- },
- "iconv-lite": {
- "version": "0.4.21",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.21.tgz",
- "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==",
- "optional": true,
- "requires": {
- "safer-buffer": "2.1.2"
- }
- },
- "ignore-walk": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz",
- "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==",
- "optional": true,
- "requires": {
- "minimatch": "3.0.4"
- }
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "optional": true,
- "requires": {
- "once": "1.4.0",
- "wrappy": "1.0.2"
- }
- },
- "inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
- },
- "ini": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
- "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
- "optional": true
- },
- "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=",
- "requires": {
- "number-is-nan": "1.0.1"
- }
- },
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
- "optional": true
- },
- "minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "requires": {
- "brace-expansion": "1.1.11"
- }
- },
- "minimist": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
- "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
- },
- "minipass": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.2.4.tgz",
- "integrity": "sha512-hzXIWWet/BzWhYs2b+u7dRHlruXhwdgvlTMDKC6Cb1U7ps6Ac6yQlR39xsbjWJE377YTCtKwIXIpJ5oP+j5y8g==",
- "requires": {
- "safe-buffer": "5.1.1",
- "yallist": "3.0.2"
- }
- },
- "minizlib": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.0.tgz",
- "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==",
- "optional": true,
- "requires": {
- "minipass": "2.2.4"
- }
- },
- "mkdirp": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
- "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
- "requires": {
- "minimist": "0.0.8"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "optional": true
- },
- "needle": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.0.tgz",
- "integrity": "sha512-eFagy6c+TYayorXw/qtAdSvaUpEbBsDwDyxYFgLZ0lTojfH7K+OdBqAF7TAFwDokJaGpubpSGG0wO3iC0XPi8w==",
- "optional": true,
- "requires": {
- "debug": "2.6.9",
- "iconv-lite": "0.4.21",
- "sax": "1.2.4"
- }
- },
- "node-pre-gyp": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz",
- "integrity": "sha512-G7kEonQLRbcA/mOoFoxvlMrw6Q6dPf92+t/l0DFSMuSlDoWaI9JWIyPwK0jyE1bph//CUEL65/Fz1m2vJbmjQQ==",
- "optional": true,
- "requires": {
- "detect-libc": "1.0.3",
- "mkdirp": "0.5.1",
- "needle": "2.2.0",
- "nopt": "4.0.1",
- "npm-packlist": "1.1.10",
- "npmlog": "4.1.2",
- "rc": "1.2.7",
- "rimraf": "2.6.2",
- "semver": "5.5.0",
- "tar": "4.4.1"
- }
- },
- "nopt": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz",
- "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=",
- "optional": true,
- "requires": {
- "abbrev": "1.1.1",
- "osenv": "0.1.5"
- }
- },
- "npm-bundled": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.3.tgz",
- "integrity": "sha512-ByQ3oJ/5ETLyglU2+8dBObvhfWXX8dtPZDMePCahptliFX2iIuhyEszyFk401PZUNQH20vvdW5MLjJxkwU80Ow==",
- "optional": true
- },
- "npm-packlist": {
- "version": "1.1.10",
- "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.1.10.tgz",
- "integrity": "sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA==",
- "optional": true,
- "requires": {
- "ignore-walk": "3.0.1",
- "npm-bundled": "1.0.3"
- }
- },
- "npmlog": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
- "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
- "optional": true,
- "requires": {
- "are-we-there-yet": "1.1.4",
- "console-control-strings": "1.1.0",
- "gauge": "2.7.4",
- "set-blocking": "2.0.0"
- }
- },
- "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="
- },
- "object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
- "optional": true
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "requires": {
- "wrappy": "1.0.2"
- }
- },
- "os-homedir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
- "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
- "optional": true
- },
- "os-tmpdir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
- "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
- "optional": true
- },
- "osenv": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
- "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
- "optional": true,
- "requires": {
- "os-homedir": "1.0.2",
- "os-tmpdir": "1.0.2"
- }
- },
- "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=",
- "optional": true
- },
- "process-nextick-args": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
- "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
- "optional": true
- },
- "rc": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz",
- "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==",
- "optional": true,
- "requires": {
- "deep-extend": "0.5.1",
- "ini": "1.3.5",
- "minimist": "1.2.0",
- "strip-json-comments": "2.0.1"
- },
- "dependencies": {
- "minimist": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
- "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
- "optional": true
- }
- }
- },
- "readable-stream": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
- "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
- "optional": true,
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "1.0.0",
- "process-nextick-args": "2.0.0",
- "safe-buffer": "5.1.1",
- "string_decoder": "1.1.1",
- "util-deprecate": "1.0.2"
- }
- },
- "rimraf": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
- "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
- "optional": true,
- "requires": {
- "glob": "7.1.2"
- }
- },
- "safe-buffer": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
- "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
- },
- "safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
- "optional": true
- },
- "sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
- "optional": true
- },
- "semver": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
- "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==",
- "optional": true
- },
- "set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
- "optional": true
- },
- "signal-exit": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
- "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
- "optional": true
- },
- "string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "requires": {
- "code-point-at": "1.1.0",
- "is-fullwidth-code-point": "1.0.0",
- "strip-ansi": "3.0.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "optional": true,
- "requires": {
- "safe-buffer": "5.1.1"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "requires": {
- "ansi-regex": "2.1.1"
- }
- },
- "strip-json-comments": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
- "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
- "optional": true
- },
- "tar": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.1.tgz",
- "integrity": "sha512-O+v1r9yN4tOsvl90p5HAP4AEqbYhx4036AGMm075fH9F8Qwi3oJ+v4u50FkT/KkvywNGtwkk0zRI+8eYm1X/xg==",
- "optional": true,
- "requires": {
- "chownr": "1.0.1",
- "fs-minipass": "1.2.5",
- "minipass": "2.2.4",
- "minizlib": "1.1.0",
- "mkdirp": "0.5.1",
- "safe-buffer": "5.1.1",
- "yallist": "3.0.2"
- }
- },
- "util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
- "optional": true
- },
- "wide-align": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz",
- "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==",
- "optional": true,
- "requires": {
- "string-width": "1.0.2"
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
- },
- "yallist": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz",
- "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k="
- }
- }
- },
- "fstream": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
- "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=",
- "requires": {
- "graceful-fs": "4.1.11",
- "inherits": "2.0.3",
- "mkdirp": "0.5.1",
- "rimraf": "2.6.2"
- }
- },
- "function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
- },
- "gather-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/gather-stream/-/gather-stream-1.0.0.tgz",
- "integrity": "sha1-szmUr0V6gRVwDUEPMXczy+egkEs="
- },
- "generate-function": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz",
- "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ="
- },
- "generate-object-property": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
- "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=",
- "requires": {
- "is-property": "1.0.2"
- }
- },
- "get-caller-file": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz",
- "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U="
- },
- "get-stdin": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz",
- "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g="
- },
- "get-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
- "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ="
- },
- "getpass": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
- "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
- "requires": {
- "assert-plus": "1.0.0"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
- }
- }
- },
- "gingerbread": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/gingerbread/-/gingerbread-0.5.0.tgz",
- "integrity": "sha1-4YI0qRZSjBmGqjJhCWPoEE3vuRM=",
- "requires": {
- "commander": "2.15.1",
- "lodash.defaults": "3.1.2",
- "request": "2.74.0"
- },
- "dependencies": {
- "lodash.assign": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz",
- "integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=",
- "requires": {
- "lodash._baseassign": "3.2.0",
- "lodash._createassigner": "3.1.1",
- "lodash.keys": "3.1.2"
- }
- },
- "lodash.defaults": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-3.1.2.tgz",
- "integrity": "sha1-xzCLGNv4vJNy1wGnNJPGEZK9Liw=",
- "requires": {
- "lodash.assign": "3.2.0",
- "lodash.restparam": "3.6.1"
- }
- }
- }
- },
- "git-diff-tree": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/git-diff-tree/-/git-diff-tree-1.0.0.tgz",
- "integrity": "sha1-FB5WQXadBlmXprlMOixg4GK1Tag=",
- "requires": {
- "git-spawned-stream": "0.1.1",
- "pump-chain": "1.0.0",
- "split-transform-stream": "0.1.1",
- "through2": "2.0.3"
- },
- "dependencies": {
- "through2": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
- "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
- "requires": {
- "readable-stream": "2.3.6",
- "xtend": "4.0.1"
- }
- }
- }
- },
- "git-spawned-stream": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/git-spawned-stream/-/git-spawned-stream-0.1.1.tgz",
- "integrity": "sha1-OJJ9oC5S2GI5aGG/mWVXRSZDgCs=",
- "requires": {
- "debug": "0.8.1",
- "spawn-to-readstream": "0.1.3"
- },
- "dependencies": {
- "debug": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-0.8.1.tgz",
- "integrity": "sha1-IP9NJvXkIstoobrLu2EDmtjBwTA="
- }
- }
- },
- "github-slugger": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.2.0.tgz",
- "integrity": "sha512-wIaa75k1vZhyPm9yWrD08A5Xnx/V+RmzGrpjQuLemGKSb77Qukiaei58Bogrl/LZSADDfPzKJX8jhLs4CRTl7Q==",
- "requires": {
- "emoji-regex": "6.1.1"
- }
- },
- "github-url-to-object": {
- "version": "2.2.6",
- "resolved": "https://registry.npmjs.org/github-url-to-object/-/github-url-to-object-2.2.6.tgz",
- "integrity": "sha1-ypJQFlFJdI7uswv8xgAMb+DSQvc=",
- "requires": {
- "is-url": "1.2.4"
- }
- },
- "glob": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
- "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
- "requires": {
- "fs.realpath": "1.0.0",
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
- }
- },
- "glob-base": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz",
- "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
- "requires": {
- "glob-parent": "2.0.0",
- "is-glob": "2.0.1"
- }
- },
- "glob-parent": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz",
- "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
- "requires": {
- "is-glob": "2.0.1"
- }
- },
- "global-dirs": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
- "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
- "requires": {
- "ini": "1.3.5"
- }
- },
- "globals": {
- "version": "10.4.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-10.4.0.tgz",
- "integrity": "sha512-uNUtxIZpGyuaq+5BqGGQHsL4wUlJAXRqOm6g3Y48/CWNGTLONgBibI0lh6lGxjR2HljFYUfszb+mk4WkgMntsA=="
- },
- "globby": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz",
- "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=",
- "requires": {
- "array-union": "1.0.2",
- "arrify": "1.0.1",
- "glob": "7.1.2",
- "object-assign": "4.1.1",
- "pify": "2.3.0",
- "pinkie-promise": "2.0.1"
- }
- },
- "globjoin": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz",
- "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM="
- },
- "globule": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz",
- "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==",
- "requires": {
- "glob": "7.1.2",
- "lodash": "4.17.10",
- "minimatch": "3.0.4"
- }
- },
- "gonzales-pe": {
- "version": "3.4.7",
- "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-3.4.7.tgz",
- "integrity": "sha1-F8e+Z61sr/Ynej44esc26YPSgOw=",
- "requires": {
- "minimist": "1.1.3"
- },
- "dependencies": {
- "minimist": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz",
- "integrity": "sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag="
- }
- }
- },
- "got": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz",
- "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=",
- "requires": {
- "create-error-class": "3.0.2",
- "duplexer2": "0.1.4",
- "is-redirect": "1.0.0",
- "is-retry-allowed": "1.1.0",
- "is-stream": "1.1.0",
- "lowercase-keys": "1.0.1",
- "node-status-codes": "1.0.0",
- "object-assign": "4.1.1",
- "parse-json": "2.2.0",
- "pinkie-promise": "2.0.1",
- "read-all-stream": "3.1.0",
- "readable-stream": "2.3.6",
- "timed-out": "3.1.3",
- "unzip-response": "1.0.2",
- "url-parse-lax": "1.0.0"
- }
- },
- "graceful-fs": {
- "version": "4.1.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
- "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
- },
- "graceful-readlink": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
- "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU="
- },
- "happiness": {
- "version": "10.0.2",
- "resolved": "https://registry.npmjs.org/happiness/-/happiness-10.0.2.tgz",
- "integrity": "sha1-SdkkQv66ModMq8vPNeI5DUEtmX4=",
- "requires": {
- "eslint": "3.19.0",
- "eslint-config-happiness": "10.2.1",
- "eslint-config-happiness-jsx": "4.0.2",
- "eslint-plugin-import": "2.2.0",
- "eslint-plugin-node": "4.2.3",
- "eslint-plugin-promise": "3.5.0",
- "eslint-plugin-react": "6.10.3",
- "eslint-plugin-standard": "3.0.1",
- "standard-engine": "7.0.0"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "doctrine": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
- "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
- "requires": {
- "esutils": "2.0.2",
- "isarray": "1.0.0"
- }
- },
- "eslint-import-resolver-node": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz",
- "integrity": "sha1-Wt2BBujJKNssuiMrzZ76hG49oWw=",
- "requires": {
- "debug": "2.6.9",
- "object-assign": "4.1.1",
- "resolve": "1.7.1"
- }
- },
- "eslint-plugin-import": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.2.0.tgz",
- "integrity": "sha1-crowb60wXWfEgWNIpGmaQimsi04=",
- "requires": {
- "builtin-modules": "1.1.1",
- "contains-path": "0.1.0",
- "debug": "2.6.9",
- "doctrine": "1.5.0",
- "eslint-import-resolver-node": "0.2.3",
- "eslint-module-utils": "2.2.0",
- "has": "1.0.1",
- "lodash.cond": "4.5.2",
- "minimatch": "3.0.4",
- "pkg-up": "1.0.0"
- }
- },
- "resolve": {
- "version": "1.7.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz",
- "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
- "requires": {
- "path-parse": "1.0.5"
- }
- }
- }
- },
- "har-validator": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz",
- "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=",
- "requires": {
- "chalk": "1.1.3",
- "commander": "2.15.1",
- "is-my-json-valid": "2.17.2",
- "pinkie-promise": "2.0.1"
- }
- },
- "has": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz",
- "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=",
- "requires": {
- "function-bind": "1.1.1"
- }
- },
- "has-ansi": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
- "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
- "requires": {
- "ansi-regex": "2.1.1"
- }
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
- },
- "has-symbols": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
- "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q="
- },
- "hast": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/hast/-/hast-0.0.2.tgz",
- "integrity": "sha1-h5ULAYCnHfTfkhbDBNQm206jBII=",
- "requires": {
- "bail": "1.0.3",
- "camelcase": "1.2.1",
- "ent": "2.2.0",
- "escape-html": "1.0.3",
- "htmlparser2": "3.8.3",
- "param-case": "1.1.2",
- "property-information": "2.0.0",
- "trim": "0.0.1",
- "unified": "2.1.4"
- },
- "dependencies": {
- "camelcase": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
- "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk="
- },
- "unified": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/unified/-/unified-2.1.4.tgz",
- "integrity": "sha1-FLxs1A2Y//91tAVQa62HPsu6w7o=",
- "requires": {
- "attach-ware": "1.1.1",
- "bail": "1.0.3",
- "extend": "3.0.1",
- "unherit": "1.1.1",
- "vfile": "1.4.0",
- "ware": "1.3.0"
- }
- }
- }
- },
- "hawk": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
- "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
- "requires": {
- "boom": "2.10.1",
- "cryptiles": "2.0.5",
- "hoek": "2.16.3",
- "sntp": "1.0.9"
- }
- },
- "hoek": {
- "version": "2.16.3",
- "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
- "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0="
- },
- "hosted-git-info": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz",
- "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw=="
- },
- "html-tags": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz",
- "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos="
- },
- "htmlhint": {
- "version": "0.9.13",
- "resolved": "https://registry.npmjs.org/htmlhint/-/htmlhint-0.9.13.tgz",
- "integrity": "sha1-CBY8seaqUFBI67C0EGOnygfcbIg=",
- "requires": {
- "async": "1.4.2",
- "colors": "1.0.3",
- "commander": "2.6.0",
- "csslint": "0.10.0",
- "glob": "5.0.15",
- "jshint": "2.8.0",
- "parse-glob": "3.0.4",
- "strip-json-comments": "1.0.4",
- "xml": "1.0.0"
- },
- "dependencies": {
- "async": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/async/-/async-1.4.2.tgz",
- "integrity": "sha1-bJ7csRztTw3S8tQNsNSaEJwIiqs="
- },
- "commander": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz",
- "integrity": "sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0="
- },
- "csslint": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/csslint/-/csslint-0.10.0.tgz",
- "integrity": "sha1-OmoE51Zcjp0ZvrSXZ8fslug2WAU=",
- "requires": {
- "parserlib": "0.2.5"
- }
- },
- "glob": {
- "version": "5.0.15",
- "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
- "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
- "requires": {
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
- }
- },
- "jshint": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.8.0.tgz",
- "integrity": "sha1-HQmjvZE8TK36gb8Y1YK9hb/+DUQ=",
- "requires": {
- "cli": "0.6.6",
- "console-browserify": "1.1.0",
- "exit": "0.1.2",
- "htmlparser2": "3.8.3",
- "lodash": "3.7.0",
- "minimatch": "2.0.10",
- "shelljs": "0.3.0",
- "strip-json-comments": "1.0.4"
- },
- "dependencies": {
- "minimatch": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz",
- "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=",
- "requires": {
- "brace-expansion": "1.1.11"
- }
- }
- }
- },
- "lodash": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.7.0.tgz",
- "integrity": "sha1-Nni9irmVBXwHreg27S7wh9qBHUU="
- },
- "parserlib": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/parserlib/-/parserlib-0.2.5.tgz",
- "integrity": "sha1-hZB92GBaoGq7PdKV1QuyuPpN0Rc="
- },
- "shelljs": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz",
- "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E="
- },
- "strip-json-comments": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz",
- "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E="
- }
- }
- },
- "htmlparser2": {
- "version": "3.8.3",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz",
- "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=",
- "requires": {
- "domelementtype": "1.3.0",
- "domhandler": "2.3.0",
- "domutils": "1.5.1",
- "entities": "1.0.0",
- "readable-stream": "1.1.14"
- },
- "dependencies": {
- "domutils": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
- "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
- "requires": {
- "dom-serializer": "0.1.0",
- "domelementtype": "1.3.0"
- }
- },
- "entities": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz",
- "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY="
- },
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
- },
- "readable-stream": {
- "version": "1.1.14",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
- "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "0.0.1",
- "string_decoder": "0.10.31"
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
- }
- }
- },
- "http-errors": {
- "version": "1.6.3",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
- "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
- "requires": {
- "depd": "1.1.2",
- "inherits": "2.0.3",
- "setprototypeof": "1.1.0",
- "statuses": "1.5.0"
- }
- },
- "http-signature": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
- "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
- "requires": {
- "assert-plus": "0.2.0",
- "jsprim": "1.4.1",
- "sshpk": "1.14.1"
- }
- },
- "iconv-lite": {
- "version": "0.4.23",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
- "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
- "requires": {
- "safer-buffer": "2.1.2"
- }
- },
- "ignore": {
- "version": "3.3.8",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.8.tgz",
- "integrity": "sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg=="
- },
- "import-lazy": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz",
- "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM="
- },
- "imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="
- },
- "indent-string": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
- "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
- "requires": {
- "repeating": "2.0.1"
- }
- },
- "index-of": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/index-of/-/index-of-0.1.1.tgz",
- "integrity": "sha1-2FWvNjQbKE2tYbvXFpXGxpTBV6w="
- },
- "indexes-of": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
- "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc="
- },
- "infinity-agent": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/infinity-agent/-/infinity-agent-1.0.2.tgz",
- "integrity": "sha1-Lp2iwHC5hkqLxmwBlOF5HtgFgCU="
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "requires": {
- "once": "1.4.0",
- "wrappy": "1.0.2"
- }
- },
- "inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
- },
- "ini": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
- "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
- },
- "inquirer": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz",
- "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=",
- "requires": {
- "ansi-escapes": "1.4.0",
- "ansi-regex": "2.1.1",
- "chalk": "1.1.3",
- "cli-cursor": "1.0.2",
- "cli-width": "2.2.0",
- "figures": "1.7.0",
- "lodash": "4.17.10",
- "readline2": "1.0.1",
- "run-async": "0.1.0",
- "rx-lite": "3.1.2",
- "string-width": "1.0.2",
- "strip-ansi": "3.0.1",
- "through": "2.3.8"
- }
- },
- "interop-require": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/interop-require/-/interop-require-1.0.0.tgz",
- "integrity": "sha1-5TEDZ5lEyI1+YQW2Kp9EdceDlx4="
- },
- "interpret": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz",
- "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ="
- },
- "invariant": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
- "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
- "requires": {
- "loose-envify": "1.3.1"
- }
- },
- "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="
- },
- "ipaddr.js": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz",
- "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs="
- },
- "irregular-plurals": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-1.4.0.tgz",
- "integrity": "sha1-LKmwM2UREYVUEvFr5dd8YqRYp2Y="
- },
- "is-alphabetical": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.2.tgz",
- "integrity": "sha512-V0xN4BYezDHcBSKb1QHUFMlR4as/XEuCZBzMJUU4n7+Cbt33SmUnSol+pnXFvLxSHNq2CemUXNdaXV6Flg7+xg=="
- },
- "is-alphanumeric": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz",
- "integrity": "sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ="
- },
- "is-alphanumerical": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.2.tgz",
- "integrity": "sha512-pyfU/0kHdISIgslFfZN9nfY1Gk3MquQgUm1mJTjdkEPpkAKNWuBTSqFwewOpR7N351VkErCiyV71zX7mlQQqsg==",
- "requires": {
- "is-alphabetical": "1.0.2",
- "is-decimal": "1.0.2"
- }
- },
- "is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
- },
- "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=",
- "requires": {
- "binary-extensions": "1.11.0"
- }
- },
- "is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
- },
- "is-builtin-module": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
- "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
- "requires": {
- "builtin-modules": "1.1.1"
- }
- },
- "is-callable": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz",
- "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI="
- },
- "is-capitalized": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-capitalized/-/is-capitalized-1.0.0.tgz",
- "integrity": "sha1-TIRktNkdPk7rRIid0s2PGwrEwTY="
- },
- "is-ci": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.1.0.tgz",
- "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==",
- "requires": {
- "ci-info": "1.1.3"
- }
- },
- "is-date-object": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
- "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY="
- },
- "is-decimal": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.2.tgz",
- "integrity": "sha512-TRzl7mOCchnhchN+f3ICUCzYvL9ul7R+TYOsZ8xia++knyZAJfv/uA1FvQXsAnYIl1T3B2X5E/J7Wb1QXiIBXg=="
- },
- "is-directory": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
- "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE="
- },
- "is-dotfile": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz",
- "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE="
- },
- "is-empty": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/is-empty/-/is-empty-1.2.0.tgz",
- "integrity": "sha1-3pu1snhzigWgsJpX4ftNSjQan2s="
- },
- "is-equal-shallow": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz",
- "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
- "requires": {
- "is-primitive": "2.0.0"
- }
- },
- "is-expression": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz",
- "integrity": "sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8=",
- "requires": {
- "acorn": "4.0.13",
- "object-assign": "4.1.1"
- },
- "dependencies": {
- "acorn": {
- "version": "4.0.13",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz",
- "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c="
- }
- }
- },
- "is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik="
- },
- "is-extglob": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
- "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA="
- },
- "is-file": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-file/-/is-file-1.0.0.tgz",
- "integrity": "sha1-KKRM+9nT2xkwRfIrZfzo7fliBZY="
- },
- "is-finite": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
- "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
- "requires": {
- "number-is-nan": "1.0.1"
- }
- },
- "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=",
- "requires": {
- "number-is-nan": "1.0.1"
- }
- },
- "is-glob": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
- "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
- "requires": {
- "is-extglob": "1.0.0"
- }
- },
- "is-hexadecimal": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz",
- "integrity": "sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A=="
- },
- "is-hidden": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/is-hidden/-/is-hidden-1.1.1.tgz",
- "integrity": "sha512-175UKecS8+U4hh2PSY0j4xnm2GKYzvSKnbh+naC93JjuBA7LgIo6YxlbcsSo6seFBdQO3RuIcH980yvqqD/2cA=="
- },
- "is-installed-globally": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz",
- "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=",
- "requires": {
- "global-dirs": "0.1.1",
- "is-path-inside": "1.0.1"
- }
- },
- "is-my-ip-valid": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz",
- "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ=="
- },
- "is-my-json-valid": {
- "version": "2.17.2",
- "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz",
- "integrity": "sha512-IBhBslgngMQN8DDSppmgDv7RNrlFotuuDsKcrCP3+HbFaVivIBU7u9oiiErw8sH4ynx3+gOGQ3q2otkgiSi6kg==",
- "requires": {
- "generate-function": "2.0.0",
- "generate-object-property": "1.2.0",
- "is-my-ip-valid": "1.0.0",
- "jsonpointer": "4.0.1",
- "xtend": "4.0.1"
- }
- },
- "is-npm": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
- "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ="
- },
- "is-number": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
- "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
- "requires": {
- "kind-of": "3.2.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "requires": {
- "is-buffer": "1.1.6"
- }
- }
- }
- },
- "is-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
- "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8="
- },
- "is-object": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz",
- "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA="
- },
- "is-path-cwd": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
- "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0="
- },
- "is-path-in-cwd": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz",
- "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==",
- "requires": {
- "is-path-inside": "1.0.1"
- }
- },
- "is-path-inside": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
- "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
- "requires": {
- "path-is-inside": "1.0.2"
- }
- },
- "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="
- },
- "is-posix-bracket": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz",
- "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q="
- },
- "is-primitive": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz",
- "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU="
- },
- "is-promise": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
- "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o="
- },
- "is-property": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
- "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ="
- },
- "is-redirect": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz",
- "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ="
- },
- "is-regex": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
- "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
- "requires": {
- "has": "1.0.1"
- }
- },
- "is-regexp": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz",
- "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk="
- },
- "is-resolvable": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
- "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg=="
- },
- "is-retry-allowed": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz",
- "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ="
- },
- "is-stream": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
- },
- "is-supported-regexp-flag": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.1.tgz",
- "integrity": "sha512-3vcJecUUrpgCqc/ca0aWeNu64UGgxcvO60K/Fkr1N6RSvfGCTU60UKN68JDmKokgba0rFFJs12EnzOQa14ubKQ=="
- },
- "is-symbol": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz",
- "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI="
- },
- "is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
- },
- "is-url": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz",
- "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww=="
- },
- "is-utf8": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
- "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI="
- },
- "is-whitespace-character": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.2.tgz",
- "integrity": "sha512-SzM+T5GKUCtLhlHFKt2SDAX2RFzfS6joT91F2/WSi9LxgFdsnhfPK/UIA+JhRR2xuyLdrCys2PiFDrtn1fU5hQ=="
- },
- "is-word-character": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.2.tgz",
- "integrity": "sha512-T3FlsX8rCHAH8e7RE7PfOPZVFQlcV3XRF9eOOBQ1uf70OxO7CjjSOjeImMPCADBdYWcStAbVbYvJ1m2D3tb+EA=="
- },
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
- },
- "isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
- },
- "isobject": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
- "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
- "requires": {
- "isarray": "1.0.0"
- }
- },
- "isomorphic-fetch": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz",
- "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=",
- "requires": {
- "node-fetch": "1.7.3",
- "whatwg-fetch": "2.0.4"
- }
- },
- "isstream": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
- },
- "jju": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/jju/-/jju-1.2.1.tgz",
- "integrity": "sha1-7fbsINXWaMgMLADOpj+KlCKktSg="
- },
- "js-base64": {
- "version": "2.4.5",
- "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.5.tgz",
- "integrity": "sha512-aUnNwqMOXw3yvErjMPSQu6qIIzUmT1e5KcU1OZxRDU1g/am6mzBvcrmLAYwzmB59BHPrh5/tKaiF4OPhqRWESQ=="
- },
- "js-stringify": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz",
- "integrity": "sha1-Fzb939lyTyijaCrcYjCufk6Weds="
- },
- "js-tokens": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
- "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls="
- },
- "js-yaml": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.2.7.tgz",
- "integrity": "sha1-ECeQ8mXZhv6VpNDyp5Lnp72Ibuw=",
- "requires": {
- "argparse": "1.0.10",
- "esprima": "2.0.0"
- },
- "dependencies": {
- "esprima": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.0.0.tgz",
- "integrity": "sha1-YJrFwmZ+rlQztB657OziMxtBSY8="
- }
- }
- },
- "jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
- "optional": true
- },
- "jshint": {
- "version": "2.9.5",
- "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.9.5.tgz",
- "integrity": "sha1-HnJSkVzmgbQIJ+4UJIxG006apiw=",
- "requires": {
- "cli": "1.0.1",
- "console-browserify": "1.1.0",
- "exit": "0.1.2",
- "htmlparser2": "3.8.3",
- "lodash": "3.7.0",
- "minimatch": "3.0.4",
- "shelljs": "0.3.0",
- "strip-json-comments": "1.0.4"
- },
- "dependencies": {
- "cli": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz",
- "integrity": "sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=",
- "requires": {
- "exit": "0.1.2",
- "glob": "7.1.2"
- }
- },
- "lodash": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.7.0.tgz",
- "integrity": "sha1-Nni9irmVBXwHreg27S7wh9qBHUU="
- },
- "shelljs": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz",
- "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E="
- },
- "strip-json-comments": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz",
- "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E="
- }
- }
- },
- "json-parse-better-errors": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
- "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw=="
- },
- "json-schema": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
- "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
- },
- "json-schema-ref-parser": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/json-schema-ref-parser/-/json-schema-ref-parser-3.3.1.tgz",
- "integrity": "sha512-stQTMhec2R/p2L9dH4XXRlpNCP0mY8QrLd/9Kl+8SHJQmwHtE1nDfXH4wbsSM+GkJMl8t92yZbI0OIol432CIQ==",
- "requires": {
- "call-me-maybe": "1.0.1",
- "debug": "3.1.0",
- "es6-promise": "4.2.4",
- "js-yaml": "3.11.0",
- "ono": "4.0.5",
- "z-schema": "3.22.0"
- },
- "dependencies": {
- "esprima": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
- "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw=="
- },
- "js-yaml": {
- "version": "3.11.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz",
- "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==",
- "requires": {
- "argparse": "1.0.10",
- "esprima": "4.0.0"
- }
- }
- }
- },
- "json-schema-traverse": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
- "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A="
- },
- "json-stable-stringify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
- "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
- "requires": {
- "jsonify": "0.0.0"
- }
- },
- "json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
- },
- "json5": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
- "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE="
- },
- "jsonfile": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz",
- "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=",
- "requires": {
- "graceful-fs": "4.1.11"
- }
- },
- "jsonfilter": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/jsonfilter/-/jsonfilter-1.1.2.tgz",
- "integrity": "sha1-Ie987cdRk4E8dZMulqmL4gW6WhE=",
- "requires": {
- "JSONStream": "0.8.4",
- "minimist": "1.2.0",
- "stream-combiner": "0.2.2",
- "through2": "0.6.5"
- },
- "dependencies": {
- "JSONStream": {
- "version": "0.8.4",
- "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.8.4.tgz",
- "integrity": "sha1-kWV9/m/4V0gwZhMrRhi2Lo9Ih70=",
- "requires": {
- "jsonparse": "0.0.5",
- "through": "2.3.8"
- }
- },
- "jsonparse": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz",
- "integrity": "sha1-MwVCrT8KZUZlt3jz6y2an6UHrGQ="
- }
- }
- },
- "jsonify": {
- "version": "0.0.0",
- "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
- "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM="
- },
- "jsonparse": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
- "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA="
- },
- "jsonpointer": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz",
- "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk="
- },
- "jsprim": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
- "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
- "requires": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.2.3",
- "verror": "1.10.0"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
- }
- }
- },
- "jsx-ast-utils": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz",
- "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE="
- },
- "kind-of": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz",
- "integrity": "sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ="
- },
- "known-css-properties": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.3.0.tgz",
- "integrity": "sha512-QMQcnKAiQccfQTqtBh/qwquGZ2XK/DXND1jrcN9M8gMMy99Gwla7GQjndVUsEqIaRyP6bsFRuhwRj5poafBGJQ=="
- },
- "latest-version": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-2.0.0.tgz",
- "integrity": "sha1-VvjWE5YghHuAF/jx9NeOIRMkFos=",
- "requires": {
- "package-json": "2.4.0"
- }
- },
- "lazy-req": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-1.1.0.tgz",
- "integrity": "sha1-va6+rTD42CQDnODOFJ1Nqge6H6w="
- },
- "lcid": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
- "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
- "requires": {
- "invert-kv": "1.0.0"
- }
- },
- "ldjson-stream": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/ldjson-stream/-/ldjson-stream-1.2.1.tgz",
- "integrity": "sha1-kb7O2lrE7SsX5kn7d356v6AYnCs=",
- "requires": {
- "split2": "0.2.1",
- "through2": "0.6.5"
- }
- },
- "levenshtein-edit-distance": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/levenshtein-edit-distance/-/levenshtein-edit-distance-1.0.0.tgz",
- "integrity": "sha1-iVuvR4zOi1waDSfkXXwdl4pmHkk="
- },
- "levn": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
- "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
- "requires": {
- "prelude-ls": "1.1.2",
- "type-check": "0.3.2"
- }
- },
- "limit-spawn": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/limit-spawn/-/limit-spawn-0.0.3.tgz",
- "integrity": "sha1-zAnCRGeg8KHtEKUZbbpZfK0/Zdw="
- },
- "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=",
- "requires": {
- "graceful-fs": "4.1.11",
- "parse-json": "2.2.0",
- "pify": "2.3.0",
- "pinkie-promise": "2.0.1",
- "strip-bom": "2.0.0"
- }
- },
- "load-plugin": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/load-plugin/-/load-plugin-2.2.2.tgz",
- "integrity": "sha512-FYzamtURIJefQykZGtiClYuZkJBUKzmx8Tc74y8JGAulDzbzVm/C+w/MbAljHRr+REL0cRzy3WgnHE+T8gce5g==",
- "requires": {
- "npm-prefix": "1.2.0",
- "resolve-from": "4.0.0"
- },
- "dependencies": {
- "resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="
- }
- }
- },
- "locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
- "requires": {
- "p-locate": "2.0.0",
- "path-exists": "3.0.0"
- },
- "dependencies": {
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
- }
- }
- },
- "lodash": {
- "version": "4.17.10",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz",
- "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg=="
- },
- "lodash._baseassign": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz",
- "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=",
- "requires": {
- "lodash._basecopy": "3.0.1",
- "lodash.keys": "3.1.2"
- }
- },
- "lodash._basecopy": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz",
- "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY="
- },
- "lodash._bindcallback": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz",
- "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4="
- },
- "lodash._createassigner": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz",
- "integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=",
- "requires": {
- "lodash._bindcallback": "3.0.1",
- "lodash._isiterateecall": "3.0.9",
- "lodash.restparam": "3.6.1"
- }
- },
- "lodash._getnative": {
- "version": "3.9.1",
- "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz",
- "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U="
- },
- "lodash._isiterateecall": {
- "version": "3.0.9",
- "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz",
- "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw="
- },
- "lodash.assign": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz",
- "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc="
- },
- "lodash.assigninwith": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/lodash.assigninwith/-/lodash.assigninwith-4.2.0.tgz",
- "integrity": "sha1-rwLJhDKshtk9ppW0voAUAZcXNq8="
- },
- "lodash.capitalize": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz",
- "integrity": "sha1-+CbJtOKoUR2E46yinbBeGk87cqk="
- },
- "lodash.cond": {
- "version": "4.5.2",
- "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz",
- "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU="
- },
- "lodash.defaults": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.0.1.tgz",
- "integrity": "sha1-BWeOYSqXFsZLW/LOzwRRMco9NAI=",
- "requires": {
- "lodash.assigninwith": "4.2.0",
- "lodash.rest": "4.0.5"
- }
- },
- "lodash.difference": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz",
- "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw="
- },
- "lodash.get": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
- "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk="
- },
- "lodash.intersection": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/lodash.intersection/-/lodash.intersection-4.4.0.tgz",
- "integrity": "sha1-ChG6Yx0OlcI8fy9Mu5ppLtF45wU="
- },
- "lodash.isarguments": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz",
- "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo="
- },
- "lodash.isarray": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz",
- "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U="
- },
- "lodash.isequal": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
- "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA="
- },
- "lodash.kebabcase": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz",
- "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY="
- },
- "lodash.keys": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz",
- "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=",
- "requires": {
- "lodash._getnative": "3.9.1",
- "lodash.isarguments": "3.1.0",
- "lodash.isarray": "3.0.4"
- }
- },
- "lodash.rest": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/lodash.rest/-/lodash.rest-4.0.5.tgz",
- "integrity": "sha1-lU73UEkmIDjJbR/Jiyj9r58Hcqo="
- },
- "lodash.restparam": {
- "version": "3.6.1",
- "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz",
- "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU="
- },
- "log-symbols": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz",
- "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=",
- "requires": {
- "chalk": "1.1.3"
- }
- },
- "longest-streak": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.2.tgz",
- "integrity": "sha512-TmYTeEYxiAmSVdpbnQDXGtvYOIRsCMg89CVZzwzc2o7GFL1CjoiRPjH5ec0NFAVlAx3fVof9dX/t6KKRAo2OWA=="
- },
- "loose-envify": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz",
- "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=",
- "requires": {
- "js-tokens": "3.0.2"
- }
- },
- "loud-rejection": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
- "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
- "requires": {
- "currently-unhandled": "0.4.1",
- "signal-exit": "3.0.2"
- }
- },
- "lower-case": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
- "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw="
- },
- "lowercase-keys": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
- "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA=="
- },
- "lru-cache": {
- "version": "2.7.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
- "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI="
- },
- "lru-queue": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz",
- "integrity": "sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM=",
- "requires": {
- "es5-ext": "0.10.44"
- }
- },
- "make-dir": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
- "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
- "requires": {
- "pify": "3.0.0"
- },
- "dependencies": {
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY="
- }
- }
- },
- "make-iterator": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-0.1.1.tgz",
- "integrity": "sha1-hz0nuBmKRlqBSDtvXRbaToY+z1s=",
- "requires": {
- "for-own": "0.1.5"
- }
- },
- "map-like": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/map-like/-/map-like-1.1.3.tgz",
- "integrity": "sha1-b6rKUzngzGVno6Vd0oH9hxo55do="
- },
- "map-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
- "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0="
- },
- "map-stream": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz",
- "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ="
- },
- "markdown-escapes": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.2.tgz",
- "integrity": "sha512-lbRZ2mE3Q9RtLjxZBZ9+IMl68DKIXaVAhwvwn9pmjnPLS0h/6kyBMgNhqi1xFJ/2yv6cSyv0jbiZavZv93JkkA=="
- },
- "markdown-extensions": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz",
- "integrity": "sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q=="
- },
- "markdown-table": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.2.tgz",
- "integrity": "sha512-NcWuJFHDA8V3wkDgR/j4+gZx+YQwstPgfQDV8ndUeWWzta3dnDTBxpVzqS9lkmJAuV5YX35lmyojl6HO5JXAgw=="
- },
- "markdown-to-ast": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/markdown-to-ast/-/markdown-to-ast-3.4.0.tgz",
- "integrity": "sha1-Diy6gTkLBUmpFT7DsNkVthwWS+c=",
- "requires": {
- "debug": "2.6.9",
- "remark": "5.1.0",
- "structured-source": "3.0.2",
- "traverse": "0.6.6"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "longest-streak": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-1.0.0.tgz",
- "integrity": "sha1-0GWXxNTDG1LMsfXY+P5xSOr9aWU="
- },
- "markdown-table": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-0.4.0.tgz",
- "integrity": "sha1-iQwsGzv+g/sA5BKbjkz+ZFJw+dE="
- },
- "remark": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/remark/-/remark-5.1.0.tgz",
- "integrity": "sha1-y0Y709vLS5l5STXu4c9x16jjBow=",
- "requires": {
- "remark-parse": "1.1.0",
- "remark-stringify": "1.1.0",
- "unified": "4.2.1"
- }
- },
- "remark-stringify": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-1.1.0.tgz",
- "integrity": "sha1-pxBeJbnuK/mkm3XSxCPxGwauIJI=",
- "requires": {
- "ccount": "1.0.3",
- "extend": "3.0.1",
- "longest-streak": "1.0.0",
- "markdown-table": "0.4.0",
- "parse-entities": "1.1.2",
- "repeat-string": "1.6.1",
- "stringify-entities": "1.3.2",
- "unherit": "1.1.1"
- }
- }
- }
- },
- "math-random": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz",
- "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w="
- },
- "mathml-tag-names": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.0.tgz",
- "integrity": "sha512-3Zs9P/0zzwTob2pdgT0CHZuMbnSUSp8MB1bddfm+HDmnFWHGT4jvEZRf+2RuPoa+cjdn/z25SEt5gFTqdhvJAg=="
- },
- "md5": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz",
- "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=",
- "requires": {
- "charenc": "0.0.2",
- "crypt": "0.0.2",
- "is-buffer": "1.1.6"
- }
- },
- "mdast-comment-marker": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/mdast-comment-marker/-/mdast-comment-marker-1.0.2.tgz",
- "integrity": "sha1-Hd8O+BH7UkOQF8jSwLkiA18rp0o="
- },
- "mdast-util-compact": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-1.0.1.tgz",
- "integrity": "sha1-zbX4TitqLTEU3zO9BdnLMuPECDo=",
- "requires": {
- "unist-util-modify-children": "1.1.2",
- "unist-util-visit": "1.3.1"
- }
- },
- "mdast-util-definitions": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-1.2.2.tgz",
- "integrity": "sha512-9NloPSwaB9f1PKcGqaScfqRf6zKOEjTIXVIbPOmgWI/JKxznlgVXC5C+8qgl3AjYg2vJBRgLYfLICaNiac89iA==",
- "requires": {
- "unist-util-visit": "1.3.1"
- }
- },
- "mdast-util-heading-style": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/mdast-util-heading-style/-/mdast-util-heading-style-1.0.3.tgz",
- "integrity": "sha1-77OQ28iqAWw89XegNJANsn7nJHw="
- },
- "mdast-util-to-nlcst": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-nlcst/-/mdast-util-to-nlcst-3.2.0.tgz",
- "integrity": "sha1-2tJihXZY0eq0tYFKIOL5PXyh47Y=",
- "requires": {
- "nlcst-to-string": "2.0.2",
- "repeat-string": "1.6.1",
- "unist-util-position": "3.0.1",
- "vfile-location": "2.0.3"
- }
- },
- "mdast-util-to-string": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.0.4.tgz",
- "integrity": "sha1-XEVch4yTVfDB5/PotxnPWDaRrPs="
- },
- "media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
- },
- "memoizee": {
- "version": "0.4.12",
- "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.12.tgz",
- "integrity": "sha512-sprBu6nwxBWBvBOh5v2jcsGqiGLlL2xr2dLub3vR8dnE8YB17omwtm/0NSHl8jjNbcsJd5GMWJAnTSVe/O0Wfg==",
- "requires": {
- "d": "1.0.0",
- "es5-ext": "0.10.44",
- "es6-weak-map": "2.0.2",
- "event-emitter": "0.3.5",
- "is-promise": "2.1.0",
- "lru-queue": "0.1.0",
- "next-tick": "1.0.0",
- "timers-ext": "0.1.5"
- }
- },
- "meow": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
- "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
- "requires": {
- "camelcase-keys": "2.1.0",
- "decamelize": "1.2.0",
- "loud-rejection": "1.6.0",
- "map-obj": "1.0.1",
- "minimist": "1.2.0",
- "normalize-package-data": "2.4.0",
- "object-assign": "4.1.1",
- "read-pkg-up": "1.0.1",
- "redent": "1.0.0",
- "trim-newlines": "1.0.0"
- }
- },
- "merge": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz",
- "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo="
- },
- "merge-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
- "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
- },
- "methods": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
- "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
- },
- "micromatch": {
- "version": "2.3.11",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz",
- "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
- "requires": {
- "arr-diff": "2.0.0",
- "array-unique": "0.2.1",
- "braces": "1.8.5",
- "expand-brackets": "0.1.5",
- "extglob": "0.3.2",
- "filename-regex": "2.0.1",
- "is-extglob": "1.0.0",
- "is-glob": "2.0.1",
- "kind-of": "3.2.2",
- "normalize-path": "2.1.1",
- "object.omit": "2.0.1",
- "parse-glob": "3.0.4",
- "regex-cache": "0.4.4"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
- "requires": {
- "is-buffer": "1.1.6"
- }
- }
- }
- },
- "mime": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
- "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="
- },
- "mime-db": {
- "version": "1.33.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
- "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ=="
- },
- "mime-types": {
- "version": "2.1.18",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
- "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
- "requires": {
- "mime-db": "1.33.0"
- }
- },
- "minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "requires": {
- "brace-expansion": "1.1.11"
- }
- },
- "minimist": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
- "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
- },
- "misspellings": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/misspellings/-/misspellings-1.1.0.tgz",
- "integrity": "sha1-U9UAJmy9Cc2p2UxM85LmBYm1syQ="
- },
- "mkdirp": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
- "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
- "requires": {
- "minimist": "0.0.8"
- },
- "dependencies": {
- "minimist": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
- "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
- }
- }
- },
- "moment": {
- "version": "2.22.1",
- "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.1.tgz",
- "integrity": "sha512-shJkRTSebXvsVqk56I+lkb2latjBs8I+pc2TzWc545y2iFnSjm7Wg0QMh+ZWcdSLQyGEau5jI8ocnmkyTgr9YQ=="
- },
- "morgan": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz",
- "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=",
- "requires": {
- "basic-auth": "2.0.0",
- "debug": "2.6.9",
- "depd": "1.1.2",
- "on-finished": "2.3.0",
- "on-headers": "1.0.1"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- }
- }
- },
- "mout": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/mout/-/mout-0.5.0.tgz",
- "integrity": "sha1-/5Z1ZqkPKVlenLi254AKW1ZjVYM="
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
- },
- "multimatch": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-2.1.0.tgz",
- "integrity": "sha1-nHkGoi+0wCkZ4vX3UWG0zb1LKis=",
- "requires": {
- "array-differ": "1.0.0",
- "array-union": "1.0.2",
- "arrify": "1.0.1",
- "minimatch": "3.0.4"
- }
- },
- "mute-stream": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz",
- "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA="
- },
- "nan": {
- "version": "2.10.0",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
- "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA=="
- },
- "natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc="
- },
- "negotiator": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
- "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
- },
- "neo-async": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-1.8.2.tgz",
- "integrity": "sha1-MXlYiLed0ENXp8UhE6ZRg+k7ZzU="
- },
- "next-tick": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz",
- "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw="
- },
- "nlcst-is-literal": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/nlcst-is-literal/-/nlcst-is-literal-1.1.2.tgz",
- "integrity": "sha512-eFdFvG7XE/YwPFbRk3ryzinTVGWpAEBQNH/FWc4sVSHXUumZtdSVaJYsz0axK4uF1pmlIAWgYWhzDuQ8NTf79A==",
- "requires": {
- "nlcst-to-string": "2.0.2"
- }
- },
- "nlcst-normalize": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/nlcst-normalize/-/nlcst-normalize-2.1.2.tgz",
- "integrity": "sha512-fvXY7r3MsPFoB7nAUxhuBUJ8UC8wzBpWXuPRNL5DYca805CvThsV1wEIbkD9X/t506vvRfL3rRjXnfmbcl7O4Q==",
- "requires": {
- "nlcst-to-string": "2.0.2"
- }
- },
- "nlcst-search": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/nlcst-search/-/nlcst-search-1.4.3.tgz",
- "integrity": "sha512-10i9bCn5bhtBoab2PKX02h5kQFfhy4r9wDAp0yXxz59xI85prJZ1G1ISVDU/IroZPfaczgE281JK07iIqmKRjw==",
- "requires": {
- "nlcst-is-literal": "1.1.2",
- "nlcst-normalize": "2.1.2",
- "unist-util-visit": "1.3.1"
- }
- },
- "nlcst-to-string": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-2.0.2.tgz",
- "integrity": "sha512-DV7wVvMcAsmZ5qEwvX1JUNF4lKkAAKbChwNlIH7NLsPR7LWWoeIt53YlZ5CQH5KDXEXQ9Xa3mw0PbPewymrtew=="
- },
- "no-cliches": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/no-cliches/-/no-cliches-0.1.0.tgz",
- "integrity": "sha1-9OuBpVH+zegT+MYR415kpRGNw4w="
- },
- "node-fetch": {
- "version": "1.7.3",
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
- "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
- "requires": {
- "encoding": "0.1.12",
- "is-stream": "1.1.0"
- }
- },
- "node-status-codes": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz",
- "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8="
- },
- "node-uuid": {
- "version": "1.4.8",
- "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz",
- "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc="
- },
- "normalize-package-data": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
- "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
- "requires": {
- "hosted-git-info": "2.6.0",
- "is-builtin-module": "1.0.0",
- "semver": "5.5.0",
- "validate-npm-package-license": "3.0.3"
- }
- },
- "normalize-path": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
- "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
- "requires": {
- "remove-trailing-separator": "1.1.0"
- }
- },
- "normalize-range": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
- "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI="
- },
- "normalize-selector": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz",
- "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM="
- },
- "npm-prefix": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/npm-prefix/-/npm-prefix-1.2.0.tgz",
- "integrity": "sha1-5hlFX3B0ulTMZtbQ033Z8b5ry8A=",
- "requires": {
- "rc": "1.2.8",
- "shellsubstitute": "1.2.0",
- "untildify": "2.1.0"
- }
- },
- "npm-run-path": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
- "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
- "requires": {
- "path-key": "2.0.1"
- }
- },
- "nth-check": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz",
- "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=",
- "requires": {
- "boolbase": "1.0.0"
- }
- },
- "num2fraction": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
- "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4="
- },
- "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="
- },
- "oauth-sign": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
- "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM="
- },
- "object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
- },
- "object-keys": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz",
- "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0="
- },
- "object.assign": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
- "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
- "requires": {
- "define-properties": "1.1.2",
- "function-bind": "1.1.1",
- "has-symbols": "1.0.0",
- "object-keys": "1.0.11"
- }
- },
- "object.omit": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
- "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
- "requires": {
- "for-own": "0.1.5",
- "is-extendable": "0.1.1"
- }
- },
- "on-finished": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
- "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
- "requires": {
- "ee-first": "1.1.1"
- }
- },
- "on-headers": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz",
- "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c="
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "requires": {
- "wrappy": "1.0.2"
- }
- },
- "onecolor": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/onecolor/-/onecolor-3.0.5.tgz",
- "integrity": "sha1-Nu/zIgE3nv3xGA+0ReUajiQl+fY="
- },
- "onetime": {
- "version": "1.1.0",
- "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz",
- "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k="
- },
- "oniguruma": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/oniguruma/-/oniguruma-6.2.1.tgz",
- "integrity": "sha1-pQ7mlkKEStHSUmhaqxhxcbBuzgQ=",
- "requires": {
- "nan": "2.10.0"
- }
- },
- "ono": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/ono/-/ono-4.0.5.tgz",
- "integrity": "sha512-ZVNuV9kJbr/2tWs83I2snrYo+WIS0DISF/xUfX9p9b6GyDD6F5N9PzHjW+p/dep6IGwSYylf1HCub5I/nM0R5Q==",
- "requires": {
- "format-util": "1.0.3"
- }
- },
- "optimist": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz",
- "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
- "requires": {
- "minimist": "0.0.10",
- "wordwrap": "0.0.3"
- },
- "dependencies": {
- "minimist": {
- "version": "0.0.10",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz",
- "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8="
- }
- }
- },
- "optionator": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
- "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
- "requires": {
- "deep-is": "0.1.3",
- "fast-levenshtein": "2.0.6",
- "levn": "0.3.0",
- "prelude-ls": "1.1.2",
- "type-check": "0.3.2",
- "wordwrap": "1.0.0"
- },
- "dependencies": {
- "wordwrap": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
- "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus="
- }
- }
- },
- "os-homedir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
- "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
- },
- "os-locale": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
- "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
- "requires": {
- "lcid": "1.0.0"
- }
- },
- "os-tmpdir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
- "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
- },
- "osenv": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
- "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
- "requires": {
- "os-homedir": "1.0.2",
- "os-tmpdir": "1.0.2"
- }
- },
- "p-finally": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
- "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4="
- },
- "p-limit": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz",
- "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==",
- "requires": {
- "p-try": "1.0.0"
- }
- },
- "p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
- "requires": {
- "p-limit": "1.2.0"
- }
- },
- "p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M="
- },
- "package-json": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz",
- "integrity": "sha1-DRW9Z9HLvduyyiIv8u24a8sxqLs=",
- "requires": {
- "got": "5.7.1",
- "registry-auth-token": "3.3.2",
- "registry-url": "3.1.0",
- "semver": "5.5.0"
- }
- },
- "param-case": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/param-case/-/param-case-1.1.2.tgz",
- "integrity": "sha1-3LCRpDwlm5Io8cNB57akTqC/l0M=",
- "requires": {
- "sentence-case": "1.1.3"
- }
- },
- "parse-english": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/parse-english/-/parse-english-3.0.0.tgz",
- "integrity": "sha1-bu+4Wml8DMysuApNbphQqmy5/2c=",
- "requires": {
- "nlcst-to-string": "2.0.2",
- "parse-latin": "3.2.0",
- "unist-util-modify-children": "1.1.2",
- "unist-util-visit-children": "1.1.2"
- }
- },
- "parse-entities": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.1.2.tgz",
- "integrity": "sha512-5N9lmQ7tmxfXf+hO3X6KRG6w7uYO/HL9fHalSySTdyn63C3WNvTM/1R8tn1u1larNcEbo3Slcy2bsVDQqvEpUg==",
- "requires": {
- "character-entities": "1.2.2",
- "character-entities-legacy": "1.1.2",
- "character-reference-invalid": "1.1.2",
- "is-alphanumerical": "1.0.2",
- "is-decimal": "1.0.2",
- "is-hexadecimal": "1.0.2"
- }
- },
- "parse-glob": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz",
- "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
- "requires": {
- "glob-base": "0.3.0",
- "is-dotfile": "1.0.3",
- "is-extglob": "1.0.0",
- "is-glob": "2.0.1"
- }
- },
- "parse-json": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
- "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
- "requires": {
- "error-ex": "1.3.1"
- }
- },
- "parse-latin": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-3.2.0.tgz",
- "integrity": "sha1-z+S0IJgrHSD8Fscd+zPxSN5PHQs=",
- "requires": {
- "nlcst-to-string": "2.0.2",
- "unist-util-modify-children": "1.1.2",
- "unist-util-visit-children": "1.1.2"
- }
- },
- "parserlib": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/parserlib/-/parserlib-1.1.1.tgz",
- "integrity": "sha1-pkz6ckBiQ0/fw1HJpOwtkrlMBvQ="
- },
- "parseurl": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
- "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M="
- },
- "passive-voice": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/passive-voice/-/passive-voice-0.1.0.tgz",
- "integrity": "sha1-Fv+RrkC6DpLEPmcXY/3IQqcCcLE="
- },
- "path-exists": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
- "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
- "requires": {
- "pinkie-promise": "2.0.1"
- }
- },
- "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="
- },
- "path-is-inside": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
- "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM="
- },
- "path-key": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
- },
- "path-parse": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
- "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME="
- },
- "path-to-glob-pattern": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/path-to-glob-pattern/-/path-to-glob-pattern-1.0.2.tgz",
- "integrity": "sha1-Rz5qOikqnRP7rj7czuctO6uoxhk="
- },
- "path-to-regexp": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
- },
- "path-type": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
- "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
- "requires": {
- "graceful-fs": "4.1.11",
- "pify": "2.3.0",
- "pinkie-promise": "2.0.1"
- }
- },
- "pause-stream": {
- "version": "0.0.11",
- "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz",
- "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=",
- "requires": {
- "through": "2.3.8"
- }
- },
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw="
- },
- "pinkie": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
- "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA="
- },
- "pinkie-promise": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
- "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
- "requires": {
- "pinkie": "2.0.4"
- }
- },
- "pipetteur": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/pipetteur/-/pipetteur-2.0.3.tgz",
- "integrity": "sha1-GVV2CVno0aEcsqUOyD7sRwYz5J8=",
- "requires": {
- "onecolor": "3.0.5",
- "synesthesia": "1.0.1"
- }
- },
- "pkg-conf": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz",
- "integrity": "sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg=",
- "requires": {
- "find-up": "2.1.0",
- "load-json-file": "4.0.0"
- },
- "dependencies": {
- "find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
- "requires": {
- "locate-path": "2.0.0"
- }
- },
- "load-json-file": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
- "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
- "requires": {
- "graceful-fs": "4.1.11",
- "parse-json": "4.0.0",
- "pify": "3.0.0",
- "strip-bom": "3.0.0"
- }
- },
- "parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
- "requires": {
- "error-ex": "1.3.1",
- "json-parse-better-errors": "1.0.2"
- }
- },
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY="
- },
- "strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM="
- }
- }
- },
- "pkg-config": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz",
- "integrity": "sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q=",
- "requires": {
- "debug-log": "1.0.1",
- "find-root": "1.1.0",
- "xtend": "4.0.1"
- }
- },
- "pkg-dir": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz",
- "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=",
- "requires": {
- "find-up": "1.1.2"
- }
- },
- "pkg-up": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz",
- "integrity": "sha1-Pgj7RhUlxEIWJKM7n35tCvWwWiY=",
- "requires": {
- "find-up": "1.1.2"
- }
- },
- "plur": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz",
- "integrity": "sha1-dIJFLBoPUI4+NE6uwxLJHCncZVo=",
- "requires": {
- "irregular-plurals": "1.4.0"
- }
- },
- "pluralize": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz",
- "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU="
- },
- "postcss": {
- "version": "6.0.22",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz",
- "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==",
- "requires": {
- "chalk": "2.4.1",
- "source-map": "0.6.1",
- "supports-color": "5.4.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "requires": {
- "color-convert": "1.9.1"
- }
- },
- "chalk": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
- "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
- "requires": {
- "ansi-styles": "3.2.1",
- "escape-string-regexp": "1.0.5",
- "supports-color": "5.4.0"
- }
- },
- "supports-color": {
- "version": "5.4.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
- "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
- "requires": {
- "has-flag": "3.0.0"
- }
- }
- }
- },
- "postcss-cli": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-2.6.0.tgz",
- "integrity": "sha1-8N45PKoCb8/BsUeYIpia9QjtUV0=",
- "requires": {
- "chokidar": "1.7.0",
- "globby": "4.1.0",
- "mkdirp": "0.5.1",
- "neo-async": "1.8.2",
- "postcss": "5.2.18",
- "read-file-stdin": "0.2.1",
- "resolve": "1.7.1",
- "yargs": "4.8.1"
- },
- "dependencies": {
- "glob": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
- "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
- "requires": {
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
- }
- },
- "globby": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-4.1.0.tgz",
- "integrity": "sha1-CA9UVJ7BuCpsYOYx/ILhIR2+lfg=",
- "requires": {
- "array-union": "1.0.2",
- "arrify": "1.0.1",
- "glob": "6.0.4",
- "object-assign": "4.1.1",
- "pify": "2.3.0",
- "pinkie-promise": "2.0.1"
- }
- },
- "has-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
- "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo="
- },
- "postcss": {
- "version": "5.2.18",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
- "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
- "requires": {
- "chalk": "1.1.3",
- "js-base64": "2.4.5",
- "source-map": "0.5.7",
- "supports-color": "3.2.3"
- }
- },
- "resolve": {
- "version": "1.7.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz",
- "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
- "requires": {
- "path-parse": "1.0.5"
- }
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
- },
- "supports-color": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
- "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
- "requires": {
- "has-flag": "1.0.0"
- }
- }
- }
- },
- "postcss-less": {
- "version": "0.14.0",
- "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-0.14.0.tgz",
- "integrity": "sha1-xjGwicbM5CK5oQ86lY0r7dOBkyQ=",
- "requires": {
- "postcss": "5.2.18"
- },
- "dependencies": {
- "has-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
- "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo="
- },
- "postcss": {
- "version": "5.2.18",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
- "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
- "requires": {
- "chalk": "1.1.3",
- "js-base64": "2.4.5",
- "source-map": "0.5.7",
- "supports-color": "3.2.3"
- }
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
- },
- "supports-color": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
- "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
- "requires": {
- "has-flag": "1.0.0"
- }
- }
- }
- },
- "postcss-media-query-parser": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz",
- "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ="
- },
- "postcss-reporter": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-3.0.0.tgz",
- "integrity": "sha1-CeoPN6RExWk4eGBuCbAY6+/3z48=",
- "requires": {
- "chalk": "1.1.3",
- "lodash": "4.17.10",
- "log-symbols": "1.0.2",
- "postcss": "5.2.18"
- },
- "dependencies": {
- "has-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
- "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo="
- },
- "postcss": {
- "version": "5.2.18",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
- "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
- "requires": {
- "chalk": "1.1.3",
- "js-base64": "2.4.5",
- "source-map": "0.5.7",
- "supports-color": "3.2.3"
- }
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
- },
- "supports-color": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
- "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
- "requires": {
- "has-flag": "1.0.0"
- }
- }
- }
- },
- "postcss-resolve-nested-selector": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz",
- "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4="
- },
- "postcss-scss": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-0.4.1.tgz",
- "integrity": "sha1-rXcbgfD3L19IRdCKpg+TVXZT1Uw=",
- "requires": {
- "postcss": "5.2.18"
- },
- "dependencies": {
- "has-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
- "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo="
- },
- "postcss": {
- "version": "5.2.18",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
- "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
- "requires": {
- "chalk": "1.1.3",
- "js-base64": "2.4.5",
- "source-map": "0.5.7",
- "supports-color": "3.2.3"
- }
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
- },
- "supports-color": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
- "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
- "requires": {
- "has-flag": "1.0.0"
- }
- }
- }
- },
- "postcss-selector-parser": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz",
- "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=",
- "requires": {
- "flatten": "1.0.2",
- "indexes-of": "1.0.1",
- "uniq": "1.0.1"
- }
- },
- "postcss-value-parser": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz",
- "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU="
- },
- "prelude-ls": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
- "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ="
- },
- "prepend-http": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
- "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw="
- },
- "preserve": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
- "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks="
- },
- "prettier": {
- "version": "1.9.2",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.9.2.tgz",
- "integrity": "sha512-piXx9N2WT8hWb7PBbX1glAuJVIkEyUV9F5fMXFINpZ0x3otVOFKKeGmeuiclFJlP/UrgTckyV606VjH2rNK4bw=="
- },
- "process-nextick-args": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
- "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
- },
- "progress": {
- "version": "1.1.8",
- "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz",
- "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74="
- },
- "promise": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/promise/-/promise-7.1.1.tgz",
- "integrity": "sha1-SJZUxpJha4qlWwck+oCbt9tJxb8=",
- "requires": {
- "asap": "2.0.6"
- }
- },
- "property-information": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/property-information/-/property-information-2.0.0.tgz",
- "integrity": "sha1-N7usTjOE5++p0E0JsP4S5Y5BgEw="
- },
- "propose": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/propose/-/propose-0.0.5.tgz",
- "integrity": "sha1-SKBl2ex9TIZn9AULFcSi2F28pWs=",
- "requires": {
- "levenshtein-edit-distance": "1.0.0"
- }
- },
- "proxy-addr": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz",
- "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==",
- "requires": {
- "forwarded": "0.1.2",
- "ipaddr.js": "1.6.0"
- }
- },
- "pseudomap": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
- "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
- },
- "pug-attrs": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.3.tgz",
- "integrity": "sha1-owlflw5kFR972tlX7vVftdeQXRU=",
- "requires": {
- "constantinople": "3.1.2",
- "js-stringify": "1.0.2",
- "pug-runtime": "2.0.4"
- }
- },
- "pug-error": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-1.3.2.tgz",
- "integrity": "sha1-U659nSm7A89WRJOgJhCfVMR/XyY="
- },
- "pug-lexer": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-2.3.2.tgz",
- "integrity": "sha1-aLGdlupdwOSoYUiwHLlmwXgVphQ=",
- "requires": {
- "character-parser": "2.2.0",
- "is-expression": "3.0.0",
- "pug-error": "1.3.2"
- }
- },
- "pug-lint": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/pug-lint/-/pug-lint-2.4.0.tgz",
- "integrity": "sha1-H1hMFiT6xI5aDQPkCCPK73NnAuA=",
- "requires": {
- "acorn": "4.0.13",
- "commander": "2.15.1",
- "css-selector-parser": "1.3.0",
- "find-line-column": "0.5.2",
- "glob": "7.1.2",
- "minimatch": "3.0.4",
- "path-is-absolute": "1.0.1",
- "pug-attrs": "2.0.3",
- "pug-error": "1.3.2",
- "pug-lexer": "2.3.2",
- "resolve": "1.7.1",
- "strip-json-comments": "2.0.1",
- "void-elements": "2.0.1"
- },
- "dependencies": {
- "acorn": {
- "version": "4.0.13",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz",
- "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c="
- },
- "resolve": {
- "version": "1.7.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz",
- "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
- "requires": {
- "path-parse": "1.0.5"
- }
- }
- }
- },
- "pug-runtime": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.4.tgz",
- "integrity": "sha1-4XjhvaaKsujArPybztLFT9iM61g="
- },
- "pump": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz",
- "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==",
- "requires": {
- "end-of-stream": "1.4.1",
- "once": "1.4.0"
- }
- },
- "pump-chain": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/pump-chain/-/pump-chain-1.0.0.tgz",
- "integrity": "sha1-fVfY2a2BgeqAj1QTxPK8HnhqXjc=",
- "requires": {
- "bubble-stream-error": "1.0.0",
- "pump": "1.0.3",
- "sliced": "1.0.1"
- }
- },
- "punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
- },
- "q": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz",
- "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4="
- },
- "qs": {
- "version": "6.5.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
- "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
- },
- "quotation": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/quotation/-/quotation-1.1.1.tgz",
- "integrity": "sha512-bjz7kEsfg6D3uMeed+VbeypnooGlX7enMnDbx0KLYEEM8J1k24jk2pc+1nyQ1sExnERz8xKXRSZ0EYNIwLM83g=="
- },
- "raml-parser": {
- "version": "0.8.18",
- "resolved": "https://registry.npmjs.org/raml-parser/-/raml-parser-0.8.18.tgz",
- "integrity": "sha1-CHM3UDT4uKHSDBDjFHtiebM0l6g=",
- "requires": {
- "got": "2.4.0",
- "jju": "1.2.1",
- "json-schema-ref-parser": "3.3.1",
- "object-assign": "4.1.1",
- "pluralize": "1.1.6",
- "q": "0.9.7",
- "uritemplate": "0.3.4"
- },
- "dependencies": {
- "got": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/got/-/got-2.4.0.tgz",
- "integrity": "sha1-5Ah6LNWbXSDy0WnchdIWntnon1Y=",
- "requires": {
- "duplexify": "3.6.0",
- "infinity-agent": "1.0.2",
- "is-stream": "1.1.0",
- "lowercase-keys": "1.0.1",
- "object-assign": "2.1.1",
- "prepend-http": "1.0.4",
- "read-all-stream": "1.0.2",
- "statuses": "1.5.0",
- "timed-out": "2.0.0"
- },
- "dependencies": {
- "object-assign": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.1.1.tgz",
- "integrity": "sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo="
- }
- }
- },
- "pluralize": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.1.6.tgz",
- "integrity": "sha1-5L9dazayr8IsgB98Nyk2F+C9xW0="
- },
- "q": {
- "version": "0.9.7",
- "resolved": "https://registry.npmjs.org/q/-/q-0.9.7.tgz",
- "integrity": "sha1-TeLmyzspCIyeTLwDv51C+5bOL3U="
- },
- "read-all-stream": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-1.0.2.tgz",
- "integrity": "sha1-03jPTvbiNrGI6kLRNeWxgKiePpI="
- },
- "timed-out": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-2.0.0.tgz",
- "integrity": "sha1-84sK6B03R9YoAB9B2vxlKs5nHAo="
- }
- }
- },
- "raml2obj": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/raml2obj/-/raml2obj-2.2.0.tgz",
- "integrity": "sha1-/Sp4Qox/K1t94JcekbjnGS5/PVA=",
- "requires": {
- "q": "1.4.1",
- "raml-parser": "0.8.18"
- }
- },
- "ramllint": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/ramllint/-/ramllint-1.2.6.tgz",
- "integrity": "sha1-85K1suD3rWTL4NenXwBh3nCJu1c=",
- "requires": {
- "cli-color": "1.2.0",
- "commander": "2.15.1",
- "raml2obj": "2.2.0"
- }
- },
- "randomatic": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz",
- "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==",
- "requires": {
- "is-number": "4.0.0",
- "kind-of": "6.0.2",
- "math-random": "1.0.1"
- },
- "dependencies": {
- "is-number": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
- "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ=="
- },
- "kind-of": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA=="
- }
- }
- },
- "range-parser": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
- "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
- },
- "raw-body": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz",
- "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==",
- "requires": {
- "bytes": "3.0.0",
- "http-errors": "1.6.3",
- "iconv-lite": "0.4.23",
- "unpipe": "1.0.0"
- }
- },
- "rc": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
- "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
- "requires": {
- "deep-extend": "0.6.0",
- "ini": "1.3.5",
- "minimist": "1.2.0",
- "strip-json-comments": "2.0.1"
- }
- },
- "rc-config-loader": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-1.0.2.tgz",
- "integrity": "sha1-xekDqzbCIgTzzKnZ3f1+aP43WOs=",
- "requires": {
- "debug": "2.6.9",
- "js-yaml": "3.11.0",
- "json5": "0.5.1",
- "object-assign": "4.1.1",
- "object-keys": "1.0.11",
- "path-exists": "2.1.0",
- "require-uncached": "1.0.3"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "esprima": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
- "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw=="
- },
- "js-yaml": {
- "version": "3.11.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz",
- "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==",
- "requires": {
- "argparse": "1.0.10",
- "esprima": "4.0.0"
- }
- }
- }
- },
- "read-all-stream": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz",
- "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=",
- "requires": {
- "pinkie-promise": "2.0.1",
- "readable-stream": "2.3.6"
- }
- },
- "read-file-stdin": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/read-file-stdin/-/read-file-stdin-0.2.1.tgz",
- "integrity": "sha1-JezP86FTtoCa+ssj7hU4fbng7mE=",
- "requires": {
- "gather-stream": "1.0.0"
- }
- },
- "read-pkg": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
- "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
- "requires": {
- "load-json-file": "1.1.0",
- "normalize-package-data": "2.4.0",
- "path-type": "1.1.0"
- }
- },
- "read-pkg-up": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
- "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
- "requires": {
- "find-up": "1.1.2",
- "read-pkg": "1.1.0"
- }
- },
- "readable-stream": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
- "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "1.0.0",
- "process-nextick-args": "2.0.0",
- "safe-buffer": "5.1.2",
- "string_decoder": "1.1.1",
- "util-deprecate": "1.0.2"
- }
- },
- "readdirp": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz",
- "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=",
- "requires": {
- "graceful-fs": "4.1.11",
- "minimatch": "3.0.4",
- "readable-stream": "2.3.6",
- "set-immediate-shim": "1.0.1"
- }
- },
- "readline2": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz",
- "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=",
- "requires": {
- "code-point-at": "1.1.0",
- "is-fullwidth-code-point": "1.0.0",
- "mute-stream": "0.0.5"
- }
- },
- "rechoir": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
- "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
- "requires": {
- "resolve": "1.7.1"
- },
- "dependencies": {
- "resolve": {
- "version": "1.7.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz",
- "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
- "requires": {
- "path-parse": "1.0.5"
- }
- }
- }
- },
- "redent": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
- "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
- "requires": {
- "indent-string": "2.1.0",
- "strip-indent": "1.0.1"
- }
- },
- "regenerator-runtime": {
- "version": "0.10.5",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz",
- "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg="
- },
- "regex-cache": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
- "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
- "requires": {
- "is-equal-shallow": "0.1.3"
- }
- },
- "registry-auth-token": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz",
- "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==",
- "requires": {
- "rc": "1.2.8",
- "safe-buffer": "5.1.2"
- }
- },
- "registry-url": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz",
- "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=",
- "requires": {
- "rc": "1.2.8"
- }
- },
- "remark-cli": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/remark-cli/-/remark-cli-2.1.0.tgz",
- "integrity": "sha1-0f42Ok68AtfCloE1Zy307Rhdw4c=",
- "requires": {
- "markdown-extensions": "1.1.1",
- "remark": "6.2.0",
- "unified-args": "2.1.0"
- },
- "dependencies": {
- "remark": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/remark/-/remark-6.2.0.tgz",
- "integrity": "sha1-DHJhSglcdmVJRhH5RywyueAy3Pk=",
- "requires": {
- "load-plugin": "2.2.2",
- "remark-parse": "2.3.0",
- "remark-stringify": "2.4.0",
- "unified": "5.1.0"
- }
- },
- "remark-parse": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-2.3.0.tgz",
- "integrity": "sha1-ztWL+++ZmTdPn/M/vC5j/isMXDc=",
- "requires": {
- "collapse-white-space": "1.0.4",
- "has": "1.0.1",
- "is-alphabetical": "1.0.2",
- "is-decimal": "1.0.2",
- "is-whitespace-character": "1.0.2",
- "is-word-character": "1.0.2",
- "markdown-escapes": "1.0.2",
- "parse-entities": "1.1.2",
- "repeat-string": "1.6.1",
- "state-toggle": "1.0.1",
- "trim": "0.0.1",
- "trim-trailing-lines": "1.1.1",
- "unherit": "1.1.1",
- "unist-util-remove-position": "1.1.2",
- "vfile-location": "2.0.3",
- "xtend": "4.0.1"
- }
- },
- "unified": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/unified/-/unified-5.1.0.tgz",
- "integrity": "sha1-YSaNqbkc6SW+Hz0ZjAJ4sOlxYJQ=",
- "requires": {
- "bail": "1.0.3",
- "extend": "3.0.1",
- "has": "1.0.1",
- "is-buffer": "1.1.6",
- "once": "1.4.0",
- "trough": "1.0.2",
- "vfile": "2.3.0",
- "x-is-string": "0.1.0"
- }
- },
- "vfile": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-2.3.0.tgz",
- "integrity": "sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==",
- "requires": {
- "is-buffer": "1.1.6",
- "replace-ext": "1.0.0",
- "unist-util-stringify-position": "1.1.2",
- "vfile-message": "1.0.1"
- }
- }
- }
- },
- "remark-lint": {
- "version": "5.4.0",
- "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-5.4.0.tgz",
- "integrity": "sha1-bnx3uQhErRkxdhxir51lq0bmc0o=",
- "requires": {
- "decamelize": "1.2.0",
- "load-plugin": "2.2.2",
- "mdast-util-heading-style": "1.0.3",
- "mdast-util-to-string": "1.0.4",
- "plur": "2.1.2",
- "remark-message-control": "2.0.3",
- "trough": "1.0.2",
- "unist-util-generated": "1.1.2",
- "unist-util-position": "3.0.1",
- "unist-util-visit": "1.3.1",
- "vfile-location": "2.0.3",
- "vfile-sort": "2.1.1",
- "wrapped": "1.0.1"
- },
- "dependencies": {
- "vfile-sort": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/vfile-sort/-/vfile-sort-2.1.1.tgz",
- "integrity": "sha512-+fpTWKkVHwI6VF2xtkDTuCA6cH4UPLAxh+KxfU8g8pC0do5RSZCk1HXTTtMJguW0t5jC0PC19owjUZX9SGQ9tw=="
- }
- }
- },
- "remark-message-control": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/remark-message-control/-/remark-message-control-2.0.3.tgz",
- "integrity": "sha1-uSePrgsRjuJGeYIcfALqm6KmgsQ=",
- "requires": {
- "mdast-comment-marker": "1.0.2",
- "trim": "0.0.1",
- "unist-util-visit": "1.3.1",
- "vfile-location": "2.0.3"
- }
- },
- "remark-parse": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-1.1.0.tgz",
- "integrity": "sha1-w8oQ+ajaBGFcKPCapOMEUQUm7CE=",
- "requires": {
- "collapse-white-space": "1.0.4",
- "extend": "3.0.1",
- "parse-entities": "1.1.2",
- "repeat-string": "1.6.1",
- "trim": "0.0.1",
- "trim-trailing-lines": "1.1.1",
- "unherit": "1.1.1",
- "unist-util-remove-position": "1.1.2",
- "vfile-location": "2.0.3"
- }
- },
- "remark-retext": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/remark-retext/-/remark-retext-2.0.0.tgz",
- "integrity": "sha1-EDnwMqNGsqtHeEkIIKemjKb02Fk=",
- "requires": {
- "mdast-util-to-nlcst": "3.2.0"
- }
- },
- "remark-slug": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/remark-slug/-/remark-slug-4.2.3.tgz",
- "integrity": "sha1-jZh9Dl5j1KSeo3uQ/pmaPc/IG3I=",
- "requires": {
- "github-slugger": "1.2.0",
- "mdast-util-to-string": "1.0.4",
- "unist-util-visit": "1.3.1"
- }
- },
- "remark-stringify": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-2.4.0.tgz",
- "integrity": "sha1-ON0oYVMTmggunZ8X4tSZGXks7C8=",
- "requires": {
- "ccount": "1.0.3",
- "is-alphanumeric": "1.0.0",
- "is-decimal": "1.0.2",
- "is-whitespace-character": "1.0.2",
- "longest-streak": "2.0.2",
- "markdown-escapes": "1.0.2",
- "markdown-table": "1.1.2",
- "mdast-util-compact": "1.0.1",
- "parse-entities": "1.1.2",
- "repeat-string": "1.6.1",
- "state-toggle": "1.0.1",
- "stringify-entities": "1.3.2",
- "unherit": "1.1.1",
- "xtend": "4.0.1"
- }
- },
- "remark-validate-links": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/remark-validate-links/-/remark-validate-links-5.0.0.tgz",
- "integrity": "sha1-KRHh9u7BvFbViQf4kgUPLFoc0Y8=",
- "requires": {
- "github-url-to-object": "2.2.6",
- "mdast-util-definitions": "1.2.2",
- "propose": "0.0.5",
- "remark-slug": "4.2.3",
- "unist-util-visit": "1.3.1",
- "urljoin": "0.1.5",
- "xtend": "4.0.1"
- }
- },
- "remove-trailing-separator": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
- "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8="
- },
- "repeat-element": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz",
- "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo="
- },
- "repeat-string": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
- "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc="
- },
- "repeating": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
- "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
- "requires": {
- "is-finite": "1.0.2"
- }
- },
- "replace-ext": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz",
- "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs="
- },
- "request": {
- "version": "2.74.0",
- "resolved": "https://registry.npmjs.org/request/-/request-2.74.0.tgz",
- "integrity": "sha1-dpPKdou7DqXIzgjAhKRe+gW4kqs=",
- "requires": {
- "aws-sign2": "0.6.0",
- "aws4": "1.7.0",
- "bl": "1.1.2",
- "caseless": "0.11.0",
- "combined-stream": "1.0.6",
- "extend": "3.0.1",
- "forever-agent": "0.6.1",
- "form-data": "1.0.1",
- "har-validator": "2.0.6",
- "hawk": "3.1.3",
- "http-signature": "1.1.1",
- "is-typedarray": "1.0.0",
- "isstream": "0.1.2",
- "json-stringify-safe": "5.0.1",
- "mime-types": "2.1.18",
- "node-uuid": "1.4.8",
- "oauth-sign": "0.8.2",
- "qs": "6.2.3",
- "stringstream": "0.0.6",
- "tough-cookie": "2.3.4",
- "tunnel-agent": "0.4.3"
- },
- "dependencies": {
- "bl": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz",
- "integrity": "sha1-/cqHGplxOqANGeO7ukHER4emU5g=",
- "requires": {
- "readable-stream": "2.0.6"
- }
- },
- "process-nextick-args": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
- "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M="
- },
- "qs": {
- "version": "6.2.3",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.3.tgz",
- "integrity": "sha1-HPyyXBCpsrSDBT/zn138kjOQjP4="
- },
- "readable-stream": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
- "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "1.0.0",
- "process-nextick-args": "1.0.7",
- "string_decoder": "0.10.31",
- "util-deprecate": "1.0.2"
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
- }
- }
- },
- "require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
- },
- "require-from-string": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz",
- "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg="
- },
- "require-main-filename": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
- "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE="
- },
- "require-uncached": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz",
- "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=",
- "requires": {
- "caller-path": "0.1.0",
- "resolve-from": "1.0.1"
- }
- },
- "resolve": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-0.6.3.tgz",
- "integrity": "sha1-3ZV5gufnNt699TtYpN2RdUV13UY="
- },
- "resolve-from": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz",
- "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY="
- },
- "restore-cursor": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz",
- "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=",
- "requires": {
- "exit-hook": "1.1.1",
- "onetime": "1.1.0"
- }
- },
- "retext-english": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/retext-english/-/retext-english-2.0.0.tgz",
- "integrity": "sha1-xXRL5OcSQDT3DC8nv8uovUmJUbM=",
- "requires": {
- "parse-english": "3.0.0",
- "unherit": "1.1.1"
- }
- },
- "retext-equality": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/retext-equality/-/retext-equality-2.5.0.tgz",
- "integrity": "sha1-wGaWjCocoUthpGb9dJVqJGxrA4I=",
- "requires": {
- "array-differ": "1.0.0",
- "array-intersection": "0.1.2",
- "nlcst-normalize": "2.1.2",
- "nlcst-search": "1.4.3",
- "nlcst-to-string": "2.0.2",
- "object-keys": "1.0.11",
- "quotation": "1.1.1",
- "unist-util-visit": "1.3.1"
- }
- },
- "retext-profanities": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/retext-profanities/-/retext-profanities-3.1.0.tgz",
- "integrity": "sha1-RdYoP3HtMygxjFDCnk+vDFv51sk=",
- "requires": {
- "array-differ": "1.0.0",
- "array-intersection": "0.1.2",
- "cuss": "1.8.0",
- "nlcst-search": "1.4.3",
- "nlcst-to-string": "2.0.2",
- "object-keys": "1.0.11",
- "quotation": "1.1.1"
- }
- },
- "rimraf": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
- "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
- "requires": {
- "glob": "7.1.2"
- }
- },
- "rousseau": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/rousseau/-/rousseau-1.0.5.tgz",
- "integrity": "sha1-LuUZnICG25D4cYXczbZJVb7PQeI=",
- "requires": {
- "bash-color": "0.0.3",
- "cli-table": "0.3.1",
- "crc": "3.2.1",
- "find-line-column": "0.5.2",
- "lodash": "3.10.1",
- "simple-lru-cache": "0.0.1",
- "tokenize-english": "1.0.3",
- "tokenize-htmltext": "1.0.0",
- "tokenize-text": "1.1.3"
- },
- "dependencies": {
- "lodash": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
- "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y="
- }
- }
- },
- "run-async": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz",
- "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=",
- "requires": {
- "once": "1.4.0"
- }
- },
- "run-parallel": {
- "version": "1.1.9",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz",
- "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q=="
- },
- "rx-lite": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz",
- "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI="
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
- },
- "sass-lint": {
- "version": "1.12.1",
- "resolved": "https://registry.npmjs.org/sass-lint/-/sass-lint-1.12.1.tgz",
- "integrity": "sha1-Yw9pwhaqIGuCMvsqqQe98zNrbYM=",
- "requires": {
- "commander": "2.15.1",
- "eslint": "2.13.1",
- "front-matter": "2.1.2",
- "fs-extra": "3.0.1",
- "glob": "7.1.2",
- "globule": "1.2.1",
- "gonzales-pe-sl": "4.2.3",
- "js-yaml": "3.11.0",
- "known-css-properties": "0.3.0",
- "lodash.capitalize": "4.2.1",
- "lodash.kebabcase": "4.1.1",
- "merge": "1.2.0",
- "path-is-absolute": "1.0.1",
- "util": "0.10.3"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "doctrine": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
- "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
- "requires": {
- "esutils": "2.0.2",
- "isarray": "1.0.0"
- }
- },
- "eslint": {
- "version": "2.13.1",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-2.13.1.tgz",
- "integrity": "sha1-5MyPoPAJ+4KaquI4VaKTYL4fbBE=",
- "requires": {
- "chalk": "1.1.3",
- "concat-stream": "1.5.2",
- "debug": "2.6.9",
- "doctrine": "1.5.0",
- "es6-map": "0.1.5",
- "escope": "3.6.0",
- "espree": "3.5.4",
- "estraverse": "4.2.0",
- "esutils": "2.0.2",
- "file-entry-cache": "1.3.1",
- "glob": "7.1.2",
- "globals": "9.18.0",
- "ignore": "3.3.8",
- "imurmurhash": "0.1.4",
- "inquirer": "0.12.0",
- "is-my-json-valid": "2.17.2",
- "is-resolvable": "1.1.0",
- "js-yaml": "3.11.0",
- "json-stable-stringify": "1.0.1",
- "levn": "0.3.0",
- "lodash": "4.17.10",
- "mkdirp": "0.5.1",
- "optionator": "0.8.2",
- "path-is-absolute": "1.0.1",
- "path-is-inside": "1.0.2",
- "pluralize": "1.2.1",
- "progress": "1.1.8",
- "require-uncached": "1.0.3",
- "shelljs": "0.6.1",
- "strip-json-comments": "1.0.4",
- "table": "3.8.3",
- "text-table": "0.2.0",
- "user-home": "2.0.0"
- }
- },
- "esprima": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
- "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw=="
- },
- "file-entry-cache": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-1.3.1.tgz",
- "integrity": "sha1-RMYepgeuS+nBQC9B9EJwy/4zT/g=",
- "requires": {
- "flat-cache": "1.3.0",
- "object-assign": "4.1.1"
- }
- },
- "globals": {
- "version": "9.18.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
- "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ=="
- },
- "gonzales-pe-sl": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/gonzales-pe-sl/-/gonzales-pe-sl-4.2.3.tgz",
- "integrity": "sha1-aoaLw4BkXxQf7rBCxvl/zHG1n+Y=",
- "requires": {
- "minimist": "1.1.3"
- }
- },
- "js-yaml": {
- "version": "3.11.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz",
- "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==",
- "requires": {
- "argparse": "1.0.10",
- "esprima": "4.0.0"
- }
- },
- "minimist": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz",
- "integrity": "sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag="
- },
- "shelljs": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.6.1.tgz",
- "integrity": "sha1-7GIRvtGSBEIIj+D3Cyg3Iy7SyKg="
- },
- "strip-json-comments": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz",
- "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E="
- }
- }
- },
- "sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
- },
- "select-section": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/select-section/-/select-section-0.4.0.tgz",
- "integrity": "sha1-K3fuyfauLGC2B0CZSnKhrQ++KVw=",
- "requires": {
- "map-like": "1.1.3",
- "txt-ast-traverse": "1.2.1"
- }
- },
- "semver": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
- "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA=="
- },
- "semver-diff": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz",
- "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=",
- "requires": {
- "semver": "5.5.0"
- }
- },
- "send": {
- "version": "0.16.2",
- "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
- "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
- "requires": {
- "debug": "2.6.9",
- "depd": "1.1.2",
- "destroy": "1.0.4",
- "encodeurl": "1.0.2",
- "escape-html": "1.0.3",
- "etag": "1.8.1",
- "fresh": "0.5.2",
- "http-errors": "1.6.3",
- "mime": "1.4.1",
- "ms": "2.0.0",
- "on-finished": "2.3.0",
- "range-parser": "1.2.0",
- "statuses": "1.4.0"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "statuses": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
- "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
- }
- }
- },
- "sentence-case": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-1.1.3.tgz",
- "integrity": "sha1-gDSq/CFFdy06vhUJqkLJ4QQtwTk=",
- "requires": {
- "lower-case": "1.1.4"
- }
- },
- "sentence-splitter": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/sentence-splitter/-/sentence-splitter-2.3.2.tgz",
- "integrity": "sha512-QnpHNykm4nI4T6mT+NoVayh9Ixl5DohYCSVqMgPJsO2WejOcqaYTh4HQOkmzaDzXH3NO5pif4z/hpo2NGtgNlg==",
- "requires": {
- "concat-stream": "1.5.2",
- "structured-source": "3.0.2"
- }
- },
- "serve-static": {
- "version": "1.13.2",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
- "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
- "requires": {
- "encodeurl": "1.0.2",
- "escape-html": "1.0.3",
- "parseurl": "1.3.2",
- "send": "0.16.2"
- }
- },
- "set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
- },
- "set-immediate-shim": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
- "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E="
- },
- "setprototypeof": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
- "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
- },
- "shebang-command": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
- "requires": {
- "shebang-regex": "1.0.0"
- }
- },
- "shebang-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
- },
- "shelljs": {
- "version": "0.7.8",
- "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz",
- "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=",
- "requires": {
- "glob": "7.1.2",
- "interpret": "1.1.0",
- "rechoir": "0.6.2"
- }
- },
- "shellsubstitute": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shellsubstitute/-/shellsubstitute-1.2.0.tgz",
- "integrity": "sha1-5PcCpQxRiw9v6YRRiQ1wWvKba3A="
- },
- "sigmund": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
- "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA="
- },
- "signal-exit": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
- "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
- },
- "simple-lru-cache": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/simple-lru-cache/-/simple-lru-cache-0.0.1.tgz",
- "integrity": "sha1-AzQXHkDtSkhhrCklDrHbIzAL5PA="
- },
- "slice-ansi": {
- "version": "0.0.4",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz",
- "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU="
- },
- "sliced": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz",
- "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E="
- },
- "slide": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
- "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc="
- },
- "sntp": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
- "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
- "requires": {
- "hoek": "2.16.3"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
- },
- "spawn-to-readstream": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/spawn-to-readstream/-/spawn-to-readstream-0.1.3.tgz",
- "integrity": "sha1-lnaLcnOaxk/6d8jOLL+YwtIdjb8=",
- "requires": {
- "limit-spawn": "0.0.3",
- "through2": "0.4.2"
- },
- "dependencies": {
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
- },
- "object-keys": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz",
- "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY="
- },
- "readable-stream": {
- "version": "1.0.34",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
- "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "0.0.1",
- "string_decoder": "0.10.31"
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
- },
- "through2": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz",
- "integrity": "sha1-2/WGYDEVHsg1K7bE22SiKSqEC5s=",
- "requires": {
- "readable-stream": "1.0.34",
- "xtend": "2.1.2"
- }
- },
- "xtend": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz",
- "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=",
- "requires": {
- "object-keys": "0.4.0"
- }
- }
- }
- },
- "spdx-correct": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz",
- "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==",
- "requires": {
- "spdx-expression-parse": "3.0.0",
- "spdx-license-ids": "3.0.0"
- }
- },
- "spdx-exceptions": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz",
- "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg=="
- },
- "spdx-expression-parse": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
- "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
- "requires": {
- "spdx-exceptions": "2.1.0",
- "spdx-license-ids": "3.0.0"
- }
- },
- "spdx-license-ids": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz",
- "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA=="
- },
- "specificity": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.3.2.tgz",
- "integrity": "sha512-Nc/QN/A425Qog7j9aHmwOrlwX2e7pNI47ciwxwy4jOlvbbMHkNNJchit+FX+UjF3IAdiaaV5BKeWuDUnws6G1A=="
- },
- "split": {
- "version": "0.2.10",
- "resolved": "https://registry.npmjs.org/split/-/split-0.2.10.tgz",
- "integrity": "sha1-Zwl8YB1pfOE2j0GPBs0gHPBSGlc=",
- "requires": {
- "through": "2.3.8"
- }
- },
- "split-ca": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz",
- "integrity": "sha1-bIOv82kvphJW4M0ZfgXp3hV2kaY="
- },
- "split-transform-stream": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/split-transform-stream/-/split-transform-stream-0.1.1.tgz",
- "integrity": "sha1-glI2p41SoY/5EqYxrTA0wV3tX+M=",
- "requires": {
- "bubble-stream-error": "0.0.1",
- "event-stream": "3.1.7",
- "through2": "0.4.2"
- },
- "dependencies": {
- "bubble-stream-error": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/bubble-stream-error/-/bubble-stream-error-0.0.1.tgz",
- "integrity": "sha1-VeuGhG7PJmBeiWqi8aMbPJ3My2I="
- },
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
- },
- "object-keys": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz",
- "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY="
- },
- "readable-stream": {
- "version": "1.0.34",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
- "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "0.0.1",
- "string_decoder": "0.10.31"
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
- },
- "through2": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz",
- "integrity": "sha1-2/WGYDEVHsg1K7bE22SiKSqEC5s=",
- "requires": {
- "readable-stream": "1.0.34",
- "xtend": "2.1.2"
- }
- },
- "xtend": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz",
- "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=",
- "requires": {
- "object-keys": "0.4.0"
- }
- }
- }
- },
- "split2": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/split2/-/split2-0.2.1.tgz",
- "integrity": "sha1-At2smtwD7Au3jBKC7Aecpuha6QA=",
- "requires": {
- "through2": "0.6.5"
- }
- },
- "sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
- },
- "sshpk": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz",
- "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=",
- "requires": {
- "asn1": "0.2.3",
- "assert-plus": "1.0.0",
- "bcrypt-pbkdf": "1.0.1",
- "dashdash": "1.14.1",
- "ecc-jsbn": "0.1.1",
- "getpass": "0.1.7",
- "jsbn": "0.1.1",
- "tweetnacl": "0.14.5"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
- }
- }
- },
- "stack-trace": {
- "version": "0.0.10",
- "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
- "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA="
- },
- "stampit": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/stampit/-/stampit-1.2.0.tgz",
- "integrity": "sha1-UfnGoIwUZHP80CGvVRyfMu1ce50=",
- "requires": {
- "mout": "0.5.0"
- }
- },
- "standard": {
- "version": "10.0.3",
- "resolved": "https://registry.npmjs.org/standard/-/standard-10.0.3.tgz",
- "integrity": "sha512-JURZ+85ExKLQULckDFijdX5WHzN6RC7fgiZNSV4jFQVo+3tPoQGHyBrGekye/yf0aOfb4210EM5qPNlc2cRh4w==",
- "requires": {
- "eslint": "3.19.0",
- "eslint-config-standard": "10.2.1",
- "eslint-config-standard-jsx": "4.0.2",
- "eslint-plugin-import": "2.2.0",
- "eslint-plugin-node": "4.2.3",
- "eslint-plugin-promise": "3.5.0",
- "eslint-plugin-react": "6.10.3",
- "eslint-plugin-standard": "3.0.1",
- "standard-engine": "7.0.0"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "doctrine": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
- "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
- "requires": {
- "esutils": "2.0.2",
- "isarray": "1.0.0"
- }
- },
- "eslint-import-resolver-node": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz",
- "integrity": "sha1-Wt2BBujJKNssuiMrzZ76hG49oWw=",
- "requires": {
- "debug": "2.6.9",
- "object-assign": "4.1.1",
- "resolve": "1.7.1"
- }
- },
- "eslint-plugin-import": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.2.0.tgz",
- "integrity": "sha1-crowb60wXWfEgWNIpGmaQimsi04=",
- "requires": {
- "builtin-modules": "1.1.1",
- "contains-path": "0.1.0",
- "debug": "2.6.9",
- "doctrine": "1.5.0",
- "eslint-import-resolver-node": "0.2.3",
- "eslint-module-utils": "2.2.0",
- "has": "1.0.1",
- "lodash.cond": "4.5.2",
- "minimatch": "3.0.4",
- "pkg-up": "1.0.0"
- }
- },
- "resolve": {
- "version": "1.7.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz",
- "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
- "requires": {
- "path-parse": "1.0.5"
- }
- }
- }
- },
- "standard-engine": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-7.0.0.tgz",
- "integrity": "sha1-67d7nI/CyBZf+jU72Rug3/Qa9pA=",
- "requires": {
- "deglob": "2.1.0",
- "get-stdin": "5.0.1",
- "minimist": "1.2.0",
- "pkg-conf": "2.1.0"
- }
- },
- "state-toggle": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.1.tgz",
- "integrity": "sha512-Qe8QntFrrpWTnHwvwj2FZTgv+PKIsp0B9VxLzLLbSpPXWOgRgc5LVj/aTiSfK1RqIeF9jeC1UeOH8Q8y60A7og=="
- },
- "statuses": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
- "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
- },
- "stream-combiner": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz",
- "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=",
- "requires": {
- "duplexer": "0.1.1",
- "through": "2.3.8"
- }
- },
- "stream-shift": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
- "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI="
- },
- "string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "requires": {
- "code-point-at": "1.1.0",
- "is-fullwidth-code-point": "1.0.0",
- "strip-ansi": "3.0.1"
- }
- },
- "string.prototype.padstart": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/string.prototype.padstart/-/string.prototype.padstart-3.0.0.tgz",
- "integrity": "sha1-W8+tOfRkm7LQMSkuGbzwtRDUskI=",
- "requires": {
- "define-properties": "1.1.2",
- "es-abstract": "1.11.0",
- "function-bind": "1.1.1"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "requires": {
- "safe-buffer": "5.1.2"
- }
- },
- "stringify-entities": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.2.tgz",
- "integrity": "sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==",
- "requires": {
- "character-entities-html4": "1.1.2",
- "character-entities-legacy": "1.1.2",
- "is-alphanumerical": "1.0.2",
- "is-hexadecimal": "1.0.2"
- }
- },
- "stringstream": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz",
- "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA=="
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "requires": {
- "ansi-regex": "2.1.1"
- }
- },
- "strip-bom": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
- "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
- "requires": {
- "is-utf8": "0.2.1"
- }
- },
- "strip-eof": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
- "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8="
- },
- "strip-indent": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
- "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
- "requires": {
- "get-stdin": "4.0.1"
- },
- "dependencies": {
- "get-stdin": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
- "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4="
- }
- }
- },
- "strip-json-comments": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
- "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
- },
- "structured-source": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/structured-source/-/structured-source-3.0.2.tgz",
- "integrity": "sha1-3YAkJeD1PcSm56yjdSkBoczaevU=",
- "requires": {
- "boundary": "1.0.1"
- }
- },
- "style-search": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz",
- "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI="
- },
- "stylehacks": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-2.3.2.tgz",
- "integrity": "sha1-ZMg+BDimjJ7fRJ6MVSp9mrYAmws=",
- "requires": {
- "browserslist": "1.7.7",
- "chalk": "1.1.3",
- "log-symbols": "1.0.2",
- "minimist": "1.2.0",
- "plur": "2.1.2",
- "postcss": "5.2.18",
- "postcss-reporter": "1.4.1",
- "postcss-selector-parser": "2.2.3",
- "read-file-stdin": "0.2.1",
- "text-table": "0.2.0",
- "write-file-stdout": "0.0.2"
- },
- "dependencies": {
- "browserslist": {
- "version": "1.7.7",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
- "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
- "requires": {
- "caniuse-db": "1.0.30000846",
- "electron-to-chromium": "1.3.48"
- }
- },
- "has-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
- "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo="
- },
- "postcss": {
- "version": "5.2.18",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
- "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
- "requires": {
- "chalk": "1.1.3",
- "js-base64": "2.4.5",
- "source-map": "0.5.7",
- "supports-color": "3.2.3"
- }
- },
- "postcss-reporter": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-1.4.1.tgz",
- "integrity": "sha1-wTbwpbFhkV83ndN2XGEHX357mvI=",
- "requires": {
- "chalk": "1.1.3",
- "lodash": "4.17.10",
- "log-symbols": "1.0.2",
- "postcss": "5.2.18"
- }
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
- },
- "supports-color": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
- "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
- "requires": {
- "has-flag": "1.0.0"
- }
- }
- }
- },
- "stylelint": {
- "version": "7.13.0",
- "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-7.13.0.tgz",
- "integrity": "sha1-ER+Xttpy53XICADWu29fhpmXeF0=",
- "requires": {
- "autoprefixer": "6.7.7",
- "balanced-match": "0.4.2",
- "chalk": "2.4.1",
- "colorguard": "1.2.1",
- "cosmiconfig": "2.2.2",
- "debug": "2.6.9",
- "doiuse": "2.6.0",
- "execall": "1.0.0",
- "file-entry-cache": "2.0.0",
- "get-stdin": "5.0.1",
- "globby": "6.1.0",
- "globjoin": "0.1.4",
- "html-tags": "2.0.0",
- "ignore": "3.3.8",
- "imurmurhash": "0.1.4",
- "known-css-properties": "0.2.0",
- "lodash": "4.17.10",
- "log-symbols": "1.0.2",
- "mathml-tag-names": "2.1.0",
- "meow": "3.7.0",
- "micromatch": "2.3.11",
- "normalize-selector": "0.2.0",
- "pify": "2.3.0",
- "postcss": "5.2.18",
- "postcss-less": "0.14.0",
- "postcss-media-query-parser": "0.2.3",
- "postcss-reporter": "3.0.0",
- "postcss-resolve-nested-selector": "0.1.1",
- "postcss-scss": "0.4.1",
- "postcss-selector-parser": "2.2.3",
- "postcss-value-parser": "3.3.0",
- "resolve-from": "3.0.0",
- "specificity": "0.3.2",
- "string-width": "2.1.1",
- "style-search": "0.1.0",
- "stylehacks": "2.3.2",
- "sugarss": "0.2.0",
- "svg-tags": "1.0.0",
- "table": "4.0.3"
- },
- "dependencies": {
- "ajv": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.0.tgz",
- "integrity": "sha512-VDUX1oSajablmiyFyED9L1DFndg0P9h7p1F+NO8FkIzei6EPrR6Zu1n18rd5P8PqaSRd/FrWv3G1TVBqpM83gA==",
- "requires": {
- "fast-deep-equal": "2.0.1",
- "fast-json-stable-stringify": "2.0.0",
- "json-schema-traverse": "0.3.1",
- "uri-js": "4.2.2"
- }
- },
- "ajv-keywords": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz",
- "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo="
- },
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
- },
- "autoprefixer": {
- "version": "6.7.7",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz",
- "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=",
- "requires": {
- "browserslist": "1.7.7",
- "caniuse-db": "1.0.30000846",
- "normalize-range": "0.1.2",
- "num2fraction": "1.2.2",
- "postcss": "5.2.18",
- "postcss-value-parser": "3.3.0"
- }
- },
- "balanced-match": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
- "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg="
- },
- "browserslist": {
- "version": "1.7.7",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
- "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
- "requires": {
- "caniuse-db": "1.0.30000846",
- "electron-to-chromium": "1.3.48"
- }
- },
- "chalk": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
- "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
- "requires": {
- "ansi-styles": "3.2.1",
- "escape-string-regexp": "1.0.5",
- "supports-color": "5.4.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "requires": {
- "color-convert": "1.9.1"
- }
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
- },
- "supports-color": {
- "version": "5.4.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
- "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
- "requires": {
- "has-flag": "3.0.0"
- }
- }
- }
- },
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "globby": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
- "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
- "requires": {
- "array-union": "1.0.2",
- "glob": "7.1.2",
- "object-assign": "4.1.1",
- "pify": "2.3.0",
- "pinkie-promise": "2.0.1"
- }
- },
- "has-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
- "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo="
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
- },
- "known-css-properties": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.2.0.tgz",
- "integrity": "sha512-UTCzU28rRI9wkb8qSGoZa9pgWvxr4LjP2MEhi9XHb/1XMOJy0uTnIxaxzj8My/PORG+kQG6VzAcGvRw66eIOfA=="
- },
- "postcss": {
- "version": "5.2.18",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
- "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
- "requires": {
- "chalk": "1.1.3",
- "js-base64": "2.4.5",
- "source-map": "0.5.7",
- "supports-color": "3.2.3"
- },
- "dependencies": {
- "chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "requires": {
- "ansi-styles": "2.2.1",
- "escape-string-regexp": "1.0.5",
- "has-ansi": "2.0.0",
- "strip-ansi": "3.0.1",
- "supports-color": "2.0.0"
- },
- "dependencies": {
- "supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
- }
- }
- }
- }
- },
- "resolve-from": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
- "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g="
- },
- "slice-ansi": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz",
- "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==",
- "requires": {
- "is-fullwidth-code-point": "2.0.0"
- }
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
- },
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "requires": {
- "is-fullwidth-code-point": "2.0.0",
- "strip-ansi": "4.0.0"
- },
- "dependencies": {
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "requires": {
- "ansi-regex": "3.0.0"
- }
- }
- }
- },
- "supports-color": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
- "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
- "requires": {
- "has-flag": "1.0.0"
- }
- },
- "table": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz",
- "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==",
- "requires": {
- "ajv": "6.5.0",
- "ajv-keywords": "3.2.0",
- "chalk": "2.4.1",
- "lodash": "4.17.10",
- "slice-ansi": "1.0.0",
- "string-width": "2.1.1"
- }
- }
- }
- },
- "stylint": {
- "version": "1.5.9",
- "resolved": "https://registry.npmjs.org/stylint/-/stylint-1.5.9.tgz",
- "integrity": "sha1-KfTcEp+hyiIVDNhnIjzuK+1f9qI=",
- "requires": {
- "async": "1.5.2",
- "chalk": "1.1.3",
- "chokidar": "1.5.2",
- "columnify": "1.5.4",
- "glob": "7.0.4",
- "lodash.defaults": "4.0.1",
- "path-is-absolute": "1.0.0",
- "stampit": "1.2.0",
- "strip-json-comments": "2.0.1",
- "user-home": "2.0.0",
- "yargs": "4.7.1"
- },
- "dependencies": {
- "camelcase": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
- "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo="
- },
- "chokidar": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.5.2.tgz",
- "integrity": "sha1-KT5yhkDMk92Cd0JDNLPG1K06NIo=",
- "requires": {
- "anymatch": "1.3.2",
- "async-each": "1.0.1",
- "fsevents": "1.2.4",
- "glob-parent": "2.0.0",
- "inherits": "2.0.3",
- "is-binary-path": "1.0.1",
- "is-glob": "2.0.1",
- "path-is-absolute": "1.0.0",
- "readdirp": "2.1.0"
- }
- },
- "glob": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.4.tgz",
- "integrity": "sha1-O0SvoJQ73DGyA3uTR5Hi4IS8t/Y=",
- "requires": {
- "fs.realpath": "1.0.0",
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.0"
- }
- },
- "path-is-absolute": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz",
- "integrity": "sha1-Jj2tpmqz8vsQv3+dJN2PPlcO+RI="
- },
- "pkg-conf": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-1.1.3.tgz",
- "integrity": "sha1-N45W1v0T6Iv7b0ol33qD+qvduls=",
- "requires": {
- "find-up": "1.1.2",
- "load-json-file": "1.1.0",
- "object-assign": "4.1.1",
- "symbol": "0.2.3"
- }
- },
- "set-blocking": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-1.0.0.tgz",
- "integrity": "sha1-zV5dk4BI3xrJLf6S4fFq3WVvXsU="
- },
- "yargs": {
- "version": "4.7.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.7.1.tgz",
- "integrity": "sha1-5gQyZYozh/8mnAKOrN5KUS5Djf8=",
- "requires": {
- "camelcase": "3.0.0",
- "cliui": "3.2.0",
- "decamelize": "1.2.0",
- "lodash.assign": "4.2.0",
- "os-locale": "1.4.0",
- "pkg-conf": "1.1.3",
- "read-pkg-up": "1.0.1",
- "require-main-filename": "1.0.1",
- "set-blocking": "1.0.0",
- "string-width": "1.0.2",
- "window-size": "0.2.0",
- "y18n": "3.2.1",
- "yargs-parser": "2.4.1"
- }
- }
- }
- },
- "sugarss": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-0.2.0.tgz",
- "integrity": "sha1-rDQjdWMyfG/4l7ZHQr9q7BkK054=",
- "requires": {
- "postcss": "5.2.18"
- },
- "dependencies": {
- "has-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
- "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo="
- },
- "postcss": {
- "version": "5.2.18",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
- "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
- "requires": {
- "chalk": "1.1.3",
- "js-base64": "2.4.5",
- "source-map": "0.5.7",
- "supports-color": "3.2.3"
- }
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
- },
- "supports-color": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
- "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
- "requires": {
- "has-flag": "1.0.0"
- }
- }
- }
- },
- "supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
- },
- "svg-tags": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz",
- "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q="
- },
- "symbol": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/symbol/-/symbol-0.2.3.tgz",
- "integrity": "sha1-O5hzuKkB5Hxu/iFSajrDcu8ou8c="
- },
- "synesthesia": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/synesthesia/-/synesthesia-1.0.1.tgz",
- "integrity": "sha1-XvlepUjA1cbm+btLDQcx3/hkp3c=",
- "requires": {
- "css-color-names": "0.0.3"
- }
- },
- "table": {
- "version": "3.8.3",
- "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz",
- "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=",
- "requires": {
- "ajv": "4.11.8",
- "ajv-keywords": "1.5.1",
- "chalk": "1.1.3",
- "lodash": "4.17.10",
- "slice-ansi": "0.0.4",
- "string-width": "2.1.1"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
- },
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "requires": {
- "is-fullwidth-code-point": "2.0.0",
- "strip-ansi": "4.0.0"
- }
- },
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "requires": {
- "ansi-regex": "3.0.0"
- }
- }
- }
- },
- "tar": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz",
- "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=",
- "requires": {
- "block-stream": "0.0.9",
- "fstream": "1.0.11",
- "inherits": "2.0.3"
- }
- },
- "tar-fs": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.12.0.tgz",
- "integrity": "sha1-pqgFU9ilTHPeHQrg553ncDVgXh0=",
- "requires": {
- "mkdirp": "0.5.1",
- "pump": "1.0.3",
- "tar-stream": "1.6.1"
- }
- },
- "tar-stream": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.1.tgz",
- "integrity": "sha512-IFLM5wp3QrJODQFPm6/to3LJZrONdBY/otxcvDIQzu217zKye6yVR3hhi9lAjrC2Z+m/j5oDxMPb1qcd8cIvpA==",
- "requires": {
- "bl": "1.2.2",
- "buffer-alloc": "1.2.0",
- "end-of-stream": "1.4.1",
- "fs-constants": "1.0.0",
- "readable-stream": "2.3.6",
- "to-buffer": "1.1.1",
- "xtend": "4.0.1"
- }
- },
- "term-size": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",
- "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=",
- "requires": {
- "execa": "0.7.0"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ="
- },
- "textlint": {
- "version": "7.3.0",
- "resolved": "https://registry.npmjs.org/textlint/-/textlint-7.3.0.tgz",
- "integrity": "sha1-TVzjbIqmWmwfpvI2iyXBsQsIuac=",
- "requires": {
- "bluebird": "3.5.1",
- "carrack": "0.0.5",
- "chalk": "1.1.3",
- "debug": "2.6.9",
- "deep-equal": "1.0.1",
- "diff": "2.2.3",
- "file-entry-cache": "2.0.0",
- "get-stdin": "5.0.1",
- "glob": "7.1.2",
- "interop-require": "1.0.0",
- "is-file": "1.0.0",
- "log-symbols": "1.0.2",
- "map-like": "1.1.3",
- "md5": "2.2.1",
- "mkdirp": "0.5.1",
- "object-assign": "4.1.1",
- "optionator": "0.8.2",
- "path-to-glob-pattern": "1.0.2",
- "rc-config-loader": "1.0.2",
- "read-pkg": "1.1.0",
- "shelljs": "0.7.8",
- "string-width": "1.0.2",
- "structured-source": "3.0.2",
- "text-table": "0.2.0",
- "textlint-formatter": "1.8.0",
- "textlint-plugin-markdown": "1.1.0",
- "textlint-plugin-text": "1.1.4",
- "traverse": "0.6.6",
- "try-resolve": "1.0.1",
- "txt-ast-traverse": "1.2.1",
- "unique-concat": "0.2.2"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- }
- }
- },
- "textlint-ast-test": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/textlint-ast-test/-/textlint-ast-test-1.1.4.tgz",
- "integrity": "sha1-JlXHLhVfPIQ5N8SorchzUhFr7r4="
- },
- "textlint-formatter": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/textlint-formatter/-/textlint-formatter-1.8.0.tgz",
- "integrity": "sha1-MlTpvX1MjPAxt0d4vyG8CG+v8+s=",
- "requires": {
- "@azu/format-text": "1.0.1",
- "@azu/style-format": "1.0.0",
- "chalk": "1.1.3",
- "concat-stream": "1.5.2",
- "js-yaml": "3.2.7",
- "optionator": "0.8.2",
- "pluralize": "2.0.0",
- "string-width": "1.0.2",
- "string.prototype.padstart": "3.0.0",
- "strip-ansi": "3.0.1",
- "table": "3.8.3",
- "text-table": "0.2.0",
- "try-resolve": "1.0.1",
- "xml-escape": "1.1.0"
- },
- "dependencies": {
- "pluralize": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-2.0.0.tgz",
- "integrity": "sha1-crcmqm+sHt7uQiVsfY3CVrM1Z38="
- }
- }
- },
- "textlint-plugin-asciidoc-loose": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/textlint-plugin-asciidoc-loose/-/textlint-plugin-asciidoc-loose-1.0.1.tgz",
- "integrity": "sha1-saRxULMHsEgmxWJWPzYkqox7SPM=",
- "requires": {
- "structured-source": "3.0.2",
- "vscode-textmate": "1.2.0"
- }
- },
- "textlint-plugin-html": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/textlint-plugin-html/-/textlint-plugin-html-0.1.7.tgz",
- "integrity": "sha512-I2wHH7NhzUbw6sUUNsbHL7I1qzwp1te3Q/rekO/im0osSWi7M3FRrACMcWL8uCZmd7tAoNyBPemjc465gWPqng==",
- "requires": {
- "hast": "0.0.2",
- "structured-source": "3.0.2",
- "traverse": "0.6.6"
- }
- },
- "textlint-plugin-markdown": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/textlint-plugin-markdown/-/textlint-plugin-markdown-1.1.0.tgz",
- "integrity": "sha1-NkkOsnBPSWm0svAMYkGXER5dFWg=",
- "requires": {
- "markdown-to-ast": "3.4.0"
- }
- },
- "textlint-plugin-review": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/textlint-plugin-review/-/textlint-plugin-review-0.3.3.tgz",
- "integrity": "sha1-dXWutWL833WX4U9VIwuAXOxzXrg=",
- "requires": {
- "textlint-ast-test": "1.1.4",
- "txt-ast-traverse": "1.2.1"
- }
- },
- "textlint-plugin-rst": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/textlint-plugin-rst/-/textlint-plugin-rst-0.1.1.tgz",
- "integrity": "sha1-7l+MlHqUfWsHwcRlFYaWMtVuBrU=",
- "requires": {
- "debug": "2.6.9",
- "structured-source": "3.0.2",
- "traverse": "0.6.6"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- }
- }
- },
- "textlint-plugin-text": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/textlint-plugin-text/-/textlint-plugin-text-1.1.4.tgz",
- "integrity": "sha1-/iB5Fnt5ub7CaetoQmUIFmS7HR0=",
- "requires": {
- "txt-to-ast": "1.1.0"
- }
- },
- "textlint-rule-alex": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/textlint-rule-alex/-/textlint-rule-alex-1.2.0.tgz",
- "integrity": "sha1-saEFlxstnmnMBcmuQnaPA7cgK10=",
- "requires": {
- "alex": "4.1.0",
- "textlint-rule-helper": "2.0.0"
- },
- "dependencies": {
- "alex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/alex/-/alex-4.1.0.tgz",
- "integrity": "sha1-bFVYC7ctMj2J5ZRoFGX0Rsu/E3A=",
- "requires": {
- "meow": "3.7.0",
- "remark-message-control": "4.1.0",
- "remark-parse": "3.0.1",
- "remark-retext": "3.1.0",
- "retext-english": "3.0.0",
- "retext-equality": "3.3.0",
- "retext-profanities": "4.4.0",
- "unified": "6.2.0",
- "unified-diff": "1.0.2",
- "unified-engine": "3.1.1",
- "update-notifier": "2.5.0",
- "vfile": "2.3.0",
- "vfile-reporter": "3.1.0",
- "vfile-sort": "2.1.1"
- }
- },
- "ansi-align": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz",
- "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=",
- "requires": {
- "string-width": "2.1.1"
- },
- "dependencies": {
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "requires": {
- "is-fullwidth-code-point": "2.0.0",
- "strip-ansi": "4.0.0"
- }
- }
- }
- },
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
- },
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "requires": {
- "color-convert": "1.9.1"
- }
- },
- "boxen": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz",
- "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==",
- "requires": {
- "ansi-align": "2.0.0",
- "camelcase": "4.1.0",
- "chalk": "2.4.1",
- "cli-boxes": "1.0.0",
- "string-width": "2.1.1",
- "term-size": "1.2.0",
- "widest-line": "2.0.0"
- },
- "dependencies": {
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "requires": {
- "is-fullwidth-code-point": "2.0.0",
- "strip-ansi": "4.0.0"
- }
- }
- }
- },
- "camelcase": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
- "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0="
- },
- "chalk": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
- "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
- "requires": {
- "ansi-styles": "3.2.1",
- "escape-string-regexp": "1.0.5",
- "supports-color": "5.4.0"
- },
- "dependencies": {
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
- },
- "supports-color": {
- "version": "5.4.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
- "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
- "requires": {
- "has-flag": "3.0.0"
- }
- }
- }
- },
- "configstore": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz",
- "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==",
- "requires": {
- "dot-prop": "4.2.0",
- "graceful-fs": "4.1.11",
- "make-dir": "1.3.0",
- "unique-string": "1.0.0",
- "write-file-atomic": "2.3.0",
- "xdg-basedir": "3.0.0"
- }
- },
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "dot-prop": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz",
- "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==",
- "requires": {
- "is-obj": "1.0.1"
- }
- },
- "esprima": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
- "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw=="
- },
- "got": {
- "version": "6.7.1",
- "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz",
- "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
- "requires": {
- "create-error-class": "3.0.2",
- "duplexer3": "0.1.4",
- "get-stream": "3.0.0",
- "is-redirect": "1.0.0",
- "is-retry-allowed": "1.1.0",
- "is-stream": "1.1.0",
- "lowercase-keys": "1.0.1",
- "safe-buffer": "5.1.2",
- "timed-out": "4.0.1",
- "unzip-response": "2.0.1",
- "url-parse-lax": "1.0.0"
- }
- },
- "has-flag": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
- "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE="
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
- },
- "js-yaml": {
- "version": "3.11.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz",
- "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==",
- "requires": {
- "argparse": "1.0.10",
- "esprima": "4.0.0"
- }
- },
- "latest-version": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz",
- "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=",
- "requires": {
- "package-json": "4.0.1"
- }
- },
- "package-json": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz",
- "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=",
- "requires": {
- "got": "6.7.1",
- "registry-auth-token": "3.3.2",
- "registry-url": "3.1.0",
- "semver": "5.5.0"
- }
- },
- "parse-english": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/parse-english/-/parse-english-4.1.1.tgz",
- "integrity": "sha512-g7hegR9AFIlGXl5645mG8nQeeWW7SrK7lgmgIWR0KKWvGyZO5mxa4GGoNxRLm6VW2LGpLnn6g4O9yyLJQ4IzQw==",
- "requires": {
- "nlcst-to-string": "2.0.2",
- "parse-latin": "4.1.1",
- "unist-util-modify-children": "1.1.2",
- "unist-util-visit-children": "1.1.2"
- }
- },
- "parse-latin": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-4.1.1.tgz",
- "integrity": "sha512-9fPVvDdw6G8LxL3o/PL6IzSGNGpF+3HEjCzFe0dN83sZPstftyr+McP9dNi3+EnR7ICYOHbHKCZ0l7JD90K5xQ==",
- "requires": {
- "nlcst-to-string": "2.0.2",
- "unist-util-modify-children": "1.1.2",
- "unist-util-visit-children": "1.1.2"
- }
- },
- "pluralize": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz",
- "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow=="
- },
- "remark-message-control": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/remark-message-control/-/remark-message-control-4.1.0.tgz",
- "integrity": "sha512-e1dszks4YKY7hLAkhS2367jBjBpAfvi+kVgSN/tOFrdp3qxITjiNR5fOFnyYF8vvorkQ9uxlKJoZUOW8T7rKDg==",
- "requires": {
- "mdast-comment-marker": "1.0.2",
- "unified-message-control": "1.0.4",
- "xtend": "4.0.1"
- }
- },
- "remark-parse": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-3.0.1.tgz",
- "integrity": "sha1-G5+EGkTY9PvyJGhQJlRZpOs1TIA=",
- "requires": {
- "collapse-white-space": "1.0.4",
- "has": "1.0.1",
- "is-alphabetical": "1.0.2",
- "is-decimal": "1.0.2",
- "is-whitespace-character": "1.0.2",
- "is-word-character": "1.0.2",
- "markdown-escapes": "1.0.2",
- "parse-entities": "1.1.2",
- "repeat-string": "1.6.1",
- "state-toggle": "1.0.1",
- "trim": "0.0.1",
- "trim-trailing-lines": "1.1.1",
- "unherit": "1.1.1",
- "unist-util-remove-position": "1.1.2",
- "vfile-location": "2.0.3",
- "xtend": "4.0.1"
- }
- },
- "remark-retext": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/remark-retext/-/remark-retext-3.1.0.tgz",
- "integrity": "sha1-Gz3y1JRpwNNZbK2G6RUDqLYA/cw=",
- "requires": {
- "mdast-util-to-nlcst": "3.2.0"
- }
- },
- "retext-english": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/retext-english/-/retext-english-3.0.0.tgz",
- "integrity": "sha1-wXy1a9Xxuj3uM1XdurefHEiUqAk=",
- "requires": {
- "parse-english": "4.1.1",
- "unherit": "1.1.1"
- }
- },
- "retext-equality": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/retext-equality/-/retext-equality-3.3.0.tgz",
- "integrity": "sha512-+UQDawTxsOHzIILr5Qodf3CS9Av4NX68kOI9/CWwSlhRMQ5VUGdS+P2WXXnywLDQ9oilOHKfnElAV/6I7yIxDA==",
- "requires": {
- "lodash.difference": "4.5.0",
- "lodash.intersection": "4.4.0",
- "nlcst-normalize": "2.1.2",
- "nlcst-search": "1.4.3",
- "nlcst-to-string": "2.0.2",
- "object-keys": "1.0.11",
- "quotation": "1.1.1",
- "unist-util-visit": "1.3.1"
- }
- },
- "retext-profanities": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/retext-profanities/-/retext-profanities-4.4.0.tgz",
- "integrity": "sha512-Gesb0Act9oeJ5N0KztREitP2E0zo7euzgTu2X4HLP6IJmcrRbRnqNwV11tzNy5JFJzKB1JTJFc7KseojTeGwOA==",
- "requires": {
- "cuss": "1.8.0",
- "lodash.difference": "4.5.0",
- "lodash.intersection": "4.4.0",
- "nlcst-search": "1.4.3",
- "nlcst-to-string": "2.0.2",
- "object-keys": "1.0.11",
- "pluralize": "7.0.0",
- "quotation": "1.1.1"
- }
- },
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "requires": {
- "ansi-regex": "3.0.0"
- }
- },
- "supports-color": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
- "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
- "requires": {
- "has-flag": "2.0.0"
- }
- },
- "timed-out": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz",
- "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8="
- },
- "to-vfile": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-2.2.0.tgz",
- "integrity": "sha512-saGC8/lWdGrEoBMLUtgzhRHWAkQMP8gdldA3MOAUhBwTGEb1RSMVcflHGSx4ZJsdEZ9o1qDBCPp47LCPrbZWow==",
- "requires": {
- "is-buffer": "1.1.6",
- "vfile": "2.3.0",
- "x-is-function": "1.0.4"
- }
- },
- "unified": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/unified/-/unified-6.2.0.tgz",
- "integrity": "sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA==",
- "requires": {
- "bail": "1.0.3",
- "extend": "3.0.1",
- "is-plain-obj": "1.1.0",
- "trough": "1.0.2",
- "vfile": "2.3.0",
- "x-is-string": "0.1.0"
- }
- },
- "unified-engine": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/unified-engine/-/unified-engine-3.1.1.tgz",
- "integrity": "sha1-eSVBgm306XtkDM3ZDspiE1bkyec=",
- "requires": {
- "concat-stream": "1.5.2",
- "debug": "2.6.9",
- "fault": "1.0.2",
- "fn-name": "2.0.1",
- "glob": "7.1.2",
- "has": "1.0.1",
- "ignore": "3.3.8",
- "is-empty": "1.2.0",
- "is-hidden": "1.1.1",
- "is-object": "1.0.1",
- "js-yaml": "3.11.0",
- "load-plugin": "2.2.2",
- "parse-json": "2.2.0",
- "to-vfile": "2.2.0",
- "trough": "1.0.2",
- "vfile-reporter": "3.1.0",
- "vfile-statistics": "1.1.1",
- "x-is-function": "1.0.4",
- "x-is-string": "0.1.0",
- "xtend": "4.0.1"
- }
- },
- "unzip-response": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz",
- "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c="
- },
- "update-notifier": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz",
- "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==",
- "requires": {
- "boxen": "1.3.0",
- "chalk": "2.4.1",
- "configstore": "3.1.2",
- "import-lazy": "2.1.0",
- "is-ci": "1.1.0",
- "is-installed-globally": "0.1.0",
- "is-npm": "1.0.0",
- "latest-version": "3.1.0",
- "semver-diff": "2.1.0",
- "xdg-basedir": "3.0.0"
- }
- },
- "vfile": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-2.3.0.tgz",
- "integrity": "sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==",
- "requires": {
- "is-buffer": "1.1.6",
- "replace-ext": "1.0.0",
- "unist-util-stringify-position": "1.1.2",
- "vfile-message": "1.0.1"
- }
- },
- "vfile-reporter": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-3.1.0.tgz",
- "integrity": "sha1-qbOYxebcvIqaCObPQl8JLoajcAA=",
- "requires": {
- "repeat-string": "1.6.1",
- "string-width": "1.0.2",
- "supports-color": "4.5.0",
- "unist-util-stringify-position": "1.1.2",
- "vfile-statistics": "1.1.1"
- }
- },
- "vfile-sort": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/vfile-sort/-/vfile-sort-2.1.1.tgz",
- "integrity": "sha512-+fpTWKkVHwI6VF2xtkDTuCA6cH4UPLAxh+KxfU8g8pC0do5RSZCk1HXTTtMJguW0t5jC0PC19owjUZX9SGQ9tw=="
- },
- "widest-line": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz",
- "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=",
- "requires": {
- "string-width": "2.1.1"
- },
- "dependencies": {
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "requires": {
- "is-fullwidth-code-point": "2.0.0",
- "strip-ansi": "4.0.0"
- }
- }
- }
- },
- "write-file-atomic": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz",
- "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==",
- "requires": {
- "graceful-fs": "4.1.11",
- "imurmurhash": "0.1.4",
- "signal-exit": "3.0.2"
- }
- },
- "xdg-basedir": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
- "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ="
- }
- }
- },
- "textlint-rule-common-misspellings": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/textlint-rule-common-misspellings/-/textlint-rule-common-misspellings-1.0.1.tgz",
- "integrity": "sha1-jEEzzzu1mqFZGZ0sm87RJBM2V3Q=",
- "requires": {
- "misspellings": "1.1.0",
- "textlint-rule-helper": "1.2.0"
- },
- "dependencies": {
- "textlint-rule-helper": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/textlint-rule-helper/-/textlint-rule-helper-1.2.0.tgz",
- "integrity": "sha1-vmjUelFGsW3RFieMmut701YxzNo=",
- "requires": {
- "unist-util-visit": "1.3.1"
- }
- }
- }
- },
- "textlint-rule-date-weekday-mismatch": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/textlint-rule-date-weekday-mismatch/-/textlint-rule-date-weekday-mismatch-1.0.5.tgz",
- "integrity": "sha1-KsJWi+UUnWXUqaUH6aqIf31Qxgs=",
- "requires": {
- "chrono-node": "1.3.5",
- "moment": "2.22.1"
- }
- },
- "textlint-rule-ginger": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/textlint-rule-ginger/-/textlint-rule-ginger-2.1.1.tgz",
- "integrity": "sha1-Cn2sDuRnhfjsVt1AuN2r3f8qPF0=",
- "requires": {
- "es6-promisify": "5.0.0",
- "gingerbread": "0.5.0",
- "textlint-rule-helper": "2.0.0",
- "textlint-util-to-string": "2.1.1"
- }
- },
- "textlint-rule-helper": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/textlint-rule-helper/-/textlint-rule-helper-2.0.0.tgz",
- "integrity": "sha1-lctGlslcQljS4zienmS4SflyE4I=",
- "requires": {
- "unist-util-visit": "1.3.1"
- }
- },
- "textlint-rule-max-comma": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/textlint-rule-max-comma/-/textlint-rule-max-comma-1.0.4.tgz",
- "integrity": "sha1-9VXJfg0wOcp9oGz9GvrQ5fWJmjc=",
- "requires": {
- "sentence-splitter": "2.3.2",
- "unist-util-filter": "0.2.1"
- }
- },
- "textlint-rule-max-number-of-lines": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/textlint-rule-max-number-of-lines/-/textlint-rule-max-number-of-lines-1.0.3.tgz",
- "integrity": "sha1-/OZh1QQjiESTlhZOgwd40CTy5Zs=",
- "requires": {
- "object-assign": "4.1.1"
- }
- },
- "textlint-rule-ng-word": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/textlint-rule-ng-word/-/textlint-rule-ng-word-1.0.0.tgz",
- "integrity": "sha1-s4miOepLSZL0VeKvNrsGL8bkLTk="
- },
- "textlint-rule-no-dead-link": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/textlint-rule-no-dead-link/-/textlint-rule-no-dead-link-3.1.1.tgz",
- "integrity": "sha1-GQFu8RHF36d8mog9bL9nKHxiv1Y=",
- "requires": {
- "isomorphic-fetch": "2.2.1",
- "textlint-rule-helper": "2.0.0"
- }
- },
- "textlint-rule-no-empty-section": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/textlint-rule-no-empty-section/-/textlint-rule-no-empty-section-1.1.0.tgz",
- "integrity": "sha1-E3rmuN/Kq3Wf1gaL/MGmyUG7Rgc=",
- "requires": {
- "select-section": "0.4.0"
- }
- },
- "textlint-rule-no-start-duplicated-conjunction": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/textlint-rule-no-start-duplicated-conjunction/-/textlint-rule-no-start-duplicated-conjunction-1.1.4.tgz",
- "integrity": "sha512-zIWRXqI33El4w6lkdAcP+vD7edVIzMHaboR/Xg5PodD2ZkpEC/METwOlbk3XtZSE6Jbb4pN8Wr+HoNZNIaOLDw==",
- "requires": {
- "object-assign": "4.1.1",
- "sentence-splitter": "2.3.2",
- "textlint-rule-helper": "2.0.0",
- "textlint-util-to-string": "2.1.1"
- }
- },
- "textlint-rule-no-todo": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/textlint-rule-no-todo/-/textlint-rule-no-todo-2.0.0.tgz",
- "integrity": "sha1-h3uOYMNM+E3zlX1pTl0PXCFYty8=",
- "requires": {
- "textlint-rule-helper": "1.2.0"
- },
- "dependencies": {
- "textlint-rule-helper": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/textlint-rule-helper/-/textlint-rule-helper-1.2.0.tgz",
- "integrity": "sha1-vmjUelFGsW3RFieMmut701YxzNo=",
- "requires": {
- "unist-util-visit": "1.3.1"
- }
- }
- }
- },
- "textlint-rule-period-in-list-item": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/textlint-rule-period-in-list-item/-/textlint-rule-period-in-list-item-0.2.0.tgz",
- "integrity": "sha1-4J2iccXE5XMB+Y8tpgfFGvvRXtM=",
- "requires": {
- "check-ends-with-period": "1.0.1",
- "unist-util-select": "1.5.0"
- }
- },
- "textlint-rule-rousseau": {
- "version": "1.4.5",
- "resolved": "https://registry.npmjs.org/textlint-rule-rousseau/-/textlint-rule-rousseau-1.4.5.tgz",
- "integrity": "sha1-XMiy/hEkQTvYKz0LIXeIkttCo6w=",
- "requires": {
- "object-assign": "4.1.1",
- "rousseau": "1.0.5",
- "textlint-rule-helper": "2.0.0",
- "textlint-util-to-string": "1.2.1",
- "unist-util-map": "1.0.4"
- },
- "dependencies": {
- "textlint-util-to-string": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/textlint-util-to-string/-/textlint-util-to-string-1.2.1.tgz",
- "integrity": "sha1-HPiZVtJ1VaVelYjAazWlDw0dRvk=",
- "requires": {
- "object-assign": "4.1.1",
- "structured-source": "3.0.2"
- }
- }
- }
- },
- "textlint-rule-unexpanded-acronym": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/textlint-rule-unexpanded-acronym/-/textlint-rule-unexpanded-acronym-1.2.1.tgz",
- "integrity": "sha1-TlxkmJj+pwLCNoO2DUb+l/2QMRc=",
- "requires": {
- "array-includes": "3.0.3",
- "is-capitalized": "1.0.0"
- }
- },
- "textlint-rule-write-good": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/textlint-rule-write-good/-/textlint-rule-write-good-1.6.2.tgz",
- "integrity": "sha1-PHmwQJExnU6L5ftELFlr9QDoST4=",
- "requires": {
- "textlint-rule-helper": "2.0.0",
- "write-good": "0.11.3"
- },
- "dependencies": {
- "write-good": {
- "version": "0.11.3",
- "resolved": "https://registry.npmjs.org/write-good/-/write-good-0.11.3.tgz",
- "integrity": "sha512-fDKIHO5wCzTLCOGNJl1rzzJrZlTIzfZl8msOoJQZzRhYo0X/tFTm4+2B1zTibFYK01Nnd1kLZBjj4xjcFLePNQ==",
- "requires": {
- "adverb-where": "0.0.9",
- "e-prime": "0.10.2",
- "no-cliches": "0.1.0",
- "object.assign": "4.1.0",
- "passive-voice": "0.1.0",
- "too-wordy": "0.1.4",
- "weasel-words": "0.1.1"
- }
- }
- }
- },
- "textlint-util-to-string": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/textlint-util-to-string/-/textlint-util-to-string-2.1.1.tgz",
- "integrity": "sha512-PW6rXqLNGL3xZ6d5/INrX+pt8qbffmeDPLcvkBOlfNpDRFhVvNNjFmZXH86ZQjrOz9t/nNZDBXqnzqJuioJbSQ==",
- "requires": {
- "object-assign": "4.1.1",
- "structured-source": "3.0.2"
- }
- },
- "through": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
- },
- "through2": {
- "version": "0.6.5",
- "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
- "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
- "requires": {
- "readable-stream": "1.0.34",
- "xtend": "4.0.1"
- },
- "dependencies": {
- "isarray": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
- },
- "readable-stream": {
- "version": "1.0.34",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
- "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
- "requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "0.0.1",
- "string_decoder": "0.10.31"
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
- }
- }
- },
- "timed-out": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz",
- "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc="
- },
- "timers-ext": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.5.tgz",
- "integrity": "sha512-tsEStd7kmACHENhsUPaxb8Jf8/+GZZxyNFQbZD07HQOyooOa6At1rQqjffgvg7n+dxscQa9cjjMdWhJtsP2sxg==",
- "requires": {
- "es5-ext": "0.10.44",
- "next-tick": "1.0.0"
- }
- },
- "to-buffer": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
- "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg=="
- },
- "to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4="
- },
- "to-vfile": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-1.0.0.tgz",
- "integrity": "sha1-iN7+zUOtsu9ZhiXw49WffzQpQbo=",
- "requires": {
- "vfile": "1.4.0"
- }
- },
- "tokenize-english": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/tokenize-english/-/tokenize-english-1.0.3.tgz",
- "integrity": "sha1-tBxrp13HcCEXgEgT9cCmDu1gc6I=",
- "requires": {
- "lodash": "3.10.1"
- },
- "dependencies": {
- "lodash": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
- "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y="
- }
- }
- },
- "tokenize-htmltext": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/tokenize-htmltext/-/tokenize-htmltext-1.0.0.tgz",
- "integrity": "sha1-btlWYUqPMhV2eBkNUfwAo4aaD/g=",
- "requires": {
- "htmlparser2": "3.8.3"
- }
- },
- "tokenize-text": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/tokenize-text/-/tokenize-text-1.1.3.tgz",
- "integrity": "sha1-iwWdatojYYQC8TPbOAjjdSXNXns=",
- "requires": {
- "lodash": "3.10.1"
- },
- "dependencies": {
- "lodash": {
- "version": "3.10.1",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
- "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y="
- }
- }
- },
- "too-wordy": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/too-wordy/-/too-wordy-0.1.4.tgz",
- "integrity": "sha1-jnsgp7ek2Pw3WfTgDEkpmT0bEvA="
- },
- "tough-cookie": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
- "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
- "requires": {
- "punycode": "1.4.1"
- }
- },
- "traverse": {
- "version": "0.6.6",
- "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz",
- "integrity": "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc="
- },
- "trim": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz",
- "integrity": "sha1-WFhUf2spB1fulczMZm+1AITEYN0="
- },
- "trim-newlines": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
- "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM="
- },
- "trim-trailing-lines": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.1.tgz",
- "integrity": "sha512-bWLv9BbWbbd7mlqqs2oQYnLD/U/ZqeJeJwbO0FG2zA1aTq+HTvxfHNKFa/HGCVyJpDiioUYaBhfiT6rgk+l4mg=="
- },
- "trough": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.2.tgz",
- "integrity": "sha512-FHkoUZvG6Egrv9XZAyYGKEyb1JMsFphgPjoczkZC2y6W93U1jswcVURB8MUvtsahEPEVACyxD47JAL63vF4JsQ=="
- },
- "try-resolve": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/try-resolve/-/try-resolve-1.0.1.tgz",
- "integrity": "sha1-z95vq9ctY+V5fPqrhzq76OcA6RI="
- },
- "tslint": {
- "version": "3.15.1",
- "resolved": "https://registry.npmjs.org/tslint/-/tslint-3.15.1.tgz",
- "integrity": "sha1-2hZcqT2P3CwIa1EWXuG6y0jJjqU=",
- "requires": {
- "colors": "1.3.0",
- "diff": "2.2.3",
- "findup-sync": "0.3.0",
- "glob": "7.1.2",
- "optimist": "0.6.1",
- "resolve": "1.7.1",
- "underscore.string": "3.3.4"
- },
- "dependencies": {
- "colors": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/colors/-/colors-1.3.0.tgz",
- "integrity": "sha512-EDpX3a7wHMWFA7PUHWPHNWqOxIIRSJetuwl0AS5Oi/5FMV8kWm69RTlgm00GKjBO1xFHMtBbL49yRtMMdticBw=="
- },
- "resolve": {
- "version": "1.7.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz",
- "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
- "requires": {
- "path-parse": "1.0.5"
- }
- }
- }
- },
- "tunnel-agent": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
- "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us="
- },
- "tweetnacl": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
- "optional": true
- },
- "txt-ast-traverse": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/txt-ast-traverse/-/txt-ast-traverse-1.2.1.tgz",
- "integrity": "sha1-WOP+Q92121yotRFClDsNG5cN70E="
- },
- "txt-to-ast": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/txt-to-ast/-/txt-to-ast-1.1.0.tgz",
- "integrity": "sha1-65GnSE/0peE29tJM5aR6hszBEAg="
- },
- "type-check": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
- "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
- "requires": {
- "prelude-ls": "1.1.2"
- }
- },
- "type-is": {
- "version": "1.6.16",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
- "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
- "requires": {
- "media-typer": "0.3.0",
- "mime-types": "2.1.18"
- }
- },
- "typedarray": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
- },
- "typescript": {
- "version": "2.8.4",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.8.4.tgz",
- "integrity": "sha512-IIU5cN1mR5J3z9jjdESJbnxikTrEz3lzAw/D0Tf45jHpBp55nY31UkUvmVHoffCfKHTqJs3fCLPDxknQTTFegQ=="
- },
- "underscore.string": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.4.tgz",
- "integrity": "sha1-LCo/n4PmR2L9xF5s6sZRQoZCE9s=",
- "requires": {
- "sprintf-js": "1.0.3",
- "util-deprecate": "1.0.2"
- }
- },
- "unherit": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.1.tgz",
- "integrity": "sha512-+XZuV691Cn4zHsK0vkKYwBEwB74T3IZIcxrgn2E4rKwTfFyI1zCh7X7grwh9Re08fdPlarIdyWgI8aVB3F5A5g==",
- "requires": {
- "inherits": "2.0.3",
- "xtend": "4.0.1"
- }
- },
- "unified": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/unified/-/unified-4.2.1.tgz",
- "integrity": "sha1-dv9Dqo2kMPbn5KVchOusKtLPzS4=",
- "requires": {
- "bail": "1.0.3",
- "extend": "3.0.1",
- "has": "1.0.1",
- "once": "1.4.0",
- "trough": "1.0.2",
- "vfile": "1.4.0"
- }
- },
- "unified-args": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/unified-args/-/unified-args-2.1.0.tgz",
- "integrity": "sha1-oSI1RO+I4M7at9cX1qeTRADe1gc=",
- "requires": {
- "camelcase": "3.0.0",
- "chalk": "1.1.3",
- "chokidar": "1.7.0",
- "minimist": "1.2.0",
- "text-table": "0.2.0",
- "unified-engine": "2.1.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
- "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo="
- }
- }
- },
- "unified-diff": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/unified-diff/-/unified-diff-1.0.2.tgz",
- "integrity": "sha1-kgsz2pq64IfdREkENy58P702fYU=",
- "requires": {
- "git-diff-tree": "1.0.0",
- "vfile-find-up": "2.0.2"
- },
- "dependencies": {
- "to-vfile": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-2.2.0.tgz",
- "integrity": "sha512-saGC8/lWdGrEoBMLUtgzhRHWAkQMP8gdldA3MOAUhBwTGEb1RSMVcflHGSx4ZJsdEZ9o1qDBCPp47LCPrbZWow==",
- "requires": {
- "is-buffer": "1.1.6",
- "vfile": "2.3.0",
- "x-is-function": "1.0.4"
- }
- },
- "vfile": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-2.3.0.tgz",
- "integrity": "sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==",
- "requires": {
- "is-buffer": "1.1.6",
- "replace-ext": "1.0.0",
- "unist-util-stringify-position": "1.1.2",
- "vfile-message": "1.0.1"
- }
- },
- "vfile-find-up": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/vfile-find-up/-/vfile-find-up-2.0.2.tgz",
- "integrity": "sha512-kYGgsSNpYjPxcEoud1aHNFfchsV0Z6Pyc8M5LfD1wX/tV0/bn32MKHDfv4fqV9DBLVuw2YSGOs31nRY/42DfUA==",
- "requires": {
- "to-vfile": "2.2.0"
- }
- }
- }
- },
- "unified-engine": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/unified-engine/-/unified-engine-2.1.0.tgz",
- "integrity": "sha1-IVqzMrMqbCE3+8ocEsK8vBRn0WQ=",
- "requires": {
- "concat-stream": "1.5.2",
- "debug": "2.6.9",
- "fn-name": "2.0.1",
- "glob": "7.1.2",
- "globby": "6.1.0",
- "is-hidden": "1.1.1",
- "js-yaml": "3.11.0",
- "load-plugin": "2.2.2",
- "minimatch": "3.0.4",
- "parse-json": "2.2.0",
- "to-vfile": "2.2.0",
- "trough": "1.0.2",
- "user-home": "2.0.0",
- "vfile-find-down": "2.0.3",
- "vfile-find-up": "2.0.2",
- "vfile-reporter": "3.1.0",
- "vfile-statistics": "1.1.1"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "esprima": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
- "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw=="
- },
- "globby": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
- "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
- "requires": {
- "array-union": "1.0.2",
- "glob": "7.1.2",
- "object-assign": "4.1.1",
- "pify": "2.3.0",
- "pinkie-promise": "2.0.1"
- }
- },
- "has-flag": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
- "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE="
- },
- "js-yaml": {
- "version": "3.11.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.11.0.tgz",
- "integrity": "sha512-saJstZWv7oNeOyBh3+Dx1qWzhW0+e6/8eDzo7p5rDFqxntSztloLtuKu+Ejhtq82jsilwOIZYsCz+lIjthg1Hw==",
- "requires": {
- "argparse": "1.0.10",
- "esprima": "4.0.0"
- }
- },
- "supports-color": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
- "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
- "requires": {
- "has-flag": "2.0.0"
- }
- },
- "to-vfile": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/to-vfile/-/to-vfile-2.2.0.tgz",
- "integrity": "sha512-saGC8/lWdGrEoBMLUtgzhRHWAkQMP8gdldA3MOAUhBwTGEb1RSMVcflHGSx4ZJsdEZ9o1qDBCPp47LCPrbZWow==",
- "requires": {
- "is-buffer": "1.1.6",
- "vfile": "2.3.0",
- "x-is-function": "1.0.4"
- }
- },
- "vfile": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-2.3.0.tgz",
- "integrity": "sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w==",
- "requires": {
- "is-buffer": "1.1.6",
- "replace-ext": "1.0.0",
- "unist-util-stringify-position": "1.1.2",
- "vfile-message": "1.0.1"
- }
- },
- "vfile-find-down": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/vfile-find-down/-/vfile-find-down-2.0.3.tgz",
- "integrity": "sha512-makj7zpPxA2zhDOCIlftLj3WGWDQazOhPwJJSSK4ad0w4dHmLwTrIR4Skzk+KRdVS02T6mxDK4kEYDoaHuxtQg==",
- "requires": {
- "to-vfile": "2.2.0"
- }
- },
- "vfile-find-up": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/vfile-find-up/-/vfile-find-up-2.0.2.tgz",
- "integrity": "sha512-kYGgsSNpYjPxcEoud1aHNFfchsV0Z6Pyc8M5LfD1wX/tV0/bn32MKHDfv4fqV9DBLVuw2YSGOs31nRY/42DfUA==",
- "requires": {
- "to-vfile": "2.2.0"
- }
- },
- "vfile-reporter": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-3.1.0.tgz",
- "integrity": "sha1-qbOYxebcvIqaCObPQl8JLoajcAA=",
- "requires": {
- "repeat-string": "1.6.1",
- "string-width": "1.0.2",
- "supports-color": "4.5.0",
- "unist-util-stringify-position": "1.1.2",
- "vfile-statistics": "1.1.1"
- }
- }
- }
- },
- "unified-message-control": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/unified-message-control/-/unified-message-control-1.0.4.tgz",
- "integrity": "sha512-e1dEtN4Z/TvLn/qHm+xeZpzqhJTtfZusFErk336kkZVpqrJYiV9ptxq+SbRPFMlN0OkjDYHmVJ929KYjsMTo3g==",
- "requires": {
- "trim": "0.0.1",
- "unist-util-visit": "1.3.1",
- "vfile-location": "2.0.3"
- }
- },
- "uniq": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
- "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8="
- },
- "unique-concat": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/unique-concat/-/unique-concat-0.2.2.tgz",
- "integrity": "sha1-khD5vcqsxeHjkpSQ18AZ35bxhxI="
- },
- "unique-string": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
- "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
- "requires": {
- "crypto-random-string": "1.0.0"
- }
- },
- "unist-util-filter": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/unist-util-filter/-/unist-util-filter-0.2.1.tgz",
- "integrity": "sha1-4veHaCiQOmqTCONiBR+GsU81tUU=",
- "requires": {
- "flatmap": "0.0.3",
- "unist-util-is": "1.0.0"
- },
- "dependencies": {
- "unist-util-is": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-1.0.0.tgz",
- "integrity": "sha1-THs8XA9qqWNkAFb+Sve1/P27jvA="
- }
- }
- },
- "unist-util-generated": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.2.tgz",
- "integrity": "sha512-1HcwiEO62dr0XWGT+abVK4f0aAm8Ik8N08c5nAYVmuSxfvpA9rCcNyX/le8xXj1pJK5nBrGlZefeWB6bN8Pstw=="
- },
- "unist-util-is": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-2.1.2.tgz",
- "integrity": "sha512-YkXBK/H9raAmG7KXck+UUpnKiNmUdB+aBGrknfQ4EreE1banuzrKABx3jP6Z5Z3fMSPMQQmeXBlKpCbMwBkxVw=="
- },
- "unist-util-map": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/unist-util-map/-/unist-util-map-1.0.4.tgz",
- "integrity": "sha512-Qv68pQz05hQbjPI+TubZQI5XII5DScRVWaKNc6+qfmHaFGxaGUbkV8i++mM2nk7XgwXE+vei99d/Q2d1tMA3EQ==",
- "requires": {
- "object-assign": "4.1.1"
- }
- },
- "unist-util-modify-children": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-1.1.2.tgz",
- "integrity": "sha512-GRi04yhng1WqBf5RBzPkOtWAadcZS2gvuOgNn/cyJBYNxtTuyYqTKN0eg4rC1YJwGnzrqfRB3dSKm8cNCjNirg==",
- "requires": {
- "array-iterate": "1.1.2"
- }
- },
- "unist-util-position": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.0.1.tgz",
- "integrity": "sha512-05QfJDPI7PE1BIUtAxeSV+cDx21xP7+tUZgSval5CA7tr0pHBwybF7OnEa1dOFqg6BfYH/qiMUnWwWj+Frhlww=="
- },
- "unist-util-remove-position": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.2.tgz",
- "integrity": "sha512-XxoNOBvq1WXRKXxgnSYbtCF76TJrRoe5++pD4cCBsssSiWSnPEktyFrFLE8LTk3JW5mt9hB0Sk5zn4x/JeWY7Q==",
- "requires": {
- "unist-util-visit": "1.3.1"
- }
- },
- "unist-util-select": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/unist-util-select/-/unist-util-select-1.5.0.tgz",
- "integrity": "sha1-qTwr6MD2U4J4A7gTMa3sKqJM2TM=",
- "requires": {
- "css-selector-parser": "1.3.0",
- "debug": "2.6.9",
- "nth-check": "1.0.1"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- }
- }
- },
- "unist-util-stringify-position": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz",
- "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ=="
- },
- "unist-util-visit": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.3.1.tgz",
- "integrity": "sha512-0fdB9EQJU0tho5tK0VzOJzAQpPv2LyLZ030b10GxuzAWEfvd54mpY7BMjQ1L69k2YNvL+SvxRzH0yUIehOO8aA==",
- "requires": {
- "unist-util-is": "2.1.2"
- }
- },
- "unist-util-visit-children": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-1.1.2.tgz",
- "integrity": "sha512-q4t6aprUcSQ2/+xlswuh2wUKwUUuMmDjSkfwkMjeVwCXc8NqX8g0FSmNf68CznCmbkrsOPDUR0wj14bCFXXqbA=="
- },
- "universalify": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz",
- "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc="
- },
- "unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
- },
- "untildify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/untildify/-/untildify-2.1.0.tgz",
- "integrity": "sha1-F+soB5h/dpUunASF/DEdBqgmouA=",
- "requires": {
- "os-homedir": "1.0.2"
- }
- },
- "unzip-response": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz",
- "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4="
- },
- "update-notifier": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-1.0.3.tgz",
- "integrity": "sha1-j5LFFUgr1oMbfJMBPnD4dVLHz1o=",
- "requires": {
- "boxen": "0.6.0",
- "chalk": "1.1.3",
- "configstore": "2.1.0",
- "is-npm": "1.0.0",
- "latest-version": "2.0.0",
- "lazy-req": "1.1.0",
- "semver-diff": "2.1.0",
- "xdg-basedir": "2.0.0"
- }
- },
- "uri-js": {
- "version": "4.2.2",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
- "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
- "requires": {
- "punycode": "2.1.1"
- },
- "dependencies": {
- "punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
- }
- }
- },
- "uritemplate": {
- "version": "0.3.4",
- "resolved": "https://registry.npmjs.org/uritemplate/-/uritemplate-0.3.4.tgz",
- "integrity": "sha1-BdCoU/+8iw9Jqj1NKtd3sNHuBww="
- },
- "url-parse-lax": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
- "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=",
- "requires": {
- "prepend-http": "1.0.4"
- }
- },
- "urljoin": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/urljoin/-/urljoin-0.1.5.tgz",
- "integrity": "sha1-sl0sYRLFWsnVAJakmg8ft/T1OSE=",
- "requires": {
- "extend": "2.0.1"
- },
- "dependencies": {
- "extend": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend/-/extend-2.0.1.tgz",
- "integrity": "sha1-HugBBonnOV/5RIJByYZSvHWagmA="
- }
- }
- },
- "user-home": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz",
- "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=",
- "requires": {
- "os-homedir": "1.0.2"
- }
- },
- "util": {
- "version": "0.10.3",
- "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
- "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
- "requires": {
- "inherits": "2.0.1"
- },
- "dependencies": {
- "inherits": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
- "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE="
- }
- }
- },
- "util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
- },
- "utils-merge": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
- "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
- },
- "uuid": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz",
- "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho="
- },
- "validate-npm-package-license": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz",
- "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==",
- "requires": {
- "spdx-correct": "3.0.0",
- "spdx-expression-parse": "3.0.0"
- }
- },
- "validator": {
- "version": "10.2.0",
- "resolved": "https://registry.npmjs.org/validator/-/validator-10.2.0.tgz",
- "integrity": "sha512-gz/uknWtNfZTj1BLUzYHDxOoiQ7A4wZ6xPuuE6RpxswR4cNyT4I5kN9jmU0AQr7IBEap9vfYChI2TpssTN6Itg=="
- },
- "vary": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
- "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
- },
- "verror": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
- "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
- "requires": {
- "assert-plus": "1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "1.3.0"
- },
- "dependencies": {
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
- }
- }
- },
- "vfile": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/vfile/-/vfile-1.4.0.tgz",
- "integrity": "sha1-wP1vpIT43r23cfaMMe112I2pf+c="
- },
- "vfile-find-down": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/vfile-find-down/-/vfile-find-down-1.0.0.tgz",
- "integrity": "sha1-hKTWbQNRP2FAqE4Hdu8ISNTwrZU=",
- "requires": {
- "to-vfile": "1.0.0"
- }
- },
- "vfile-find-up": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/vfile-find-up/-/vfile-find-up-1.0.0.tgz",
- "integrity": "sha1-VgTab+RTs0NQY3mE61/kkJ4oA5A=",
- "requires": {
- "to-vfile": "1.0.0"
- }
- },
- "vfile-location": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-2.0.3.tgz",
- "integrity": "sha512-zM5/l4lfw1CBoPx3Jimxoc5RNDAHHpk6AM6LM0pTIkm5SUSsx8ZekZ0PVdf0WEZ7kjlhSt7ZlqbRL6Cd6dBs6A=="
- },
- "vfile-message": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-1.0.1.tgz",
- "integrity": "sha512-vSGCkhNvJzO6VcWC6AlJW4NtYOVtS+RgCaqFIYUjoGIlHnFL+i0LbtYvonDWOMcB97uTPT4PRsyYY7REWC9vug==",
- "requires": {
- "unist-util-stringify-position": "1.1.2"
- }
- },
- "vfile-reporter": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-1.5.0.tgz",
- "integrity": "sha1-IacAm/5V4k34/0Mqpb9vbvp05Bg=",
- "requires": {
- "chalk": "1.1.3",
- "log-symbols": "1.0.2",
- "plur": "2.1.2",
- "repeat-string": "1.6.1",
- "string-width": "1.0.2",
- "text-table": "0.2.0",
- "vfile-sort": "1.0.0"
- }
- },
- "vfile-sort": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/vfile-sort/-/vfile-sort-1.0.0.tgz",
- "integrity": "sha1-F+5JG6Q+iVG7IpE/z/MqfcTSNNQ="
- },
- "vfile-statistics": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/vfile-statistics/-/vfile-statistics-1.1.1.tgz",
- "integrity": "sha512-dxUM6IYvGChHuwMT3dseyU5BHprNRXzAV0OHx1A769lVGsTiT50kU7BbpRFV+IE6oWmU+PwHdsTKfXhnDIRIgQ=="
- },
- "void-elements": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz",
- "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w="
- },
- "vow": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/vow/-/vow-0.4.4.tgz",
- "integrity": "sha1-yf5GCRKdf1qmIVCOvmS1HJW8e5g="
- },
- "vow-fs": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/vow-fs/-/vow-fs-0.3.6.tgz",
- "integrity": "sha1-LUxZviLivyYY3fWXq0uqkjvnIA0=",
- "requires": {
- "glob": "7.1.2",
- "uuid": "2.0.3",
- "vow": "0.4.17",
- "vow-queue": "0.4.3"
- },
- "dependencies": {
- "vow": {
- "version": "0.4.17",
- "resolved": "https://registry.npmjs.org/vow/-/vow-0.4.17.tgz",
- "integrity": "sha512-A3/9bWFqf6gT0jLR4/+bT+IPTe1mQf+tdsW6+WI5geP9smAp8Kbbu4R6QQCDKZN/8TSCqTlXVQm12QliB4rHfg=="
- }
- }
- },
- "vow-queue": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/vow-queue/-/vow-queue-0.4.3.tgz",
- "integrity": "sha512-/poAKDTFL3zYbeQg7cl4BGcfP4sGgXKrHnRFSKj97dteUFu8oyXMwIcdwu8NSx/RmPGIuYx1Bik/y5vU4H/VKw==",
- "requires": {
- "vow": "0.4.17"
- },
- "dependencies": {
- "vow": {
- "version": "0.4.17",
- "resolved": "https://registry.npmjs.org/vow/-/vow-0.4.17.tgz",
- "integrity": "sha512-A3/9bWFqf6gT0jLR4/+bT+IPTe1mQf+tdsW6+WI5geP9smAp8Kbbu4R6QQCDKZN/8TSCqTlXVQm12QliB4rHfg=="
- }
- }
- },
- "vscode-textmate": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-1.2.0.tgz",
- "integrity": "sha1-hdBc42jwqQFWm+CPNMErrbAc0ts=",
- "requires": {
- "oniguruma": "6.2.1",
- "sax": "1.2.4"
- }
- },
- "ware": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/ware/-/ware-1.3.0.tgz",
- "integrity": "sha1-0bFPOdLiy0q4xAmPdW/ksWTkc9Q=",
- "requires": {
- "wrap-fn": "0.1.5"
- }
- },
- "wcwidth": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
- "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
- "requires": {
- "defaults": "1.0.3"
- }
- },
- "weasel-words": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/weasel-words/-/weasel-words-0.1.1.tgz",
- "integrity": "sha1-cTeUZYXHP+RIggE4U70ADF1oek4="
- },
- "whatwg-fetch": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz",
- "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng=="
- },
- "which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "requires": {
- "isexe": "2.0.0"
- }
- },
- "which-module": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz",
- "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8="
- },
- "widest-line": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz",
- "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=",
- "requires": {
- "string-width": "1.0.2"
- }
- },
- "window-size": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz",
- "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU="
- },
- "winston": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.2.tgz",
- "integrity": "sha512-4S/Ad4ZfSNl8OccCLxnJmNISWcm2joa6Q0YGDxlxMzH0fgSwWsjMt+SmlNwCqdpaPg3ev1HKkMBsIiXeSUwpbA==",
- "requires": {
- "async": "1.0.0",
- "colors": "1.0.3",
- "cycle": "1.0.3",
- "eyes": "0.1.8",
- "isstream": "0.1.2",
- "stack-trace": "0.0.10"
- },
- "dependencies": {
- "async": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz",
- "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k="
- }
- }
- },
- "wordwrap": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
- "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc="
- },
- "wrap-ansi": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
- "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
- "requires": {
- "string-width": "1.0.2",
- "strip-ansi": "3.0.1"
- }
- },
- "wrap-fn": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/wrap-fn/-/wrap-fn-0.1.5.tgz",
- "integrity": "sha1-8htuQQFv9KfjFyDbxjoJAWvfmEU=",
- "requires": {
- "co": "3.1.0"
- },
- "dependencies": {
- "co": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/co/-/co-3.1.0.tgz",
- "integrity": "sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g="
- }
- }
- },
- "wrapped": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/wrapped/-/wrapped-1.0.1.tgz",
- "integrity": "sha1-x4PZ2Aeyc+mwHoUWgKk4yHyQckI=",
- "requires": {
- "co": "3.1.0",
- "sliced": "1.0.1"
- },
- "dependencies": {
- "co": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/co/-/co-3.1.0.tgz",
- "integrity": "sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g="
- }
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
- },
- "write": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz",
- "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=",
- "requires": {
- "mkdirp": "0.5.1"
- }
- },
- "write-file-atomic": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz",
- "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=",
- "requires": {
- "graceful-fs": "4.1.11",
- "imurmurhash": "0.1.4",
- "slide": "1.1.6"
- }
- },
- "write-file-stdout": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/write-file-stdout/-/write-file-stdout-0.0.2.tgz",
- "integrity": "sha1-wlLXx8WxtAKJdjDjRTx7/mkNnKE="
- },
- "write-good": {
- "version": "0.9.1",
- "resolved": "https://registry.npmjs.org/write-good/-/write-good-0.9.1.tgz",
- "integrity": "sha1-ouo0hpv6Xv/H+DJUZ+JXFP5QEpo=",
- "requires": {
- "adverb-where": "0.0.9",
- "no-cliches": "0.1.0",
- "passive-voice": "0.0.1",
- "too-wordy": "0.1.4",
- "weasel-words": "0.1.1"
- },
- "dependencies": {
- "passive-voice": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/passive-voice/-/passive-voice-0.0.1.tgz",
- "integrity": "sha1-ap4fvBynS1esNfD8+Ku0UL/KKsg="
- }
- }
- },
- "x-is-function": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/x-is-function/-/x-is-function-1.0.4.tgz",
- "integrity": "sha1-XSlNw9Joy90GJYDgxd93o5HR+h4="
- },
- "x-is-string": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz",
- "integrity": "sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI="
- },
- "xdg-basedir": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz",
- "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=",
- "requires": {
- "os-homedir": "1.0.2"
- }
- },
- "xml": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.0.tgz",
- "integrity": "sha1-3j7pEkd74vJQtg9hLzSoxNphbv4="
- },
- "xml-escape": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/xml-escape/-/xml-escape-1.1.0.tgz",
- "integrity": "sha1-OQTBQ/qOs6ADDsZG0pAqLxtwbEQ="
- },
- "xtend": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
- "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
- },
- "y18n": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
- "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE="
- },
- "yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
- },
- "yargs": {
- "version": "4.8.1",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz",
- "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=",
- "requires": {
- "cliui": "3.2.0",
- "decamelize": "1.2.0",
- "get-caller-file": "1.0.2",
- "lodash.assign": "4.2.0",
- "os-locale": "1.4.0",
- "read-pkg-up": "1.0.1",
- "require-directory": "2.1.1",
- "require-main-filename": "1.0.1",
- "set-blocking": "2.0.0",
- "string-width": "1.0.2",
- "which-module": "1.0.0",
- "window-size": "0.2.0",
- "y18n": "3.2.1",
- "yargs-parser": "2.4.1"
- }
- },
- "yargs-parser": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz",
- "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=",
- "requires": {
- "camelcase": "3.0.0",
- "lodash.assign": "4.2.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz",
- "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo="
- }
- }
- },
- "z-schema": {
- "version": "3.22.0",
- "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-3.22.0.tgz",
- "integrity": "sha512-Oq82unxX2PTcJ031gFGcksDHE5PNBs5CbcQ1tbre0Sl4Mu5habZTVmEAkuZS4cK//VgIdNg9UG9PMgMlN6KmiA==",
- "requires": {
- "commander": "2.15.1",
- "lodash.get": "4.4.2",
- "lodash.isequal": "4.5.0",
- "validator": "10.2.0"
- }
- }
- }
-}
diff --git a/package.json b/package.json
index 00f1517754..81ffb7fccd 100644
--- a/package.json
+++ b/package.json
@@ -33,7 +33,7 @@
"stylelint": "~7",
"stylint": "~1.5.9",
"textlint": "~7.3.0",
- "textlint-plugin-asciidoc-loose": "~1.0.1",
+ "textlint-plugin-asciidoctor": "~1.0.3",
"textlint-plugin-html": "~0.1.5",
"textlint-plugin-review": "~0.3.3",
"textlint-plugin-rst": "~0.1.1",
diff --git a/requirements.txt b/requirements.txt
index 38b3c91f6f..0fc199a511 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,4 +1,4 @@
-# NOTE: This file is parsed by .ci/generate_bear_requirements.py
+# NOTE: This file is parsed by .ci/generate_bear_metadata.py
# Edit coala_dependency in coala-build.yaml
git+https://github.com/coala/coala#egg=coala
# Dependencies inherited from coala
diff --git a/setup.cfg b/setup.cfg
index 1c7ee45201..feaf61a6fb 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -17,9 +17,7 @@ addopts =
-p no:logging
--color=yes
--doctest-glob=*.rst
- --doctest-modules
--doctest-ignore-import-error
- --cov
--instafail
--profile
--reorder 'requirements.txt' 'test-requirements.txt' '*'
@@ -34,11 +32,11 @@ env =
python_paths = .ci/
-reqsfilenamepatterns =
- requirements.txt
- test-requirements.txt
-
-reqsignorevcs = True
+#reqsfilenamepatterns =
+# requirements.txt
+# test-requirements.txt
+#
+#reqsignorevcs = True
timeout = 35
diff --git a/test-requirements.txt b/test-requirements.txt
index 09914b7d70..13ae6d0d9e 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -19,13 +19,15 @@ pytest-instafail~=0.3.0
pytest-mock~=1.1
pytest-profiling~=1.3.0
pytest-reorder~=0.1.0
-git+https://github.com/jayvdb/pytest-reqs@coala#egg=pytest-reqs
+#git+https://github.com/jayvdb/pytest-reqs@coala#egg=pytest-reqs
pytest-timeout~=1.3.0
pytest-travis-fold~=1.3.0
requests-mock~=1.2
ipdb~=0.11
pip<10
wheel~=0.29
-ruamel.yaml~=0.15.42
+ruamel.yaml>=0.15.42,<=0.15.94
pytest-pythonpath~=0.7.0
twine~=1.7.4
+pytest-error-for-skips
+git+https://github.com/krkd/pytest-cov-threshold#egg=pytest-cov-threshold ; python_version > '3.4'
diff --git a/tests/natural_language/SpellCheckBearTest.py b/tests/natural_language/SpellCheckBearTest.py
index c4a1547df3..d5c3a4b14b 100644
--- a/tests/natural_language/SpellCheckBearTest.py
+++ b/tests/natural_language/SpellCheckBearTest.py
@@ -1,6 +1,3 @@
-import platform
-import unittest
-
from bears.natural_language.SpellCheckBear import SpellCheckBear
from coalib.testing.LocalBearTestHelper import verify_local_bear
@@ -9,9 +6,6 @@
bad_file = 'tihs si surly som incoreclt speling.'
-SpellCheckLintBearTest = unittest.skipIf(
- platform.system() == 'Windows',
- "SpellCheckBear doesn't work on windows")(
- verify_local_bear(SpellCheckBear,
- valid_files=(good_file,),
- invalid_files=(bad_file,)))
+SpellCheckLintBearTest = verify_local_bear(SpellCheckBear,
+ valid_files=(good_file,),
+ invalid_files=(bad_file,))
diff --git a/tests/vcs/git/GitCommitBearTest.py b/tests/vcs/git/GitCommitBearTest.py
index 19dca7e9de..a83b264024 100644
--- a/tests/vcs/git/GitCommitBearTest.py
+++ b/tests/vcs/git/GitCommitBearTest.py
@@ -80,6 +80,18 @@ def tearDown(self):
onerror = None
shutil.rmtree(self.gitdir, onerror=onerror)
+ def test_check_prerequisites(self):
+ _shutil_which = shutil.which
+ try:
+ shutil.which = lambda *args, **kwargs: None
+ self.assertEqual(GitCommitBear.check_prerequisites(),
+ 'git is not installed.')
+
+ shutil.which = lambda *args, **kwargs: 'path/to/git'
+ self.assertTrue(GitCommitBear.check_prerequisites())
+ finally:
+ shutil.which = _shutil_which
+
def test_git_failure(self):
# In this case use a reference to a non-existing commit, so just try
# to log all commits on a newly created repository.
diff --git a/tox.ini b/tox.ini
new file mode 100644
index 0000000000..6d11d563b4
--- /dev/null
+++ b/tox.ini
@@ -0,0 +1,135 @@
+[tox]
+envlist = py{34,35,36,37}-{all,pip,clang,npm,gem,go,perl,php,cabal,java,java7,java8,scala,elm,r,dart,julia,lua,infer,opam,apt,adhoc,disabled,win,swift,mono}-{list,check,collectonly,skip,noskip}-codecov
+minversion = 3.4
+
+[travis:env]
+TRAVIS =
+ true: codecov
+TRAVIS_LANGUAGE =
+ python: pip-noskip
+ node_js: py36-npm-noskip
+ ruby: py36-gem-noskip
+ haskell: py36-cabal-noskip
+ go: py36-go-noskip
+ perl: py36-perl-noskip
+ php: py36-php-noskip
+ scala: py36-scala-noskip
+ elm: py36-elm-noskip
+ r: py36-r-noskip
+ dart: py36-dart-noskip
+ julia: py36-julia-noskip
+ objective_c: py36-swift-noskip
+ swift: py36-swift-noskip
+ objectivec: py36-swift-noskip
+ objective-c: py36-swift-noskip
+ csharp: py36-mono-noskip
+ minimal,generic: py36-adhoc-noskip
+TRAVIS_JDK_VERSION =
+ oraclejdk11: py36-java-skip
+ oraclejdk9: py36-java-skip
+ oraclejdk8: py36-java8-noskip
+ openjdk11: py36-java-skip
+ openjdk10: py36-java-skip
+ openjdk9: py36-java-skip
+ openjdk8: py36-java8-noskip
+ openjdk7: py36-java7-noskip
+# apt_get is the only group allowed to skip
+BEARS =
+ apt_get: py36-apt-skip
+ lua: py36-lua-noskip
+ infer: py36-infer-noskip
+ opam: py36-opam-noskip
+ adhoc: py36-adhoc-noskip
+ clang: py36-clang-noskip
+ disabled: py36-disabled-noskip
+
+# pyyaml literally here to support get_tests.py
+[testenv]
+passenv =
+ HOME
+ PATH
+ CI CI_*
+ TRAVIS TRAVIS_*
+ APPVEYOR APPVEYOR_*
+ TOX_*
+ PIP_*
+ VIRTUALENV_*
+ LOCALAPPDATA
+ GEM_HOME
+ GEM_PATH
+ JULIA_PROJECT
+ GOROOT
+ GOPATH
+ BEARS
+ BEAR_LIST
+ DISABLE_BEARS
+ R_LIBS_USER
+ R_LIBS_SITE
+ _R_CHECK_CRAN_INCOMING_
+ NOT_CRAN
+ R_PROFILE
+pip_version = 9.0.1
+alwayscopy = true
+skipsdist = true
+skip_install = true
+list_dependencies_command = python -m pip freeze --local
+whitelist_externals =
+ pytest
+ bash
+ rm
+deps =
+ # Doing this inside tox failed once
+ # https://travis-ci.org/jayvdb/coala-bears/jobs/547197301
+ # hg+https://bitbucket.org/jayvdb/sarge@win-reg-lookup#egg=sarge
+ git+https://github.com/coala/coala#egg=coala
+ pip: -rbear-requirements.txt
+ # These two are needed for some non-pip bears
+ !pip: aenum
+ !pip: PyYAML
+ npm: docutils-ast-writer~=0.1.2
+ apt,clang,mono,adhoc: libclang-py3~=3.4.0
+ clang: munkres3~=1.0
+ java7,java8: language-check~=1.0
+ java7,java8: guess-language-spirit~=0.5.2
+ -rtest-requirements.txt
+ # pytest-cov-threshold is incompatible with py34
+ !py34: git+https://github.com/krkd/pytest-cov-threshold
+ noskip: pytest-error-for-skips
+setenv =
+ all,pip: PIPBEARS=`python .ci/get_tests.py noreqs pip`
+ all,clang: PIPBEARS=`python .ci/get_tests.py clang`
+ all,npm: NPMBEARS=`python .ci/get_tests.py npm`
+ all,elm: NPMBEARS=`python .ci/get_tests.py elm`
+ all,gem: GEMBEARS=`python .ci/get_tests.py gem`
+ all,go: GOBEARS=`python .ci/get_tests.py go`
+ all,perl: PERLBEARS=`python .ci/get_tests.py perl`
+ all,php: PHPBEARS=`python .ci/get_tests.py php`
+ all,cabal: CABALBEARS=`python .ci/get_tests.py cabal`
+ all,java8: JAVABEARS=`python .ci/get_tests.py java`
+ all,java7: JAVABEARS=`python .ci/get_tests.py java`
+ all,java: JAVABEARS=`python .ci/get_tests.py java`
+ all,scala: JAVABEARS=`python .ci/get_tests.py scala`
+ all,swift: JAVABEARS=`python .ci/get_tests.py swift`
+ all,mono: MONOBEARS=`python .ci/get_tests.py mono`
+ all,r: RBEARS=`python .ci/get_tests.py r`
+ all,dart: DARTBEARS=`python .ci/get_tests.py dart`
+ all,julia: JULIABEARS=`python .ci/get_tests.py julia`
+ all,lua: LUABEARS=`python .ci/get_tests.py lua`
+ all,opam,infer: OPAMBEARS=`python .ci/get_tests.py opam`
+ all,apt: APTBEARS=`python .ci/get_tests.py apt_get`
+ adhoc: ADHOCBEARS=`python .ci/get_tests.py {env:BEAR_LIST}`
+ disabled: DISABLEDBEARS=`python .ci/get_tests.py --disabled {env:BEAR_LIST}`
+ SELECTED={env:PIPBEARS:} {env:NPMBEARS:} {env:GEMBEARS:} {env:GOBEARS:} {env:PERLBEARS:} {env:PHPBEARS:} {env:CABALBEARS:} {env:JAVABEARS:} {env:MONOBEARS:} {env:RBEARS:} {env:DARTBEARS:} {env:JULIABEARS:} {env:LUABEARS:} {env:OPAMBEARS:} {env:APTBEARS:} {env:ADHOCBEARS:} {env:DISABLEDBEARS:}
+ noskip: PYTEST_ARGS=--error-for-skips
+ py34-noskip: PYTEST_ARGS=--error-for-skips -k 'not test_valid_async'
+ win-noskip: PYTEST_ARGS=--error-for-skips -k 'not test_language_french and not test_valid_async'
+ collectonly,list: PYTEST_ARGS=--collect-only
+ codecov: CODECOV_FLAGS=`python .ci/get_codecov_tags.py {envname}`
+commands =
+ check,list,all: python .ci/get_bears.py --missing {env:SELECTED}
+ java: bash -e -x .ci/deps.coala-bears.sh
+ !py34,!apt: python .ci/generate_coverage_thresholds.py {posargs:{env:SELECTED}}
+ py34,apt: rm -f .threshold.json
+ !list: pytest {env:PYTEST_ARGS:} --cov --cov-fail-under=0 --continue-on-collection-errors --cov-report term-missing:skip-covered --deselect=requirements.txt {posargs:{env:SELECTED}}
+ codecov: codecov --name={envname} --flags={env:CODECOV_FLAGS}
+# Use commands_post =