Browse Source

Fix prepare step. (#1236)

* Fix prepare step.

* UI fixes.
pull/1237/head
Sebastian Stehle 11 months ago
committed by GitHub
parent
commit
3c81d2e95b
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 14
      backend/src/Squidex.Data.EntityFramework/Squidex.Data.EntityFramework.csproj
  2. 12
      backend/src/Squidex.Data.MongoDb/Squidex.Data.MongoDb.csproj
  3. 2
      backend/src/Squidex.Domain.Apps.Core.Model/Squidex.Domain.Apps.Core.Model.csproj
  4. 6
      backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/JintScriptEngine.cs
  5. 4
      backend/src/Squidex.Domain.Apps.Core.Operations/Squidex.Domain.Apps.Core.Operations.csproj
  6. 8
      backend/src/Squidex.Domain.Apps.Entities/Apps/Templates/StringLogger.cs
  7. 4
      backend/src/Squidex.Domain.Apps.Entities/Apps/Templates/TemplateCommandMiddleware.cs
  8. 2
      backend/src/Squidex.Domain.Apps.Entities/Squidex.Domain.Apps.Entities.csproj
  9. 14
      backend/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj
  10. 4
      backend/src/Squidex/Areas/Api/Controllers/Rules/RulesController.cs
  11. 2
      backend/src/Squidex/Config/Domain/RuleServices.cs
  12. 26
      backend/src/Squidex/Squidex.csproj
  13. 39
      frontend/src/app/features/rules/shared/state-step.component.html
  14. 2
      frontend/src/app/features/settings/pages/clients/client.component.html
  15. 2
      frontend/src/app/shared/services/rules.service.ts

14
backend/src/Squidex.Data.EntityFramework/Squidex.Data.EntityFramework.csproj

@ -40,13 +40,13 @@
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql.Json.Microsoft" Version="8.0.3" />
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql.NetTopologySuite" Version="8.0.3" />
<PackageReference Include="RefactoringEssentials" Version="5.6.0" PrivateAssets="all" />
<PackageReference Include="Squidex.AI.EntityFramework" Version="7.23.0" />
<PackageReference Include="Squidex.Assets.EntityFramework" Version="7.23.0" />
<PackageReference Include="Squidex.Assets.TusAdapter" Version="7.23.0" />
<PackageReference Include="Squidex.Events.EntityFramework" Version="7.23.0" />
<PackageReference Include="Squidex.Flows.EntityFramework" Version="7.23.0" />
<PackageReference Include="Squidex.Hosting" Version="7.23.0" />
<PackageReference Include="Squidex.Messaging.EntityFramework" Version="7.23.0" />
<PackageReference Include="Squidex.AI.EntityFramework" Version="7.25.0" />
<PackageReference Include="Squidex.Assets.EntityFramework" Version="7.25.0" />
<PackageReference Include="Squidex.Assets.TusAdapter" Version="7.25.0" />
<PackageReference Include="Squidex.Events.EntityFramework" Version="7.25.0" />
<PackageReference Include="Squidex.Flows.EntityFramework" Version="7.25.0" />
<PackageReference Include="Squidex.Hosting" Version="7.25.0" />
<PackageReference Include="Squidex.Messaging.EntityFramework" Version="7.25.0" />
<PackageReference Include="Squidex.OpenIdDict.EntityFramework" Version="5.8.4" />
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="all" />
<PackageReference Include="System.ValueTuple" Version="4.5.0" />

12
backend/src/Squidex.Data.MongoDb/Squidex.Data.MongoDb.csproj

@ -25,12 +25,12 @@
<PackageReference Include="MongoDB.Driver.GridFS" Version="2.30.0" />
<PackageReference Include="NodaTime.Serialization.SystemTextJson" Version="1.3.0" />
<PackageReference Include="RefactoringEssentials" Version="5.6.0" PrivateAssets="all" />
<PackageReference Include="Squidex.AI.Mongo" Version="7.23.0" />
<PackageReference Include="Squidex.Assets.Mongo" Version="7.23.0" />
<PackageReference Include="Squidex.Events.Mongo" Version="7.23.0" />
<PackageReference Include="Squidex.Flows.Mongo" Version="7.23.0" />
<PackageReference Include="Squidex.Hosting" Version="7.23.0" />
<PackageReference Include="Squidex.Messaging.Mongo" Version="7.23.0" />
<PackageReference Include="Squidex.AI.Mongo" Version="7.25.0" />
<PackageReference Include="Squidex.Assets.Mongo" Version="7.25.0" />
<PackageReference Include="Squidex.Events.Mongo" Version="7.25.0" />
<PackageReference Include="Squidex.Flows.Mongo" Version="7.25.0" />
<PackageReference Include="Squidex.Hosting" Version="7.25.0" />
<PackageReference Include="Squidex.Messaging.Mongo" Version="7.25.0" />
<PackageReference Include="Squidex.OpenIddict.MongoDb" Version="5.8.4" />
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="all" />
<PackageReference Include="System.ValueTuple" Version="4.5.0" />

2
backend/src/Squidex.Domain.Apps.Core.Model/Squidex.Domain.Apps.Core.Model.csproj

@ -20,7 +20,7 @@
<PackageReference Include="NetTopologySuite" Version="2.5.0" />
<PackageReference Include="NodaTime.Serialization.SystemTextJson" Version="1.3.0" />
<PackageReference Include="RefactoringEssentials" Version="5.6.0" PrivateAssets="all" />
<PackageReference Include="Squidex.Flows" Version="7.23.0" />
<PackageReference Include="Squidex.Flows" Version="7.25.0" />
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="all" />
<PackageReference Include="System.Collections.Immutable" Version="8.0.0" />
<PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />

6
backend/src/Squidex.Domain.Apps.Core.Operations/Scripting/JintScriptEngine.cs

@ -191,9 +191,13 @@ public sealed class JintScriptEngine(IMemoryCache cache, IOptions<JintScriptOpti
{
case ArgumentException:
return BuildException("common.jsParseError", inner.Message);
case ParseErrorException:
return BuildException("common.jsError", inner.Message);
case ScriptPreparationException:
return BuildException("common.jsError", inner.Message);
case JavaScriptException:
return BuildException("common.jsError", inner.Message);
case ParseErrorException:
case JintException:
return BuildException("common.jsError", inner.Message);
case DomainException:
return inner;

4
backend/src/Squidex.Domain.Apps.Core.Operations/Squidex.Domain.Apps.Core.Operations.csproj

@ -29,8 +29,8 @@
<PackageReference Include="NJsonSchema" Version="11.0.2" />
<PackageReference Include="NodaTime.Serialization.SystemTextJson" Version="1.3.0" />
<PackageReference Include="RefactoringEssentials" Version="5.6.0" PrivateAssets="all" />
<PackageReference Include="Squidex.AI" Version="7.23.0" />
<PackageReference Include="Squidex.Messaging.Subscriptions" Version="7.23.0" />
<PackageReference Include="Squidex.AI" Version="7.25.0" />
<PackageReference Include="Squidex.Messaging.Subscriptions" Version="7.25.0" />
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="all" />
<PackageReference Include="System.Collections.Immutable" Version="8.0.0" />
<PackageReference Include="System.Linq.Async" Version="6.0.1" />

8
backend/src/Squidex.Domain.Apps.Entities/Apps/Templates/StringLogger.cs

@ -8,11 +8,12 @@
using System.Globalization;
using Squidex.CLI.Commands.Implementation;
using Squidex.Infrastructure;
using Squidex.Infrastructure.Json;
using Squidex.Log;
namespace Squidex.Domain.Apps.Entities.Apps.Templates;
public sealed class StringLogger : ILogger, ILogLine
public sealed class StringLogger(IJsonSerializer jsonSerializer) : ILogger, ILogLine
{
private const int MaxActionLength = 40;
private readonly List<string> lines = [];
@ -96,6 +97,11 @@ public sealed class StringLogger : ILogger, ILogLine
lines.Add(string.Format(CultureInfo.InvariantCulture, message, args));
}
public void WriteJson(object message)
{
lines.Add(jsonSerializer.Serialize(message, true));
}
private void AddToErrors(string reason)
{
errors.Add(reason);

4
backend/src/Squidex.Domain.Apps.Entities/Apps/Templates/TemplateCommandMiddleware.cs

@ -22,6 +22,7 @@ using Squidex.Domain.Apps.Core;
using Squidex.Domain.Apps.Core.Apps;
using Squidex.Domain.Apps.Entities.Apps.Commands;
using Squidex.Infrastructure.Commands;
using Squidex.Infrastructure.Json;
using Squidex.Log;
namespace Squidex.Domain.Apps.Entities.Apps.Templates;
@ -30,6 +31,7 @@ public sealed class TemplateCommandMiddleware(
TemplatesClient templatesClient,
IOptions<TemplatesOptions> templateOptions,
IUrlGenerator urlGenerator,
IJsonSerializer jsonSerializer,
ISemanticLog log)
: ICommandMiddleware
{
@ -63,7 +65,7 @@ public sealed class TemplateCommandMiddleware(
return;
}
using (var cliLog = new StringLogger())
using (var cliLog = new StringLogger(jsonSerializer))
{
try
{

2
backend/src/Squidex.Domain.Apps.Entities/Squidex.Domain.Apps.Entities.csproj

@ -40,7 +40,7 @@
<PackageReference Include="NodaTime.Serialization.SystemTextJson" Version="1.3.0" />
<PackageReference Include="Notifo.SDK" Version="1.7.5" />
<PackageReference Include="RefactoringEssentials" Version="5.6.0" PrivateAssets="all" />
<PackageReference Include="Squidex.CLI.Core" Version="13.8.0" />
<PackageReference Include="Squidex.CLI.Core" Version="13.9.0" />
<PackageReference Include="YDotNet" Version="0.4.3" />
<PackageReference Include="YDotNet.Extensions" Version="0.4.3" />
<PackageReference Include="YDotNet.Server" Version="0.4.3" />

14
backend/src/Squidex.Infrastructure/Squidex.Infrastructure.csproj

@ -24,13 +24,13 @@
<PackageReference Include="NodaTime" Version="3.2.0" />
<PackageReference Include="OpenTelemetry.Api" Version="1.9.0" />
<PackageReference Include="RefactoringEssentials" Version="5.6.0" PrivateAssets="all" />
<PackageReference Include="Squidex.Assets" Version="7.23.0" />
<PackageReference Include="Squidex.Caching" Version="7.23.0" />
<PackageReference Include="Squidex.Events" Version="7.23.0" />
<PackageReference Include="Squidex.Hosting.Abstractions" Version="7.23.0" />
<PackageReference Include="Squidex.Log" Version="7.23.0" />
<PackageReference Include="Squidex.Messaging" Version="7.23.0" />
<PackageReference Include="Squidex.Text" Version="7.23.0" />
<PackageReference Include="Squidex.Assets" Version="7.25.0" />
<PackageReference Include="Squidex.Caching" Version="7.25.0" />
<PackageReference Include="Squidex.Events" Version="7.25.0" />
<PackageReference Include="Squidex.Hosting.Abstractions" Version="7.25.0" />
<PackageReference Include="Squidex.Log" Version="7.25.0" />
<PackageReference Include="Squidex.Messaging" Version="7.25.0" />
<PackageReference Include="Squidex.Text" Version="7.25.0" />
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="all" />
<PackageReference Include="System.Collections.Immutable" Version="8.0.0" />
<PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />

4
backend/src/Squidex/Areas/Api/Controllers/Rules/RulesController.cs

@ -262,7 +262,7 @@ public sealed class RulesController(
/// <response code="400">Rule trigger not valid.</response>
/// <response code="404">Rule or app not found.</response>
[HttpPost]
[Route("apps/{app}/rules/validate/trigger/")]
[Route("apps/{app}/rules/validate/trigger/", Order = -1)]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ApiPermission]
[ApiCosts(0)]
@ -286,7 +286,7 @@ public sealed class RulesController(
/// <response code="400">Rule step not valid.</response>
/// <response code="404">Rule or app not found.</response>
[HttpPost]
[Route("apps/{app}/rules/validate/step/")]
[Route("apps/{app}/rules/validate/step/", Order = -1)]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ApiPermission]
[ApiCosts(0)]

2
backend/src/Squidex/Config/Domain/RuleServices.cs

@ -5,6 +5,7 @@
// All rights reserved. Licensed under the MIT license.
// ==========================================================================
using Jint;
using Migrations.OldTriggers;
using Squidex.Domain.Apps.Core.HandleRules;
using Squidex.Domain.Apps.Core.HandleRules.Extensions;
@ -118,6 +119,7 @@ public static class RuleServices
.As<IFlowExecutionCallback<FlowEventContext>>();
services.AddFlows<FlowEventContext>(config);
services.AddCronJobs<CronJobContext>(config, m =>
{
m.UpdateInterval = TimeSpan.FromSeconds(1);

26
backend/src/Squidex/Squidex.csproj

@ -59,17 +59,17 @@
<PackageReference Include="OpenTelemetry.Instrumentation.Runtime" Version="1.9.0" />
<PackageReference Include="RefactoringEssentials" Version="5.6.0" PrivateAssets="all" />
<PackageReference Include="ReportGenerator" Version="5.4.1" PrivateAssets="all" />
<PackageReference Include="Squidex.Assets.Azure" Version="7.23.0" />
<PackageReference Include="Squidex.Assets.GoogleCloud" Version="7.23.0" />
<PackageReference Include="Squidex.Assets.FTP" Version="7.23.0" />
<PackageReference Include="Squidex.Assets.ImageSharp" Version="7.23.0" />
<PackageReference Include="Squidex.Assets.S3" Version="7.23.0" />
<PackageReference Include="Squidex.Assets.TusAdapter" Version="7.23.0" />
<PackageReference Include="Squidex.ClientLibrary" Version="21.5.0" />
<PackageReference Include="Squidex.Events.GetEventStore" Version="7.23.0" />
<PackageReference Include="Squidex.Hosting" Version="7.23.0" />
<PackageReference Include="Squidex.Messaging.All" Version="7.23.0" />
<PackageReference Include="Squidex.Messaging.Subscriptions" Version="7.23.0" />
<PackageReference Include="Squidex.Assets.Azure" Version="7.25.0" />
<PackageReference Include="Squidex.Assets.GoogleCloud" Version="7.25.0" />
<PackageReference Include="Squidex.Assets.FTP" Version="7.25.0" />
<PackageReference Include="Squidex.Assets.ImageSharp" Version="7.25.0" />
<PackageReference Include="Squidex.Assets.S3" Version="7.25.0" />
<PackageReference Include="Squidex.Assets.TusAdapter" Version="7.25.0" />
<PackageReference Include="Squidex.ClientLibrary" Version="21.7.0" />
<PackageReference Include="Squidex.Events.GetEventStore" Version="7.25.0" />
<PackageReference Include="Squidex.Hosting" Version="7.25.0" />
<PackageReference Include="Squidex.Messaging.All" Version="7.25.0" />
<PackageReference Include="Squidex.Messaging.Subscriptions" Version="7.25.0" />
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="all" />
<PackageReference Include="YDotNet" Version="0.4.3" />
<PackageReference Include="YDotNet.Native" Version="0.4.3" />
@ -83,11 +83,11 @@
</ItemGroup>
<ItemGroup Condition="'$(IncludeMagick)' == 'true'">
<PackageReference Include="Squidex.Assets.ImageMagick" Version="7.23.0" />
<PackageReference Include="Squidex.Assets.ImageMagick" Version="7.25.0" />
</ItemGroup>
<ItemGroup Condition="'$(IncludeKafka)' == 'true'">
<PackageReference Include="Squidex.Messaging.Kafka" Version="7.23.0" />
<PackageReference Include="Squidex.Messaging.Kafka" Version="7.25.0" />
</ItemGroup>
<PropertyGroup>

39
frontend/src/app/features/rules/shared/state-step.component.html

@ -18,16 +18,15 @@
</ng-container>
<ng-container details>
@if (state) {
<ul class="nav nav-tabs2 mt-2">
@if (stepInfo.properties.length > 0) {
<li class="nav-item">
<a class="nav-link" [class.active]="attemptIndex === -1" (click)="selectAttempt(-1)">
{{ "common.properties" | sqxTranslate }}
</a>
</li>
}
<ul class="nav nav-tabs2 mt-2">
@if (stepInfo.properties.length > 0) {
<li class="nav-item">
<a class="nav-link" [class.active]="attemptIndex === -1" (click)="selectAttempt(-1)">
{{ "common.properties" | sqxTranslate }}
</a>
</li>
}
@if (state) {
@for (attempt of state.attempts; let i = $index; track i) {
<li class="nav-item">
<a class="nav-link" [class.active]="attemptIndex === i" (click)="selectAttempt(i)">
@ -38,17 +37,17 @@
</a>
</li>
}
</ul>
@if (attemptIndex === -1) {
<div class="details">
@for (property of stepInfo.properties; track property.name) {
<sqx-state-step-property [property]="property" [value]="$any(stepDefinition)[property.name]" />
}
</div>
} @else if (state.attempts[attemptIndex]) {
<div class="details"><sqx-state-attempt [attempt]="state.attempts[attemptIndex]" /></div>
}
</ul>
@if (attemptIndex === -1) {
<div class="details">
@for (property of stepInfo.properties; track property.name) {
<sqx-state-step-property [property]="property" [value]="$any(stepDefinition)[property.name]" />
}
</div>
} @else if (state && state.attempts[attemptIndex]) {
<div class="details"><sqx-state-attempt [attempt]="state.attempts[attemptIndex]" /></div>
}
</ng-container>
</sqx-history-step>

2
frontend/src/app/features/settings/pages/clients/client.component.html

@ -92,7 +92,7 @@
</div>
</div>
<div class="form-group row gx-2">
<div class="form-group row">
<label class="col-3 col-form-label"> {{ "clients.apiCallsLimit" | sqxTranslate }} </label>
<div class="col">
<div class="row gx-2">

2
frontend/src/app/shared/services/rules.service.ts

@ -180,7 +180,7 @@ export class RulesService {
const url = this.apiUrl.buildUrl(link.href);
return this.http.request(link.method, url, { body: {} }).pipe(
return this.http.request<any>(link.method, url, { body: {} }).pipe(
pretifyError('i18n:rules.triggerFailed'));
}

Loading…
Cancel
Save