aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.WebDashboard
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.WebDashboard')
-rw-r--r--MediaBrowser.WebDashboard/Api/DashboardService.cs18
-rw-r--r--MediaBrowser.WebDashboard/Api/PackageCreator.cs111
-rw-r--r--MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj76
-rw-r--r--MediaBrowser.WebDashboard/app.config36
-rw-r--r--MediaBrowser.WebDashboard/packages.config2
5 files changed, 107 insertions, 136 deletions
diff --git a/MediaBrowser.WebDashboard/Api/DashboardService.cs b/MediaBrowser.WebDashboard/Api/DashboardService.cs
index 6e34390797..dcafa94171 100644
--- a/MediaBrowser.WebDashboard/Api/DashboardService.cs
+++ b/MediaBrowser.WebDashboard/Api/DashboardService.cs
@@ -1,12 +1,11 @@
-using System.Globalization;
-using MediaBrowser.Common.Extensions;
+using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.IO;
-using MediaBrowser.Common.Net;
using MediaBrowser.Controller;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Localization;
using MediaBrowser.Controller.Net;
using MediaBrowser.Controller.Plugins;
+using MediaBrowser.Model.Extensions;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Net;
using MediaBrowser.Model.Serialization;
@@ -14,6 +13,7 @@ using ServiceStack;
using ServiceStack.Web;
using System;
using System.Collections.Generic;
+using System.Globalization;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
@@ -134,7 +134,7 @@ namespace MediaBrowser.WebDashboard.Api
{
var page = ServerEntryPoint.Instance.PluginConfigurationPages.First(p => p.Name.Equals(request.Name, StringComparison.OrdinalIgnoreCase));
- return ResultFactory.GetStaticResult(Request, page.Plugin.Version.ToString().GetMD5(), null, null, MimeTypes.GetMimeType("page.html"), () => GetPackageCreator().ModifyHtml(page.GetHtmlStream(), null));
+ return ResultFactory.GetStaticResult(Request, page.Plugin.Version.ToString().GetMD5(), null, null, MimeTypes.GetMimeType("page.html"), () => GetPackageCreator().ModifyHtml(page.GetHtmlStream(), null, false));
}
/// <summary>
@@ -249,8 +249,10 @@ namespace MediaBrowser.WebDashboard.Api
/// <returns>Task{Stream}.</returns>
private Task<Stream> GetResourceStream(string path, string localizationCulture)
{
+ var minify = _serverConfigurationManager.Configuration.EnableDashboardResourceMinification;
+
return GetPackageCreator()
- .GetResource(path, localizationCulture, _appHost.ApplicationVersion.ToString());
+ .GetResource(path, localizationCulture, _appHost.ApplicationVersion.ToString(), minify);
}
private PackageCreator GetPackageCreator()
@@ -275,11 +277,11 @@ namespace MediaBrowser.WebDashboard.Api
try
{
- Directory.Delete(path, true);
+ _fileSystem.DeleteDirectory(path, true);
}
catch (IOException)
{
-
+
}
var creator = GetPackageCreator();
@@ -321,7 +323,7 @@ namespace MediaBrowser.WebDashboard.Api
private async Task DumpFile(string resourceVirtualPath, string destinationFilePath, string culture, string appVersion)
{
- using (var stream = await GetPackageCreator().GetResource(resourceVirtualPath, culture, appVersion).ConfigureAwait(false))
+ using (var stream = await GetPackageCreator().GetResource(resourceVirtualPath, culture, appVersion, true).ConfigureAwait(false))
{
using (var fs = _fileSystem.GetFileStream(destinationFilePath, FileMode.Create, FileAccess.Write, FileShare.Read))
{
diff --git a/MediaBrowser.WebDashboard/Api/PackageCreator.cs b/MediaBrowser.WebDashboard/Api/PackageCreator.cs
index a6707bac3a..8bf0050219 100644
--- a/MediaBrowser.WebDashboard/Api/PackageCreator.cs
+++ b/MediaBrowser.WebDashboard/Api/PackageCreator.cs
@@ -10,6 +10,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WebMarkupMin.Core.Minifiers;
+using WebMarkupMin.Core.Settings;
namespace MediaBrowser.WebDashboard.Api
{
@@ -30,9 +31,9 @@ namespace MediaBrowser.WebDashboard.Api
_jsonSerializer = jsonSerializer;
}
- public async Task<Stream> GetResource(string path,
+ public async Task<Stream> GetResource(string path,
string localizationCulture,
- string appVersion)
+ string appVersion, bool enableMinification)
{
var isHtml = IsHtml(path);
@@ -40,11 +41,11 @@ namespace MediaBrowser.WebDashboard.Api
if (path.Equals("scripts/all.js", StringComparison.OrdinalIgnoreCase))
{
- resourceStream = await GetAllJavascript(localizationCulture, appVersion).ConfigureAwait(false);
+ resourceStream = await GetAllJavascript(localizationCulture, appVersion, enableMinification).ConfigureAwait(false);
}
else if (path.Equals("css/all.css", StringComparison.OrdinalIgnoreCase))
{
- resourceStream = await GetAllCss().ConfigureAwait(false);
+ resourceStream = await GetAllCss(enableMinification).ConfigureAwait(false);
}
else
{
@@ -57,7 +58,7 @@ namespace MediaBrowser.WebDashboard.Api
// jQuery ajax doesn't seem to handle if-modified-since correctly
if (isHtml)
{
- resourceStream = await ModifyHtml(resourceStream, localizationCulture).ConfigureAwait(false);
+ resourceStream = await ModifyHtml(resourceStream, localizationCulture, enableMinification).ConfigureAwait(false);
}
}
@@ -106,8 +107,9 @@ namespace MediaBrowser.WebDashboard.Api
/// </summary>
/// <param name="sourceStream">The source stream.</param>
/// <param name="localizationCulture">The localization culture.</param>
+ /// <param name="enableMinification">if set to <c>true</c> [enable minification].</param>
/// <returns>Task{Stream}.</returns>
- public async Task<Stream> ModifyHtml(Stream sourceStream, string localizationCulture)
+ public async Task<Stream> ModifyHtml(Stream sourceStream, string localizationCulture, bool enableMinification)
{
using (sourceStream)
{
@@ -128,16 +130,27 @@ namespace MediaBrowser.WebDashboard.Api
html = html.Replace("<html>", "<html lang=\"" + lang + "\">");
}
- //try
- //{
- // var minifier = new HtmlMinifier(new HtmlMinificationSettings(true));
+ if (enableMinification)
+ {
+ try
+ {
+ var minifier = new HtmlMinifier(new HtmlMinificationSettings());
+ var result = minifier.Minify(html, false);
- // html = minifier.Minify(html).MinifiedContent;
- //}
- //catch (Exception ex)
- //{
- // Logger.ErrorException("Error minifying html", ex);
- //}
+ if (result.Errors.Count > 0)
+ {
+ _logger.Error("Error minifying html: " + result.Errors[0].Message);
+ }
+ else
+ {
+ html = result.MinifiedContent;
+ }
+ }
+ catch (Exception ex)
+ {
+ _logger.ErrorException("Error minifying html", ex);
+ }
+ }
}
var version = GetType().Assembly.GetName().Version;
@@ -221,7 +234,6 @@ namespace MediaBrowser.WebDashboard.Api
var files = new[]
{
"scripts/all.js" + versionString,
- "thirdparty/jstree3.0.8/jstree.min.js",
"thirdparty/swipebox-master/js/jquery.swipebox.min.js" + versionString
};
@@ -236,7 +248,7 @@ namespace MediaBrowser.WebDashboard.Api
/// Gets a stream containing all concatenated javascript
/// </summary>
/// <returns>Task{Stream}.</returns>
- private async Task<Stream> GetAllJavascript(string culture, string version)
+ private async Task<Stream> GetAllJavascript(string culture, string version, bool enableMinification)
{
var memoryStream = new MemoryStream();
var newLineBytes = Encoding.UTF8.GetBytes(Environment.NewLine);
@@ -250,6 +262,8 @@ namespace MediaBrowser.WebDashboard.Api
await AppendResource(memoryStream, "thirdparty/cast_sender.js", newLineBytes).ConfigureAwait(false);
await AppendResource(memoryStream, "thirdparty/browser.js", newLineBytes).ConfigureAwait(false);
+ await AppendResource(memoryStream, "thirdparty/jstree3.0.8/jstree.js", newLineBytes).ConfigureAwait(false);
+
await AppendLocalization(memoryStream, culture).ConfigureAwait(false);
await memoryStream.WriteAsync(newLineBytes, 0, newLineBytes.Length).ConfigureAwait(false);
@@ -264,6 +278,7 @@ namespace MediaBrowser.WebDashboard.Api
foreach (var file in new[]
{
+ "thirdparty/apiclient/logger.js",
"thirdparty/apiclient/md5.js",
"thirdparty/apiclient/sha1.js",
"thirdparty/apiclient/store.js",
@@ -303,15 +318,25 @@ namespace MediaBrowser.WebDashboard.Api
var js = builder.ToString();
- try
+ if (enableMinification)
{
- var result = new CrockfordJsMinifier().Minify(js, false, Encoding.UTF8);
+ try
+ {
+ var result = new CrockfordJsMinifier().Minify(js, false, Encoding.UTF8);
- js = result.MinifiedContent;
- }
- catch (Exception ex)
- {
- _logger.ErrorException("Error minifying javascript", ex);
+ if (result.Errors.Count > 0)
+ {
+ _logger.Error("Error minifying javascript: " + result.Errors[0].Message);
+ }
+ else
+ {
+ js = result.MinifiedContent;
+ }
+ }
+ catch (Exception ex)
+ {
+ _logger.ErrorException("Error minifying javascript", ex);
+ }
}
var bytes = Encoding.UTF8.GetBytes(js);
@@ -341,6 +366,7 @@ namespace MediaBrowser.WebDashboard.Api
"mediaplayer-video.js",
"nowplayingbar.js",
"nowplayingpage.js",
+ "taskbutton.js",
"ratingdialog.js",
"aboutpage.js",
@@ -356,6 +382,7 @@ namespace MediaBrowser.WebDashboard.Api
"channelsettings.js",
"connectlogin.js",
"dashboardgeneral.js",
+ "dashboardhosting.js",
"dashboardpage.js",
"device.js",
"devices.js",
@@ -387,7 +414,6 @@ namespace MediaBrowser.WebDashboard.Api
"indexpage.js",
"itembynamedetailpage.js",
"itemdetailpage.js",
- "itemgallery.js",
"itemlistpage.js",
"librarypathmapping.js",
"reports.js",
@@ -414,7 +440,7 @@ namespace MediaBrowser.WebDashboard.Api
"metadataconfigurationpage.js",
"metadataimagespage.js",
"metadatasubtitles.js",
- "metadatakodi.js",
+ "metadatanfo.js",
"moviegenres.js",
"moviecollections.js",
"movies.js",
@@ -517,7 +543,7 @@ namespace MediaBrowser.WebDashboard.Api
/// Gets all CSS.
/// </summary>
/// <returns>Task{Stream}.</returns>
- private async Task<Stream> GetAllCss()
+ private async Task<Stream> GetAllCss(bool enableMinification)
{
var files = new[]
{
@@ -538,7 +564,8 @@ namespace MediaBrowser.WebDashboard.Api
"userimage.css",
"livetv.css",
"nowplaying.css",
- "icons.css"
+ "icons.css",
+ "materialize.css"
};
var builder = new StringBuilder();
@@ -560,16 +587,26 @@ namespace MediaBrowser.WebDashboard.Api
var css = builder.ToString();
- //try
- //{
- // var result = new KristensenCssMinifier().Minify(builder.ToString(), false, Encoding.UTF8);
+ if (enableMinification)
+ {
+ try
+ {
+ var result = new KristensenCssMinifier().Minify(builder.ToString(), false, Encoding.UTF8);
- // css = result.MinifiedContent;
- //}
- //catch (Exception ex)
- //{
- // Logger.ErrorException("Error minifying css", ex);
- //}
+ if (result.Errors.Count > 0)
+ {
+ _logger.Error("Error minifying css: " + result.Errors[0].Message);
+ }
+ else
+ {
+ css = result.MinifiedContent;
+ }
+ }
+ catch (Exception ex)
+ {
+ _logger.ErrorException("Error minifying css", ex);
+ }
+ }
var memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(css));
diff --git a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj
index 89721f01b6..19098a3eea 100644
--- a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj
+++ b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj
@@ -57,9 +57,9 @@
<Reference Include="ServiceStack.Interfaces">
<HintPath>..\ThirdParty\ServiceStack\ServiceStack.Interfaces.dll</HintPath>
</Reference>
- <Reference Include="WebMarkupMin.Core, Version=0.9.9.0, Culture=neutral, PublicKeyToken=99472178d266584b, processorArchitecture=MSIL">
+ <Reference Include="WebMarkupMin.Core, Version=0.9.11.0, Culture=neutral, PublicKeyToken=99472178d266584b, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
- <HintPath>..\packages\WebMarkupMin.Core.0.9.9\lib\net40\WebMarkupMin.Core.dll</HintPath>
+ <HintPath>..\packages\WebMarkupMin.Core.0.9.11\lib\net40\WebMarkupMin.Core.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
@@ -90,9 +90,18 @@
<Content Include="dashboard-ui\css\images\server.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
+ <Content Include="dashboard-ui\css\images\splash.jpg">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
<Content Include="dashboard-ui\css\images\tour\dashboard\help.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
+ <Content Include="dashboard-ui\css\materialize.css">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
+ <Content Include="dashboard-ui\dashboardhosting.html">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
<Content Include="dashboard-ui\forgotpasswordpin.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -102,6 +111,9 @@
<Content Include="dashboard-ui\mysyncjob.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
+ <Content Include="dashboard-ui\scripts\dashboardhosting.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
<Content Include="dashboard-ui\scripts\forgotpassword.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -117,6 +129,9 @@
<Content Include="dashboard-ui\scripts\syncsettings.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
+ <Content Include="dashboard-ui\scripts\taskbutton.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
<Content Include="dashboard-ui\scripts\usernew.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -141,6 +156,9 @@
<Content Include="dashboard-ui\thirdparty\apiclient\device.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
+ <Content Include="dashboard-ui\thirdparty\apiclient\logger.js">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ </Content>
<Content Include="dashboard-ui\thirdparty\apiclient\mediabrowser.apiclient.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -234,9 +252,6 @@
<Content Include="dashboard-ui\css\images\icons\remote.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\items\folders\home.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
<Content Include="dashboard-ui\css\images\icons\audiocd.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -282,36 +297,6 @@
<Content Include="dashboard-ui\css\images\items\detail\tv.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\css\images\items\folders\books.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="dashboard-ui\css\images\items\folders\channels.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="dashboard-ui\css\images\items\folders\folder.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="dashboard-ui\css\images\items\folders\games.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="dashboard-ui\css\images\items\folders\homevideos.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="dashboard-ui\css\images\items\folders\movies.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="dashboard-ui\css\images\items\folders\music.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="dashboard-ui\css\images\items\folders\musicvideos.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="dashboard-ui\css\images\items\folders\photos.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- <Content Include="dashboard-ui\css\images\items\folders\tv.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
<Content Include="dashboard-ui\css\images\items\list\remotesearch.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -462,7 +447,7 @@
<Content Include="dashboard-ui\librarypathmapping.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\metadatakodi.html">
+ <Content Include="dashboard-ui\metadatanfo.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="dashboard-ui\mypreferencesdisplay.html">
@@ -777,7 +762,7 @@
<Content Include="dashboard-ui\scripts\librarypathmapping.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\scripts\metadatakodi.js">
+ <Content Include="dashboard-ui\scripts\metadatanfo.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="dashboard-ui\scripts\mypreferencesdisplay.js">
@@ -1671,9 +1656,6 @@
</Content>
</ItemGroup>
<ItemGroup>
- <Content Include="dashboard-ui\itemgallery.html">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
<Content Include="dashboard-ui\librarysettings.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -1722,9 +1704,6 @@
<Content Include="dashboard-ui\scripts\edititemmetadata.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
- <Content Include="dashboard-ui\scripts\itemgallery.js">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
<Content Include="dashboard-ui\scripts\librarysettings.js">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -2150,16 +2129,6 @@
</Content>
</ItemGroup>
<ItemGroup>
- <Content Include="dashboard-ui\css\images\supporter\donatepaypal.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- </ItemGroup>
- <ItemGroup>
- <Content Include="dashboard-ui\css\images\supporter\registerpaypal.png">
- <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
- </Content>
- </ItemGroup>
- <ItemGroup>
<Content Include="dashboard-ui\css\images\notifications\done.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@@ -2229,7 +2198,6 @@
</Content>
</ItemGroup>
<ItemGroup>
- <None Include="app.config" />
<None Include="dashboard-ui\css\fonts\mblogo.woff">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
diff --git a/MediaBrowser.WebDashboard/app.config b/MediaBrowser.WebDashboard/app.config
deleted file mode 100644
index 7e2967809a..0000000000
--- a/MediaBrowser.WebDashboard/app.config
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<configuration>
- <configSections>
- <sectionGroup name="webMarkupMin">
- <section name="core" type="WebMarkupMin.Core.Configuration.CoreConfiguration, WebMarkupMin.Core" />
- </sectionGroup>
- </configSections>
-
-
-
-
-
-
-
-<webMarkupMin xmlns="http://tempuri.org/WebMarkupMin.Configuration.xsd">
- <core>
- <css>
- <minifiers>
- <add name="NullCssMinifier" displayName="Null CSS Minifier" type="WebMarkupMin.Core.Minifiers.NullCssMinifier, WebMarkupMin.Core" />
- <add name="KristensenCssMinifier" displayName="Mads Kristensen's CSS minifier" type="WebMarkupMin.Core.Minifiers.KristensenCssMinifier, WebMarkupMin.Core" />
- </minifiers>
- </css>
- <js>
- <minifiers>
- <add name="NullJsMinifier" displayName="Null JS Minifier" type="WebMarkupMin.Core.Minifiers.NullJsMinifier, WebMarkupMin.Core" />
- <add name="CrockfordJsMinifier" displayName="Douglas Crockford's JS Minifier" type="WebMarkupMin.Core.Minifiers.CrockfordJsMinifier, WebMarkupMin.Core" />
- </minifiers>
- </js>
- <logging>
- <loggers>
- <add name="NullLogger" displayName="Null Logger" type="WebMarkupMin.Core.Loggers.NullLogger, WebMarkupMin.Core" />
- <add name="ThrowExceptionLogger" displayName="Throw exception logger" type="WebMarkupMin.Core.Loggers.ThrowExceptionLogger, WebMarkupMin.Core" />
- </loggers>
- </logging>
- </core>
- </webMarkupMin></configuration> \ No newline at end of file
diff --git a/MediaBrowser.WebDashboard/packages.config b/MediaBrowser.WebDashboard/packages.config
index a7cbac2852..aed67fb695 100644
--- a/MediaBrowser.WebDashboard/packages.config
+++ b/MediaBrowser.WebDashboard/packages.config
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="MediaBrowser.ApiClient.Javascript" version="3.0.249" targetFramework="net45" />
- <package id="WebMarkupMin.Core" version="0.9.9" targetFramework="net45" />
+ <package id="WebMarkupMin.Core" version="0.9.11" targetFramework="net45" />
</packages> \ No newline at end of file