diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ProxyScripting/ServiceProxyGenerationModel.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ProxyScripting/ServiceProxyGenerationModel.cs index 5cc9a0a3c5..20dae137e7 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ProxyScripting/ServiceProxyGenerationModel.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ProxyScripting/ServiceProxyGenerationModel.cs @@ -11,6 +11,8 @@ namespace Volo.Abp.AspNetCore.Mvc.ProxyScripting public bool UseCache { get; set; } + public bool Minify { get; set; } + public string Modules { get; set; } public string Controllers { get; set; } @@ -32,7 +34,7 @@ namespace Volo.Abp.AspNetCore.Mvc.ProxyScripting public ProxyScriptingModel CreateOptions() { - var options = new ProxyScriptingModel(Type, UseCache); + var options = new ProxyScriptingModel(Type, UseCache, Minify); if (!Modules.IsNullOrEmpty()) { diff --git a/framework/src/Volo.Abp.Http/Volo.Abp.Http.csproj b/framework/src/Volo.Abp.Http/Volo.Abp.Http.csproj index df1e907450..57f447604e 100644 --- a/framework/src/Volo.Abp.Http/Volo.Abp.Http.csproj +++ b/framework/src/Volo.Abp.Http/Volo.Abp.Http.csproj @@ -16,6 +16,7 @@ + \ No newline at end of file diff --git a/framework/src/Volo.Abp.Http/Volo/Abp/Http/AbpHttpModule.cs b/framework/src/Volo.Abp.Http/Volo/Abp/Http/AbpHttpModule.cs index 171f54b85f..6cccb5ff6d 100644 --- a/framework/src/Volo.Abp.Http/Volo/Abp/Http/AbpHttpModule.cs +++ b/framework/src/Volo.Abp.Http/Volo/Abp/Http/AbpHttpModule.cs @@ -1,12 +1,14 @@ using Volo.Abp.Http.ProxyScripting.Configuration; using Volo.Abp.Http.ProxyScripting.Generators.JQuery; using Volo.Abp.Json; +using Volo.Abp.Minify; using Volo.Abp.Modularity; namespace Volo.Abp.Http { [DependsOn(typeof(AbpHttpAbstractionsModule))] [DependsOn(typeof(AbpJsonModule))] + [DependsOn(typeof(AbpMinifyModule))] public class AbpHttpModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) diff --git a/framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/ProxyScriptManager.cs b/framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/ProxyScriptManager.cs index 1b89de2b3a..858b78a57f 100644 --- a/framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/ProxyScriptManager.cs +++ b/framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/ProxyScriptManager.cs @@ -7,6 +7,7 @@ using Volo.Abp.Http.Modeling; using Volo.Abp.Http.ProxyScripting.Configuration; using Volo.Abp.Http.ProxyScripting.Generators; using Volo.Abp.Json; +using Volo.Abp.Minify.Scripts; namespace Volo.Abp.Http.ProxyScripting { @@ -17,18 +18,21 @@ namespace Volo.Abp.Http.ProxyScripting private readonly IJsonSerializer _jsonSerializer; private readonly IProxyScriptManagerCache _cache; private readonly AbpApiProxyScriptingOptions _options; + private readonly IJavascriptMinifier _javascriptMinifier; public ProxyScriptManager( IApiDescriptionModelProvider modelProvider, IServiceProvider serviceProvider, IJsonSerializer jsonSerializer, IProxyScriptManagerCache cache, - IOptions options) + IOptions options, + IJavascriptMinifier javascriptMinifier) { _modelProvider = modelProvider; _serviceProvider = serviceProvider; _jsonSerializer = jsonSerializer; _cache = cache; + _javascriptMinifier = javascriptMinifier; _options = options.Value; } @@ -63,7 +67,8 @@ namespace Volo.Abp.Http.ProxyScripting using (var scope = _serviceProvider.CreateScope()) { - return scope.ServiceProvider.GetRequiredService(generatorType).As().CreateScript(apiModel); + var script = scope.ServiceProvider.GetRequiredService(generatorType).As().CreateScript(apiModel); + return scriptingModel.Minify ? _javascriptMinifier.Minify(script) : script; } } diff --git a/framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/ProxyScriptingModel.cs b/framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/ProxyScriptingModel.cs index 5ab85a781b..6815c01ce5 100644 --- a/framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/ProxyScriptingModel.cs +++ b/framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/ProxyScriptingModel.cs @@ -8,6 +8,8 @@ namespace Volo.Abp.Http.ProxyScripting public bool UseCache { get; set; } + public bool Minify { get; set; } + public string[] Modules { get; set; } public string[] Controllers { get; set; } @@ -16,10 +18,11 @@ namespace Volo.Abp.Http.ProxyScripting public IDictionary Properties { get; set; } - public ProxyScriptingModel(string generatorType, bool useCache = true) + public ProxyScriptingModel(string generatorType, bool useCache = true, bool minify = false) { GeneratorType = generatorType; UseCache = useCache; + Minify = minify; Properties = new Dictionary(); } diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ProxyScripting/AbpServiceProxiesController_Tests.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ProxyScripting/AbpServiceProxiesController_Tests.cs index 10fa9bd3e7..bd7366b931 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ProxyScripting/AbpServiceProxiesController_Tests.cs +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ProxyScripting/AbpServiceProxiesController_Tests.cs @@ -9,8 +9,19 @@ namespace Volo.Abp.AspNetCore.Mvc.ProxyScripting [Fact] public async Task GetAll() { - var script = await GetResponseAsStringAsync("/Abp/ServiceProxyScript/"); + var script = await GetResponseAsStringAsync("/Abp/ServiceProxyScript?minify=true"); script.Length.ShouldBeGreaterThan(0); } + + [Fact] + public async Task GetAllWithMinify() + { + var script = await GetResponseAsStringAsync("/Abp/ServiceProxyScript"); + var minifyScript = await GetResponseAsStringAsync("/Abp/ServiceProxyScript?minify=true"); + + script.Length.ShouldBeGreaterThan(0); + minifyScript.Length.ShouldBeGreaterThan(0); + minifyScript.Length.ShouldBeLessThan(script.Length); + } } }