Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/Squidex/squidex
Browse files Browse the repository at this point in the history
  • Loading branch information
SebastianStehle committed Apr 15, 2024
2 parents 2eb667a + 43b895b commit 93d9852
Show file tree
Hide file tree
Showing 105 changed files with 1,361 additions and 883 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/dev.yml
Expand Up @@ -25,15 +25,15 @@ jobs:
uses: docker/setup-qemu-action@v3.0.0

- name: Prepare - Setup Docker Buildx
uses: docker/setup-buildx-action@v3.1.0
uses: docker/setup-buildx-action@v3.2.0

- name: Prepare - Setup Node
uses: actions/setup-node@v4.0.2
with:
node-version: 18

- name: Build - BUILD
uses: docker/build-push-action@v5.2.0
uses: docker/build-push-action@v5.3.0
with:
load: true
build-args: "SQUIDEX__RUNTIME__VERSION=7.0.0-dev-${{ env.BUILD_NUMBER }}"
Expand Down Expand Up @@ -130,7 +130,7 @@ jobs:
- name: Publish - Login to Docker Hub
if: github.event_name != 'pull_request'
uses: docker/login-action@v3.0.0
uses: docker/login-action@v3.1.0
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/make-screenshots.yml
Expand Up @@ -15,15 +15,15 @@ jobs:
uses: docker/setup-qemu-action@v3.0.0

- name: Prepare - Setup Docker Buildx
uses: docker/setup-buildx-action@v3.1.0
uses: docker/setup-buildx-action@v3.2.0

- name: Prepare - Setup Node
uses: actions/setup-node@v4.0.2
with:
node-version: 18

- name: Build - BUILD
uses: docker/build-push-action@v5.2.0
uses: docker/build-push-action@v5.3.0
with:
load: true
cache-from: type=gha
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/release.yml
Expand Up @@ -20,15 +20,15 @@ jobs:
uses: docker/setup-qemu-action@v3.0.0

- name: Prepare - Setup Docker Buildx
uses: docker/setup-buildx-action@v3.1.0
uses: docker/setup-buildx-action@v3.2.0

- name: Prepare - Setup Node
uses: actions/setup-node@v4.0.2
with:
node-version: 18

- name: Build - BUILD
uses: docker/build-push-action@v5.2.0
uses: docker/build-push-action@v5.3.0
with:
load: true
build-args: "SQUIDEX__BUILD__VERSION=${{ env.GITHUB_REF_SLUG }},SQUIDEX__RUNTIME__VERSION=${{ env.GITHUB_REF_SLUG }}"
Expand Down Expand Up @@ -131,7 +131,7 @@ jobs:
fi
- name: Publish - Login to Docker Hub
uses: docker/login-action@v3.0.0
uses: docker/login-action@v3.1.0
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
Expand Down Expand Up @@ -167,7 +167,7 @@ jobs:

- name: Release - Get Changelog Entry
id: changelog_reader
uses: mindsers/changelog-reader-action@v2.2.2
uses: mindsers/changelog-reader-action@v2.2.3
with:
version: ${{ env.GITHUB_REF_SLUG }}
path: ./CHANGELOG.md
Expand Down
Expand Up @@ -16,10 +16,10 @@
<PackageReference Include="Confluent.SchemaRegistry.Serdes.Avro" Version="2.3.0" />
<PackageReference Include="CoreTweet" Version="1.0.0.483" />
<PackageReference Include="Elasticsearch.Net" Version="7.17.5" />
<PackageReference Include="Google.Cloud.Diagnostics.Common" Version="5.1.0" />
<PackageReference Include="Google.Cloud.Diagnostics.Common" Version="5.2.0" />
<PackageReference Include="Google.Cloud.Logging.V2" Version="4.2.0" />
<PackageReference Include="Google.Cloud.Monitoring.V3" Version="3.6.0" />
<PackageReference Include="Meziantou.Analyzer" Version="2.0.145">
<PackageReference Include="Meziantou.Analyzer" Version="2.0.146">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
Expand Down
2 changes: 1 addition & 1 deletion backend/src/Migrations/Migrations.csproj
Expand Up @@ -6,7 +6,7 @@
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Meziantou.Analyzer" Version="2.0.145">
<PackageReference Include="Meziantou.Analyzer" Version="2.0.146">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
Expand Down
Expand Up @@ -12,7 +12,7 @@
<DebugSymbols>True</DebugSymbols>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Meziantou.Analyzer" Version="2.0.145">
<PackageReference Include="Meziantou.Analyzer" Version="2.0.146">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
Expand Down
@@ -0,0 +1,56 @@
// ==========================================================================
// Squidex Headless CMS
// ==========================================================================
// Copyright (c) Squidex UG (haftungsbeschraenkt)
// All rights reserved. Licensed under the MIT license.
// ==========================================================================

using Squidex.Domain.Apps.Core.Contents;
using Squidex.Domain.Apps.Core.Schemas;
using Squidex.Domain.Apps.Core.Scripting;
using Squidex.Infrastructure.Json.Objects;

namespace Squidex.Domain.Apps.Core.ConvertContent;

public sealed class UpdateValues : IContentValueConverter
{
private readonly ContentData existingData;
private readonly IScriptEngine scriptEngine;
private ScriptVars? vars;

public UpdateValues(ContentData existingData, IScriptEngine scriptEngine)
{
this.existingData = existingData;
this.scriptEngine = scriptEngine;
}

public (bool Remove, JsonValue) ConvertValue(IField field, JsonValue source, IField? parent)
{
if (source.Value is not JsonObject jsonObject)
{
return (false, source);
}

if (jsonObject.TryGetValue("$unset", out var value1) && !Equals(value1.Value, false))
{
return (true, source);
}

if (!jsonObject.TryGetValue("$update", out var value2) || value2.Value is not string update)
{
return (false, source);
}

var options = new ScriptOptions { Readonly = true };

vars ??= new ScriptVars
{
["$data"] = existingData,
["$self"] = jsonObject
};

var result = scriptEngine.Execute(vars, update, options);

return (false, result);
}
}
Expand Up @@ -7,6 +7,7 @@

using System.Diagnostics;
using Jint.Native;
using Squidex.Domain.Apps.Core.Scripting.Internal;
using Squidex.Infrastructure.Json.Objects;

namespace Squidex.Domain.Apps.Core.Scripting.ContentWrapper;
Expand Down
Expand Up @@ -7,8 +7,8 @@

using Jint.Native;
using Jint.Runtime;
using Squidex.AI;
using Squidex.Domain.Apps.Core.Properties;
using Squidex.Text.ChatBots;
using Squidex.Text.Translations;

#pragma warning disable CA1826 // Do not use Enumerable methods on indexable collections
Expand Down Expand Up @@ -61,17 +61,9 @@ private void Generate(ScriptExecutionContext context, string prompt, Action<JsVa
return;
}
var conversationId = Guid.NewGuid().ToString();
try
{
var result = await chatAgent.PromptAsync(conversationId, prompt, ct);
var result = await chatAgent.PromptAsync(prompt, ct: ct);
scheduler.Run(callback, JsValue.FromObject(context.Engine, result.Text));
}
finally
{
await chatAgent.StopConversationAsync(conversationId);
}
scheduler.Run(callback, JsValue.FromObject(context.Engine, result.Text));
}
catch (Exception ex)
{
Expand Down
Expand Up @@ -14,6 +14,7 @@
using Squidex.Domain.Apps.Core.Contents;
using Squidex.Domain.Apps.Core.Scripting.ContentWrapper;
using Squidex.Infrastructure;
using Squidex.Infrastructure.Json.Objects;
using Squidex.Shared.Users;

namespace Squidex.Domain.Apps.Core.Scripting.Internal;
Expand Down Expand Up @@ -44,6 +45,9 @@ public bool TryConvert(Engine engine, object value, [MaybeNullWhen(false)] out J
case ClaimsPrincipal principal:
result = JintUser.Create(engine, principal);
return true;
case JsonValue jsonValue:
result = JsonMapper.Map(jsonValue, engine);
return true;
case DomainId domainId:
result = domainId.ToString();
return true;
Expand Down
Expand Up @@ -14,7 +14,7 @@
using Squidex.Infrastructure;
using Squidex.Infrastructure.Json.Objects;

namespace Squidex.Domain.Apps.Core.Scripting.ContentWrapper;
namespace Squidex.Domain.Apps.Core.Scripting.Internal;

public static class JsonMapper
{
Expand Down
Expand Up @@ -152,8 +152,9 @@ private ScriptExecutionContext<T> CreateEngine<T>(ScriptOptions options, Cancell

var engine = new Engine(engineOptions =>
{
engineOptions.SetTypeConverter(engine => new CustomClrConverter(engine));
engineOptions.AddObjectConverter(JintObjectConverter.Instance);
engineOptions.AllowClrWrite(!options.Readonly);
engineOptions.SetTypeConverter(engine => new CustomClrConverter(engine));
engineOptions.SetReferencesResolver(NullPropagation.Instance);
engineOptions.Strict();
Expand Down
Expand Up @@ -14,4 +14,6 @@ public record struct ScriptOptions
public bool CanDisallow { get; set; }

public bool AsContext { get; set; }

public bool Readonly { get; set; }
}
Expand Up @@ -18,17 +18,18 @@
<ProjectReference Include="..\Squidex.Shared\Squidex.Shared.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Fluid.Core" Version="2.5.0" />
<PackageReference Include="Fluid.Core" Version="2.7.0" />
<PackageReference Include="GeoJSON.Net" Version="1.2.19" />
<PackageReference Include="Jint" Version="3.0.1" />
<PackageReference Include="Meziantou.Analyzer" Version="2.0.145">
<PackageReference Include="Meziantou.Analyzer" Version="2.0.146">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.Extensions.Http" Version="8.0.0" />
<PackageReference Include="NJsonSchema" Version="11.0.0" />
<PackageReference Include="RefactoringEssentials" Version="5.6.0" PrivateAssets="all" />
<PackageReference Include="Squidex.Messaging.Subscriptions" Version="6.4.1" />
<PackageReference Include="Squidex.AI" Version="6.6.4" />
<PackageReference Include="Squidex.Messaging.Subscriptions" Version="6.6.4" />
<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" />
Expand Down
Expand Up @@ -7,15 +7,15 @@

using Squidex.Domain.Apps.Core.Rules.EnrichedEvents;
using Squidex.Domain.Apps.Events.Assets;
using Squidex.Shared;
using Squidex.Messaging.Subscriptions;

namespace Squidex.Domain.Apps.Core.Subscriptions;

public sealed class AssetSubscription : AppSubscription
public sealed class AssetSubscription : ISubscription
{
public EnrichedAssetEventType? Type { get; set; }
public EnrichedAssetEventType? Type { get; init; }

public override ValueTask<bool> ShouldHandle(object message)
public ValueTask<bool> ShouldHandle(object message)
{
return new ValueTask<bool>(ShouldHandleCore(message));
}
Expand All @@ -25,24 +25,14 @@ private bool ShouldHandleCore(object message)
switch (message)
{
case EnrichedAssetEvent enrichedAssetEvent:
return ShouldHandle(enrichedAssetEvent);
return CheckType(enrichedAssetEvent);
case AssetEvent assetEvent:
return ShouldHandle(assetEvent);
return CheckType(assetEvent);
default:
return false;
}
}

private bool ShouldHandle(EnrichedAssetEvent @event)
{
return CheckType(@event) && CheckPermission(@event.AppId.Name);
}

private bool ShouldHandle(AssetEvent @event)
{
return CheckType(@event) && CheckPermission(@event.AppId.Name);
}

private bool CheckType(EnrichedAssetEvent @event)
{
return Type == null || Type.Value == @event.Type;
Expand All @@ -64,11 +54,4 @@ private bool CheckType(AssetEvent @event)
return true;
}
}

private bool CheckPermission(string appName)
{
var permission = PermissionIds.ForApp(PermissionIds.AppAssetsRead, appName);

return Permissions.Includes(permission);
}
}
Expand Up @@ -7,17 +7,21 @@

using Squidex.Domain.Apps.Core.Rules.EnrichedEvents;
using Squidex.Domain.Apps.Events.Contents;
using Squidex.Infrastructure.Security;
using Squidex.Messaging.Subscriptions;
using Squidex.Shared;

namespace Squidex.Domain.Apps.Core.Subscriptions;

public sealed class ContentSubscription : AppSubscription
public sealed class ContentSubscription : ISubscription
{
public PermissionSet Permissions { get; set; }

public string? SchemaName { get; set; }

public EnrichedContentEventType? Type { get; set; }

public override ValueTask<bool> ShouldHandle(object message)
public ValueTask<bool> ShouldHandle(object message)
{
return new ValueTask<bool>(ShouldHandleCore(message));
}
Expand Down

0 comments on commit 93d9852

Please sign in to comment.