Skip to content

Commit

Permalink
Field selector (#1002)
Browse files Browse the repository at this point in the history
* Temp

* Fix backup and warnings.

* Fix tests

* Another test fix.

* Fix resolve url.

* Fix tests and add headers.

* Another test fix.

* Add some comments.
  • Loading branch information
SebastianStehle committed Jul 9, 2023
1 parent 1a1d517 commit 835031d
Show file tree
Hide file tree
Showing 107 changed files with 1,318 additions and 644 deletions.
5 changes: 4 additions & 1 deletion backend/.editorconfig
Expand Up @@ -172,4 +172,7 @@ dotnet_diagnostic.SA1602.severity = none
dotnet_diagnostic.SA1615.severity = none

# SA1623: Property summary documentation should match accessors
dotnet_diagnostic.SA1623.severity = none
dotnet_diagnostic.SA1623.severity = none

# xUnit1033: Test classes decorated with 'Xunit.IClassFixture<TFixture>' or 'Xunit.ICollectionFixture<TFixture>' should add a constructor argument of type TFixture
dotnet_diagnostic.xUnit1033.severity = none
12 changes: 12 additions & 0 deletions backend/i18n/frontend_en.json
Expand Up @@ -986,17 +986,29 @@
"schemas.tabFields": "Fields",
"schemas.tabJson": "Json",
"schemas.tableHeaders.created": "Created",
"schemas.tableHeaders.created_title": "Created",
"schemas.tableHeaders.createdBy": "Created By",
"schemas.tableHeaders.createdBy_title": "Created By",
"schemas.tableHeaders.createdByShort": "By",
"schemas.tableHeaders.createdByShort_title": "Created By (Avatar only)",
"schemas.tableHeaders.id": "Id",
"schemas.tableHeaders.id_title": "Id",
"schemas.tableHeaders.lastModified": "Updated",
"schemas.tableHeaders.lastModified_title": "Updated",
"schemas.tableHeaders.lastModifiedBy": "Updated By",
"schemas.tableHeaders.lastModifiedBy_title": "Updated By",
"schemas.tableHeaders.lastModifiedByShort": "By",
"schemas.tableHeaders.lastModifiedByShort_title": "Updated By (Avatar only)",
"schemas.tableHeaders.nextStatus": "Next Status",
"schemas.tableHeaders.nextStatus_title": "Next Status",
"schemas.tableHeaders.status": "Status",
"schemas.tableHeaders.status_title": "Status",
"schemas.tableHeaders.translationStatus": "Translation Status",
"schemas.tableHeaders.translationStatus_title": "Translation Status (current Language)",
"schemas.tableHeaders.translationStatusAverage": "Average Translation Status",
"schemas.tableHeaders.translationStatusAverage_title": "Translation Status (average across Languages)",
"schemas.tableHeaders.version": "Version",
"schemas.tableHeaders.version_title": "Version",
"schemas.tabMore": "More",
"schemas.tabScripts": "Scripts",
"schemas.tabUI": "UI",
Expand Down
12 changes: 12 additions & 0 deletions backend/i18n/frontend_fr.json
Expand Up @@ -986,17 +986,29 @@
"schemas.tabFields": "Des champs",
"schemas.tabJson": "Json",
"schemas.tableHeaders.created": "Créé",
"schemas.tableHeaders.created_title": "Created",
"schemas.tableHeaders.createdBy": "Créé par",
"schemas.tableHeaders.createdBy_title": "Created By",
"schemas.tableHeaders.createdByShort": "Par",
"schemas.tableHeaders.createdByShort_title": "Created By (Avatar only)",
"schemas.tableHeaders.id": "Identifiant",
"schemas.tableHeaders.id_title": "Id",
"schemas.tableHeaders.lastModified": "Mis à jour",
"schemas.tableHeaders.lastModified_title": "Updated",
"schemas.tableHeaders.lastModifiedBy": "Mis à jour par",
"schemas.tableHeaders.lastModifiedBy_title": "Updated By",
"schemas.tableHeaders.lastModifiedByShort": "Par",
"schemas.tableHeaders.lastModifiedByShort_title": "Updated By (Avatar only)",
"schemas.tableHeaders.nextStatus": "Statut suivant",
"schemas.tableHeaders.nextStatus_title": "Next Status",
"schemas.tableHeaders.status": "Statut",
"schemas.tableHeaders.status_title": "Status",
"schemas.tableHeaders.translationStatus": "Statut de la traduction",
"schemas.tableHeaders.translationStatus_title": "Translation Status (current Language)",
"schemas.tableHeaders.translationStatusAverage": "État de traduction moyen",
"schemas.tableHeaders.translationStatusAverage_title": "Translation Status (average across Languages)",
"schemas.tableHeaders.version": "Version",
"schemas.tableHeaders.version_title": "Version",
"schemas.tabMore": "Plus",
"schemas.tabScripts": "Scénarios",
"schemas.tabUI": "interface utilisateur",
Expand Down
12 changes: 12 additions & 0 deletions backend/i18n/frontend_it.json
Expand Up @@ -986,17 +986,29 @@
"schemas.tabFields": "Campi",
"schemas.tabJson": "Json",
"schemas.tableHeaders.created": "Creato",
"schemas.tableHeaders.created_title": "Created",
"schemas.tableHeaders.createdBy": "Creato da",
"schemas.tableHeaders.createdBy_title": "Created By",
"schemas.tableHeaders.createdByShort": "Da",
"schemas.tableHeaders.createdByShort_title": "Created By (Avatar only)",
"schemas.tableHeaders.id": "Id",
"schemas.tableHeaders.id_title": "Id",
"schemas.tableHeaders.lastModified": "Modificato",
"schemas.tableHeaders.lastModified_title": "Updated",
"schemas.tableHeaders.lastModifiedBy": "Modificato da",
"schemas.tableHeaders.lastModifiedBy_title": "Updated By",
"schemas.tableHeaders.lastModifiedByShort": "Da",
"schemas.tableHeaders.lastModifiedByShort_title": "Updated By (Avatar only)",
"schemas.tableHeaders.nextStatus": "Stato successivo",
"schemas.tableHeaders.nextStatus_title": "Next Status",
"schemas.tableHeaders.status": "Stato",
"schemas.tableHeaders.status_title": "Status",
"schemas.tableHeaders.translationStatus": "Translation Status",
"schemas.tableHeaders.translationStatus_title": "Translation Status (current Language)",
"schemas.tableHeaders.translationStatusAverage": "Average Translation Status",
"schemas.tableHeaders.translationStatusAverage_title": "Translation Status (average across Languages)",
"schemas.tableHeaders.version": "Versione",
"schemas.tableHeaders.version_title": "Version",
"schemas.tabMore": "Altro",
"schemas.tabScripts": "Script",
"schemas.tabUI": "UI",
Expand Down
12 changes: 12 additions & 0 deletions backend/i18n/frontend_nl.json
Expand Up @@ -986,17 +986,29 @@
"schemas.tabFields": "Velden",
"schemas.tabJson": "Json",
"schemas.tableHeaders.created": "Gemaakt",
"schemas.tableHeaders.created_title": "Created",
"schemas.tableHeaders.createdBy": "Gemaakt door",
"schemas.tableHeaders.createdBy_title": "Created By",
"schemas.tableHeaders.createdByShort": "Door",
"schemas.tableHeaders.createdByShort_title": "Created By (Avatar only)",
"schemas.tableHeaders.id": "Id",
"schemas.tableHeaders.id_title": "Id",
"schemas.tableHeaders.lastModified": "Bijgewerkt",
"schemas.tableHeaders.lastModified_title": "Updated",
"schemas.tableHeaders.lastModifiedBy": "Bijgewerkt door",
"schemas.tableHeaders.lastModifiedBy_title": "Updated By",
"schemas.tableHeaders.lastModifiedByShort": "Door",
"schemas.tableHeaders.lastModifiedByShort_title": "Updated By (Avatar only)",
"schemas.tableHeaders.nextStatus": "Volgende status",
"schemas.tableHeaders.nextStatus_title": "Next Status",
"schemas.tableHeaders.status": "Status",
"schemas.tableHeaders.status_title": "Status",
"schemas.tableHeaders.translationStatus": "Translation Status",
"schemas.tableHeaders.translationStatus_title": "Translation Status (current Language)",
"schemas.tableHeaders.translationStatusAverage": "Average Translation Status",
"schemas.tableHeaders.translationStatusAverage_title": "Translation Status (average across Languages)",
"schemas.tableHeaders.version": "Versie",
"schemas.tableHeaders.version_title": "Version",
"schemas.tabMore": "Meer",
"schemas.tabScripts": "Scripts",
"schemas.tabUI": "UI",
Expand Down
12 changes: 12 additions & 0 deletions backend/i18n/frontend_pt.json
Expand Up @@ -986,17 +986,29 @@
"schemas.tabFields": "Campos",
"schemas.tabJson": "Json",
"schemas.tableHeaders.created": "Criado",
"schemas.tableHeaders.created_title": "Created",
"schemas.tableHeaders.createdBy": "Criado por",
"schemas.tableHeaders.createdBy_title": "Created By",
"schemas.tableHeaders.createdByShort": "Por",
"schemas.tableHeaders.createdByShort_title": "Created By (Avatar only)",
"schemas.tableHeaders.id": "Id",
"schemas.tableHeaders.id_title": "Id",
"schemas.tableHeaders.lastModified": "Actualizado",
"schemas.tableHeaders.lastModified_title": "Updated",
"schemas.tableHeaders.lastModifiedBy": "Actualizado por",
"schemas.tableHeaders.lastModifiedBy_title": "Updated By",
"schemas.tableHeaders.lastModifiedByShort": "Por",
"schemas.tableHeaders.lastModifiedByShort_title": "Updated By (Avatar only)",
"schemas.tableHeaders.nextStatus": "Próximo Estado",
"schemas.tableHeaders.nextStatus_title": "Next Status",
"schemas.tableHeaders.status": "Estado",
"schemas.tableHeaders.status_title": "Status",
"schemas.tableHeaders.translationStatus": "Estado da Tradução",
"schemas.tableHeaders.translationStatus_title": "Translation Status (current Language)",
"schemas.tableHeaders.translationStatusAverage": "Estado médio da tradução",
"schemas.tableHeaders.translationStatusAverage_title": "Translation Status (average across Languages)",
"schemas.tableHeaders.version": "Versão",
"schemas.tableHeaders.version_title": "Version",
"schemas.tabMore": "Mais",
"schemas.tabScripts": "Scripts",
"schemas.tabUI": "UI",
Expand Down
12 changes: 12 additions & 0 deletions backend/i18n/frontend_zh.json
Expand Up @@ -986,17 +986,29 @@
"schemas.tabFields": "字段",
"schemas.tabJson": "Json",
"schemas.tableHeaders.created": "创建",
"schemas.tableHeaders.created_title": "Created",
"schemas.tableHeaders.createdBy": "创建者",
"schemas.tableHeaders.createdBy_title": "Created By",
"schemas.tableHeaders.createdByShort": "By",
"schemas.tableHeaders.createdByShort_title": "Created By (Avatar only)",
"schemas.tableHeaders.id": "Id",
"schemas.tableHeaders.id_title": "Id",
"schemas.tableHeaders.lastModified": "更新",
"schemas.tableHeaders.lastModified_title": "Updated",
"schemas.tableHeaders.lastModifiedBy": "更新者",
"schemas.tableHeaders.lastModifiedBy_title": "Updated By",
"schemas.tableHeaders.lastModifiedByShort": "By",
"schemas.tableHeaders.lastModifiedByShort_title": "Updated By (Avatar only)",
"schemas.tableHeaders.nextStatus": "下一个状态",
"schemas.tableHeaders.nextStatus_title": "Next Status",
"schemas.tableHeaders.status": "状态",
"schemas.tableHeaders.status_title": "Status",
"schemas.tableHeaders.translationStatus": "Translation Status",
"schemas.tableHeaders.translationStatus_title": "Translation Status (current Language)",
"schemas.tableHeaders.translationStatusAverage": "Average Translation Status",
"schemas.tableHeaders.translationStatusAverage_title": "Translation Status (average across Languages)",
"schemas.tableHeaders.version": "版本",
"schemas.tableHeaders.version_title": "Version",
"schemas.tabMore": "More",
"schemas.tabScripts": "Scripts",
"schemas.tabUI": "UI",
Expand Down
12 changes: 12 additions & 0 deletions backend/i18n/source/frontend_en.json
Expand Up @@ -986,17 +986,29 @@
"schemas.tabFields": "Fields",
"schemas.tabJson": "Json",
"schemas.tableHeaders.created": "Created",
"schemas.tableHeaders.created_title": "Created",
"schemas.tableHeaders.createdBy": "Created By",
"schemas.tableHeaders.createdBy_title": "Created By",
"schemas.tableHeaders.createdByShort": "By",
"schemas.tableHeaders.createdByShort_title": "Created By (Avatar only)",
"schemas.tableHeaders.id": "Id",
"schemas.tableHeaders.id_title": "Id",
"schemas.tableHeaders.lastModified": "Updated",
"schemas.tableHeaders.lastModified_title": "Updated",
"schemas.tableHeaders.lastModifiedBy": "Updated By",
"schemas.tableHeaders.lastModifiedBy_title": "Updated By",
"schemas.tableHeaders.lastModifiedByShort": "By",
"schemas.tableHeaders.lastModifiedByShort_title": "Updated By (Avatar only)",
"schemas.tableHeaders.nextStatus": "Next Status",
"schemas.tableHeaders.nextStatus_title": "Next Status",
"schemas.tableHeaders.status": "Status",
"schemas.tableHeaders.status_title": "Status",
"schemas.tableHeaders.translationStatus": "Translation Status",
"schemas.tableHeaders.translationStatus_title": "Translation Status (current Language)",
"schemas.tableHeaders.translationStatusAverage": "Average Translation Status",
"schemas.tableHeaders.translationStatusAverage_title": "Translation Status (average across Languages)",
"schemas.tableHeaders.version": "Version",
"schemas.tableHeaders.version_title": "Version",
"schemas.tabMore": "More",
"schemas.tabScripts": "Scripts",
"schemas.tabUI": "UI",
Expand Down
Expand Up @@ -16,7 +16,7 @@ namespace Squidex.Domain.Apps.Core.Scripting.ContentWrapper;

public static class JsonMapper
{
private class JsonObjectInstance : ObjectInstance
private sealed class JsonObjectInstance : ObjectInstance
{
public JsonObjectInstance(Engine engine)
: base(engine)
Expand Down
Expand Up @@ -35,7 +35,7 @@ public static List<DomainId> ToIds(this JsValue? value)
return ids;
}

internal static ScriptExecutionContext<T> ExtendAsync<T>(this ScriptExecutionContext<T> context,
internal static ScriptExecutionContext<T> ExtendWithAsyncFunctions<T>(this ScriptExecutionContext<T> context,
IEnumerable<IJintExtension> extensions)
{
foreach (var extension in extensions)
Expand All @@ -46,7 +46,7 @@ public static List<DomainId> ToIds(this JsValue? value)
return context;
}

internal static ScriptExecutionContext<T> Extend<T>(this ScriptExecutionContext<T> context,
internal static ScriptExecutionContext<T> ExtendWithFunctions<T>(this ScriptExecutionContext<T> context,
IEnumerable<IJintExtension> extensions)
{
foreach (var extension in extensions)
Expand All @@ -57,7 +57,7 @@ public static List<DomainId> ToIds(this JsValue? value)
return context;
}

internal static ScriptExecutionContext<T> Extend<T>(this ScriptExecutionContext<T> context,
internal static ScriptExecutionContext<T> ExtendWithVariables<T>(this ScriptExecutionContext<T> context,
ScriptVars vars,
ScriptOptions options)
{
Expand Down
Expand Up @@ -53,10 +53,10 @@ public JintScriptEngine(IMemoryCache cache, IOptions<JintScriptOptions> options,
combined.CancelAfter(timeoutExecution);

var context =
CreateEngine<JsonValue?>(options, combined.Token)
.Extend(vars, options)
.Extend(extensions)
.ExtendAsync(extensions);
CreateEngine<JsonValue>(options, combined.Token)
.ExtendWithVariables(vars, options)
.ExtendWithFunctions(extensions)
.ExtendWithAsyncFunctions(extensions);

context.Engine.SetValue("complete", new Action<JsValue?>(value =>
{
Expand All @@ -65,7 +65,7 @@ public JintScriptEngine(IMemoryCache cache, IOptions<JintScriptOptions> options,

var result = Execute(context, script);

return await context.CompleteAsync() ?? JsonMapper.Map(result);
return await context.WaitForCompletionAsync(() => JsonMapper.Map(result));
}
catch (Exception ex)
{
Expand All @@ -79,6 +79,8 @@ public JintScriptEngine(IMemoryCache cache, IOptions<JintScriptOptions> options,
Guard.NotNull(vars);
Guard.NotNullOrEmpty(script);

var data = vars.Data!;

using var combined = CancellationTokenSource.CreateLinkedTokenSource(ct);
try
{
Expand All @@ -87,13 +89,13 @@ public JintScriptEngine(IMemoryCache cache, IOptions<JintScriptOptions> options,

var context =
CreateEngine<ContentData>(options, combined.Token)
.Extend(vars, options)
.Extend(extensions)
.ExtendAsync(extensions);
.ExtendWithVariables(vars, options)
.ExtendWithFunctions(extensions)
.ExtendWithAsyncFunctions(extensions);

context.Engine.SetValue("complete", new Action<JsValue?>(_ =>
{
context.Complete(vars.Data!);
context.Complete(data!);
}));

context.Engine.SetValue("replace", new Action(() =>
Expand All @@ -111,7 +113,7 @@ public JintScriptEngine(IMemoryCache cache, IOptions<JintScriptOptions> options,

Execute(context, script);

return await context.CompleteAsync() ?? vars.Data!;
return await context.WaitForCompletionAsync(() => data);
}
catch (Exception ex)
{
Expand All @@ -128,8 +130,8 @@ public JsonValue Execute(ScriptVars vars, string script, ScriptOptions options =
{
var context =
CreateEngine<object>(options, default)
.Extend(vars, options)
.Extend(extensions);
.ExtendWithVariables(vars, options)
.ExtendWithFunctions(extensions);

var result = Execute(context, script);

Expand Down

0 comments on commit 835031d

Please sign in to comment.