< Summary

Information
Class: Elsa.Expressions.JavaScript.Providers.CommonFunctionsDefinitionProvider
Assembly: Elsa.Expressions.JavaScript
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Expressions.JavaScript/Providers/CommonFunctionsDefinitionProvider.cs
Line coverage
94%
Covered lines: 105
Uncovered lines: 6
Coverable lines: 111
Total lines: 167
Line coverage: 94.5%
Branch coverage
50%
Covered branches: 2
Total branches: 4
Branch coverage: 50%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
GetFunctionDefinitions()50%17633.33%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Expressions.JavaScript/Providers/CommonFunctionsDefinitionProvider.cs

#LineLine coverage
 1using Elsa.Extensions;
 2using Elsa.Expressions.JavaScript.Contracts;
 3using Elsa.Expressions.JavaScript.Extensions;
 4using Elsa.Expressions.JavaScript.Options;
 5using Elsa.Expressions.JavaScript.TypeDefinitions.Abstractions;
 6using Elsa.Expressions.JavaScript.TypeDefinitions.Models;
 7using Humanizer;
 8using JetBrains.Annotations;
 9using Microsoft.Extensions.Options;
 10
 11namespace Elsa.Expressions.JavaScript.Providers;
 12
 13/// <summary>
 14/// Produces <see cref="FunctionDefinition"/>s for common functions.
 15/// </summary>
 16[UsedImplicitly]
 417internal class CommonFunctionsDefinitionProvider(ITypeAliasRegistry typeAliasRegistry, IOptions<JintOptions> options) : 
 18{
 19    protected override IEnumerable<FunctionDefinition> GetFunctionDefinitions(TypeDefinitionContext context)
 20    {
 221        yield return CreateFunctionDefinition(builder => builder
 222            .Name("getWorkflowDefinitionId")
 223            .ReturnType("string"));
 24
 225        yield return CreateFunctionDefinition(builder => builder
 226            .Name("getWorkflowDefinitionVersionId")
 227            .ReturnType("string"));
 28
 229        yield return CreateFunctionDefinition(builder => builder
 230            .Name("getWorkflowDefinitionVersion")
 231            .ReturnType("number"));
 32
 233        yield return CreateFunctionDefinition(builder => builder
 234            .Name("getWorkflowInstanceId")
 235            .ReturnType("string"));
 36
 237        yield return CreateFunctionDefinition(builder => builder
 238            .Name("getCorrelationId")
 239            .ReturnType("string"));
 40
 241        yield return CreateFunctionDefinition(builder => builder
 242            .Name("setCorrelationId")
 243            .Parameter("value", "string"));
 44
 245        yield return CreateFunctionDefinition(builder => builder
 246            .Name("getWorkflowInstanceName")
 247            .ReturnType("string"));
 48
 249        yield return CreateFunctionDefinition(builder => builder
 250            .Name("setWorkflowInstanceName")
 251            .Parameter("value", "string"));
 52
 253        yield return CreateFunctionDefinition(builder => builder
 254            .Name("setVariable")
 255            .Parameter("name", "string")
 256            .Parameter("value", "any"));
 57
 258        yield return CreateFunctionDefinition(builder => builder
 259            .Name("getVariable")
 260            .Parameter("name", "string")
 261            .ReturnType("any"));
 62
 263        yield return CreateFunctionDefinition(builder => builder
 264            .Name("getInput")
 265            .Parameter("name", "string")
 266            .ReturnType("any"));
 67
 268        yield return CreateFunctionDefinition(builder => builder
 269            .Name("getOutputFrom")
 270            .Parameter("activityId", "string")
 271            .Parameter("outputName", "string", true)
 272            .ReturnType("any"));
 73
 274        yield return CreateFunctionDefinition(builder => builder
 275            .Name("getLastResult")
 276            .ReturnType("any"));
 77
 278        yield return CreateFunctionDefinition(builder => builder
 279            .Name("isNullOrWhiteSpace")
 280            .Parameter("value", "string")
 281            .ReturnType("boolean"));
 82
 283        yield return CreateFunctionDefinition(builder => builder
 284            .Name("isNullOrEmpty")
 285            .Parameter("value", "string")
 286            .ReturnType("boolean"));
 87
 288        yield return CreateFunctionDefinition(builder => builder
 289            .Name("parseGuid")
 290            .Parameter("value", "string")
 291            .ReturnType("Guid"));
 92
 293        yield return CreateFunctionDefinition(builder => builder
 294            .Name("getShortGuid")
 295            .ReturnType("string"));
 96
 297        yield return CreateFunctionDefinition(builder => builder
 298            .Name("getGuid")
 299            .ReturnType("Guid"));
 100
 2101        yield return CreateFunctionDefinition(builder => builder
 2102            .Name("getGuidString")
 2103            .ReturnType("string"));
 104
 2105        yield return CreateFunctionDefinition(builder => builder
 2106            .Name("toJson")
 2107            .Parameter("value", "any")
 2108            .ReturnType("string"));
 109
 2110        yield return CreateFunctionDefinition(builder => builder
 2111            .Name("bytesToString")
 2112            .Parameter("value", "Byte[]")
 2113            .ReturnType("string"));
 114
 2115        yield return CreateFunctionDefinition(builder => builder
 2116            .Name("bytesFromString")
 2117            .Parameter("value", "string")
 2118            .ReturnType("Byte[]"));
 119
 2120        yield return CreateFunctionDefinition(builder => builder
 2121            .Name("bytesToBase64")
 2122            .Parameter("value", "Byte[]")
 2123            .ReturnType("string"));
 124
 2125        yield return CreateFunctionDefinition(builder => builder
 2126            .Name("bytesFromBase64")
 2127            .Parameter("value", "string")
 2128            .ReturnType("Byte[]"));
 129
 2130        yield return CreateFunctionDefinition(builder => builder
 2131            .Name("stringFromBase64")
 2132            .Parameter("value", "string")
 2133            .ReturnType("string"));
 134
 2135        yield return CreateFunctionDefinition(builder => builder
 2136            .Name("stringToBase64")
 2137            .Parameter("value", "string")
 2138            .ReturnType("string"));
 139
 2140        yield return CreateFunctionDefinition(builder => builder
 2141            .Name("streamToBytes")
 2142            .Parameter("value", "Stream")
 2143            .ReturnType("Byte[]"));
 144
 2145        yield return CreateFunctionDefinition(builder => builder
 2146            .Name("streamToBase64")
 2147            .Parameter("value", "Stream")
 2148            .ReturnType("string"));
 149
 1150        if (!options.Value.DisableWrappers)
 151        {
 152            // Variable getter and setters.
 2153            foreach (var variable in context.WorkflowGraph.Workflow.Variables.Where(x => x.Name.IsValidVariableName()))
 154            {
 0155                var pascalName = variable.Name.Pascalize();
 0156                var variableType = variable.GetVariableType();
 0157                var typeAlias = typeAliasRegistry.TryGetAlias(variableType, out var alias) ? alias : "any";
 158
 159                // get{Variable}.
 0160                yield return CreateFunctionDefinition(builder => builder.Name($"get{pascalName}").ReturnType(typeAlias))
 161
 162                // set{Variable}.
 0163                yield return CreateFunctionDefinition(builder => builder.Name($"set{pascalName}").Parameter("value", typ
 0164            }
 165        }
 1166    }
 167}