Add project files.
This commit is contained in:
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"name": "javascript",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"build": "npx webpack"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"devDependencies": {
|
||||
"lodash": "^4.17.21",
|
||||
"moment": "^2.30.1",
|
||||
"terser-webpack-plugin": "^5.3.10",
|
||||
"webpack": "^5.95.0",
|
||||
"webpack-cli": "^5.1.4"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
module.exports = require('lodash');
|
||||
@@ -0,0 +1 @@
|
||||
module.exports = require('lodash/fp');
|
||||
@@ -0,0 +1 @@
|
||||
module.exports = require('moment');
|
||||
@@ -0,0 +1,24 @@
|
||||
const path = require('path');
|
||||
const TerserPlugin = require('terser-webpack-plugin');
|
||||
|
||||
module.exports = {
|
||||
entry: {
|
||||
lodash: './src/lodash.js',
|
||||
lodashFp: './src/lodashFp.js',
|
||||
moment: './src/moment.js'
|
||||
},
|
||||
output: {
|
||||
filename: '[name].js',
|
||||
path: path.resolve(__dirname, 'dist'),
|
||||
library: '[name]',
|
||||
libraryTarget: 'umd',
|
||||
globalObject: 'this'
|
||||
},
|
||||
optimization: {
|
||||
minimize: true,
|
||||
minimizer: [new TerserPlugin({
|
||||
extractComments: false
|
||||
})],
|
||||
},
|
||||
mode: 'production'
|
||||
};
|
||||
@@ -0,0 +1,28 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<Description>
|
||||
Provides the following JavaScript libraries for Elsa:
|
||||
- lodash
|
||||
- moment
|
||||
</Description>
|
||||
<PackageTags>elsa module expressions scripting javascript libraries</PackageTags>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\common\Elsa.Features\Elsa.Features.csproj" />
|
||||
<ProjectReference Include="..\Elsa.JavaScript\Elsa.JavaScript.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Remove="ClientLib\dist\*.js" />
|
||||
<EmbeddedResource Include="ClientLib\dist\*.js">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="ClientLib\dist\" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -0,0 +1,2 @@
|
||||
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||
<s:Boolean x:Key="/Default/CodeInspection/NamespaceProvider/NamespaceFoldersToSkip/=features/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
|
||||
@@ -0,0 +1,34 @@
|
||||
using Elsa.Extensions;
|
||||
using Elsa.JavaScript.Features;
|
||||
|
||||
namespace Elsa.JavaScript.Libraries.Extensions;
|
||||
|
||||
public static class JavaScriptFeatureExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// Adds the Lodash library to the JavaScript engine.
|
||||
/// </summary>
|
||||
public static JavaScriptFeature UseLodash(this JavaScriptFeature feature)
|
||||
{
|
||||
feature.Module.Use<LodashFeature>();
|
||||
return feature;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds the Lodash FP library to the JavaScript engine.
|
||||
/// </summary>
|
||||
public static JavaScriptFeature UseLodashFp(this JavaScriptFeature feature)
|
||||
{
|
||||
feature.Module.Use<LodashFpFeature>();
|
||||
return feature;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Adds the Moment library to the JavaScript engine.
|
||||
/// </summary>
|
||||
public static JavaScriptFeature UseMoment(this JavaScriptFeature feature)
|
||||
{
|
||||
feature.Module.Use<MomentFeature>();
|
||||
return feature;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
using Elsa.Features.Services;
|
||||
|
||||
namespace Elsa.JavaScript.Libraries;
|
||||
|
||||
public class LodashFeature(IModule module) : ScriptModuleFeatureBase("lodash", module);
|
||||
@@ -0,0 +1,5 @@
|
||||
using Elsa.Features.Services;
|
||||
|
||||
namespace Elsa.JavaScript.Libraries;
|
||||
|
||||
public class LodashFpFeature(IModule module) : ScriptModuleFeatureBase("lodashFp", module);
|
||||
@@ -0,0 +1,5 @@
|
||||
using Elsa.Features.Services;
|
||||
|
||||
namespace Elsa.JavaScript.Libraries;
|
||||
|
||||
public class MomentFeature(IModule module) : ScriptModuleFeatureBase("moment", module);
|
||||
@@ -0,0 +1,27 @@
|
||||
using System.Reflection;
|
||||
using Elsa.Extensions;
|
||||
using Elsa.Features.Abstractions;
|
||||
using Elsa.Features.Attributes;
|
||||
using Elsa.Features.Services;
|
||||
using Elsa.JavaScript.Features;
|
||||
|
||||
namespace Elsa.JavaScript.Libraries;
|
||||
|
||||
[DependsOn(typeof(JavaScriptFeature))]
|
||||
public abstract class ScriptModuleFeatureBase(string moduleName, IModule module) : FeatureBase(module)
|
||||
{
|
||||
public override void Configure()
|
||||
{
|
||||
Module.UseJavaScript(jintOptions =>
|
||||
{
|
||||
jintOptions.ConfigureEngine((engine, context) =>
|
||||
{
|
||||
var resourceName = $"Elsa.JavaScript.Libraries.ClientLib.dist.{moduleName}.js";
|
||||
using var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)!;
|
||||
using var reader = new StreamReader(stream);
|
||||
var script = reader.ReadToEnd();
|
||||
engine.Execute(script);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
|
||||
<ConfigureAwait />
|
||||
</Weavers>
|
||||
Reference in New Issue
Block a user