diff --git a/.editorconfig b/.editorconfig index eaf3fae3..a2962bd0 100644 --- a/.editorconfig +++ b/.editorconfig @@ -17,13 +17,10 @@ indent_style = space indent_size = 2 insert_final_newline = true -[*.{xml,config,csproj,props,targets,nuspec}] +[*.{xml,config,slnx,csproj,props,targets,nuspec}] indent_style = space indent_size = 2 -[*.sln] -insert_final_newline = true - [*.{txt,md}] indent_style = space indent_size = unset diff --git a/.gitattributes b/.gitattributes index 4fce7533..9607807f 100644 --- a/.gitattributes +++ b/.gitattributes @@ -3,7 +3,7 @@ # Custom for Visual Studio *.cs diff=csharp -*.sln merge=union +*.slnx merge=union *.csproj merge=union # Standard to msysgit diff --git a/.gitignore b/.gitignore index 8a5400f1..9dafd006 100644 --- a/.gitignore +++ b/.gitignore @@ -5,12 +5,10 @@ # Node.js tools bower_components/ node_modules/ +package-lock.json -# Client side components -**/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/lib/ -**/scripts/build/ -**/styles/build/ -**/wwwroot/lib/ +# BenchmarkDotNet artifacts +BenchmarkDotNet.Artifacts/ ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. @@ -18,6 +16,7 @@ node_modules/ # User-specific files .vs/ .vscode/ +.idea/ *.sln.docstates *.suo *.user @@ -60,6 +59,7 @@ PublishProfiles/ # NuGet Packages packages/ *.nupkg +*.snupkg # Others .build/ @@ -77,4 +77,12 @@ packages/ _UpgradeReport_Files/ Backup*/ UpgradeLog.htm -UpgradeLog*.XML \ No newline at end of file +UpgradeLog*.XML + +# Current project-specific folders and files +nuget/ +**/JavaScriptEngineSwitcher.Benchmarks/Files/template-rendering/lib/*.min.js +**/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/lib/ +**/scripts/build/ +**/styles/build/ +**/wwwroot/lib/ \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e033c3a..b9dd11f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,147 @@ Change log ========== +## v3.30.2 - July 15, 2025 + * In JavaScriptEngineSwitcher.Jint added support for the Jint version 4.4.0 + * In JavaScriptEngineSwitcher.Yantra added support for the YantraJS version 1.2.286 + +## v3.30.1 - July 1, 2025 + * In JavaScriptEngineSwitcher.Jint added support for the Jint version 4.3.0 + +## v3.30.0 - June 16, 2025 + * In JavaScriptEngineSwitcher.Jint added support for the Jint version 4.2.2 + * In JavaScriptEngineSwitcher.NiL: + * NiL.JS was updated to version 2.6.1700 + * No longer supports a .NET 5 and 7 + * Added support for .NET 9 + +## v3.29.1 - March 14, 2025 + * In JavaScriptEngineSwitcher.Jint added support for the Jint version 4.2.1 + * In JavaScriptEngineSwitcher.V8 performed a migration to a modern API for pre-compilation of scripts + +## v3.29.0 - March 8, 2025 + * In JavaScriptEngineSwitcher.Jurassic added support for the Jurassic version of February 4, 2025 + * In JavaScriptEngineSwitcher.V8: + * Microsoft ClearScript.V8 was updated to version 7.5 (support of the V8 version 13.3.415.23) + * No longer supports a .NET Framework 4.5 + * Added support for .NET Framework 4.6.2 + * In JavaScriptEngineSwitcher.Yantra added support for the YantraJS version 1.2.282 + +## v3.28.0 - January 29, 2025 + * In JavaScriptEngineSwitcher.Jint: + * Jint was updated to version 4.2.0 + * No longer supports a .NET 6 + +## v3.27.3 - December 18, 2024 + * In JavaScriptEngineSwitcher.ChakraCore added support for the ChakraCore version of August 1, 2024 + * In JavaScriptEngineSwitcher.Jint added support for the Jint version 4.1.0 + * In JavaScriptEngineSwitcher.Jurassic added support for the Jurassic version of November 22, 2024 + * In JavaScriptEngineSwitcher.Yantra added support for the YantraJS version 1.2.246 + +## v3.27.2 - September 1, 2024 + * In JavaScriptEngineSwitcher.Jint added support for the Jint version 4.0.2 + * In JavaScriptEngineSwitcher.Yantra added support for the YantraJS version 1.2.225 + +## v3.27.1 - August 20, 2024 + * In JavaScriptEngineSwitcher.Jint added support for the Jint version 4.0.1 + * In JavaScriptEngineSwitcher.Yantra added support for the YantraJS version 1.2.218 + +## v3.27.0 - July 24, 2024 + * In JavaScriptEngineSwitcher.Jint added support for the Jint version 4.0.0 + +## v3.26.1 - June 18, 2024 + * In JavaScriptEngineSwitcher.Jint added support for the Jint version 3.1.3 + * In JavaScriptEngineSwitcher.NiL: + * NiL.JS was updated to version 2.5.1684 + * Added support for .NET 8 + +## v3.26.0 - April 22, 2024 + * In JavaScriptEngineSwitcher.ChakraCore: + * ChakraCore was updated to version of April 21, 2024 + * In `JavaScriptEngineSwitcher.ChakraCore.Native.win-*` packages an additional deployment mechanism has been added to MSBuild scripts for the case when the target platform is focused on a specific processor architecture + +## v3.25.0 - April 10, 2024 + * In JavaScriptEngineSwitcher.Jint added support for the Jint version 3.1.0 + * In JavaScriptEngineSwitcher.Yantra added support for the YantraJS version 1.2.209 + +## v3.24.2 - March 25, 2024 + * In JavaScriptEngineSwitcher.V8: + * Microsoft ClearScript.V8 was updated to version 7.4.5 (support of the V8 version 12.3.219.12) + * In configuration settings of the V8 JS engine was added two new properties: `AddPerformanceObject` (default `false`) and `SetTimerResolution` (default `false`) + +## v3.24.1 - March 7, 2024 + * Minor improvements in metadata of NuGet packages + * In JavaScriptEngineSwitcher.Jint added support for the Jint version 3.0.1 + * In JavaScriptEngineSwitcher.Msie added support for the MSIE JavaScript Engine version 3.2.5 + +## v3.24.0 - February 6, 2024 + * In the `JsEngineSwitcher` class was added the `AllowCurrentProperty` property (default `true`) + * In JavaScriptEngineSwitcher.Extensions.MsDependencyInjection: + * `AddJsEngineSwitcher(Action)` and `AddJsEngineSwitcher(IJsEngineSwitcher, Action)` extension methods are replaced by new methods accordingly: `AddJsEngineSwitcher(Action)` and `AddJsEngineSwitcher(IJsEngineSwitcher, Action)` + * `AllowCurrentProperty` property of `JsEngineSwitcherOptions` class allows to forbid usage of the `JsEngineSwitcher.Current` property. This feature can be used to fix a [error #115](https://github.com/Taritsyn/JavaScriptEngineSwitcher/issues/115) “Concurrency issue when initializing JS engine switcher in startup”. Special thanks to [Ville Häkli](https://github.com/VilleHakli) + +## v3.23.9 - January 20, 2024 + * In JavaScriptEngineSwitcher.Jint added support for the Jint version 3.0.0 + +## v3.23.8 - January 17, 2024 + * In JavaScriptEngineSwitcher.Jint added support for the Jint version 3.0.0 RC 1 + +## v3.23.7 - January 8, 2024 + * In JavaScriptEngineSwitcher.ChakraCore fixed a error that occurred in the `ReflectionHelpers.IsAllowedProperty` method when running on .NET Core 1.0 + * In JavaScriptEngineSwitcher.Msie added support for the MSIE JavaScript Engine version 3.2.4 + +## v3.23.6 - January 6, 2024 + * In JavaScriptEngineSwitcher.Jint added support for the Jint version 3.0.0 Beta 2059 + +## v3.23.5 - December 9, 2023 + * In JavaScriptEngineSwitcher.Jint: + * Jint was updated to version 3.0.0 Beta 2057 + * Added support for .NET 8 + * In JavaScriptEngineSwitcher.Msie added support for the MSIE JavaScript Engine version 3.2.3 + * In JavaScriptEngineSwitcher.NiL added support for the NiL.JS version 2.5.1677 + +## v3.23.4 - November 11, 2023 + * In JavaScriptEngineSwitcher.Jint added support for the Jint version 3.0.0 Beta 2055 + * In JavaScriptEngineSwitcher.Yantra added support for the YantraJS version 1.2.206 + +## v3.23.3 - November 6, 2023 + * In JavaScriptEngineSwitcher.Jint added support for the Jint version 3.0.0 Beta 2054 + * In JavaScriptEngineSwitcher.Jurassic added support for the Jurassic version of November 1, 2023 + * In JavaScriptEngineSwitcher.Yantra added support for the YantraJS version 1.2.204 + +## v3.23.2 - October 26, 2023 + * In JavaScriptEngineSwitcher.Jint added support for the Jint version 3.0.0 Beta 2053 + * In JavaScriptEngineSwitcher.NiL added support for the NiL.JS version 2.5.1674 + * In JavaScriptEngineSwitcher.V8 added support for the Microsoft ClearScript.V8 version 7.4.4 (support of the V8 version 11.8.172.15) + * In JavaScriptEngineSwitcher.Yantra added support for the YantraJS version 1.2.195 + +## v3.23.1 - September 19, 2023 + * In JavaScriptEngineSwitcher.Jint added support for the Jint version 3.0.0 Beta 2052 + * In JavaScriptEngineSwitcher.Node added support for the Jering.Javascript.NodeJS version 7.0.0 + * In JavaScriptEngineSwitcher.Yantra added support for the YantraJS version 1.2.188 + +## v3.23.0 - September 8, 2023 + * In JavaScriptEngineSwitcher.NiL: + * NiL.JS was updated to version 2.5.1673 + * Restored support for .NET Framework 4.6.1 + +## v3.22.0 - September 5, 2023 + * In JavaScriptEngineSwitcher.NiL: + * NiL.JS was updated to version 2.5.1672 + * No longer supports a .NET Framework 4.6.1 + +## v3.21.6 - August 30, 2023 + * In JavaScriptEngineSwitcher.Jint added support for the Jint version 3.0.0 Beta 2051 + +## v3.21.5 - August 21, 2023 + * In JavaScriptEngineSwitcher.V8 added support for the Microsoft ClearScript.V8 version 7.4.3 (support of the V8 version 11.6.189.18) + +## v3.21.4 - August 3, 2023 + * In JavaScriptEngineSwitcher.Jint added support for the Jint version 3.0.0 Beta 2050 + * In JavaScriptEngineSwitcher.NiL added support for the NiL.JS version 2.5.1665 + * In JavaScriptEngineSwitcher.Node added support for the Jering.Javascript.NodeJS version 7.0.0 Beta 5 + * In JavaScriptEngineSwitcher.Yantra added support for the YantraJS version 1.2.179 + ## v3.21.3 - June 1, 2023 * In JavaScriptEngineSwitcher.V8 added support of Microsoft ClearScript.V8 version 7.4.2 (support of V8 version 11.4.183.17) * In JavaScriptEngineSwitcher.Yantra added support of YantraJS version 1.2.163 diff --git a/Directory.Packages.props b/Directory.Packages.props index 9912067e..bbbdb4f8 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -1,18 +1,18 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + \ No newline at end of file diff --git a/JavaScriptEngineSwitcher.NoSamples.sln b/JavaScriptEngineSwitcher.NoSamples.sln deleted file mode 100644 index c83f1423..00000000 --- a/JavaScriptEngineSwitcher.NoSamples.sln +++ /dev/null @@ -1,227 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.5.33502.453 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{19575E10-6B8E-4CF0-B7D2-898FFF47E157}" - ProjectSection(SolutionItems) = preProject - .editorconfig = .editorconfig - CHANGELOG.md = CHANGELOG.md - global.json = global.json - LICENSE.txt = LICENSE.txt - README.md = README.md - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{3FE10516-C056-4337-9C9A-5FD592430F87}" - ProjectSection(SolutionItems) = preProject - build\common.props = build\common.props - build\initialize-standard-nuspec-properties.targets = build\initialize-standard-nuspec-properties.targets - build\Key.snk = build\Key.snk - build\net40-client-target.props = build\net40-client-target.props - build\nuget-common.props = build\nuget-common.props - build\nuget-for-dotnet-lib.props = build\nuget-for-dotnet-lib.props - build\nuget-for-native-lib.props = build\nuget-for-native-lib.props - build\strong-name-signing.props = build\strong-name-signing.props - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "licenses", "licenses", "{4AB5950E-3FA8-4A77-A067-F325BFD80537}" - ProjectSection(SolutionItems) = preProject - Licenses\advanced-string-builder-license.txt = Licenses\advanced-string-builder-license.txt - Licenses\chakra-core-license.txt = Licenses\chakra-core-license.txt - Licenses\chakra-samples-license.txt = Licenses\chakra-samples-license.txt - Licenses\clearscript-license.txt = Licenses\clearscript-license.txt - Licenses\jering-javascript-nodejs-license.txt = Licenses\jering-javascript-nodejs-license.txt - Licenses\jint-license.txt = Licenses\jint-license.txt - Licenses\jsrt-dotnet-license.txt = Licenses\jsrt-dotnet-license.txt - Licenses\jurassic-license.txt = Licenses\jurassic-license.txt - Licenses\microsoft-dotnet-arcade-sdk-license.txt = Licenses\microsoft-dotnet-arcade-sdk-license.txt - Licenses\msie-javascript-engine-license.txt = Licenses\msie-javascript-engine-license.txt - Licenses\nil-license.txt = Licenses\nil-license.txt - Licenses\nodejs-license.txt = Licenses\nodejs-license.txt - Licenses\polyfills-for-old-dot-net-license.txt = Licenses\polyfills-for-old-dot-net-license.txt - Licenses\v8-license.txt = Licenses\v8-license.txt - Licenses\vroomjs-core-license.txt = Licenses\vroomjs-core-license.txt - Licenses\yantra-license.txt = Licenses\yantra-license.txt - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{0C281F46-F1D2-4A1C-8560-375EDA65D680}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{53B43213-2E66-42C2-8476-600A2FD2DA75}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.Core", "src\JavaScriptEngineSwitcher.Core\JavaScriptEngineSwitcher.Core.csproj", "{13559975-F99D-4B93-BF46-227C0B6E0DFB}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.Extensions.MsDependencyInjection", "src\JavaScriptEngineSwitcher.Extensions.MsDependencyInjection\JavaScriptEngineSwitcher.Extensions.MsDependencyInjection.csproj", "{5B693A49-BEC2-4532-ADFE-80C4AA930E27}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.Msie", "src\JavaScriptEngineSwitcher.Msie\JavaScriptEngineSwitcher.Msie.csproj", "{B3C4AA95-2227-47DD-B58C-22FA589CB28D}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.V8", "src\JavaScriptEngineSwitcher.V8\JavaScriptEngineSwitcher.V8.csproj", "{C24E1F3C-5680-463A-8703-B9F40BCDAC77}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.V8.Native.win-x86", "src\JavaScriptEngineSwitcher.V8.Native.win-x86\JavaScriptEngineSwitcher.V8.Native.win-x86.csproj", "{1739A011-164B-4227-B540-01BAD61F17C5}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.V8.Native.win-x64", "src\JavaScriptEngineSwitcher.V8.Native.win-x64\JavaScriptEngineSwitcher.V8.Native.win-x64.csproj", "{4FB64080-817F-468A-B92C-F63B46E6D85F}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.V8.Native.linux-x64", "src\JavaScriptEngineSwitcher.V8.Native.linux-x64\JavaScriptEngineSwitcher.V8.Native.linux-x64.csproj", "{D4B2AB12-57DE-43AA-9A1E-E4A5DEB59889}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.V8.Native.osx-x64", "src\JavaScriptEngineSwitcher.V8.Native.osx-x64\JavaScriptEngineSwitcher.V8.Native.osx-x64.csproj", "{4B727E90-AE52-41DD-B704-28A00196052C}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.Jurassic", "src\JavaScriptEngineSwitcher.Jurassic\JavaScriptEngineSwitcher.Jurassic.csproj", "{D31B5A77-8018-4D76-B372-325564385B2D}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.Jint", "src\JavaScriptEngineSwitcher.Jint\JavaScriptEngineSwitcher.Jint.csproj", "{22D73C6E-5F35-497B-A93B-F9EAAAE4DDAA}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.ChakraCore", "src\JavaScriptEngineSwitcher.ChakraCore\JavaScriptEngineSwitcher.ChakraCore.csproj", "{2EFFFC6B-E642-477F-B537-4241EBD93410}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.ChakraCore.Native.win-x86", "src\JavaScriptEngineSwitcher.ChakraCore.Native.win-x86\JavaScriptEngineSwitcher.ChakraCore.Native.win-x86.csproj", "{F676D869-5715-46B0-A118-A162D9C9DEC6}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.ChakraCore.Native.win-x64", "src\JavaScriptEngineSwitcher.ChakraCore.Native.win-x64\JavaScriptEngineSwitcher.ChakraCore.Native.win-x64.csproj", "{D2B4F490-E7A6-40A8-808E-6D7A30D3EBF5}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.ChakraCore.Native.win-arm", "src\JavaScriptEngineSwitcher.ChakraCore.Native.win-arm\JavaScriptEngineSwitcher.ChakraCore.Native.win-arm.csproj", "{BB7BE2DF-C68C-4F82-8BAB-79A16D9AB812}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64", "src\JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64\JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64.csproj", "{304EEE7F-005D-4335-80AB-DB29025740B1}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64", "src\JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64\JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64.csproj", "{FF77615B-4182-4BE7-AE2B-0F9F75198490}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64", "src\JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64\JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64.csproj", "{E14C4086-9877-4658-AE39-6313039A9076}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.Vroom", "src\JavaScriptEngineSwitcher.Vroom\JavaScriptEngineSwitcher.Vroom.csproj", "{238D7E69-7052-4DFC-83EF-79D3D124C12B}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.NiL", "src\JavaScriptEngineSwitcher.NiL\JavaScriptEngineSwitcher.NiL.csproj", "{F0BF7975-2E8A-4EC8-8DAA-760A4302F419}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.Node", "src\JavaScriptEngineSwitcher.Node\JavaScriptEngineSwitcher.Node.csproj", "{89F9DDDD-5236-4D9A-99E4-3C1358B81149}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.Yantra", "src\JavaScriptEngineSwitcher.Yantra\JavaScriptEngineSwitcher.Yantra.csproj", "{897E4EFA-C8F5-4980-BBD0-2EA7B920B2EB}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.Benchmarks", "test\JavaScriptEngineSwitcher.Benchmarks\JavaScriptEngineSwitcher.Benchmarks.csproj", "{24A8F6A6-EA4E-43A6-A2D7-E1916F8CB4EE}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.Tests", "test\JavaScriptEngineSwitcher.Tests\JavaScriptEngineSwitcher.Tests.csproj", "{E95FDEF6-18A0-4E26-8FDF-B4B590E6EDAF}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {13559975-F99D-4B93-BF46-227C0B6E0DFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {13559975-F99D-4B93-BF46-227C0B6E0DFB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {13559975-F99D-4B93-BF46-227C0B6E0DFB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {13559975-F99D-4B93-BF46-227C0B6E0DFB}.Release|Any CPU.Build.0 = Release|Any CPU - {5B693A49-BEC2-4532-ADFE-80C4AA930E27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5B693A49-BEC2-4532-ADFE-80C4AA930E27}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5B693A49-BEC2-4532-ADFE-80C4AA930E27}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5B693A49-BEC2-4532-ADFE-80C4AA930E27}.Release|Any CPU.Build.0 = Release|Any CPU - {B3C4AA95-2227-47DD-B58C-22FA589CB28D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B3C4AA95-2227-47DD-B58C-22FA589CB28D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B3C4AA95-2227-47DD-B58C-22FA589CB28D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B3C4AA95-2227-47DD-B58C-22FA589CB28D}.Release|Any CPU.Build.0 = Release|Any CPU - {C24E1F3C-5680-463A-8703-B9F40BCDAC77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C24E1F3C-5680-463A-8703-B9F40BCDAC77}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C24E1F3C-5680-463A-8703-B9F40BCDAC77}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C24E1F3C-5680-463A-8703-B9F40BCDAC77}.Release|Any CPU.Build.0 = Release|Any CPU - {1739A011-164B-4227-B540-01BAD61F17C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1739A011-164B-4227-B540-01BAD61F17C5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1739A011-164B-4227-B540-01BAD61F17C5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1739A011-164B-4227-B540-01BAD61F17C5}.Release|Any CPU.Build.0 = Release|Any CPU - {4FB64080-817F-468A-B92C-F63B46E6D85F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4FB64080-817F-468A-B92C-F63B46E6D85F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4FB64080-817F-468A-B92C-F63B46E6D85F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4FB64080-817F-468A-B92C-F63B46E6D85F}.Release|Any CPU.Build.0 = Release|Any CPU - {D4B2AB12-57DE-43AA-9A1E-E4A5DEB59889}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D4B2AB12-57DE-43AA-9A1E-E4A5DEB59889}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D4B2AB12-57DE-43AA-9A1E-E4A5DEB59889}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D4B2AB12-57DE-43AA-9A1E-E4A5DEB59889}.Release|Any CPU.Build.0 = Release|Any CPU - {4B727E90-AE52-41DD-B704-28A00196052C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4B727E90-AE52-41DD-B704-28A00196052C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4B727E90-AE52-41DD-B704-28A00196052C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4B727E90-AE52-41DD-B704-28A00196052C}.Release|Any CPU.Build.0 = Release|Any CPU - {D31B5A77-8018-4D76-B372-325564385B2D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D31B5A77-8018-4D76-B372-325564385B2D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D31B5A77-8018-4D76-B372-325564385B2D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D31B5A77-8018-4D76-B372-325564385B2D}.Release|Any CPU.Build.0 = Release|Any CPU - {22D73C6E-5F35-497B-A93B-F9EAAAE4DDAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {22D73C6E-5F35-497B-A93B-F9EAAAE4DDAA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {22D73C6E-5F35-497B-A93B-F9EAAAE4DDAA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {22D73C6E-5F35-497B-A93B-F9EAAAE4DDAA}.Release|Any CPU.Build.0 = Release|Any CPU - {2EFFFC6B-E642-477F-B537-4241EBD93410}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2EFFFC6B-E642-477F-B537-4241EBD93410}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2EFFFC6B-E642-477F-B537-4241EBD93410}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2EFFFC6B-E642-477F-B537-4241EBD93410}.Release|Any CPU.Build.0 = Release|Any CPU - {F676D869-5715-46B0-A118-A162D9C9DEC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F676D869-5715-46B0-A118-A162D9C9DEC6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F676D869-5715-46B0-A118-A162D9C9DEC6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F676D869-5715-46B0-A118-A162D9C9DEC6}.Release|Any CPU.Build.0 = Release|Any CPU - {D2B4F490-E7A6-40A8-808E-6D7A30D3EBF5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D2B4F490-E7A6-40A8-808E-6D7A30D3EBF5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D2B4F490-E7A6-40A8-808E-6D7A30D3EBF5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D2B4F490-E7A6-40A8-808E-6D7A30D3EBF5}.Release|Any CPU.Build.0 = Release|Any CPU - {BB7BE2DF-C68C-4F82-8BAB-79A16D9AB812}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BB7BE2DF-C68C-4F82-8BAB-79A16D9AB812}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BB7BE2DF-C68C-4F82-8BAB-79A16D9AB812}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BB7BE2DF-C68C-4F82-8BAB-79A16D9AB812}.Release|Any CPU.Build.0 = Release|Any CPU - {304EEE7F-005D-4335-80AB-DB29025740B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {304EEE7F-005D-4335-80AB-DB29025740B1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {304EEE7F-005D-4335-80AB-DB29025740B1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {304EEE7F-005D-4335-80AB-DB29025740B1}.Release|Any CPU.Build.0 = Release|Any CPU - {FF77615B-4182-4BE7-AE2B-0F9F75198490}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FF77615B-4182-4BE7-AE2B-0F9F75198490}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FF77615B-4182-4BE7-AE2B-0F9F75198490}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FF77615B-4182-4BE7-AE2B-0F9F75198490}.Release|Any CPU.Build.0 = Release|Any CPU - {E14C4086-9877-4658-AE39-6313039A9076}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E14C4086-9877-4658-AE39-6313039A9076}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E14C4086-9877-4658-AE39-6313039A9076}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E14C4086-9877-4658-AE39-6313039A9076}.Release|Any CPU.Build.0 = Release|Any CPU - {238D7E69-7052-4DFC-83EF-79D3D124C12B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {238D7E69-7052-4DFC-83EF-79D3D124C12B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {238D7E69-7052-4DFC-83EF-79D3D124C12B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {238D7E69-7052-4DFC-83EF-79D3D124C12B}.Release|Any CPU.Build.0 = Release|Any CPU - {F0BF7975-2E8A-4EC8-8DAA-760A4302F419}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F0BF7975-2E8A-4EC8-8DAA-760A4302F419}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F0BF7975-2E8A-4EC8-8DAA-760A4302F419}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F0BF7975-2E8A-4EC8-8DAA-760A4302F419}.Release|Any CPU.Build.0 = Release|Any CPU - {89F9DDDD-5236-4D9A-99E4-3C1358B81149}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {89F9DDDD-5236-4D9A-99E4-3C1358B81149}.Debug|Any CPU.Build.0 = Debug|Any CPU - {89F9DDDD-5236-4D9A-99E4-3C1358B81149}.Release|Any CPU.ActiveCfg = Release|Any CPU - {89F9DDDD-5236-4D9A-99E4-3C1358B81149}.Release|Any CPU.Build.0 = Release|Any CPU - {24A8F6A6-EA4E-43A6-A2D7-E1916F8CB4EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {24A8F6A6-EA4E-43A6-A2D7-E1916F8CB4EE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {24A8F6A6-EA4E-43A6-A2D7-E1916F8CB4EE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {24A8F6A6-EA4E-43A6-A2D7-E1916F8CB4EE}.Release|Any CPU.Build.0 = Release|Any CPU - {E95FDEF6-18A0-4E26-8FDF-B4B590E6EDAF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E95FDEF6-18A0-4E26-8FDF-B4B590E6EDAF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E95FDEF6-18A0-4E26-8FDF-B4B590E6EDAF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E95FDEF6-18A0-4E26-8FDF-B4B590E6EDAF}.Release|Any CPU.Build.0 = Release|Any CPU - {897E4EFA-C8F5-4980-BBD0-2EA7B920B2EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {897E4EFA-C8F5-4980-BBD0-2EA7B920B2EB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {897E4EFA-C8F5-4980-BBD0-2EA7B920B2EB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {897E4EFA-C8F5-4980-BBD0-2EA7B920B2EB}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {13559975-F99D-4B93-BF46-227C0B6E0DFB} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {5B693A49-BEC2-4532-ADFE-80C4AA930E27} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {B3C4AA95-2227-47DD-B58C-22FA589CB28D} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {C24E1F3C-5680-463A-8703-B9F40BCDAC77} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {1739A011-164B-4227-B540-01BAD61F17C5} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {4FB64080-817F-468A-B92C-F63B46E6D85F} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {D4B2AB12-57DE-43AA-9A1E-E4A5DEB59889} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {4B727E90-AE52-41DD-B704-28A00196052C} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {D31B5A77-8018-4D76-B372-325564385B2D} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {22D73C6E-5F35-497B-A93B-F9EAAAE4DDAA} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {2EFFFC6B-E642-477F-B537-4241EBD93410} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {F676D869-5715-46B0-A118-A162D9C9DEC6} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {D2B4F490-E7A6-40A8-808E-6D7A30D3EBF5} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {BB7BE2DF-C68C-4F82-8BAB-79A16D9AB812} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {304EEE7F-005D-4335-80AB-DB29025740B1} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {FF77615B-4182-4BE7-AE2B-0F9F75198490} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {E14C4086-9877-4658-AE39-6313039A9076} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {238D7E69-7052-4DFC-83EF-79D3D124C12B} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {F0BF7975-2E8A-4EC8-8DAA-760A4302F419} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {89F9DDDD-5236-4D9A-99E4-3C1358B81149} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {24A8F6A6-EA4E-43A6-A2D7-E1916F8CB4EE} = {53B43213-2E66-42C2-8476-600A2FD2DA75} - {E95FDEF6-18A0-4E26-8FDF-B4B590E6EDAF} = {53B43213-2E66-42C2-8476-600A2FD2DA75} - {897E4EFA-C8F5-4980-BBD0-2EA7B920B2EB} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {8184BE59-ACBC-4CD1-9419-D59A0FAC6131} - EndGlobalSection -EndGlobal diff --git a/JavaScriptEngineSwitcher.NoSamples.slnx b/JavaScriptEngineSwitcher.NoSamples.slnx new file mode 100644 index 00000000..68112f6b --- /dev/null +++ b/JavaScriptEngineSwitcher.NoSamples.slnx @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/JavaScriptEngineSwitcher.sln b/JavaScriptEngineSwitcher.sln deleted file mode 100644 index 916bf67c..00000000 --- a/JavaScriptEngineSwitcher.sln +++ /dev/null @@ -1,309 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31912.275 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{19575E10-6B8E-4CF0-B7D2-898FFF47E157}" - ProjectSection(SolutionItems) = preProject - .editorconfig = .editorconfig - CHANGELOG.md = CHANGELOG.md - global.json = global.json - LICENSE.txt = LICENSE.txt - README.md = README.md - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{3FE10516-C056-4337-9C9A-5FD592430F87}" - ProjectSection(SolutionItems) = preProject - build\common.props = build\common.props - build\initialize-standard-nuspec-properties.targets = build\initialize-standard-nuspec-properties.targets - build\Key.snk = build\Key.snk - build\net40-client-target.props = build\net40-client-target.props - build\nuget-common.props = build\nuget-common.props - build\nuget-for-dotnet-lib.props = build\nuget-for-dotnet-lib.props - build\nuget-for-native-lib.props = build\nuget-for-native-lib.props - build\strong-name-signing.props = build\strong-name-signing.props - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "licenses", "licenses", "{4AB5950E-3FA8-4A77-A067-F325BFD80537}" - ProjectSection(SolutionItems) = preProject - Licenses\advanced-string-builder-license.txt = Licenses\advanced-string-builder-license.txt - Licenses\chakra-core-license.txt = Licenses\chakra-core-license.txt - Licenses\chakra-samples-license.txt = Licenses\chakra-samples-license.txt - Licenses\clearscript-license.txt = Licenses\clearscript-license.txt - Licenses\jering-javascript-nodejs-license.txt = Licenses\jering-javascript-nodejs-license.txt - Licenses\jint-license.txt = Licenses\jint-license.txt - Licenses\jsrt-dotnet-license.txt = Licenses\jsrt-dotnet-license.txt - Licenses\jurassic-license.txt = Licenses\jurassic-license.txt - Licenses\microsoft-dotnet-arcade-sdk-license.txt = Licenses\microsoft-dotnet-arcade-sdk-license.txt - Licenses\msie-javascript-engine-license.txt = Licenses\msie-javascript-engine-license.txt - Licenses\nil-license.txt = Licenses\nil-license.txt - Licenses\nodejs-license.txt = Licenses\nodejs-license.txt - Licenses\polyfills-for-old-dot-net-license.txt = Licenses\polyfills-for-old-dot-net-license.txt - Licenses\v8-license.txt = Licenses\v8-license.txt - Licenses\vroomjs-core-license.txt = Licenses\vroomjs-core-license.txt - Licenses\yantra-license.txt = Licenses\yantra-license.txt - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{0C281F46-F1D2-4A1C-8560-375EDA65D680}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{53B43213-2E66-42C2-8476-600A2FD2DA75}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "samples", "samples", "{E5989CB5-AACE-4D35-A8EE-26942F140DA3}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SharedData", "SharedData", "{C5173D1C-5284-4FD5-9E0D-C7FD0DC8E029}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "text-content", "text-content", "{F8CC9C7C-656D-4A76-A912-D5708009DD7C}" - ProjectSection(SolutionItems) = preProject - samples\SharedData\text-content\contact.html = samples\SharedData\text-content\contact.html - samples\SharedData\text-content\index.html = samples\SharedData\text-content\index.html - EndProjectSection -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.Core", "src\JavaScriptEngineSwitcher.Core\JavaScriptEngineSwitcher.Core.csproj", "{13559975-F99D-4B93-BF46-227C0B6E0DFB}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.Extensions.MsDependencyInjection", "src\JavaScriptEngineSwitcher.Extensions.MsDependencyInjection\JavaScriptEngineSwitcher.Extensions.MsDependencyInjection.csproj", "{5B693A49-BEC2-4532-ADFE-80C4AA930E27}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.Msie", "src\JavaScriptEngineSwitcher.Msie\JavaScriptEngineSwitcher.Msie.csproj", "{B3C4AA95-2227-47DD-B58C-22FA589CB28D}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.V8", "src\JavaScriptEngineSwitcher.V8\JavaScriptEngineSwitcher.V8.csproj", "{C24E1F3C-5680-463A-8703-B9F40BCDAC77}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.V8.Native.win-x86", "src\JavaScriptEngineSwitcher.V8.Native.win-x86\JavaScriptEngineSwitcher.V8.Native.win-x86.csproj", "{1739A011-164B-4227-B540-01BAD61F17C5}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.V8.Native.win-x64", "src\JavaScriptEngineSwitcher.V8.Native.win-x64\JavaScriptEngineSwitcher.V8.Native.win-x64.csproj", "{4FB64080-817F-468A-B92C-F63B46E6D85F}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.V8.Native.linux-x64", "src\JavaScriptEngineSwitcher.V8.Native.linux-x64\JavaScriptEngineSwitcher.V8.Native.linux-x64.csproj", "{D4B2AB12-57DE-43AA-9A1E-E4A5DEB59889}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.V8.Native.osx-x64", "src\JavaScriptEngineSwitcher.V8.Native.osx-x64\JavaScriptEngineSwitcher.V8.Native.osx-x64.csproj", "{4B727E90-AE52-41DD-B704-28A00196052C}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.Jurassic", "src\JavaScriptEngineSwitcher.Jurassic\JavaScriptEngineSwitcher.Jurassic.csproj", "{D31B5A77-8018-4D76-B372-325564385B2D}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.Jint", "src\JavaScriptEngineSwitcher.Jint\JavaScriptEngineSwitcher.Jint.csproj", "{22D73C6E-5F35-497B-A93B-F9EAAAE4DDAA}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.ChakraCore", "src\JavaScriptEngineSwitcher.ChakraCore\JavaScriptEngineSwitcher.ChakraCore.csproj", "{2EFFFC6B-E642-477F-B537-4241EBD93410}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.ChakraCore.Native.win-x86", "src\JavaScriptEngineSwitcher.ChakraCore.Native.win-x86\JavaScriptEngineSwitcher.ChakraCore.Native.win-x86.csproj", "{F676D869-5715-46B0-A118-A162D9C9DEC6}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.ChakraCore.Native.win-x64", "src\JavaScriptEngineSwitcher.ChakraCore.Native.win-x64\JavaScriptEngineSwitcher.ChakraCore.Native.win-x64.csproj", "{D2B4F490-E7A6-40A8-808E-6D7A30D3EBF5}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.ChakraCore.Native.win-arm", "src\JavaScriptEngineSwitcher.ChakraCore.Native.win-arm\JavaScriptEngineSwitcher.ChakraCore.Native.win-arm.csproj", "{BB7BE2DF-C68C-4F82-8BAB-79A16D9AB812}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64", "src\JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64\JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64.csproj", "{304EEE7F-005D-4335-80AB-DB29025740B1}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64", "src\JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64\JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64.csproj", "{FF77615B-4182-4BE7-AE2B-0F9F75198490}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64", "src\JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64\JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64.csproj", "{E14C4086-9877-4658-AE39-6313039A9076}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.Vroom", "src\JavaScriptEngineSwitcher.Vroom\JavaScriptEngineSwitcher.Vroom.csproj", "{238D7E69-7052-4DFC-83EF-79D3D124C12B}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.NiL", "src\JavaScriptEngineSwitcher.NiL\JavaScriptEngineSwitcher.NiL.csproj", "{F0BF7975-2E8A-4EC8-8DAA-760A4302F419}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.Node", "src\JavaScriptEngineSwitcher.Node\JavaScriptEngineSwitcher.Node.csproj", "{89F9DDDD-5236-4D9A-99E4-3C1358B81149}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.Yantra", "src\JavaScriptEngineSwitcher.Yantra\JavaScriptEngineSwitcher.Yantra.csproj", "{897E4EFA-C8F5-4980-BBD0-2EA7B920B2EB}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.Benchmarks", "test\JavaScriptEngineSwitcher.Benchmarks\JavaScriptEngineSwitcher.Benchmarks.csproj", "{24A8F6A6-EA4E-43A6-A2D7-E1916F8CB4EE}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.Tests", "test\JavaScriptEngineSwitcher.Tests\JavaScriptEngineSwitcher.Tests.csproj", "{E95FDEF6-18A0-4E26-8FDF-B4B590E6EDAF}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.Sample.Resources", "samples\JavaScriptEngineSwitcher.Sample.Resources\JavaScriptEngineSwitcher.Sample.Resources.csproj", "{62F0C0AD-15BC-42CE-9BD2-49F506FEAA54}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.Sample.Logic", "samples\JavaScriptEngineSwitcher.Sample.Logic\JavaScriptEngineSwitcher.Sample.Logic.csproj", "{C434E1B5-0463-4E58-8336-87F822D07B41}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4", "samples\JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4\JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4.csproj", "{8124DF18-4A0B-4648-8B90-4A6D3E4EF2F3}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1", "samples\JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1\JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1.csproj", "{C790AD7F-55C6-4106-8D8C-8F901B7FF245}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1", "samples\JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1\JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1.csproj", "{5CA92021-B75A-40AF-B5AA-500BAF76B4D6}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21", "samples\JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21\JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21.csproj", "{0342791E-6390-4F97-9163-5CE02E4CFF07}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31", "samples\JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31\JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31.csproj", "{D0127B5A-E66B-4DA2-8C57-A8BA2A0163F4}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5", "samples\JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5\JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5.csproj", "{189376C9-49DA-4A12-9C78-CE39E8EC7731}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6", "samples\JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6\JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6.csproj", "{58321699-3715-4CA7-8036-A9F26E4C93F3}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7", "samples\JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7\JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7.csproj", "{923B1463-910F-4542-8E68-29F36A9DB508}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {13559975-F99D-4B93-BF46-227C0B6E0DFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {13559975-F99D-4B93-BF46-227C0B6E0DFB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {13559975-F99D-4B93-BF46-227C0B6E0DFB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {13559975-F99D-4B93-BF46-227C0B6E0DFB}.Release|Any CPU.Build.0 = Release|Any CPU - {5B693A49-BEC2-4532-ADFE-80C4AA930E27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5B693A49-BEC2-4532-ADFE-80C4AA930E27}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5B693A49-BEC2-4532-ADFE-80C4AA930E27}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5B693A49-BEC2-4532-ADFE-80C4AA930E27}.Release|Any CPU.Build.0 = Release|Any CPU - {B3C4AA95-2227-47DD-B58C-22FA589CB28D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B3C4AA95-2227-47DD-B58C-22FA589CB28D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B3C4AA95-2227-47DD-B58C-22FA589CB28D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B3C4AA95-2227-47DD-B58C-22FA589CB28D}.Release|Any CPU.Build.0 = Release|Any CPU - {C24E1F3C-5680-463A-8703-B9F40BCDAC77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C24E1F3C-5680-463A-8703-B9F40BCDAC77}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C24E1F3C-5680-463A-8703-B9F40BCDAC77}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C24E1F3C-5680-463A-8703-B9F40BCDAC77}.Release|Any CPU.Build.0 = Release|Any CPU - {1739A011-164B-4227-B540-01BAD61F17C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1739A011-164B-4227-B540-01BAD61F17C5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1739A011-164B-4227-B540-01BAD61F17C5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1739A011-164B-4227-B540-01BAD61F17C5}.Release|Any CPU.Build.0 = Release|Any CPU - {4FB64080-817F-468A-B92C-F63B46E6D85F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4FB64080-817F-468A-B92C-F63B46E6D85F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4FB64080-817F-468A-B92C-F63B46E6D85F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4FB64080-817F-468A-B92C-F63B46E6D85F}.Release|Any CPU.Build.0 = Release|Any CPU - {D4B2AB12-57DE-43AA-9A1E-E4A5DEB59889}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D4B2AB12-57DE-43AA-9A1E-E4A5DEB59889}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D4B2AB12-57DE-43AA-9A1E-E4A5DEB59889}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D4B2AB12-57DE-43AA-9A1E-E4A5DEB59889}.Release|Any CPU.Build.0 = Release|Any CPU - {4B727E90-AE52-41DD-B704-28A00196052C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4B727E90-AE52-41DD-B704-28A00196052C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4B727E90-AE52-41DD-B704-28A00196052C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4B727E90-AE52-41DD-B704-28A00196052C}.Release|Any CPU.Build.0 = Release|Any CPU - {D31B5A77-8018-4D76-B372-325564385B2D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D31B5A77-8018-4D76-B372-325564385B2D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D31B5A77-8018-4D76-B372-325564385B2D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D31B5A77-8018-4D76-B372-325564385B2D}.Release|Any CPU.Build.0 = Release|Any CPU - {22D73C6E-5F35-497B-A93B-F9EAAAE4DDAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {22D73C6E-5F35-497B-A93B-F9EAAAE4DDAA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {22D73C6E-5F35-497B-A93B-F9EAAAE4DDAA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {22D73C6E-5F35-497B-A93B-F9EAAAE4DDAA}.Release|Any CPU.Build.0 = Release|Any CPU - {2EFFFC6B-E642-477F-B537-4241EBD93410}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2EFFFC6B-E642-477F-B537-4241EBD93410}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2EFFFC6B-E642-477F-B537-4241EBD93410}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2EFFFC6B-E642-477F-B537-4241EBD93410}.Release|Any CPU.Build.0 = Release|Any CPU - {F676D869-5715-46B0-A118-A162D9C9DEC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F676D869-5715-46B0-A118-A162D9C9DEC6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F676D869-5715-46B0-A118-A162D9C9DEC6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F676D869-5715-46B0-A118-A162D9C9DEC6}.Release|Any CPU.Build.0 = Release|Any CPU - {D2B4F490-E7A6-40A8-808E-6D7A30D3EBF5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D2B4F490-E7A6-40A8-808E-6D7A30D3EBF5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D2B4F490-E7A6-40A8-808E-6D7A30D3EBF5}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D2B4F490-E7A6-40A8-808E-6D7A30D3EBF5}.Release|Any CPU.Build.0 = Release|Any CPU - {BB7BE2DF-C68C-4F82-8BAB-79A16D9AB812}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BB7BE2DF-C68C-4F82-8BAB-79A16D9AB812}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BB7BE2DF-C68C-4F82-8BAB-79A16D9AB812}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BB7BE2DF-C68C-4F82-8BAB-79A16D9AB812}.Release|Any CPU.Build.0 = Release|Any CPU - {304EEE7F-005D-4335-80AB-DB29025740B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {304EEE7F-005D-4335-80AB-DB29025740B1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {304EEE7F-005D-4335-80AB-DB29025740B1}.Release|Any CPU.ActiveCfg = Release|Any CPU - {304EEE7F-005D-4335-80AB-DB29025740B1}.Release|Any CPU.Build.0 = Release|Any CPU - {FF77615B-4182-4BE7-AE2B-0F9F75198490}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FF77615B-4182-4BE7-AE2B-0F9F75198490}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FF77615B-4182-4BE7-AE2B-0F9F75198490}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FF77615B-4182-4BE7-AE2B-0F9F75198490}.Release|Any CPU.Build.0 = Release|Any CPU - {E14C4086-9877-4658-AE39-6313039A9076}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E14C4086-9877-4658-AE39-6313039A9076}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E14C4086-9877-4658-AE39-6313039A9076}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E14C4086-9877-4658-AE39-6313039A9076}.Release|Any CPU.Build.0 = Release|Any CPU - {238D7E69-7052-4DFC-83EF-79D3D124C12B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {238D7E69-7052-4DFC-83EF-79D3D124C12B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {238D7E69-7052-4DFC-83EF-79D3D124C12B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {238D7E69-7052-4DFC-83EF-79D3D124C12B}.Release|Any CPU.Build.0 = Release|Any CPU - {F0BF7975-2E8A-4EC8-8DAA-760A4302F419}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F0BF7975-2E8A-4EC8-8DAA-760A4302F419}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F0BF7975-2E8A-4EC8-8DAA-760A4302F419}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F0BF7975-2E8A-4EC8-8DAA-760A4302F419}.Release|Any CPU.Build.0 = Release|Any CPU - {89F9DDDD-5236-4D9A-99E4-3C1358B81149}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {89F9DDDD-5236-4D9A-99E4-3C1358B81149}.Debug|Any CPU.Build.0 = Debug|Any CPU - {89F9DDDD-5236-4D9A-99E4-3C1358B81149}.Release|Any CPU.ActiveCfg = Release|Any CPU - {89F9DDDD-5236-4D9A-99E4-3C1358B81149}.Release|Any CPU.Build.0 = Release|Any CPU - {24A8F6A6-EA4E-43A6-A2D7-E1916F8CB4EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {24A8F6A6-EA4E-43A6-A2D7-E1916F8CB4EE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {24A8F6A6-EA4E-43A6-A2D7-E1916F8CB4EE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {24A8F6A6-EA4E-43A6-A2D7-E1916F8CB4EE}.Release|Any CPU.Build.0 = Release|Any CPU - {E95FDEF6-18A0-4E26-8FDF-B4B590E6EDAF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E95FDEF6-18A0-4E26-8FDF-B4B590E6EDAF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E95FDEF6-18A0-4E26-8FDF-B4B590E6EDAF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E95FDEF6-18A0-4E26-8FDF-B4B590E6EDAF}.Release|Any CPU.Build.0 = Release|Any CPU - {62F0C0AD-15BC-42CE-9BD2-49F506FEAA54}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {62F0C0AD-15BC-42CE-9BD2-49F506FEAA54}.Debug|Any CPU.Build.0 = Debug|Any CPU - {62F0C0AD-15BC-42CE-9BD2-49F506FEAA54}.Release|Any CPU.ActiveCfg = Release|Any CPU - {62F0C0AD-15BC-42CE-9BD2-49F506FEAA54}.Release|Any CPU.Build.0 = Release|Any CPU - {C434E1B5-0463-4E58-8336-87F822D07B41}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C434E1B5-0463-4E58-8336-87F822D07B41}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C434E1B5-0463-4E58-8336-87F822D07B41}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C434E1B5-0463-4E58-8336-87F822D07B41}.Release|Any CPU.Build.0 = Release|Any CPU - {8124DF18-4A0B-4648-8B90-4A6D3E4EF2F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8124DF18-4A0B-4648-8B90-4A6D3E4EF2F3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8124DF18-4A0B-4648-8B90-4A6D3E4EF2F3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8124DF18-4A0B-4648-8B90-4A6D3E4EF2F3}.Release|Any CPU.Build.0 = Release|Any CPU - {C790AD7F-55C6-4106-8D8C-8F901B7FF245}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C790AD7F-55C6-4106-8D8C-8F901B7FF245}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C790AD7F-55C6-4106-8D8C-8F901B7FF245}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C790AD7F-55C6-4106-8D8C-8F901B7FF245}.Release|Any CPU.Build.0 = Release|Any CPU - {5CA92021-B75A-40AF-B5AA-500BAF76B4D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5CA92021-B75A-40AF-B5AA-500BAF76B4D6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5CA92021-B75A-40AF-B5AA-500BAF76B4D6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5CA92021-B75A-40AF-B5AA-500BAF76B4D6}.Release|Any CPU.Build.0 = Release|Any CPU - {0342791E-6390-4F97-9163-5CE02E4CFF07}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0342791E-6390-4F97-9163-5CE02E4CFF07}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0342791E-6390-4F97-9163-5CE02E4CFF07}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0342791E-6390-4F97-9163-5CE02E4CFF07}.Release|Any CPU.Build.0 = Release|Any CPU - {D0127B5A-E66B-4DA2-8C57-A8BA2A0163F4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D0127B5A-E66B-4DA2-8C57-A8BA2A0163F4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D0127B5A-E66B-4DA2-8C57-A8BA2A0163F4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D0127B5A-E66B-4DA2-8C57-A8BA2A0163F4}.Release|Any CPU.Build.0 = Release|Any CPU - {189376C9-49DA-4A12-9C78-CE39E8EC7731}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {189376C9-49DA-4A12-9C78-CE39E8EC7731}.Debug|Any CPU.Build.0 = Debug|Any CPU - {189376C9-49DA-4A12-9C78-CE39E8EC7731}.Release|Any CPU.ActiveCfg = Release|Any CPU - {189376C9-49DA-4A12-9C78-CE39E8EC7731}.Release|Any CPU.Build.0 = Release|Any CPU - {58321699-3715-4CA7-8036-A9F26E4C93F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {58321699-3715-4CA7-8036-A9F26E4C93F3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {58321699-3715-4CA7-8036-A9F26E4C93F3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {58321699-3715-4CA7-8036-A9F26E4C93F3}.Release|Any CPU.Build.0 = Release|Any CPU - {923B1463-910F-4542-8E68-29F36A9DB508}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {923B1463-910F-4542-8E68-29F36A9DB508}.Debug|Any CPU.Build.0 = Debug|Any CPU - {923B1463-910F-4542-8E68-29F36A9DB508}.Release|Any CPU.ActiveCfg = Release|Any CPU - {923B1463-910F-4542-8E68-29F36A9DB508}.Release|Any CPU.Build.0 = Release|Any CPU - {897E4EFA-C8F5-4980-BBD0-2EA7B920B2EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {897E4EFA-C8F5-4980-BBD0-2EA7B920B2EB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {897E4EFA-C8F5-4980-BBD0-2EA7B920B2EB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {897E4EFA-C8F5-4980-BBD0-2EA7B920B2EB}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {C5173D1C-5284-4FD5-9E0D-C7FD0DC8E029} = {E5989CB5-AACE-4D35-A8EE-26942F140DA3} - {F8CC9C7C-656D-4A76-A912-D5708009DD7C} = {C5173D1C-5284-4FD5-9E0D-C7FD0DC8E029} - {13559975-F99D-4B93-BF46-227C0B6E0DFB} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {5B693A49-BEC2-4532-ADFE-80C4AA930E27} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {B3C4AA95-2227-47DD-B58C-22FA589CB28D} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {C24E1F3C-5680-463A-8703-B9F40BCDAC77} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {1739A011-164B-4227-B540-01BAD61F17C5} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {4FB64080-817F-468A-B92C-F63B46E6D85F} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {D4B2AB12-57DE-43AA-9A1E-E4A5DEB59889} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {4B727E90-AE52-41DD-B704-28A00196052C} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {D31B5A77-8018-4D76-B372-325564385B2D} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {22D73C6E-5F35-497B-A93B-F9EAAAE4DDAA} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {2EFFFC6B-E642-477F-B537-4241EBD93410} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {F676D869-5715-46B0-A118-A162D9C9DEC6} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {D2B4F490-E7A6-40A8-808E-6D7A30D3EBF5} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {BB7BE2DF-C68C-4F82-8BAB-79A16D9AB812} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {304EEE7F-005D-4335-80AB-DB29025740B1} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {FF77615B-4182-4BE7-AE2B-0F9F75198490} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {E14C4086-9877-4658-AE39-6313039A9076} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {238D7E69-7052-4DFC-83EF-79D3D124C12B} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {F0BF7975-2E8A-4EC8-8DAA-760A4302F419} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {89F9DDDD-5236-4D9A-99E4-3C1358B81149} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - {24A8F6A6-EA4E-43A6-A2D7-E1916F8CB4EE} = {53B43213-2E66-42C2-8476-600A2FD2DA75} - {E95FDEF6-18A0-4E26-8FDF-B4B590E6EDAF} = {53B43213-2E66-42C2-8476-600A2FD2DA75} - {62F0C0AD-15BC-42CE-9BD2-49F506FEAA54} = {E5989CB5-AACE-4D35-A8EE-26942F140DA3} - {C434E1B5-0463-4E58-8336-87F822D07B41} = {E5989CB5-AACE-4D35-A8EE-26942F140DA3} - {8124DF18-4A0B-4648-8B90-4A6D3E4EF2F3} = {E5989CB5-AACE-4D35-A8EE-26942F140DA3} - {C790AD7F-55C6-4106-8D8C-8F901B7FF245} = {E5989CB5-AACE-4D35-A8EE-26942F140DA3} - {5CA92021-B75A-40AF-B5AA-500BAF76B4D6} = {E5989CB5-AACE-4D35-A8EE-26942F140DA3} - {0342791E-6390-4F97-9163-5CE02E4CFF07} = {E5989CB5-AACE-4D35-A8EE-26942F140DA3} - {D0127B5A-E66B-4DA2-8C57-A8BA2A0163F4} = {E5989CB5-AACE-4D35-A8EE-26942F140DA3} - {189376C9-49DA-4A12-9C78-CE39E8EC7731} = {E5989CB5-AACE-4D35-A8EE-26942F140DA3} - {58321699-3715-4CA7-8036-A9F26E4C93F3} = {E5989CB5-AACE-4D35-A8EE-26942F140DA3} - {923B1463-910F-4542-8E68-29F36A9DB508} = {E5989CB5-AACE-4D35-A8EE-26942F140DA3} - {897E4EFA-C8F5-4980-BBD0-2EA7B920B2EB} = {0C281F46-F1D2-4A1C-8560-375EDA65D680} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {8184BE59-ACBC-4CD1-9419-D59A0FAC6131} - EndGlobalSection -EndGlobal diff --git a/JavaScriptEngineSwitcher.slnx b/JavaScriptEngineSwitcher.slnx new file mode 100644 index 00000000..839899a5 --- /dev/null +++ b/JavaScriptEngineSwitcher.slnx @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/LICENSE.txt b/LICENSE.txt index 0f4c64a6..a66f2b1f 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,4 +1,4 @@ - Copyright (c) 2013-2023 Andrey Taritsyn - http://www.taritsyn.ru + Copyright (c) 2013-2025 Andrey Taritsyn - http://www.taritsyn.ru Apache License Version 2.0, January 2004 diff --git a/Licenses/advanced-string-builder-license.txt b/Licenses/advanced-string-builder-license.txt index fab73c68..3598e8b2 100644 --- a/Licenses/advanced-string-builder-license.txt +++ b/Licenses/advanced-string-builder-license.txt @@ -1,3 +1,5 @@ + Copyright (c) 2018-2024 Andrey Taritsyn - http://www.taritsyn.ru + Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -178,7 +180,7 @@ APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" + boilerplate notice, with the fields enclosed by brackets "{}" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a @@ -186,7 +188,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright (c) 2018 Andrey Taritsyn - http://www.taritsyn.ru + Copyright {yyyy} {name of copyright owner} Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -198,4 +200,4 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and - limitations under the License. + limitations under the License. \ No newline at end of file diff --git a/Licenses/jering-javascript-nodejs-license.txt b/Licenses/jering-javascript-nodejs-license.txt index 76915c3e..fe0eb86a 100644 --- a/Licenses/jering-javascript-nodejs-license.txt +++ b/Licenses/jering-javascript-nodejs-license.txt @@ -1,4 +1,4 @@ -Copyright © 2018-2019 Jering. All rights reserved. +Copyright © 2018-2023 Jering. All rights reserved. Apache License Version 2.0, January 2004 diff --git a/Licenses/msie-javascript-engine-license.txt b/Licenses/msie-javascript-engine-license.txt index 15d34514..6e8f77b1 100644 --- a/Licenses/msie-javascript-engine-license.txt +++ b/Licenses/msie-javascript-engine-license.txt @@ -1,4 +1,4 @@ - Copyright (c) 2012-2021 Andrey Taritsyn - http://www.taritsyn.ru + Copyright (c) 2012-2024 Andrey Taritsyn - http://www.taritsyn.ru Apache License Version 2.0, January 2004 diff --git a/Licenses/nodejs-license.txt b/Licenses/nodejs-license.txt index 736ddf92..41adca92 100644 --- a/Licenses/nodejs-license.txt +++ b/Licenses/nodejs-license.txt @@ -53,7 +53,9 @@ The externally maintained libraries used by Node.js are: - Acorn, located at deps/acorn, is licensed as follows: """ - Copyright (C) 2012-2018 by various contributors (see AUTHORS) + MIT License + + Copyright (C) 2012-2022 by various contributors (see AUTHORS) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -74,83 +76,103 @@ The externally maintained libraries used by Node.js are: THE SOFTWARE. """ -- Acorn plugins, located at deps/acorn-plugins, is licensed as follows: +- c-ares, located at deps/cares, is licensed as follows: """ - Copyright (C) 2017-2018 by Adrian Heine + MIT License - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: + Copyright (c) 1998 Massachusetts Institute of Technology + Copyright (c) 2007 - 2023 Daniel Stenberg with many contributors, see AUTHORS + file. - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + the Software, and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice (including the next + paragraph) shall be included in all copies or substantial portions of the + Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. """ -- c-ares, located at deps/cares, is licensed as follows: +- cjs-module-lexer, located at deps/cjs-module-lexer, is licensed as follows: """ - Copyright (c) 2007 - 2018, Daniel Stenberg with many contributors, see AUTHORS - file. + MIT License + ----------- + + Copyright (C) 2018-2020 Guy Bedford + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + """ + +- ittapi, located at deps/v8/third_party/ittapi, is licensed as follows: + """ + Copyright (c) 2019 Intel Corporation. All rights reserved. - Copyright 1998 by the Massachusetts Institute of Technology. + Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Permission to use, copy, modify, and distribute this software and its - documentation for any purpose and without fee is hereby granted, provided that - the above copyright notice appear in all copies and that both that copyright - notice and this permission notice appear in supporting documentation, and that - the name of M.I.T. not be used in advertising or publicity pertaining to - distribution of the software without specific, written prior permission. - M.I.T. makes no representations about the suitability of this software for any - purpose. It is provided "as is" without express or implied warranty. + 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ - ICU, located at deps/icu-small, is licensed as follows: """ - COPYRIGHT AND PERMISSION NOTICE (ICU 58 and later) + UNICODE LICENSE V3 - Copyright © 1991-2019 Unicode, Inc. All rights reserved. - Distributed under the Terms of Use in https://www.unicode.org/copyright.html. + COPYRIGHT AND PERMISSION NOTICE - Permission is hereby granted, free of charge, to any person obtaining - a copy of the Unicode data files and any associated documentation - (the "Data Files") or Unicode software and any associated documentation - (the "Software") to deal in the Data Files or Software - without restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, and/or sell copies of - the Data Files or Software, and to permit persons to whom the Data Files - or Software are furnished to do so, provided that either - (a) this copyright and permission notice appear with all copies - of the Data Files or Software, or - (b) this copyright and permission notice appear in associated - Documentation. - - THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF - ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT OF THIRD PARTY RIGHTS. - IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS - NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL - DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, - DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THE DATA FILES OR SOFTWARE. + Copyright © 2016-2023 Unicode, Inc. - Except as contained in this notice, the name of a copyright holder - shall not be used in advertising or otherwise to promote the sale, - use or other dealings in these Data Files or Software without prior - written authorization of the copyright holder. + NOTICE TO USER: Carefully read the following legal agreement. BY + DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING DATA FILES, AND/OR + SOFTWARE, YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE + TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU DO NOT AGREE, DO NOT + DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES OR SOFTWARE. - --------------------- + Permission is hereby granted, free of charge, to any person obtaining a + copy of data files and any associated documentation (the "Data Files") or + software and any associated documentation (the "Software") to deal in the + Data Files or Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, and/or sell + copies of the Data Files or Software, and to permit persons to whom the + Data Files or Software are furnished to do so, provided that either (a) + this copyright and permission notice appear with all copies of the Data + Files or Software, or (b) this copyright and permission notice appear in + associated Documentation. + + THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY + KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF + THIRD PARTY RIGHTS. + + IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE + BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, + OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, + WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, + ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA + FILES OR SOFTWARE. + + Except as contained in this notice, the name of a copyright holder shall + not be used in advertising or otherwise to promote the sale, use or other + dealings in these Data Files or Software without prior written + authorization of the copyright holder. + + ---------------------------------------------------------------------- Third-Party Software Licenses @@ -158,7 +180,9 @@ The externally maintained libraries used by Node.js are: terms for licensed third-party software components included within ICU libraries. - 1. ICU License - ICU 1.8.1 to ICU 57.1 + ---------------------------------------------------------------------- + + ICU License - ICU 1.8.1 to ICU 57.1 COPYRIGHT AND PERMISSION NOTICE @@ -193,7 +217,9 @@ The externally maintained libraries used by Node.js are: All trademarks and registered trademarks mentioned herein are the property of their respective owners. - 2. Chinese/Japanese Word Break Dictionary Data (cjdict.txt) + ---------------------------------------------------------------------- + + Chinese/Japanese Word Break Dictionary Data (cjdict.txt) # The Google Chrome software developed by Google is licensed under # the BSD license. Other software included in this distribution is @@ -397,33 +423,33 @@ The externally maintained libraries used by Node.js are: # # ---------------COPYING.ipadic-----END---------------------------------- - 3. Lao Word Break Dictionary Data (laodict.txt) + ---------------------------------------------------------------------- - # Copyright (c) 2013 International Business Machines Corporation - # and others. All Rights Reserved. + Lao Word Break Dictionary Data (laodict.txt) + + # Copyright (C) 2016 and later: Unicode, Inc. and others. + # License & terms of use: http://www.unicode.org/copyright.html + # Copyright (c) 2015 International Business Machines Corporation + # and others. All Rights Reserved. # - # Project: http://code.google.com/p/lao-dictionary/ - # Dictionary: http://lao-dictionary.googlecode.com/git/Lao-Dictionary.txt - # License: http://lao-dictionary.googlecode.com/git/Lao-Dictionary-LICENSE.txt - # (copied below) + # Project: https://github.com/rober42539/lao-dictionary + # Dictionary: https://github.com/rober42539/lao-dictionary/laodict.txt + # License: https://github.com/rober42539/lao-dictionary/LICENSE.txt + # (copied below) # - # This file is derived from the above dictionary, with slight - # modifications. + # This file is derived from the above dictionary version of Nov 22, 2020 # ---------------------------------------------------------------------- # Copyright (C) 2013 Brian Eugene Wilson, Robert Martin Campbell. # All rights reserved. # # Redistribution and use in source and binary forms, with or without - # modification, - # are permitted provided that the following conditions are met: - # - # - # Redistributions of source code must retain the above copyright notice, this - # list of conditions and the following disclaimer. Redistributions in - # binary form must reproduce the above copyright notice, this list of - # conditions and the following disclaimer in the documentation and/or - # other materials provided with the distribution. + # modification, are permitted provided that the following conditions are met: # + # Redistributions of source code must retain the above copyright notice, this + # list of conditions and the following disclaimer. Redistributions in binary + # form must reproduce the above copyright notice, this list of conditions and + # the following disclaimer in the documentation and/or other materials + # provided with the distribution. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT @@ -439,7 +465,9 @@ The externally maintained libraries used by Node.js are: # OF THE POSSIBILITY OF SUCH DAMAGE. # -------------------------------------------------------------------------- - 4. Burmese Word Break Dictionary Data (burmesedict.txt) + ---------------------------------------------------------------------- + + Burmese Word Break Dictionary Data (burmesedict.txt) # Copyright (c) 2014 International Business Machines Corporation # and others. All Rights Reserved. @@ -479,7 +507,9 @@ The externally maintained libraries used by Node.js are: # SUCH DAMAGE. # -------------------------------------------------------------------------- - 5. Time Zone Database + ---------------------------------------------------------------------- + + Time Zone Database ICU uses the public domain data and code derived from Time Zone Database for its time zone support. The ownership of the TZ database @@ -502,7 +532,9 @@ The externally maintained libraries used by Node.js are: # making a contribution to the database or code waives all rights to # future claims in that contribution or in the TZ Database. - 6. Google double-conversion + ---------------------------------------------------------------------- + + Google double-conversion Copyright 2006-2011, the V8 project authors. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -530,13 +562,87 @@ The externally maintained libraries used by Node.js are: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + ---------------------------------------------------------------------- + + File: aclocal.m4 (only for ICU4C) + Section: pkg.m4 - Macros to locate and utilise pkg-config. + + Copyright © 2004 Scott James Remnant . + Copyright © 2012-2015 Dan Nicholson + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. + + As a special exception to the GNU General Public License, if you + distribute this file as part of a program that contains a + configuration script generated by Autoconf, you may include it under + the same distribution terms that you use for the rest of that + program. + + (The condition for the exception is fulfilled because + ICU4C includes a configuration script generated by Autoconf, + namely the `configure` script.) + + ---------------------------------------------------------------------- + + File: config.guess (only for ICU4C) + + This file is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, see . + + As a special exception to the GNU General Public License, if you + distribute this file as part of a program that contains a + configuration script generated by Autoconf, you may include it under + the same distribution terms that you use for the rest of that + program. This Exception is an additional permission under section 7 + of the GNU General Public License, version 3 ("GPLv3"). + + (The condition for the exception is fulfilled because + ICU4C includes a configuration script generated by Autoconf, + namely the `configure` script.) + + ---------------------------------------------------------------------- + + File: install-sh (only for ICU4C) + + Copyright 1991 by the Massachusetts Institute of Technology + + Permission to use, copy, modify, distribute, and sell this software and its + documentation for any purpose is hereby granted without fee, provided that + the above copyright notice appear in all copies and that both that + copyright notice and this permission notice appear in supporting + documentation, and that the name of M.I.T. not be used in advertising or + publicity pertaining to distribution of the software without specific, + written prior permission. M.I.T. makes no representations about the + suitability of this software for any purpose. It is provided "as is" + without express or implied warranty. """ - libuv, located at deps/uv, is licensed as follows: """ - libuv is licensed for use as follows: - - ==== Copyright (c) 2015-present libuv project contributors. Permission is hereby granted, free of charge, to any person obtaining a copy @@ -556,8 +662,6 @@ The externally maintained libraries used by Node.js are: LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ==== - This license applies to parts of libuv originating from the https://github.com/joyent/libuv repository: @@ -594,16 +698,6 @@ The externally maintained libraries used by Node.js are: - inet_pton and inet_ntop implementations, contained in src/inet.c, are copyright the Internet Systems Consortium, Inc., and licensed under the ISC license. - - - stdint-msvc2008.h (from msinttypes), copyright Alexander Chemeris. Three - clause BSD license. - - - pthread-fixes.c, copyright Google Inc. and Sony Mobile Communications AB. - Three clause BSD license. - - - android-ifaddrs.h, android-ifaddrs.c, copyright Berkeley Software Design - Inc, Kenneth MacKay and Emergya (Cloud4all, FP7/2007-2013, grant agreement - n° 289016). Three clause BSD license. """ - llhttp, located at deps/llhttp, is licensed as follows: @@ -632,58 +726,460 @@ The externally maintained libraries used by Node.js are: USE OR OTHER DEALINGS IN THE SOFTWARE. """ -- OpenSSL, located at deps/openssl, is licensed as follows: +- corepack, located at deps/corepack, is licensed as follows: """ - Copyright (c) 1998-2019 The OpenSSL Project. All rights reserved. + **Copyright © Corepack contributors** - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + """ + +- undici, located at deps/undici, is licensed as follows: + """ + MIT License + + Copyright (c) Matteo Collina and Undici contributors + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + """ + +- postject, located at test/fixtures/postject-copy, is licensed as follows: + """ + Postject is licensed for use as follows: + + """ + MIT License + + Copyright (c) 2022 Postman, Inc + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + """ + + The Postject license applies to all parts of Postject that are not externally + maintained libraries. + + The externally maintained libraries used by Postject are: + + - LIEF, located at vendor/LIEF, is licensed as follows: + """ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2017 - 2022 R. Thomas + Copyright 2017 - 2022 Quarkslab + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + """ + """ - 3. All advertising materials mentioning features or use of this - software must display the following acknowledgment: - "This product includes software developed by the OpenSSL Project - for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - - 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - endorse or promote products derived from this software without - prior written permission. For written permission, please contact - openssl-core@openssl.org. - - 5. Products derived from this software may not be called "OpenSSL" - nor may "OpenSSL" appear in their names without prior written - permission of the OpenSSL Project. - - 6. Redistributions of any form whatsoever must retain the following - acknowledgment: - "This product includes software developed by the OpenSSL Project - for use in the OpenSSL Toolkit (http://www.openssl.org/)" - - THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - OF THE POSSIBILITY OF SUCH DAMAGE. - ==================================================================== - - This product includes cryptographic software written by Eric Young - (eay@cryptsoft.com). This product includes software written by Tim - Hudson (tjh@cryptsoft.com). +- OpenSSL, located at deps/openssl, is licensed as follows: + """ + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS """ - Punycode.js, located at lib/punycode.js, is licensed as follows: @@ -729,8 +1225,7 @@ The externally maintained libraries used by Node.js are: - Strongtalk assembler, the basis of the files assembler-arm-inl.h, assembler-arm.cc, assembler-arm.h, assembler-ia32-inl.h, assembler-ia32.cc, assembler-ia32.h, assembler-x64-inl.h, - assembler-x64.cc, assembler-x64.h, assembler-mips-inl.h, - assembler-mips.cc, assembler-mips.h, assembler.cc and assembler.h. + assembler-x64.cc, assembler-x64.h, assembler.cc and assembler.h. This code is copyrighted by Sun Microsystems Inc. and released under a 3-clause BSD license. @@ -790,9 +1285,9 @@ The externally maintained libraries used by Node.js are: - zlib, located at deps/zlib, is licensed as follows: """ zlib.h -- interface of the 'zlib' general purpose compression library - version 1.2.11, January 15th, 2017 + version 1.3.0.1, August xxth, 2023 - Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler + Copyright (C) 1995-2023 Jean-loup Gailly and Mark Adler This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -814,6 +1309,274 @@ The externally maintained libraries used by Node.js are: jloup@gzip.org madler@alumni.caltech.edu """ +- simdjson, located at deps/simdjson, is licensed as follows: + """ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2023 The simdjson authors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + """ + +- simdutf, located at deps/simdutf, is licensed as follows: + """ + Copyright 2021 The simdutf authors + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + the Software, and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + """ + +- ada, located at deps/ada, is licensed as follows: + """ + Copyright 2023 Yagiz Nizipli and Daniel Lemire + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + the Software, and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + """ + +- minimatch, located at deps/minimatch, is licensed as follows: + """ + The ISC License + + Copyright (c) 2011-2023 Isaac Z. Schlueter and Contributors + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR + IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + """ + - npm, located at deps/npm, is licensed as follows: """ The npm application @@ -1045,6 +1808,7 @@ The externally maintained libraries used by Node.js are: - GYP, located at tools/gyp, is licensed as follows: """ + Copyright (c) 2020 Node.js contributors. All rights reserved. Copyright (c) 2009 Google Inc. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -1208,9 +1972,38 @@ The externally maintained libraries used by Node.js are: OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ +- gypi_to_gn.py, located at tools/gypi_to_gn.py, is licensed as follows: + """ + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + * Neither the name of Google LLC nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + """ + - ESLint, located at tools/node_modules/eslint, is licensed as follows: """ - Copyright JS Foundation and other contributors, https://js.foundation + Copyright OpenJS Foundation and other contributors, Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -1231,33 +2024,7 @@ The externally maintained libraries used by Node.js are: THE SOFTWARE. """ -- babel-eslint, located at tools/node_modules/babel-eslint, is licensed as follows: - """ - Copyright (c) 2014-2016 Sebastian McKenzie - - MIT License - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - """ - -- gtest, located at test/cctest/gtest, is licensed as follows: +- gtest, located at deps/googletest, is licensed as follows: """ Copyright 2008, Google Inc. All rights reserved. @@ -1316,29 +2083,6 @@ The externally maintained libraries used by Node.js are: WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ -- node-inspect, located at deps/node-inspect, is licensed as follows: - """ - Copyright Node.js contributors. All rights reserved. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to - deal in the Software without restriction, including without limitation the - rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - IN THE SOFTWARE. - """ - - large_pages, located at src/large_pages, is licensed as follows: """ Copyright (C) 2018 Intel Corporation @@ -1355,7 +2099,7 @@ The externally maintained libraries used by Node.js are: THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE @@ -1448,6 +2192,39 @@ The externally maintained libraries used by Node.js are: THE POSSIBILITY OF SUCH DAMAGE. """ +- highlight.js, located at doc/api_assets/highlight.pack.js, is licensed as follows: + """ + BSD 3-Clause License + + Copyright (c) 2006, Ivan Sagalaev. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + """ + - node-heapdump, located at src/heap_utils.cc, is licensed as follows: """ ISC License @@ -1527,4 +2304,107 @@ The externally maintained libraries used by Node.js are: LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + """ + +- ngtcp2, located at deps/ngtcp2/ngtcp2/, is licensed as follows: + """ + The MIT License + + Copyright (c) 2016 ngtcp2 contributors + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + """ + +- nghttp3, located at deps/ngtcp2/nghttp3/, is licensed as follows: + """ + The MIT License + + Copyright (c) 2019 nghttp3 contributors + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + """ + +- node-fs-extra, located at lib/internal/fs/cp, is licensed as follows: + """ + (The MIT License) + + Copyright (c) 2011-2017 JP Richardson + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files + (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, + merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE + WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS + OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + """ + +- base64, located at deps/base64/base64/, is licensed as follows: + """ + Copyright (c) 2005-2007, Nick Galbreath + Copyright (c) 2015-2018, Wojciech Muła + Copyright (c) 2016-2017, Matthieu Darbois + Copyright (c) 2013-2022, Alfred Klomp + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + - Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ \ No newline at end of file diff --git a/Licenses/polyfills-for-old-dot-net-license.txt b/Licenses/polyfills-for-old-dot-net-license.txt index fab73c68..3598e8b2 100644 --- a/Licenses/polyfills-for-old-dot-net-license.txt +++ b/Licenses/polyfills-for-old-dot-net-license.txt @@ -1,3 +1,5 @@ + Copyright (c) 2018-2024 Andrey Taritsyn - http://www.taritsyn.ru + Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -178,7 +180,7 @@ APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" + boilerplate notice, with the fields enclosed by brackets "{}" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a @@ -186,7 +188,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright (c) 2018 Andrey Taritsyn - http://www.taritsyn.ru + Copyright {yyyy} {name of copyright owner} Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -198,4 +200,4 @@ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and - limitations under the License. + limitations under the License. \ No newline at end of file diff --git a/README.md b/README.md index ffe56886..f94e0e9b 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ JavaScript Engine Switcher [![NuGet version](http://img.shields.io/nuget/v/JavaScriptEngineSwitcher.Core.svg)](https://www.nuget.org/packages/JavaScriptEngineSwitcher.Core/) [![Download count](https://img.shields.io/nuget/dt/JavaScriptEngineSwitcher.Core.svg)](https://www.nuget.org/packages/JavaScriptEngineSwitcher.Core/) ========================== -JavaScript Engine Switcher determines unified interface for access to the basic features of popular JavaScript engines ([ChakraCore](https://github.com/chakra-core/ChakraCore), [Jint](https://github.com/sebastienros/jint), [Jurassic](https://github.com/paulbartrum/jurassic), [MSIE JavaScript Engine for .NET](https://github.com/Taritsyn/MsieJavaScriptEngine), [NiL.JS](https://github.com/nilproject/NiL.JS), [Jering.Javascript.NodeJS](https://github.com/JeringTech/Javascript.NodeJS), [Microsoft ClearScript.V8](https://github.com/Microsoft/ClearScript), [VroomJs](https://github.com/pauldotknopf/vroomjs-core) and [YantraJS](https://yantrajs.com)). +JavaScript Engine Switcher determines unified interface for access to the basic features of popular JavaScript engines ([ChakraCore](https://github.com/chakra-core/ChakraCore), [Jint](https://github.com/sebastienros/jint), [Jurassic](https://github.com/paulbartrum/jurassic), [MSIE JavaScript Engine for .NET](https://github.com/Taritsyn/MsieJavaScriptEngine), [NiL.JS](https://github.com/nilproject/NiL.JS), [Jering.Javascript.NodeJS](https://github.com/JeringTech/Javascript.NodeJS), [Microsoft ClearScript.V8](https://github.com/Microsoft/ClearScript), [VroomJs](https://github.com/pauldotknopf/vroomjs-core) and [YantraJS](https://github.com/yantrajs/yantra)). This library allows you to quickly and easily switch to using of another JavaScript engine. The supported .NET types are as follows: @@ -27,12 +27,12 @@ This library can be installed through NuGet: * [Windows (ARM64)](http://nuget.org/packages/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64) * [Linux (x64)](http://nuget.org/packages/JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64) * [OS X (x64)](http://nuget.org/packages/JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64) - * [JS Engine Switcher: Jint](http://nuget.org/packages/JavaScriptEngineSwitcher.Jint) (supports .NET Framework 4.6.2, .NET Standard 2.0, .NET Standard 2.1 and .NET 6) + * [JS Engine Switcher: Jint](http://nuget.org/packages/JavaScriptEngineSwitcher.Jint) (supports .NET Framework 4.6.2, .NET Standard 2.0, .NET Standard 2.1 and .NET 8) * [JS Engine Switcher: Jurassic](http://nuget.org/packages/JavaScriptEngineSwitcher.Jurassic) (supports .NET Framework 4.0 Client, .NET Framework 4.5 and .NET Standard 2.0) * [JS Engine Switcher: MSIE](http://nuget.org/packages/JavaScriptEngineSwitcher.Msie) (supports .NET Framework 4.0 Client, .NET Framework 4.5, .NET Standard 1.3 and .NET Standard 2.0) - * [JS Engine Switcher: NiL](http://nuget.org/packages/JavaScriptEngineSwitcher.NiL) (supports .NET Framework 4.6.1, .NET Framework 4.8, .NET Core App 3.1, .NET 5.0, .NET 6 and .NET 7) + * [JS Engine Switcher: NiL](http://nuget.org/packages/JavaScriptEngineSwitcher.NiL) (supports .NET Framework 4.6.1, .NET Framework 4.8, .NET Core App 3.1, .NET 6, .NET 8 and .NET 9) * [JS Engine Switcher: Node](http://nuget.org/packages/JavaScriptEngineSwitcher.Node) (supports .NET Framework 4.6.1, .NET Standard 2.0, .NET Core App 3.1, .NET 5.0, .NET 6 and .NET 7) - * [JS Engine Switcher: V8](http://nuget.org/packages/JavaScriptEngineSwitcher.V8) (supports .NET Framework 4.5, .NET Framework 4.7.1, .NET Standard 2.1, .NET Core App 3.1 and .NET 5.0) + * [JS Engine Switcher: V8](http://nuget.org/packages/JavaScriptEngineSwitcher.V8) (supports .NET Framework 4.6.2, .NET Framework 4.7.1, .NET Standard 2.1, .NET Core App 3.1 and .NET 5.0) * [Microsoft ClearScript.V8 for Windows (x86)](https://www.nuget.org/packages/Microsoft.ClearScript.V8.Native.win-x86) * [Microsoft ClearScript.V8 for Windows (x64)](https://www.nuget.org/packages/Microsoft.ClearScript.V8.Native.win-x64) * [Microsoft ClearScript.V8 for Windows (ARM64)](https://www.nuget.org/packages/Microsoft.ClearScript.V8.Native.win-arm64) @@ -62,14 +62,16 @@ If you use the JavaScript Engine Switcher in some project, please send me a mess * [Autoprefixer Host for .NET](https://github.com/Taritsyn/AutoprefixerHost) by Andrey Taritsyn * [Bundle Transformer](https://github.com/Taritsyn/BundleTransformer) by Andrey Taritsyn * [Cruncher](https://github.com/JimBobSquarePants/Cruncher) by James South + * [Dart Sass Host for .NET](https://github.com/Taritsyn/DartSassHost) by Andrey Taritsyn * [E.F.F.C JavaScriptEngineSwitcher Extention Lib](https://github.com/redwolf0817/EFFC.JavaScriptEngineSwitcher.Extention) by ItTrending * [GFMParserSample.Net](https://github.com/mad4-red/GFMParserSample.Net) * [JSPool](http://dan.cx/projects/jspool) by Daniel Lo Nigro - * [MediaGetCore](https://github.com/XuPeiYao/MediaGetCore) by Xu Pei-Yao * [ProteanCMS](https://github.com/Eonic/ProteanCMS) by Trevor Spink * [QSI](https://github.com/chequer-io/qsi) * [ReactJS.NET](http://reactjs.net/) by Daniel Lo Nigro + * [SSR.Net](https://github.com/knowit/SSR.Net) * [Statiq Framework](https://statiq.dev/framework) (formerly known as [Wyam](http://wyam.io/)) * [T1.Scripts](http://nuget.org/packages/T1.Scripts) * [VIEApps.Services.Base](https://github.com/vieapps/Services.Base) + * [YouTubeStreamsExtractor](https://github.com/tmk907/YouTubeStreamsExtractor) * [zxcvbn.net](https://github.com/darcythomas/zxcvbn.net) by Darcy Thomas \ No newline at end of file diff --git a/build/common.props b/build/common.props index f4d8b905..bd3a2ae5 100644 --- a/build/common.props +++ b/build/common.props @@ -1,6 +1,6 @@ - Copyright © 2013-2023 Andrey Taritsyn + Copyright © 2013-2025 Andrey Taritsyn false false diff --git a/build/initialize-standard-nuspec-properties.targets b/build/initialize-standard-nuspec-properties.targets index 3ea04ec2..5cc44de4 100644 --- a/build/initialize-standard-nuspec-properties.targets +++ b/build/initialize-standard-nuspec-properties.targets @@ -33,6 +33,16 @@ $(Title) + <_ReadmeElement/> + <_ReadmeElement Condition="'$(PackageReadmeFile)' != ''"> + $(PackageReadmeFile) + + + <_ReadmeFileElement/> + <_ReadmeFileElement Condition="'$(PackageReadmeFile)' != ''"> + + + <_LicenseElement/> <_LicenseElement Condition="'$(PackageLicenseExpression)' != ''"> $(PackageLicenseExpression) @@ -42,9 +52,12 @@ <_LicenseFileElement/> - <_LicenseFileElement Condition="'$(PackageLicenseFile)' != ''"> + <_LicenseFileElement Condition="'$(PackageLicenseFullPath)' != '' and '$(PackageLicenseFile)' != ''"> + <_LicenseFileElement Condition="'$(PackageLicenseFullPath)' != '' and '$(PackageLicenseFile)' == ''"> + + <_TagsElement/> <_TagsElement Condition="'$(PackageTags)' != ''"> @@ -52,7 +65,7 @@ <_IconUrlElement/> - <_IconUrlElement Condition="'$(PackageIcon)' == '' and '$(PackageIconUrl)' != ''"> + <_IconUrlElement Condition="'$(PackageIconUrl)' != ''"> $(PackageIconUrl) @@ -88,27 +101,30 @@ <_CommonMetadataElements> $(PackageId) - $(_TitleElement) - $(PackageDescription) $(PackageVersion) + $(_TitleElement) $(Authors) - $(PackageRequireLicenseAcceptance) - $(_TagsElement) $(_LicenseElement) + $(PackageRequireLicenseAcceptance) $(_IconElement) + $(_ReadmeElement) + $(PackageProjectUrl) $(_IconUrlElement) + $(PackageDescription) $(_ReleaseNotesElement) - $(PackageProjectUrl) $(Copyright) + $(_TagsElement) + $(_DevelopmentDependencyElement) $(_ServiceableElement) - $(_NeutralLanguageElement) <_CommonFileElements> + $(CommonFileElements) $(_IconFileElement) $(_LicenseFileElement) + $(_ReadmeFileElement) diff --git a/build/nuget-common.props b/build/nuget-common.props index 7119e5ac..e36818c8 100644 --- a/build/nuget-common.props +++ b/build/nuget-common.props @@ -2,9 +2,10 @@ $(Product) Andrey Taritsyn - false + PACKAGE-DESCRIPTION.md + $(PackageReadmeFile) JavaScriptEngineSwitcher;JavaScript;ECMAScript - LICENSE.txt + Apache-2.0 ../../LICENSE.txt icon.png https://github.com/Taritsyn/JavaScriptEngineSwitcher diff --git a/build/nuget-for-dotnet-lib.props b/build/nuget-for-dotnet-lib.props index fd1ac079..45e6e499 100644 --- a/build/nuget-for-dotnet-lib.props +++ b/build/nuget-for-dotnet-lib.props @@ -12,15 +12,10 @@ - - $(PackageLicenseFile) - true - false - - - $(PackageIcon) - true - false - + + + + + \ No newline at end of file diff --git a/build/nuget-for-native-lib.props b/build/nuget-for-native-lib.props index e2519fd6..396aa563 100644 --- a/build/nuget-for-native-lib.props +++ b/build/nuget-for-native-lib.props @@ -4,5 +4,8 @@ false $(MSBuildProjectName).nuspec + + + \ No newline at end of file diff --git a/global.json b/global.json index e383752a..512142d2 100644 --- a/global.json +++ b/global.json @@ -1,5 +1,6 @@ { "sdk": { - "version": "7.0.304" + "version": "10.0.100", + "rollForward": "latestFeature" } } diff --git a/lib/ChakraCore/runtimes/linux-x64/native/libChakraCore.so b/lib/ChakraCore/runtimes/linux-x64/native/libChakraCore.so index 64244367..8bb7f46b 100644 Binary files a/lib/ChakraCore/runtimes/linux-x64/native/libChakraCore.so and b/lib/ChakraCore/runtimes/linux-x64/native/libChakraCore.so differ diff --git a/lib/ChakraCore/runtimes/osx-x64/native/libChakraCore.dylib b/lib/ChakraCore/runtimes/osx-x64/native/libChakraCore.dylib index 629c1a68..f0c98abf 100644 Binary files a/lib/ChakraCore/runtimes/osx-x64/native/libChakraCore.dylib and b/lib/ChakraCore/runtimes/osx-x64/native/libChakraCore.dylib differ diff --git a/lib/ChakraCore/runtimes/win-arm/native/ChakraCore.dll b/lib/ChakraCore/runtimes/win-arm/native/ChakraCore.dll index f28c18fb..9a940729 100644 Binary files a/lib/ChakraCore/runtimes/win-arm/native/ChakraCore.dll and b/lib/ChakraCore/runtimes/win-arm/native/ChakraCore.dll differ diff --git a/lib/ChakraCore/runtimes/win-arm64/native/ChakraCore.dll b/lib/ChakraCore/runtimes/win-arm64/native/ChakraCore.dll index 20eb3acc..4f16911b 100644 Binary files a/lib/ChakraCore/runtimes/win-arm64/native/ChakraCore.dll and b/lib/ChakraCore/runtimes/win-arm64/native/ChakraCore.dll differ diff --git a/lib/ChakraCore/runtimes/win-x64/native/ChakraCore.dll b/lib/ChakraCore/runtimes/win-x64/native/ChakraCore.dll index 555733a1..8711905f 100644 Binary files a/lib/ChakraCore/runtimes/win-x64/native/ChakraCore.dll and b/lib/ChakraCore/runtimes/win-x64/native/ChakraCore.dll differ diff --git a/lib/ChakraCore/runtimes/win-x86/native/ChakraCore.dll b/lib/ChakraCore/runtimes/win-x86/native/ChakraCore.dll index a9445229..fa05c533 100644 Binary files a/lib/ChakraCore/runtimes/win-x86/native/ChakraCore.dll and b/lib/ChakraCore/runtimes/win-x86/native/ChakraCore.dll differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4.csproj b/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4.csproj index ed600e9c..32393355 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4.csproj +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4.csproj @@ -1,9 +1,9 @@  - - - - + + + + Debug @@ -182,17 +182,10 @@ - - - - - - - - - - - + + @@ -218,9 +211,9 @@ This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - + + + + \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/Properties/AssemblyInfo.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/Properties/AssemblyInfo.cs index 3c5554d3..2b4ecedb 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/Properties/AssemblyInfo.cs +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/Properties/AssemblyInfo.cs @@ -6,12 +6,12 @@ [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("JS Engine Switcher: Sample ASP.NET MVC 4 Site")] -[assembly: AssemblyCopyright("Copyright © 2013-2023 Andrey Taritsyn")] +[assembly: AssemblyCopyright("Copyright © 2013-2025 Andrey Taritsyn")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] [assembly: Guid("39487053-b459-4433-ae93-e00affc653c6")] -[assembly: AssemblyVersion("3.21.3.0")] -[assembly: AssemblyFileVersion("3.21.3.0")] \ No newline at end of file +[assembly: AssemblyVersion("3.30.2.0")] +[assembly: AssemblyFileVersion("3.30.2.0")] \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/Views/Home/Contact.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/Views/Home/Contact.cshtml index cc33fd4d..2154ade2 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/Views/Home/Contact.cshtml +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/Views/Home/Contact.cshtml @@ -5,19 +5,4 @@

@ViewBag.Title

@Html.Raw(ViewBag.Body) -
- -@section Scripts { - -} \ No newline at end of file + \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/Views/Shared/_Layout.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/Views/Shared/_Layout.cshtml index 91328e8d..7a886756 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/Views/Shared/_Layout.cshtml +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/Views/Shared/_Layout.cshtml @@ -54,9 +54,10 @@ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/build-frontend.cmd b/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/build-frontend.cmd new file mode 100644 index 00000000..b36fa314 --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/build-frontend.cmd @@ -0,0 +1,41 @@ +@echo off +setlocal + +::-------------------------------------------------------------------------------- +:: Build +::-------------------------------------------------------------------------------- + +echo Starting to build the frontend for ASP.NET MVC 4 sample ... +echo. + +echo Installing Node.js packages ... +echo. +call npm install +if errorlevel 1 goto error +echo. + +echo Installing Bower packages ... +echo. +call bower install +if errorlevel 1 goto error +echo. + +echo Building client-side assets ... +echo. +call gulp +if errorlevel 1 goto error +echo. + +::-------------------------------------------------------------------------------- +:: Exit +::-------------------------------------------------------------------------------- + +echo Succeeded! +goto exit + +:error +echo *** Error: The previous step failed! + +:exit +cd ../../ +endlocal \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/build-frontend.sh b/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/build-frontend.sh new file mode 100644 index 00000000..112d2a8d --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/build-frontend.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env bash + +function handle_error() +{ + _RET=${PIPESTATUS[0]} + if [[ $_RET != 0 ]]; then + echo "*** Error: The previous step failed!" + + cd ../../ + exit $_RET + fi +} + +echo "Starting to build the frontend for ASP.NET MVC 4 sample ..." +echo "" + +echo "Installing Node.js packages ..." +echo "" +npm install +handle_error +echo "" + +echo "Installing Bower packages ..." +echo "" +bower install +handle_error +echo "" + +echo "Building client-side assets ..." +echo "" +gulp +handle_error +echo "" + +echo "Succeeded!" + +cd ../../ +exit $_RET \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/images/icons/32x32/social-media-icons-32.png b/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/images/icons/32x32/social-media-icons-32.png index 49aa1fe3..30d1c781 100644 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/images/icons/32x32/social-media-icons-32.png and b/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/images/icons/32x32/social-media-icons-32.png differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/package.json b/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/package.json index 8f233c51..98d601d7 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/package.json +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/package.json @@ -1,7 +1,7 @@ { "name": "jsengineswitcher.sample.aspnet4.mvc4", "private": true, - "version": "3.21.3", + "version": "3.30.2", "devDependencies": { "gulp": "4.0.2", "del": "5.1.0", diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/packages.config b/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/packages.config index 0244496a..6b274db9 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/packages.config +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/packages.config @@ -1,9 +1,9 @@  - - - - + + + + diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/styles/icons.less b/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/styles/icons.less index 79b9d9e5..4a80f963 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/styles/icons.less +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNet4.Mvc4/styles/icons.less @@ -15,11 +15,11 @@ width: 32px; } -.icon-facebook { +.icon-mastodon { background-position: 0 0; } -.icon-twitter { +.icon-x { background-position: 0 -32px; } @@ -27,6 +27,10 @@ background-position: 0 -64px; } +.icon-bluesky { + background-position: 0 -96px; +} + .icon-rss { background-position: 0 -128px; } \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/.bowerrc b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/.bowerrc similarity index 100% rename from samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/.bowerrc rename to samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/.bowerrc diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets.csproj b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets.csproj new file mode 100644 index 00000000..ae4c7d82 --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets.csproj @@ -0,0 +1,11 @@ + + + + JS Engine Switcher: Client-Side Assets for ASP.NET Core Samples + 3.30.2 + netstandard2.0 + Library + false + + + \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/bower.json b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/bower.json similarity index 75% rename from samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/bower.json rename to samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/bower.json index 0e307723..3a9323a2 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/bower.json +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/bower.json @@ -1,5 +1,5 @@ { - "name": "jsengineswitcher.sample.aspnetcore1full.mvc1", + "name": "javascriptengineswitcher.sample.aspnetcore.clientsideassets", "dependencies": { "modernizr": "2.8.3", "jquery-compat": "jquery#1.10.2", diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/build-frontend.cmd b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/build-frontend.cmd new file mode 100644 index 00000000..de3af278 --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/build-frontend.cmd @@ -0,0 +1,41 @@ +@echo off +setlocal + +::-------------------------------------------------------------------------------- +:: Build +::-------------------------------------------------------------------------------- + +echo Starting to build the frontend for ASP.NET Core samples ... +echo. + +echo Installing Node.js packages ... +echo. +call npm install +if errorlevel 1 goto error +echo. + +echo Installing Bower packages ... +echo. +call bower install +if errorlevel 1 goto error +echo. + +echo Building client-side assets ... +echo. +call gulp +if errorlevel 1 goto error +echo. + +::-------------------------------------------------------------------------------- +:: Exit +::-------------------------------------------------------------------------------- + +echo Succeeded! +goto exit + +:error +echo *** Error: The previous step failed! + +:exit +cd ../../ +endlocal \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/build-frontend.sh b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/build-frontend.sh new file mode 100644 index 00000000..06a7afd9 --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/build-frontend.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env bash + +function handle_error() +{ + _RET=${PIPESTATUS[0]} + if [[ $_RET != 0 ]]; then + echo "*** Error: The previous step failed!" + + cd ../../ + exit $_RET + fi +} + +echo "Starting to build the frontend for ASP.NET Core samples ..." +echo "" + +echo "Installing Node.js packages ..." +echo "" +npm install +handle_error +echo "" + +echo "Installing Bower packages ..." +echo "" +bower install +handle_error +echo "" + +echo "Building client-side assets ..." +echo "" +gulp +handle_error +echo "" + +echo "Succeeded!" + +cd ../../ +exit $_RET \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/ensure-client-side-assets-builded.targets b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/ensure-client-side-assets-builded.targets new file mode 100644 index 00000000..3f41ba35 --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/ensure-client-side-assets-builded.targets @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/gulpfile.js b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/gulpfile.js similarity index 100% rename from samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/gulpfile.js rename to samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/gulpfile.js diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/package.json b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/package.json similarity index 75% rename from samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/package.json rename to samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/package.json index ec167426..725f9bac 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/package.json +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/package.json @@ -1,7 +1,7 @@ { - "name": "jsengineswitcher.sample.aspnetcore21.mvc21", + "name": "javascriptengineswitcher.sample.aspnetcore.clientsideassets", "private": true, - "version": "3.21.3", + "version": "3.30.2", "devDependencies": { "gulp": "4.0.2", "del": "5.1.0", diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/images/0.gif b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/images/0.gif similarity index 100% rename from samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/images/0.gif rename to samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/images/0.gif diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/images/clear-text.png b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/images/clear-text.png similarity index 100% rename from samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/images/clear-text.png rename to samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/images/clear-text.png diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/images/icons/32x32/social-media-icons-32.png b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/images/icons/32x32/social-media-icons-32.png new file mode 100644 index 00000000..30d1c781 Binary files /dev/null and b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/images/icons/32x32/social-media-icons-32.png differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/images/icons/48x48/error.png b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/images/icons/48x48/error.png similarity index 100% rename from samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/images/icons/48x48/error.png rename to samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/images/icons/48x48/error.png diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/images/jsengineswitcher-logo.png b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/images/jsengineswitcher-logo.png similarity index 100% rename from samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/images/jsengineswitcher-logo.png rename to samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/images/jsengineswitcher-logo.png diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/scripts/_references.js b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/scripts/_references.js similarity index 100% rename from samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/scripts/_references.js rename to samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/scripts/_references.js diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/scripts/common.js b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/scripts/common.js similarity index 100% rename from samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/scripts/common.js rename to samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/scripts/common.js diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/scripts/evaluation-form.js b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/scripts/evaluation-form.js similarity index 100% rename from samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/scripts/evaluation-form.js rename to samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/scripts/evaluation-form.js diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/styles/app.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/styles/app.less similarity index 100% rename from samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/styles/app.less rename to samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/styles/app.less diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/styles/bootstrap-custom-variables.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/styles/bootstrap-custom-variables.less similarity index 100% rename from samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/styles/bootstrap-custom-variables.less rename to samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/styles/bootstrap-custom-variables.less diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/styles/buttons.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/styles/buttons.less similarity index 100% rename from samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/styles/buttons.less rename to samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/styles/buttons.less diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/styles/code.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/styles/code.less similarity index 100% rename from samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/styles/code.less rename to samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/styles/code.less diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/styles/evaluation-form.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/styles/evaluation-form.less similarity index 100% rename from samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/styles/evaluation-form.less rename to samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/styles/evaluation-form.less diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/styles/forms.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/styles/forms.less similarity index 100% rename from samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/styles/forms.less rename to samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/styles/forms.less diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/icons.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/styles/icons.less similarity index 85% rename from samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/icons.less rename to samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/styles/icons.less index 79b9d9e5..4a80f963 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/icons.less +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/styles/icons.less @@ -15,11 +15,11 @@ width: 32px; } -.icon-facebook { +.icon-mastodon { background-position: 0 0; } -.icon-twitter { +.icon-x { background-position: 0 -32px; } @@ -27,6 +27,10 @@ background-position: 0 -64px; } +.icon-bluesky { + background-position: 0 -96px; +} + .icon-rss { background-position: 0 -128px; } \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/styles/layout.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/styles/layout.less similarity index 100% rename from samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/styles/layout.less rename to samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/styles/layout.less diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/styles/mixins.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/styles/mixins.less similarity index 100% rename from samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/styles/mixins.less rename to samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/styles/mixins.less diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/styles/navbar.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/styles/navbar.less similarity index 100% rename from samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/styles/navbar.less rename to samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/styles/navbar.less diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/styles/page-socials.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/styles/page-socials.less similarity index 100% rename from samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/styles/page-socials.less rename to samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/styles/page-socials.less diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/styles/type.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/styles/type.less similarity index 100% rename from samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/styles/type.less rename to samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/styles/type.less diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/styles/variables.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/styles/variables.less similarity index 100% rename from samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/styles/variables.less rename to samples/JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot/styles/variables.less diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Infrastructure/Helpers/CommonExtensions.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure/Helpers/CommonExtensions.cs similarity index 82% rename from samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Infrastructure/Helpers/CommonExtensions.cs rename to samples/JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure/Helpers/CommonExtensions.cs index 7dc4cb4d..d58feadb 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Infrastructure/Helpers/CommonExtensions.cs +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure/Helpers/CommonExtensions.cs @@ -3,7 +3,7 @@ using Microsoft.AspNetCore.Html; using Microsoft.AspNetCore.Mvc.Rendering; -namespace JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5.Infrastructure.Helpers +namespace JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure.Helpers { public static class CommonExtensions { diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure/JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure.csproj b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure/JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure.csproj new file mode 100644 index 00000000..8ad369ff --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure/JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure.csproj @@ -0,0 +1,56 @@ + + + + JS Engine Switcher: Infrastructure for ASP.NET Core Samples + 3.30.2 + net451;netstandard1.6;netstandard2.0;netcoreapp3.1;net5.0;net6.0;net7.0;net8.0;net9.0;net10.0 + 1.6.0 + Library + true + $(NoWarn);NETSDK1215;NU1902;NU1903;NU1904 + false + false + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/Infrastructure/TagHelpers/ConditionalCommentTagHelper.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure/TagHelpers/ConditionalCommentTagHelper.cs similarity index 95% rename from samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/Infrastructure/TagHelpers/ConditionalCommentTagHelper.cs rename to samples/JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure/TagHelpers/ConditionalCommentTagHelper.cs index acc30895..22e7e9bb 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/Infrastructure/TagHelpers/ConditionalCommentTagHelper.cs +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure/TagHelpers/ConditionalCommentTagHelper.cs @@ -2,7 +2,7 @@ using Microsoft.AspNetCore.Razor.TagHelpers; -namespace JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6.Infrastructure.TagHelpers +namespace JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure.TagHelpers { [HtmlTargetElement("conditional-comment")] public class ConditionalCommentTagHelper : TagHelper diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Infrastructure/TagHelpers/ConditionalCommentType.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure/TagHelpers/ConditionalCommentType.cs similarity index 57% rename from samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Infrastructure/TagHelpers/ConditionalCommentType.cs rename to samples/JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure/TagHelpers/ConditionalCommentType.cs index 1cbebb21..485194ba 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Infrastructure/TagHelpers/ConditionalCommentType.cs +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure/TagHelpers/ConditionalCommentType.cs @@ -1,4 +1,4 @@ -namespace JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1.Infrastructure.TagHelpers +namespace JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure.TagHelpers { public enum ConditionalCommentType { diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Infrastructure/Helpers/CommonExtensions.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Infrastructure/Helpers/CommonExtensions.cs deleted file mode 100644 index acaf4c8a..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Infrastructure/Helpers/CommonExtensions.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System.Text.RegularExpressions; - -using Microsoft.AspNetCore.Html; -using Microsoft.AspNetCore.Mvc.Rendering; - -namespace JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1.Infrastructure.Helpers -{ - public static class CommonExtensions - { - public static HtmlString EncodedReplace(this IHtmlHelper htmlHelper, string input, - string pattern, string replacement) - { - return new HtmlString(Regex.Replace(htmlHelper.Encode(input), pattern, replacement)); - } - } -} \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Infrastructure/TagHelpers/ConditionalCommentTagHelper.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Infrastructure/TagHelpers/ConditionalCommentTagHelper.cs deleted file mode 100644 index d5b7d682..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Infrastructure/TagHelpers/ConditionalCommentTagHelper.cs +++ /dev/null @@ -1,78 +0,0 @@ -using System; - -using Microsoft.AspNetCore.Razor.TagHelpers; - -namespace JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1.Infrastructure.TagHelpers -{ - [HtmlTargetElement("conditional-comment")] - public class ConditionalCommentTagHelper : TagHelper - { - [HtmlAttributeName("type")] - public ConditionalCommentType CommentType { get; set; } - - [HtmlAttributeName("expression")] - public string Expression { get; set; } - - - public override void Process(TagHelperContext context, TagHelperOutput output) - { - output.TagName = null; - - ConditionalCommentType type = CommentType; - - string ifCommentStartPart; - string ifCommentEndPart; - - switch (type) - { - case ConditionalCommentType.Hidden: - ifCommentStartPart = ""; - - break; - case ConditionalCommentType.RevealedValidatingSimplified: - ifCommentStartPart = ""; - - break; - case ConditionalCommentType.Revealed: - ifCommentStartPart = ""; - - break; - default: - throw new NotSupportedException(); - } - - TagHelperContent preContent = output.PreContent; - preContent.AppendHtml(ifCommentStartPart); - preContent.AppendHtml(Expression); - preContent.AppendHtml(ifCommentEndPart); - - string endIfComment; - - switch (type) - { - case ConditionalCommentType.Hidden: - endIfComment = ""; - break; - case ConditionalCommentType.RevealedValidating: - case ConditionalCommentType.RevealedValidatingSimplified: - endIfComment = ""; - break; - case ConditionalCommentType.Revealed: - endIfComment = ""; - break; - default: - throw new NotSupportedException(); - } - - output.PostContent.AppendHtml(endIfComment); - } - } -} \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1.csproj b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1.csproj index 83757b74..08c70ce0 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1.csproj +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1.csproj @@ -2,11 +2,12 @@ JS Engine Switcher: Sample ASP.NET Core 1.0 MVC 1 Site - 3.21.3 + 3.30.2 netcoreapp1.0 1.0.16 Exe false + $(NoWarn);NU1903;NU1904 true true false @@ -38,6 +39,7 @@ + @@ -48,22 +50,6 @@ - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Program.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Program.cs index a114871d..f2bd4508 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Program.cs +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Program.cs @@ -8,9 +8,14 @@ public class Program { public static void Main(string[] args) { + string currentDirectory = Directory.GetCurrentDirectory(); var host = new WebHostBuilder() .UseKestrel() - .UseContentRoot(Directory.GetCurrentDirectory()) + .UseContentRoot(currentDirectory) + .UseWebRoot(Path.Combine( + currentDirectory, + "../JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot" + )) .UseIISIntegration() .UseStartup() .Build() diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Properties/launchSettings.json b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Properties/launchSettings.json index 899dc420..532b02b6 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Properties/launchSettings.json +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Properties/launchSettings.json @@ -8,13 +8,6 @@ } }, "profiles": { - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, "JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1": { "commandName": "Project", "launchBrowser": true, @@ -22,6 +15,13 @@ "ASPNETCORE_ENVIRONMENT": "Development" }, "applicationUrl": "http://localhost:15465/" + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } } } } diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Startup.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Startup.cs index f67ddfdc..4d8735af 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Startup.cs +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Startup.cs @@ -50,8 +50,10 @@ public void ConfigureServices(IServiceCollection services) // Add JavaScriptEngineSwitcher services to the services container. services.AddJsEngineSwitcher(options => - options.DefaultEngineName = ChakraCoreJsEngine.EngineName - ) + { + options.AllowCurrentProperty = false; + options.DefaultEngineName = ChakraCoreJsEngine.EngineName; + }) .AddChakraCore() .AddMsie(options => { diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Views/Home/Contact.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Views/Home/Contact.cshtml index cd9663df..58785ebe 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Views/Home/Contact.cshtml +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Views/Home/Contact.cshtml @@ -5,19 +5,4 @@

@ViewBag.Title

@ViewBag.Body -
- -@section Scripts { - -} \ No newline at end of file + \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Views/Shared/_JsEvaluationErrorList.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Views/Shared/_JsEvaluationErrorList.cshtml index 84226921..9646764d 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Views/Shared/_JsEvaluationErrorList.cshtml +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Views/Shared/_JsEvaluationErrorList.cshtml @@ -1,4 +1,4 @@ -@using JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1.Infrastructure.Helpers +@using JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure.Helpers @using JavaScriptEngineSwitcher.Sample.Logic.Models @model IList diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Views/Shared/_Layout.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Views/Shared/_Layout.cshtml index 1ce67a4d..b60019c1 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Views/Shared/_Layout.cshtml +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Views/Shared/_Layout.cshtml @@ -1,4 +1,4 @@ -@using JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1.Infrastructure.TagHelpers +@using JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure.TagHelpers @@ -61,9 +61,10 @@ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Views/_ViewImports.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Views/_ViewImports.cshtml index f03d94e2..5364be02 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Views/_ViewImports.cshtml +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/Views/_ViewImports.cshtml @@ -1,2 +1,2 @@ @addTagHelper "*, Microsoft.AspNetCore.Mvc.TagHelpers" -@addTagHelper "*, JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1" \ No newline at end of file +@addTagHelper "*, JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure" \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/bower.json b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/bower.json deleted file mode 100644 index ebc0d4d1..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/bower.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "jsengineswitcher.sample.aspnetcore1.mvc1", - "dependencies": { - "modernizr": "2.8.3", - "jquery-compat": "jquery#1.10.2", - "jquery": "jquery#2.0.3", - "jquery-validation": "1.13.1", - "jquery-validation-unobtrusive": "3.2.3", - "bootstrap": "3.3.0" - } -} diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/package.json b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/package.json deleted file mode 100644 index 3bf36409..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "jsengineswitcher.sample.aspnetcore1.mvc1", - "private": true, - "version": "3.21.3", - "devDependencies": { - "gulp": "4.0.2", - "del": "5.1.0", - "gulp-sourcemaps": "2.6.5", - "gulp-rename": "2.0.0", - "gulp-concat": "2.6.1", - "gulp-less": "4.0.1", - "gulp-autoprefixer": "7.0.1", - "gulp-clean-css": "4.2.0", - "gulp-uglify": "3.0.2" - } -} diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/images/icons/32x32/social-media-icons-32.png b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/images/icons/32x32/social-media-icons-32.png deleted file mode 100644 index 49aa1fe3..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/images/icons/32x32/social-media-icons-32.png and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/styles/icons.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/styles/icons.less deleted file mode 100644 index 79b9d9e5..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1.Mvc1/wwwroot/styles/icons.less +++ /dev/null @@ -1,32 +0,0 @@ -// -// Icons -// -------------------------------------------------- - - -.icon { - background: transparent url(../images/icons/32x32/social-media-icons-32.png) no-repeat scroll; - display: inline-block; - line-height: 0; - vertical-align: bottom; -} - -.icon-32 { - height: 32px; - width: 32px; -} - -.icon-facebook { - background-position: 0 0; -} - -.icon-twitter { - background-position: 0 -32px; -} - -.icon-linkedin { - background-position: 0 -64px; -} - -.icon-rss { - background-position: 0 -128px; -} \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Controllers/HomeController.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Controllers/HomeController.cs new file mode 100644 index 00000000..57f376ff --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Controllers/HomeController.cs @@ -0,0 +1,83 @@ +using System.Diagnostics; +using System.Threading.Tasks; + +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Html; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Configuration; + +using JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9.Models; +using JavaScriptEngineSwitcher.Sample.Logic.Models; +using JavaScriptEngineSwitcher.Sample.Logic.Services; + +namespace JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9.Controllers +{ + public class HomeController : Controller + { + private readonly FileContentService _fileContentService; + private readonly JsEvaluationService _jsEvaluationService; + + + public HomeController( + IConfigurationRoot configuration, + IWebHostEnvironment hostingEnvironment, + JsEvaluationService jsEvaluationService) + { + string textContentDirectoryPath = configuration + .GetSection("jsengineswitcher") + .GetSection("Samples")["TextContentDirectoryPath"] + ; + + _fileContentService = new FileContentService(textContentDirectoryPath, hostingEnvironment); + _jsEvaluationService = jsEvaluationService; + } + + + [ResponseCache(CacheProfileName = "CacheCompressedContent5Minutes")] + public IActionResult Index() + { + ViewBag.Body = new HtmlString(_fileContentService.GetFileContent("index.html")); + + return View(); + } + + [HttpGet] + [ResponseCache(CacheProfileName = "CacheCompressedContent5Minutes")] + public IActionResult Demo() + { + var model = _jsEvaluationService.GetInitializationData(); + + return View(model); + } + + [HttpPost] + public async Task Demo(JsEvaluationViewModel editedModel) + { + var model = _jsEvaluationService.GetInitializationData(); + await TryUpdateModelAsync(model, string.Empty, m => m.EngineName, m=> m.Expression); + + if (ModelState.IsValid) + { + model = _jsEvaluationService.Evaluate(model); + + ModelState.Clear(); + } + + return View(model); + } + + [ResponseCache(CacheProfileName = "CacheCompressedContent5Minutes")] + public IActionResult Contact() + { + ViewBag.Body = new HtmlString(_fileContentService.GetFileContent("contact.html")); + + return View(); + } + + [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] + public IActionResult Error() + { + return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); + } + } +} \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10.csproj b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10.csproj new file mode 100644 index 00000000..3d8c1ebc --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10.csproj @@ -0,0 +1,49 @@ + + + + JS Engine Switcher: Sample ASP.NET Core 10.0 MVC 10 Site + 3.30.2 + net10.0 + enable + Exe + true + true + true + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Models/ErrorViewModel.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Models/ErrorViewModel.cs new file mode 100644 index 00000000..20cc9827 --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Models/ErrorViewModel.cs @@ -0,0 +1,9 @@ +namespace JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9.Models +{ + public class ErrorViewModel + { + public string RequestId { get; set; } + + public bool ShowRequestId => !string.IsNullOrEmpty(RequestId); + } +} \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Program.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Program.cs new file mode 100644 index 00000000..457ccf63 --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Program.cs @@ -0,0 +1,105 @@ +using Jering.Javascript.NodeJS; +using Microsoft.AspNetCore.Mvc; + +using JavaScriptEngineSwitcher.ChakraCore; +using JavaScriptEngineSwitcher.Extensions.MsDependencyInjection; +using JavaScriptEngineSwitcher.Jint; +using JavaScriptEngineSwitcher.Jurassic; +using JavaScriptEngineSwitcher.Msie; +using JavaScriptEngineSwitcher.NiL; +using JavaScriptEngineSwitcher.Node; +using JavaScriptEngineSwitcher.Sample.Logic.Services; +using JavaScriptEngineSwitcher.V8; +using JavaScriptEngineSwitcher.Vroom; +using JavaScriptEngineSwitcher.Yantra; + +var builder = WebApplication.CreateBuilder(new WebApplicationOptions() { + WebRootPath = Path.Combine( + Directory.GetCurrentDirectory(), + "../JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot" + ) +}); +var env = builder.Environment; +var configuration = new ConfigurationBuilder() + .SetBasePath(env.ContentRootPath) + .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) + .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) + .AddEnvironmentVariables() + .Build() + ; + +#region Configure services + +IServiceCollection services = builder.Services; + +services.AddSingleton(configuration); + +// Add Jering Node.js service to the services container. +services.AddNodeJS(); + +// Add JavaScriptEngineSwitcher services to the services container. +services.AddJsEngineSwitcher(options => +{ + options.AllowCurrentProperty = false; + options.DefaultEngineName = ChakraCoreJsEngine.EngineName; +}) + .AddChakraCore() + .AddJint() + .AddJurassic() + .AddMsie(options => + { + options.EngineMode = JsEngineMode.ChakraIeJsRt; + }) + .AddNiL() + .AddNode(services) + .AddV8() + .AddVroom() + .AddYantra() + ; + +services.Configure(options => +{ + options.CacheProfiles.Add("CacheCompressedContent5Minutes", + new CacheProfile + { + NoStore = builder.Environment.IsDevelopment(), + Duration = 300, + Location = ResponseCacheLocation.Client, + VaryByHeader = "Accept-Encoding" + } + ); +}); + +// Add framework services. +services.AddControllersWithViews(); + +// Add JavaScriptEngineSwitcher sample services to the services container. +services.AddSingleton(); + +#endregion + +#region Configure the HTTP request pipeline + +var app = builder.Build(); + +if (app.Environment.IsDevelopment()) +{ + app.UseDeveloperExceptionPage(); +} +else +{ + app.UseExceptionHandler("/Home/Error"); +} + +app.UseRouting(); + +app.MapStaticAssets(); + +app.MapControllerRoute( + name: "default", + pattern: "{controller=Home}/{action=Index}/{id?}") + .WithStaticAssets(); + +#endregion + +app.Run(); \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Properties/launchSettings.json b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Properties/launchSettings.json new file mode 100644 index 00000000..2c93180d --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Properties/launchSettings.json @@ -0,0 +1,38 @@ +{ + "$schema": "https://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:61316/", + "sslPort": 44396 + } + }, + "profiles": { + "http": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "dotnetRunMessages": true, + "applicationUrl": "http://localhost:5169" + }, + "https": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "dotnetRunMessages": true, + "applicationUrl": "https://localhost:7103;http://localhost:5169" + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Views/Home/Contact.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Views/Home/Contact.cshtml new file mode 100644 index 00000000..58785ebe --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Views/Home/Contact.cshtml @@ -0,0 +1,8 @@ +@{ + ViewBag.Title = "Contact"; +} + +
+

@ViewBag.Title

+ @ViewBag.Body +
\ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Views/Home/Demo.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Views/Home/Demo.cshtml new file mode 100644 index 00000000..befb8f43 --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Views/Home/Demo.cshtml @@ -0,0 +1,67 @@ +@using JavaScriptEngineSwitcher.Sample.Logic.Models +@using JavaScriptEngineSwitcher.Sample.Resources + +@model JsEvaluationViewModel + +@{ + ViewBag.Title = "Demo"; +} + +

@ViewBag.Title

+ +
+
+
+
+
+ + +
+
+ +
+ +
+ +
+
+ +
+
+ + @if (Model.Result != null) + { +
+ @if (Model.Result.Errors.Count == 0) + { +
+ + +
+ } + else + { + await Html.RenderPartialAsync("_JsEvaluationErrorList", Model.Result.Errors); + } +
+ } +
+
+
+ +@section Scripts { + + + + + + + + + +} \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Views/Home/Index.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Views/Home/Index.cshtml new file mode 100644 index 00000000..a9c2cfb1 --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Views/Home/Index.cshtml @@ -0,0 +1,8 @@ +@{ + ViewBag.Title = string.Empty; +} + +
+

Project Description

+ @ViewBag.Body +
\ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Views/Shared/Error.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Views/Shared/Error.cshtml new file mode 100644 index 00000000..b568b9f2 --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Views/Shared/Error.cshtml @@ -0,0 +1,28 @@ +@using JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9.Models + +@model ErrorViewModel + +@{ + ViewData["Title"] = "Error"; +} + +

Error.

+

An error occurred while processing your request.

+ +@if (Model.ShowRequestId) +{ +

+ Request ID: @Model.RequestId +

+} + +

Development Mode

+

+ Swapping to Development environment will display more detailed information about the error that occurred. +

+

+ The Development environment shouldn't be enabled for deployed applications. + It can result in displaying sensitive information from exceptions to end users. + For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development + and restarting the app. +

\ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Views/Shared/_JsEvaluationErrorList.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Views/Shared/_JsEvaluationErrorList.cshtml new file mode 100644 index 00000000..9e0601d6 --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Views/Shared/_JsEvaluationErrorList.cshtml @@ -0,0 +1,23 @@ +@using JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure.Helpers +@using JavaScriptEngineSwitcher.Sample.Logic.Models + +@model IList + +

Found @Model.Count error(s):

+
    + @foreach (var error in Model) + { +
  • + @error.EngineFullName
    + @if (error.LineNumber > 0) + { + Line @error.LineNumber, Column @error.ColumnNumber
    + } + @Html.EncodedReplace(@error.Message, "\n\r?", "
    ") + @if (!string.IsNullOrWhiteSpace(error.SourceFragment)) + { +
    @error.SourceFragment
    + } +
  • + } +
\ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Views/Shared/_Layout.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Views/Shared/_Layout.cshtml new file mode 100644 index 00000000..62e3d72c --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Views/Shared/_Layout.cshtml @@ -0,0 +1,107 @@ +@using JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure.TagHelpers + + + + + + + + + @if (!string.IsNullOrEmpty(ViewBag.Title)) {<text>@ViewBag.Title | </text>}JavaScriptEngineSwitcher Sample ASP.NET Core 10.0 MVC 10 Site + + + + + + + + + + + + +
+ + + + + +
+
+ @RenderBody() +
+
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @await RenderSectionAsync("scripts", required: false) + + \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Views/_ViewImports.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Views/_ViewImports.cshtml new file mode 100644 index 00000000..dcad619c --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Views/_ViewImports.cshtml @@ -0,0 +1,2 @@ +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Views/_ViewStart.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Views/_ViewStart.cshtml new file mode 100644 index 00000000..817a9134 --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/Views/_ViewStart.cshtml @@ -0,0 +1,3 @@ +@{ + Layout = "_Layout"; +} \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/appsettings.Development.json b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/appsettings.Development.json new file mode 100644 index 00000000..0c208ae9 --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/appsettings.json b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/appsettings.json new file mode 100644 index 00000000..ed44b7ae --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore10.Mvc10/appsettings.json @@ -0,0 +1,15 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*", + + "JsEngineSwitcher": { + "Samples": { + "TextContentDirectoryPath": "../SharedData/text-content" + } + } +} diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/.bowerrc b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/.bowerrc deleted file mode 100644 index ea81a597..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/.bowerrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "registry": "https://registry.bower.io", - "directory": "wwwroot/lib" -} diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Infrastructure/Helpers/CommonExtensions.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Infrastructure/Helpers/CommonExtensions.cs deleted file mode 100644 index d9c87a7c..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Infrastructure/Helpers/CommonExtensions.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System.Text.RegularExpressions; - -using Microsoft.AspNetCore.Html; -using Microsoft.AspNetCore.Mvc.Rendering; - -namespace JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1.Infrastructure.Helpers -{ - public static class CommonExtensions - { - public static HtmlString EncodedReplace(this IHtmlHelper htmlHelper, string input, - string pattern, string replacement) - { - return new HtmlString(Regex.Replace(htmlHelper.Encode(input), pattern, replacement)); - } - } -} \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Infrastructure/TagHelpers/ConditionalCommentTagHelper.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Infrastructure/TagHelpers/ConditionalCommentTagHelper.cs deleted file mode 100644 index 22862601..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Infrastructure/TagHelpers/ConditionalCommentTagHelper.cs +++ /dev/null @@ -1,78 +0,0 @@ -using System; - -using Microsoft.AspNetCore.Razor.TagHelpers; - -namespace JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1.Infrastructure.TagHelpers -{ - [HtmlTargetElement("conditional-comment")] - public class ConditionalCommentTagHelper : TagHelper - { - [HtmlAttributeName("type")] - public ConditionalCommentType CommentType { get; set; } - - [HtmlAttributeName("expression")] - public string Expression { get; set; } - - - public override void Process(TagHelperContext context, TagHelperOutput output) - { - output.TagName = null; - - ConditionalCommentType type = CommentType; - - string ifCommentStartPart; - string ifCommentEndPart; - - switch (type) - { - case ConditionalCommentType.Hidden: - ifCommentStartPart = ""; - - break; - case ConditionalCommentType.RevealedValidatingSimplified: - ifCommentStartPart = ""; - - break; - case ConditionalCommentType.Revealed: - ifCommentStartPart = ""; - - break; - default: - throw new NotSupportedException(); - } - - TagHelperContent preContent = output.PreContent; - preContent.AppendHtml(ifCommentStartPart); - preContent.AppendHtml(Expression); - preContent.AppendHtml(ifCommentEndPart); - - string endIfComment; - - switch (type) - { - case ConditionalCommentType.Hidden: - endIfComment = ""; - break; - case ConditionalCommentType.RevealedValidating: - case ConditionalCommentType.RevealedValidatingSimplified: - endIfComment = ""; - break; - case ConditionalCommentType.Revealed: - endIfComment = ""; - break; - default: - throw new NotSupportedException(); - } - - output.PostContent.AppendHtml(endIfComment); - } - } -} \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Infrastructure/TagHelpers/ConditionalCommentType.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Infrastructure/TagHelpers/ConditionalCommentType.cs deleted file mode 100644 index afc6db8e..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Infrastructure/TagHelpers/ConditionalCommentType.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1.Infrastructure.TagHelpers -{ - public enum ConditionalCommentType - { - Hidden, - Revealed, - RevealedValidating, - RevealedValidatingSimplified - } -} \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1.csproj b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1.csproj index f80811c1..8d4e9283 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1.csproj +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1.csproj @@ -2,10 +2,11 @@ JS Engine Switcher: Sample ASP.NET Core 1.0 Full MVC 1 Site - 3.21.3 + 3.30.2 net451 Exe true + $(NoWarn);NU1903;NU1904 true true false @@ -30,17 +31,14 @@ - - - + - @@ -51,22 +49,6 @@ - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Program.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Program.cs index 05e6c571..56e599bf 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Program.cs +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Program.cs @@ -8,9 +8,14 @@ public class Program { public static void Main(string[] args) { + string currentDirectory = Directory.GetCurrentDirectory(); var host = new WebHostBuilder() .UseKestrel() - .UseContentRoot(Directory.GetCurrentDirectory()) + .UseContentRoot(currentDirectory) + .UseWebRoot(Path.Combine( + currentDirectory, + "../JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot" + )) .UseIISIntegration() .UseStartup() .Build() diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Properties/launchSettings.json b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Properties/launchSettings.json index b54f71d9..e823558d 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Properties/launchSettings.json +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Properties/launchSettings.json @@ -8,17 +8,17 @@ } }, "profiles": { - "IIS Express": { - "commandName": "IISExpress", + "JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1": { + "commandName": "Project", "launchBrowser": true, + "launchUrl": "http://localhost:5000", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } }, - "JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1": { - "commandName": "Project", + "IIS Express": { + "commandName": "IISExpress", "launchBrowser": true, - "launchUrl": "http://localhost:5000", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Startup.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Startup.cs index 46530360..970f4b07 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Startup.cs +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Startup.cs @@ -11,7 +11,6 @@ using JavaScriptEngineSwitcher.Jurassic; using JavaScriptEngineSwitcher.Msie; using JavaScriptEngineSwitcher.Sample.Logic.Services; -using JavaScriptEngineSwitcher.V8; using JavaScriptEngineSwitcher.Vroom; namespace JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1 @@ -53,15 +52,16 @@ public void ConfigureServices(IServiceCollection services) // Add JavaScriptEngineSwitcher services to the services container. services.AddJsEngineSwitcher(options => - options.DefaultEngineName = ChakraCoreJsEngine.EngineName - ) + { + options.AllowCurrentProperty = false; + options.DefaultEngineName = ChakraCoreJsEngine.EngineName; + }) .AddChakraCore() .AddJurassic() .AddMsie(options => { options.EngineMode = JsEngineMode.ChakraIeJsRt; }) - .AddV8() .AddVroom() ; diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Views/Home/Contact.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Views/Home/Contact.cshtml index cd9663df..58785ebe 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Views/Home/Contact.cshtml +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Views/Home/Contact.cshtml @@ -5,19 +5,4 @@

@ViewBag.Title

@ViewBag.Body -
- -@section Scripts { - -} \ No newline at end of file + \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Views/Shared/_JsEvaluationErrorList.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Views/Shared/_JsEvaluationErrorList.cshtml index eafda0bc..9646764d 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Views/Shared/_JsEvaluationErrorList.cshtml +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Views/Shared/_JsEvaluationErrorList.cshtml @@ -1,4 +1,4 @@ -@using JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1.Infrastructure.Helpers +@using JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure.Helpers @using JavaScriptEngineSwitcher.Sample.Logic.Models @model IList diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Views/Shared/_Layout.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Views/Shared/_Layout.cshtml index 27da1ded..34baa99f 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Views/Shared/_Layout.cshtml +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Views/Shared/_Layout.cshtml @@ -1,4 +1,4 @@ -@using JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1.Infrastructure.TagHelpers +@using JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure.TagHelpers @@ -61,9 +61,10 @@ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Views/_ViewImports.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Views/_ViewImports.cshtml index 9281a0f4..5364be02 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Views/_ViewImports.cshtml +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/Views/_ViewImports.cshtml @@ -1,2 +1,2 @@ @addTagHelper "*, Microsoft.AspNetCore.Mvc.TagHelpers" -@addTagHelper "*, JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1" \ No newline at end of file +@addTagHelper "*, JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure" \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/gulpfile.js b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/gulpfile.js deleted file mode 100644 index 0f259437..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/gulpfile.js +++ /dev/null @@ -1,130 +0,0 @@ -/*global require, exports */ -/*jshint esversion: 6 */ -const WEB_ROOT_PATH = "wwwroot"; -const BOWER_DIR_PATH = WEB_ROOT_PATH + "/lib"; -const STYLE_DIR_PATH = WEB_ROOT_PATH + '/styles'; -const SCRIPT_DIR_PATH = WEB_ROOT_PATH + '/scripts'; - -// include plug-ins -let { src, dest, series, parallel, watch } = require('gulp'); -let del = require('del'); -let sourcemaps = require('gulp-sourcemaps'); -let rename = require('gulp-rename'); -let concat = require('gulp-concat'); -let less = require('gulp-less'); -let autoprefixer = require('gulp-autoprefixer'); -let cleanCss = require('gulp-clean-css'); -let uglify = require('gulp-uglify'); - -//#region Clean -//#region Clean builded assets -function cleanBuildedStyles() { - return del([STYLE_DIR_PATH + '/build/*']); -} - -function cleanBuildedScripts() { - return del([SCRIPT_DIR_PATH + '/build/*']); -} - -let cleanBuildedAssets = parallel(cleanBuildedStyles, cleanBuildedScripts); -//#endregion -//#endregion - -//#region Build assets -//#region Build styles -let autoprefixerOptions = { - overrideBrowserslist: ['> 1%', 'last 3 versions', 'Firefox ESR', 'Opera 12.1'], - cascade: true -}; -let cssCleanOptions = { specialComments: '*' }; -let cssRenameOptions = { extname: '.min.css' }; - -function buildCommonStyles() { - return src([STYLE_DIR_PATH + '/app.less']) - .pipe(sourcemaps.init()) - .pipe(less({ - relativeUrls: true, - rootpath: '/styles/' - })) - .pipe(autoprefixer(autoprefixerOptions)) - .pipe(sourcemaps.write('./')) - .pipe(dest(STYLE_DIR_PATH + '/build')) - .pipe(sourcemaps.init({ loadMaps: true })) - .pipe(concat('common-styles.css')) - .pipe(cleanCss(cssCleanOptions)) - .pipe(rename(cssRenameOptions)) - .pipe(sourcemaps.write('./')) - .pipe(dest(STYLE_DIR_PATH + '/build')) - ; -} - -let buildStyles = buildCommonStyles; -//#endregion - -//#region Build scripts -let jsConcatOptions = { newLine: ';' }; -let jsUglifyOptions = { - output: { comments: /^!/ } -}; -let jsRenameOptions = { extname: '.min.js' }; - -function buildModernizrScripts() { - return src([BOWER_DIR_PATH + '/modernizr/modernizr.js']) - .pipe(sourcemaps.init()) - .pipe(uglify(jsUglifyOptions)) - .pipe(rename(jsRenameOptions)) - .pipe(sourcemaps.write('./')) - .pipe(dest(SCRIPT_DIR_PATH + '/build')) - ; -} - -function buildCommonScripts() { - return src([SCRIPT_DIR_PATH + '/common.js']) - .pipe(sourcemaps.init({ loadMaps: true })) - .pipe(rename({ basename: 'common-scripts' })) - .pipe(uglify(jsUglifyOptions)) - .pipe(rename(jsRenameOptions)) - .pipe(sourcemaps.write('./')) - .pipe(dest(SCRIPT_DIR_PATH + '/build')) - ; -} - -function buildEvaluationFormScripts() { - return src([BOWER_DIR_PATH + '/jquery-validation/dist/jquery.validate.js', - BOWER_DIR_PATH + '/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js', - BOWER_DIR_PATH + '/bootstrap/js/button.js', - SCRIPT_DIR_PATH + '/evaluation-form.js']) - .pipe(sourcemaps.init({ loadMaps: true })) - .pipe(concat('evaluation-form-scripts.js', jsConcatOptions)) - .pipe(uglify(jsUglifyOptions)) - .pipe(rename(jsRenameOptions)) - .pipe(sourcemaps.write('./')) - .pipe(dest(SCRIPT_DIR_PATH + '/build')) - ; -} - -let buildScripts = parallel(buildModernizrScripts, buildCommonScripts, buildEvaluationFormScripts); -//#endregion - -let buildAssets = parallel(buildStyles, buildScripts); -//#endregion - -//#region Watch assets -function watchStyles() { - return watch([STYLE_DIR_PATH + '/**/*.{less,css}', '!' + STYLE_DIR_PATH + '/build/**/*.*'], - buildStyles); -} - -function watchScripts() { - return watch([SCRIPT_DIR_PATH + '/**/*.js', '!' + SCRIPT_DIR_PATH + '/build/**/*.*'], - buildScripts); -} - -let watchAssets = parallel(watchStyles, watchScripts); -//#endregion - -// Export tasks -exports.cleanBuildedAssets = cleanBuildedAssets; -exports.buildAssets = buildAssets; -exports.watchAssets = watchAssets; -exports.default = series(cleanBuildedAssets, buildAssets); \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/package.json b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/package.json deleted file mode 100644 index e3ed4890..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "jsengineswitcher.sample.aspnetcore1full.mvc1", - "private": true, - "version": "3.21.3", - "devDependencies": { - "gulp": "4.0.2", - "del": "5.1.0", - "gulp-sourcemaps": "2.6.5", - "gulp-rename": "2.0.0", - "gulp-concat": "2.6.1", - "gulp-less": "4.0.1", - "gulp-autoprefixer": "7.0.1", - "gulp-clean-css": "4.2.0", - "gulp-uglify": "3.0.2" - } -} diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/images/0.gif b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/images/0.gif deleted file mode 100644 index 35d42e80..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/images/0.gif and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/images/clear-text.png b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/images/clear-text.png deleted file mode 100644 index 9d217b7f..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/images/clear-text.png and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/images/icons/32x32/social-media-icons-32.png b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/images/icons/32x32/social-media-icons-32.png deleted file mode 100644 index 49aa1fe3..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/images/icons/32x32/social-media-icons-32.png and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/images/icons/48x48/error.png b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/images/icons/48x48/error.png deleted file mode 100644 index 3d6185f7..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/images/icons/48x48/error.png and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/images/jsengineswitcher-logo.png b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/images/jsengineswitcher-logo.png deleted file mode 100644 index 12ed97e0..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/images/jsengineswitcher-logo.png and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/scripts/_references.js b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/scripts/_references.js deleted file mode 100644 index 2b54eea8..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/scripts/_references.js and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/scripts/common.js b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/scripts/common.js deleted file mode 100644 index c94bf102..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/scripts/common.js +++ /dev/null @@ -1,29 +0,0 @@ -var jsEngineSwitcher; - -(function (jsEngineSwitcher, undefined) { - "use strict"; - - jsEngineSwitcher.registerNamespace = function (namespaceString) { - var parts = namespaceString.split("."), - parent = jsEngineSwitcher, - i - ; - - if (parts[0] === "jsEngineSwitcher") { - parts = parts.slice(1); - } - - for (i = 0; i < parts.length; i += 1) { - if (typeof parent[parts[i]] === "undefined") { - parent[parts[i]] = {}; - } - parent = parent[parts[i]]; - } - - return parent; - }; - - jsEngineSwitcher.hasScrollbar = function(elem) { - return (elem.clientHeight < elem.scrollHeight); - }; -}(jsEngineSwitcher = jsEngineSwitcher || {})); \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/scripts/evaluation-form.js b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/scripts/evaluation-form.js deleted file mode 100644 index da1f0199..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/scripts/evaluation-form.js +++ /dev/null @@ -1,83 +0,0 @@ -(function (jsEngineSwitcher, $, undefined) { - "use strict"; - - var $evaluationForm, - $evaluationInputField, - $evaluationInputClearButton, - $evaluateButton - ; - - $(function () { - $evaluationForm = $("form[data-form-type='evaluation-form']"); - $evaluationInputField = $(":input[data-control-type='evaluation-input-field']", $evaluationForm); - $evaluationInputClearButton = $("
"); - $evaluateButton = $(":input[data-control-type='evaluate-button']", $evaluationForm); - - $evaluationForm.on("submit", onEvaluationFormSubmitHandler); - - $evaluationInputClearButton.on("click", onEvaluationInputClearButtonClickHandler); - $evaluationInputField.parent().append($evaluationInputClearButton); - refreshEvaluationInputClearButton(); - $evaluationInputField - .on("input propertychange keydown keyup paste", onEvaluationInputFieldChangeHandler) - ; - - $evaluateButton.removeAttr("disabled"); - }); - - $(window).unload(function() { - $evaluationForm.off("submit", onEvaluationFormSubmitHandler); - - $evaluationInputClearButton - .off("click", onEvaluationInputClearButtonClickHandler) - .remove() - ; - - $evaluationInputField - .off("input propertychange keydown keyup paste", onEvaluationInputFieldChangeHandler) - ; - - $evaluationForm = null; - $evaluationInputField = null; - $evaluationInputClearButton = null; - $evaluateButton = null; - }); - - var refreshEvaluationInputClearButton = function() { - if ($.trim($evaluationInputField.val()).length > 0) { - $evaluationInputClearButton.show(); - } else { - $evaluationInputClearButton.hide(); - } - - if (jsEngineSwitcher.hasScrollbar($evaluationInputField.get(0))) { - $evaluationInputClearButton.addClass("with-scrollbar"); - } - else { - $evaluationInputClearButton.removeClass("with-scrollbar"); - } - }; - - var onEvaluationFormSubmitHandler = function () { - var $form = $(this); - if ($form.valid()) { - $evaluateButton.attr("disabled", "disabled"); - $("textarea[data-control-type='evaluation-output-field']", $form).val(''); - - return true; - } - - return false; - }; - - var onEvaluationInputFieldChangeHandler = function () { - refreshEvaluationInputClearButton(); - }; - - var onEvaluationInputClearButtonClickHandler = function() { - $evaluationInputField.val(""); - - var $button = $(this); - $button.hide(); - }; -}(jsEngineSwitcher, jQuery)); \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/app.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/app.less deleted file mode 100644 index c41a9315..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/app.less +++ /dev/null @@ -1,71 +0,0 @@ -/*! - * Bootstrap v3.3.0 (http://getbootstrap.com) - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -// Core variables and mixins -@import "bootstrap-custom-variables.less"; -@import "../lib/bootstrap/less/mixins.less"; - -// Reset -@import "../lib/bootstrap/less/normalize.less"; -//@import "../lib/bootstrap/less/print.less"; -//@import "../lib/bootstrap/less/glyphicons.less"; - -// Core CSS -@import "../lib/bootstrap/less/scaffolding.less"; -@import "../lib/bootstrap/less/type.less"; -@import "../lib/bootstrap/less/code.less"; -//@import "../lib/bootstrap/less/grid.less"; -//@import "../lib/bootstrap/less/tables.less"; -@import "../lib/bootstrap/less/forms.less"; -//@import "../lib/bootstrap/less/buttons.less"; - -// Components -//@import "../lib/bootstrap/less/component-animations.less"; -//@import "../lib/bootstrap/less/dropdowns.less"; -//@import "../lib/bootstrap/less/button-groups.less"; -//@import "../lib/bootstrap/less/input-groups.less"; -@import "../lib/bootstrap/less/navs.less"; -@import "../lib/bootstrap/less/navbar.less"; -//@import "../lib/bootstrap/less/breadcrumbs.less"; -//@import "../lib/bootstrap/less/pagination.less"; -//@import "../lib/bootstrap/less/pager.less"; -//@import "../lib/bootstrap/less/labels.less"; -//@import "../lib/bootstrap/less/badges.less"; -//@import "../lib/bootstrap/less/jumbotron.less"; -//@import "../lib/bootstrap/less/thumbnails.less"; -//@import "../lib/bootstrap/less/alerts.less"; -//@import "../lib/bootstrap/less/progress-bars.less"; -//@import "../lib/bootstrap/less/media.less"; -//@import "../lib/bootstrap/less/list-group.less"; -//@import "../lib/bootstrap/less/panels.less"; -//@import "../lib/bootstrap/less/responsive-embed.less"; -//@import "../lib/bootstrap/less/wells.less"; -//@import "../lib/bootstrap/less/close.less"; - -// Components w/ JavaScript -//@import "../lib/bootstrap/less/modals.less"; -//@import "../lib/bootstrap/less/tooltip.less"; -//@import "../lib/bootstrap/less/popovers.less"; -//@import "../lib/bootstrap/less/carousel.less"; - -// Utility classes -@import "../lib/bootstrap/less/utilities.less"; -//@import "../lib/bootstrap/less/responsive-utilities.less"; - -// JavaScriptEngineSwitcher specs -@import "variables.less"; -@import "mixins.less"; - -@import "type.less"; -@import "code.less"; -@import "forms.less"; -@import "buttons.less"; -@import "icons.less"; -@import "navbar.less"; - -@import "layout.less"; -@import "evaluation-form.less"; -@import "page-socials.less"; \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/bootstrap-custom-variables.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/bootstrap-custom-variables.less deleted file mode 100644 index 0be2aa6f..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/bootstrap-custom-variables.less +++ /dev/null @@ -1,856 +0,0 @@ -// -// Variables -// -------------------------------------------------- - - -//== Colors -// -//## Gray and brand colors for use across Bootstrap. - -@gray-base: #323330; -@gray-darker: lighten(@gray-base, 13.5%); // #222 -@gray-dark: lighten(@gray-base, 20%); // #333 -@gray: lighten(@gray-base, 33.5%); // #555 -@gray-light: lighten(@gray-base, 46.7%); // #777 -@gray-lighter: #e3e3e3; - -@brand-primary: #428bca; -@brand-success: #5cb85c; -@brand-info: #5bc0de; -@brand-warning: #f0ad4e; -@brand-danger: #d9534f; - - -//== Scaffolding -// -//## Settings for some of the most global styles. - -//** Background color for ``. -@body-bg: #fff; -//** Global text color on ``. -@text-color: #1d0d0d; - -//** Global textual link color. -@link-color: @brand-primary; -//** Link hover color set via `darken()` function. -@link-hover-color: darken(@link-color, 15%); -//** Link hover decoration. -@link-hover-decoration: underline; - - -//== Typography -// -//## Font, line-height, and color for body text, headings, and more. - -@font-family-sans-serif: "Helvetica Neue", Arial, sans-serif; -@font-family-serif: Georgia, "Times New Roman", Times, serif; -//** Default monospace fonts for ``, ``, and `
`.
-@font-family-monospace:   Consolas, "Courier New", monospace;
-@font-family-base:        @font-family-sans-serif;
-
-@font-size-base:          14px;
-@font-size-large:         ceil((@font-size-base * 1.25)); // ~18px
-@font-size-small:         ceil((@font-size-base * 0.85)); // ~12px
-
-@font-size-h1:            floor(@font-size-base * 3);
-@font-size-h2:            @font-size-base * 2.5;
-@font-size-h3:            ceil(@font-size-base * 1.75);
-@font-size-h4:            ceil(@font-size-base * 1.25);
-@font-size-h5:            @font-size-base;
-@font-size-h6:            ceil(@font-size-base * 0.85);
-
-//** Unit-less `line-height` for use in components like buttons.
-@line-height-base:        1.428571429; // 20/14
-//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
-@line-height-computed:    floor((@font-size-base * @line-height-base)); // ~20px
-
-//** By default, this inherits from the ``.
-@headings-font-family:    "Open Sans", sans-serif;
-@headings-font-weight:    normal;
-@headings-line-height:    1.1;
-@headings-color:          inherit;
-
-
-//== Iconography
-//
-//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
-
-//** Load fonts from this directory.
-@icon-font-path:          "../fonts/";
-//** File name for all font files.
-@icon-font-name:          "glyphicons-halflings-regular";
-//** Element ID within SVG icon file.
-@icon-font-svg-id:        "glyphicons_halflingsregular";
-
-
-//== Components
-//
-//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
-
-@padding-base-vertical:     4px;
-@padding-base-horizontal:   6px;
-
-@padding-large-vertical:    10px;
-@padding-large-horizontal:  16px;
-
-@padding-small-vertical:    5px;
-@padding-small-horizontal:  10px;
-
-@padding-xs-vertical:       1px;
-@padding-xs-horizontal:     5px;
-
-@line-height-large:         1.33;
-@line-height-small:         1.5;
-
-@border-radius-base:        4px;
-@border-radius-large:       6px;
-@border-radius-small:       3px;
-
-//** Global color for active items (e.g., navs or dropdowns).
-@component-active-color:    #fff;
-//** Global background color for active items (e.g., navs or dropdowns).
-@component-active-bg:       @brand-primary;
-
-//** Width of the `border` for generating carets that indicator dropdowns.
-@caret-width-base:          4px;
-//** Carets increase slightly in size for larger components.
-@caret-width-large:         5px;
-
-
-//== Tables
-//
-//## Customizes the `.table` component with basic values, each used across all table variations.
-
-//** Padding for ``s and ``s.
-@table-cell-padding:            8px;
-//** Padding for cells in `.table-condensed`.
-@table-condensed-cell-padding:  5px;
-
-//** Default background color used for all tables.
-@table-bg:                      transparent;
-//** Background color used for `.table-striped`.
-@table-bg-accent:               #f9f9f9;
-//** Background color used for `.table-hover`.
-@table-bg-hover:                #f5f5f5;
-@table-bg-active:               @table-bg-hover;
-
-//** Border color for table and cell borders.
-@table-border-color:            #ddd;
-
-
-//== Buttons
-//
-//## For each of Bootstrap's buttons, define text, background and border color.
-
-@btn-font-weight:                normal;
-
-@btn-default-color:              #333;
-@btn-default-bg:                 @gray-lighter;
-@btn-default-border:             @gray-lighter;
-
-@btn-primary-color:              #fff;
-@btn-primary-bg:                 @brand-primary;
-@btn-primary-border:             darken(@btn-primary-bg, 5%);
-
-@btn-success-color:              #fff;
-@btn-success-bg:                 @brand-success;
-@btn-success-border:             darken(@btn-success-bg, 5%);
-
-@btn-info-color:                 #fff;
-@btn-info-bg:                    @brand-info;
-@btn-info-border:                darken(@btn-info-bg, 5%);
-
-@btn-warning-color:              #fff;
-@btn-warning-bg:                 @brand-warning;
-@btn-warning-border:             darken(@btn-warning-bg, 5%);
-
-@btn-danger-color:               #fff;
-@btn-danger-bg:                  @brand-danger;
-@btn-danger-border:              darken(@btn-danger-bg, 5%);
-
-@btn-link-disabled-color:        @gray-light;
-
-
-//== Forms
-//
-//##
-
-//** `` background color
-@input-bg:                       #fff;
-//** `` background color
-@input-bg-disabled:              @gray-lighter;
-
-//** Text color for ``s
-@input-color:                    @gray;
-//** `` border color
-@input-border:                   #b2b2b2;
-
-// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4
-//** Default `.form-control` border radius
-@input-border-radius:            @border-radius-base;
-//** Large `.form-control` border radius
-@input-border-radius-large:      @border-radius-large;
-//** Small `.form-control` border radius
-@input-border-radius-small:      @border-radius-small;
-
-//** Border color for inputs on focus
-@input-border-focus:             #d4b33a;
-
-//** Placeholder text color
-@input-color-placeholder:        #999;
-
-//** Default `.form-control` height
-@input-height-base:              (@line-height-computed + (@padding-base-vertical * 2) + 2);
-//** Large `.form-control` height
-@input-height-large:             (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);
-//** Small `.form-control` height
-@input-height-small:             (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);
-
-@legend-color:                   @gray-dark;
-@legend-border-color:            #e5e5e5;
-
-//** Background color for textual input addons
-@input-group-addon-bg:           @gray-lighter;
-//** Border color for textual input addons
-@input-group-addon-border-color: @input-border;
-
-//** Disabled cursor for form controls and buttons.
-@cursor-disabled:                not-allowed;
-
-
-//== Dropdowns
-//
-//## Dropdown menu container and contents.
-
-//** Background for the dropdown menu.
-@dropdown-bg:                    #fff;
-//** Dropdown menu `border-color`.
-@dropdown-border:                rgba(0,0,0,.15);
-//** Dropdown menu `border-color` **for IE8**.
-@dropdown-fallback-border:       #ccc;
-//** Divider color for between dropdown items.
-@dropdown-divider-bg:            #e5e5e5;
-
-//** Dropdown link text color.
-@dropdown-link-color:            @gray-dark;
-//** Hover color for dropdown links.
-@dropdown-link-hover-color:      darken(@gray-dark, 5%);
-//** Hover background for dropdown links.
-@dropdown-link-hover-bg:         #f5f5f5;
-
-//** Active dropdown menu item text color.
-@dropdown-link-active-color:     @component-active-color;
-//** Active dropdown menu item background color.
-@dropdown-link-active-bg:        @component-active-bg;
-
-//** Disabled dropdown menu item background color.
-@dropdown-link-disabled-color:   @gray-light;
-
-//** Text color for headers within dropdown menus.
-@dropdown-header-color:          @gray-light;
-
-//** Deprecated `@dropdown-caret-color` as of v3.1.0
-@dropdown-caret-color:           #000;
-
-
-//-- Z-index master list
-//
-// Warning: Avoid customizing these values. They're used for a bird's eye view
-// of components dependent on the z-axis and are designed to all work together.
-//
-// Note: These variables are not generated into the Customizer.
-
-@zindex-navbar:            1000;
-@zindex-dropdown:          1000;
-@zindex-popover:           1060;
-@zindex-tooltip:           1070;
-@zindex-navbar-fixed:      1030;
-@zindex-modal:             1040;
-
-
-//== Media queries breakpoints
-//
-//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
-
-// Extra small screen / phone
-//** Deprecated `@screen-xs` as of v3.0.1
-@screen-xs:                  480px;
-//** Deprecated `@screen-xs-min` as of v3.2.0
-@screen-xs-min:              @screen-xs;
-//** Deprecated `@screen-phone` as of v3.0.1
-@screen-phone:               @screen-xs-min;
-
-// Small screen / tablet
-//** Deprecated `@screen-sm` as of v3.0.1
-@screen-sm:                  768px;
-@screen-sm-min:              @screen-sm;
-//** Deprecated `@screen-tablet` as of v3.0.1
-@screen-tablet:              @screen-sm-min;
-
-// Medium screen / desktop
-//** Deprecated `@screen-md` as of v3.0.1
-@screen-md:                  992px;
-@screen-md-min:              @screen-md;
-//** Deprecated `@screen-desktop` as of v3.0.1
-@screen-desktop:             @screen-md-min;
-
-// Large screen / wide desktop
-//** Deprecated `@screen-lg` as of v3.0.1
-@screen-lg:                  1200px;
-@screen-lg-min:              @screen-lg;
-//** Deprecated `@screen-lg-desktop` as of v3.0.1
-@screen-lg-desktop:          @screen-lg-min;
-
-// So media queries don't overlap when required, provide a maximum
-@screen-xs-max:              (@screen-sm-min - 1);
-@screen-sm-max:              (@screen-md-min - 1);
-@screen-md-max:              (@screen-lg-min - 1);
-
-
-//== Grid system
-//
-//## Define your custom responsive grid.
-
-//** Number of columns in the grid.
-@grid-columns:              12;
-//** Padding between columns. Gets divided in half for the left and right.
-@grid-gutter-width:         30px;
-// Navbar collapse
-//** Point at which the navbar becomes uncollapsed.
-@grid-float-breakpoint:     @screen-sm-min;
-//** Point at which the navbar begins collapsing.
-@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);
-
-
-//== Container sizes
-//
-//## Define the maximum width of `.container` for different screen sizes.
-
-// Small screen / tablet
-@container-tablet:             (720px + @grid-gutter-width);
-//** For `@screen-sm-min` and up.
-@container-sm:                 @container-tablet;
-
-// Medium screen / desktop
-@container-desktop:            (940px + @grid-gutter-width);
-//** For `@screen-md-min` and up.
-@container-md:                 @container-desktop;
-
-// Large screen / wide desktop
-@container-large-desktop:      (1140px + @grid-gutter-width);
-//** For `@screen-lg-min` and up.
-@container-lg:                 @container-large-desktop;
-
-
-//== Navbar
-//
-//##
-
-// Basics of a navbar
-@navbar-height:                    100px;
-@navbar-margin-bottom:             0;
-@navbar-border-radius:             @border-radius-base;
-@navbar-padding-horizontal:        0;
-@navbar-padding-vertical:          ((@navbar-height - @line-height-computed) / 2);
-@navbar-collapse-max-height:       340px;
-
-@navbar-default-color:             @gray-base;
-@navbar-default-bg:                #f0db4f;
-@navbar-default-border:            #f0db4f;
-
-// Navbar links
-@navbar-default-link-color:                @navbar-default-color;
-@navbar-default-link-hover-color:          @gray-dark;
-@navbar-default-link-hover-bg:             transparent;
-@navbar-default-link-active-color:         @navbar-default-color;
-@navbar-default-link-active-bg:            transparent;
-@navbar-default-link-disabled-color:       #ccc;
-@navbar-default-link-disabled-bg:          transparent;
-
-// Navbar brand label
-@navbar-default-brand-color:               @navbar-default-link-color;
-@navbar-default-brand-hover-color:         darken(@navbar-default-brand-color, 10%);
-@navbar-default-brand-hover-bg:            transparent;
-
-// Navbar toggle
-@navbar-default-toggle-hover-bg:           #ddd;
-@navbar-default-toggle-icon-bar-bg:        @gray-dark;
-@navbar-default-toggle-border-color:       #ddd;
-
-
-// Inverted navbar
-// Reset inverted navbar basics
-@navbar-inverse-color:                      lighten(@gray-light, 15%);
-@navbar-inverse-bg:                         #222;
-@navbar-inverse-border:                     darken(@navbar-inverse-bg, 10%);
-
-// Inverted navbar links
-@navbar-inverse-link-color:                 lighten(@gray-light, 15%);
-@navbar-inverse-link-hover-color:           #fff;
-@navbar-inverse-link-hover-bg:              transparent;
-@navbar-inverse-link-active-color:          @navbar-inverse-link-hover-color;
-@navbar-inverse-link-active-bg:             darken(@navbar-inverse-bg, 10%);
-@navbar-inverse-link-disabled-color:        #444;
-@navbar-inverse-link-disabled-bg:           transparent;
-
-// Inverted navbar brand label
-@navbar-inverse-brand-color:                @navbar-inverse-link-color;
-@navbar-inverse-brand-hover-color:          #fff;
-@navbar-inverse-brand-hover-bg:             transparent;
-
-// Inverted navbar toggle
-@navbar-inverse-toggle-hover-bg:            #333;
-@navbar-inverse-toggle-icon-bar-bg:         #fff;
-@navbar-inverse-toggle-border-color:        #333;
-
-
-//== Navs
-//
-//##
-
-//=== Shared nav styles
-@nav-link-padding:                          10px 15px;
-@nav-link-hover-bg:                         @gray-lighter;
-
-@nav-disabled-link-color:                   @gray-light;
-@nav-disabled-link-hover-color:             @gray-light;
-
-//== Tabs
-@nav-tabs-border-color:                     #ddd;
-
-@nav-tabs-link-hover-border-color:          @gray-lighter;
-
-@nav-tabs-active-link-hover-bg:             @body-bg;
-@nav-tabs-active-link-hover-color:          @gray;
-@nav-tabs-active-link-hover-border-color:   #ddd;
-
-@nav-tabs-justified-link-border-color:            #ddd;
-@nav-tabs-justified-active-link-border-color:     @body-bg;
-
-//== Pills
-@nav-pills-border-radius:                   @border-radius-base;
-@nav-pills-active-link-hover-bg:            @component-active-bg;
-@nav-pills-active-link-hover-color:         @component-active-color;
-
-
-//== Pagination
-//
-//##
-
-@pagination-color:                     @link-color;
-@pagination-bg:                        #fff;
-@pagination-border:                    #ddd;
-
-@pagination-hover-color:               @link-hover-color;
-@pagination-hover-bg:                  @gray-lighter;
-@pagination-hover-border:              #ddd;
-
-@pagination-active-color:              #fff;
-@pagination-active-bg:                 @brand-primary;
-@pagination-active-border:             @brand-primary;
-
-@pagination-disabled-color:            @gray-light;
-@pagination-disabled-bg:               #fff;
-@pagination-disabled-border:           #ddd;
-
-
-//== Pager
-//
-//##
-
-@pager-bg:                             @pagination-bg;
-@pager-border:                         @pagination-border;
-@pager-border-radius:                  15px;
-
-@pager-hover-bg:                       @pagination-hover-bg;
-
-@pager-active-bg:                      @pagination-active-bg;
-@pager-active-color:                   @pagination-active-color;
-
-@pager-disabled-color:                 @pagination-disabled-color;
-
-
-//== Jumbotron
-//
-//##
-
-@jumbotron-padding:              30px;
-@jumbotron-color:                inherit;
-@jumbotron-bg:                   @gray-lighter;
-@jumbotron-heading-color:        inherit;
-@jumbotron-font-size:            ceil((@font-size-base * 1.5));
-
-
-//== Form states and alerts
-//
-//## Define colors for form feedback states and, by default, alerts.
-
-@state-success-text:             #3c763d;
-@state-success-bg:               #dff0d8;
-@state-success-border:           darken(spin(@state-success-bg, -10), 5%);
-
-@state-info-text:                #31708f;
-@state-info-bg:                  #d9edf7;
-@state-info-border:              darken(spin(@state-info-bg, -10), 7%);
-
-@state-warning-text:             #8a6d3b;
-@state-warning-bg:               #fcf8e3;
-@state-warning-border:           darken(spin(@state-warning-bg, -10), 5%);
-
-@state-danger-text:              #a94442;
-@state-danger-bg:                #f2dede;
-@state-danger-border:            darken(spin(@state-danger-bg, -10), 5%);
-
-
-//== Tooltips
-//
-//##
-
-//** Tooltip max width
-@tooltip-max-width:           200px;
-//** Tooltip text color
-@tooltip-color:               #fff;
-//** Tooltip background color
-@tooltip-bg:                  #000;
-@tooltip-opacity:             .9;
-
-//** Tooltip arrow width
-@tooltip-arrow-width:         5px;
-//** Tooltip arrow color
-@tooltip-arrow-color:         @tooltip-bg;
-
-
-//== Popovers
-//
-//##
-
-//** Popover body background color
-@popover-bg:                          #fff;
-//** Popover maximum width
-@popover-max-width:                   276px;
-//** Popover border color
-@popover-border-color:                rgba(0,0,0,.2);
-//** Popover fallback border color
-@popover-fallback-border-color:       #ccc;
-
-//** Popover title background color
-@popover-title-bg:                    darken(@popover-bg, 3%);
-
-//** Popover arrow width
-@popover-arrow-width:                 10px;
-//** Popover arrow color
-@popover-arrow-color:                 @popover-bg;
-
-//** Popover outer arrow width
-@popover-arrow-outer-width:           (@popover-arrow-width + 1);
-//** Popover outer arrow color
-@popover-arrow-outer-color:           fadein(@popover-border-color, 5%);
-//** Popover outer arrow fallback color
-@popover-arrow-outer-fallback-color:  darken(@popover-fallback-border-color, 20%);
-
-
-//== Labels
-//
-//##
-
-//** Default label background color
-@label-default-bg:            @gray-light;
-//** Primary label background color
-@label-primary-bg:            @brand-primary;
-//** Success label background color
-@label-success-bg:            @brand-success;
-//** Info label background color
-@label-info-bg:               @brand-info;
-//** Warning label background color
-@label-warning-bg:            @brand-warning;
-//** Danger label background color
-@label-danger-bg:             @brand-danger;
-
-//** Default label text color
-@label-color:                 #fff;
-//** Default text color of a linked label
-@label-link-hover-color:      #fff;
-
-
-//== Modals
-//
-//##
-
-//** Padding applied to the modal body
-@modal-inner-padding:         15px;
-
-//** Padding applied to the modal title
-@modal-title-padding:         15px;
-//** Modal title line-height
-@modal-title-line-height:     @line-height-base;
-
-//** Background color of modal content area
-@modal-content-bg:                             #fff;
-//** Modal content border color
-@modal-content-border-color:                   rgba(0,0,0,.2);
-//** Modal content border color **for IE8**
-@modal-content-fallback-border-color:          #999;
-
-//** Modal backdrop background color
-@modal-backdrop-bg:           #000;
-//** Modal backdrop opacity
-@modal-backdrop-opacity:      .5;
-//** Modal header border color
-@modal-header-border-color:   #e5e5e5;
-//** Modal footer border color
-@modal-footer-border-color:   @modal-header-border-color;
-
-@modal-lg:                    900px;
-@modal-md:                    600px;
-@modal-sm:                    300px;
-
-
-//== Alerts
-//
-//## Define alert colors, border radius, and padding.
-
-@alert-padding:               15px;
-@alert-border-radius:         @border-radius-base;
-@alert-link-font-weight:      bold;
-
-@alert-success-bg:            @state-success-bg;
-@alert-success-text:          @state-success-text;
-@alert-success-border:        @state-success-border;
-
-@alert-info-bg:               @state-info-bg;
-@alert-info-text:             @state-info-text;
-@alert-info-border:           @state-info-border;
-
-@alert-warning-bg:            @state-warning-bg;
-@alert-warning-text:          @state-warning-text;
-@alert-warning-border:        @state-warning-border;
-
-@alert-danger-bg:             @state-danger-bg;
-@alert-danger-text:           @state-danger-text;
-@alert-danger-border:         @state-danger-border;
-
-
-//== Progress bars
-//
-//##
-
-//** Background color of the whole progress component
-@progress-bg:                 #f5f5f5;
-//** Progress bar text color
-@progress-bar-color:          #fff;
-//** Variable for setting rounded corners on progress bar.
-@progress-border-radius:      @border-radius-base;
-
-//** Default progress bar color
-@progress-bar-bg:             @brand-primary;
-//** Success progress bar color
-@progress-bar-success-bg:     @brand-success;
-//** Warning progress bar color
-@progress-bar-warning-bg:     @brand-warning;
-//** Danger progress bar color
-@progress-bar-danger-bg:      @brand-danger;
-//** Info progress bar color
-@progress-bar-info-bg:        @brand-info;
-
-
-//== List group
-//
-//##
-
-//** Background color on `.list-group-item`
-@list-group-bg:                 #fff;
-//** `.list-group-item` border color
-@list-group-border:             #ddd;
-//** List group border radius
-@list-group-border-radius:      @border-radius-base;
-
-//** Background color of single list items on hover
-@list-group-hover-bg:           #f5f5f5;
-//** Text color of active list items
-@list-group-active-color:       @component-active-color;
-//** Background color of active list items
-@list-group-active-bg:          @component-active-bg;
-//** Border color of active list elements
-@list-group-active-border:      @list-group-active-bg;
-//** Text color for content within active list items
-@list-group-active-text-color:  lighten(@list-group-active-bg, 40%);
-
-//** Text color of disabled list items
-@list-group-disabled-color:      @gray-light;
-//** Background color of disabled list items
-@list-group-disabled-bg:         @gray-lighter;
-//** Text color for content within disabled list items
-@list-group-disabled-text-color: @list-group-disabled-color;
-
-@list-group-link-color:         #555;
-@list-group-link-hover-color:   @list-group-link-color;
-@list-group-link-heading-color: #333;
-
-
-//== Panels
-//
-//##
-
-@panel-bg:                    #fff;
-@panel-body-padding:          15px;
-@panel-heading-padding:       10px 15px;
-@panel-footer-padding:        @panel-heading-padding;
-@panel-border-radius:         @border-radius-base;
-
-//** Border color for elements within panels
-@panel-inner-border:          #ddd;
-@panel-footer-bg:             #f5f5f5;
-
-@panel-default-text:          @gray-dark;
-@panel-default-border:        #ddd;
-@panel-default-heading-bg:    #f5f5f5;
-
-@panel-primary-text:          #fff;
-@panel-primary-border:        @brand-primary;
-@panel-primary-heading-bg:    @brand-primary;
-
-@panel-success-text:          @state-success-text;
-@panel-success-border:        @state-success-border;
-@panel-success-heading-bg:    @state-success-bg;
-
-@panel-info-text:             @state-info-text;
-@panel-info-border:           @state-info-border;
-@panel-info-heading-bg:       @state-info-bg;
-
-@panel-warning-text:          @state-warning-text;
-@panel-warning-border:        @state-warning-border;
-@panel-warning-heading-bg:    @state-warning-bg;
-
-@panel-danger-text:           @state-danger-text;
-@panel-danger-border:         @state-danger-border;
-@panel-danger-heading-bg:     @state-danger-bg;
-
-
-//== Thumbnails
-//
-//##
-
-//** Padding around the thumbnail image
-@thumbnail-padding:           4px;
-//** Thumbnail background color
-@thumbnail-bg:                @body-bg;
-//** Thumbnail border color
-@thumbnail-border:            #ddd;
-//** Thumbnail border radius
-@thumbnail-border-radius:     @border-radius-base;
-
-//** Custom text color for thumbnail captions
-@thumbnail-caption-color:     @text-color;
-//** Padding around the thumbnail caption
-@thumbnail-caption-padding:   9px;
-
-
-//== Wells
-//
-//##
-
-@well-bg:                     #f5f5f5;
-@well-border:                 darken(@well-bg, 7%);
-
-
-//== Badges
-//
-//##
-
-@badge-color:                 #fff;
-//** Linked badge text color on hover
-@badge-link-hover-color:      #fff;
-@badge-bg:                    @gray-light;
-
-//** Badge text color in active nav link
-@badge-active-color:          @link-color;
-//** Badge background color in active nav link
-@badge-active-bg:             #fff;
-
-@badge-font-weight:           bold;
-@badge-line-height:           1;
-@badge-border-radius:         10px;
-
-
-//== Breadcrumbs
-//
-//##
-
-@breadcrumb-padding-vertical:   8px;
-@breadcrumb-padding-horizontal: 15px;
-//** Breadcrumb background color
-@breadcrumb-bg:                 #f5f5f5;
-//** Breadcrumb text color
-@breadcrumb-color:              #ccc;
-//** Text color of current page in the breadcrumb
-@breadcrumb-active-color:       @gray-light;
-//** Textual separator for between breadcrumb elements
-@breadcrumb-separator:          "/";
-
-
-//== Carousel
-//
-//##
-
-@carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6);
-
-@carousel-control-color:                      #fff;
-@carousel-control-width:                      15%;
-@carousel-control-opacity:                    .5;
-@carousel-control-font-size:                  20px;
-
-@carousel-indicator-active-bg:                #fff;
-@carousel-indicator-border-color:             #fff;
-
-@carousel-caption-color:                      #fff;
-
-
-//== Close
-//
-//##
-
-@close-font-weight:           bold;
-@close-color:                 #000;
-@close-text-shadow:           0 1px 0 #fff;
-
-
-//== Code
-//
-//##
-
-@code-color:                  #c7254e;
-@code-bg:                     #f9f2f4;
-
-@kbd-color:                   #fff;
-@kbd-bg:                      #333;
-
-@pre-bg:                      #f5f5f5;
-@pre-color:                   @gray-dark;
-@pre-border-color:            #ccc;
-@pre-scrollable-max-height:   340px;
-
-
-//== Type
-//
-//##
-
-//** Horizontal offset for forms and lists.
-@component-offset-horizontal: 180px;
-//** Text muted color
-@text-muted:                  @gray-light;
-//** Abbreviations and acronyms border color
-@abbr-border-color:           @gray-light;
-//** Headings small color
-@headings-small-color:        @gray-light;
-//** Blockquote small color
-@blockquote-small-color:      @gray-light;
-//** Blockquote font size
-@blockquote-font-size:        (@font-size-base * 1.25);
-//** Blockquote border color
-@blockquote-border-color:     @gray-lighter;
-//** Page header border color
-@page-header-border-color:    @gray-lighter;
-//** Width of horizontal description list titles
-@dl-horizontal-offset:        @component-offset-horizontal;
-//** Horizontal line color.
-@hr-border:                   #b2b2b2;
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/buttons.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/buttons.less
deleted file mode 100644
index bbb3c620..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/buttons.less
+++ /dev/null
@@ -1,61 +0,0 @@
-//
-// Buttons
-// --------------------------------------------------
-
-
-// Base styles
-// --------------------------------------------------
-
-// Core styles
-.btn {
-  display: inline-block;
-  padding: 5px 6px 4px 8px;
-  margin-top: 0;
-  margin-bottom: 0; // For input.btn
-  font-family: "Open Sans Condensed", sans-serif;
-  font-size: @font-size-base * 1.3;
-  font-weight: 700;
-  text-transform: uppercase;
-  letter-spacing: 1px;
-  line-height: @line-height-computed;
-  text-align: center;
-  vertical-align: middle;
-  touch-action: manipulation;
-  cursor: pointer;
-  background-color: @gray-lighter;
-  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
-  border: none;
-  border-radius: 3px;
-  .box-shadow(1px 1px 0 rgba(0, 0, 0, 0.3));
-  outline: none !important;
-  white-space: nowrap;
-  .user-select(none);
-
-  &:focus,
-  &.focus {
-    .tab-focus();
-  }
-
-  &:hover,
-  &:focus,
-  &.focus {
-    background-color: lighten(@gray-lighter, 5%);
-    text-decoration: none;
-    .transition(background-color .1s linear);
-  }
-
-  &:active,
-  &.active {
-    outline: 0;
-    padding: 6px 5px 3px 9px;
-  }
-
-  &.disabled,
-  &[disabled],
-  fieldset[disabled] & {
-    cursor: @cursor-disabled;
-    pointer-events: none; // Future-proof disabling of clicks
-    .opacity(65);
-    .box-shadow(1px 1px 0 rgba(0, 0, 0, 0.15));
-  }
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/code.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/code.less
deleted file mode 100644
index 33af7555..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/code.less
+++ /dev/null
@@ -1,8 +0,0 @@
-code {
-  margin: 0 2px;
-  padding: 1px 5px;
-  border: 1px solid #E1E1E8;
-  background-color: #F7F7F9;
-  color: @gray-dark;
-  font-size: 85%;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/evaluation-form.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/evaluation-form.less
deleted file mode 100644
index 6d505d56..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/evaluation-form.less
+++ /dev/null
@@ -1,91 +0,0 @@
-//
-// Evaluation form
-// --------------------------------------------------
-
-
-.evaluation-form {
-  .clearfix();
-
-  textarea {
-    height: 200px;
-  }
-}
-
-.evaluation-input-output {
-  float: left;
-  width: 65%;
-}
-
-.evaluation-input-clear-button {
-  position: absolute;
-  top: 0;
-  right: 0;
-  width: 15px;
-  height: 15px;
-  margin: 6px;
-  display: inline-block;
-  background: transparent url("../images/clear-text.png") no-repeat scroll 0 0;
-  opacity: 0.75;
-  line-height: 0;
-  vertical-align: bottom;
-  cursor: pointer;
-
-  &:hover {
-   opacity: 1;
- }
-}
-
-.evaluation-input-clear-button.with-scrollbar {
-  margin-right: 29px;
-}
-
-.evaluation-output {
-  margin-top: 1.5em;
-}
-
-.evaluation-input-field,
-.evaluation-output-field {
-  margin-bottom: 0.5em;
-  .box-sizing(border-box);
-  overflow-x: hidden;
-  line-height: @line-height-computed;
-}
-
-.evaluation-output-field {
-  &[readonly] {
-    cursor: auto;
-    background-color: @input-bg;
-  }
-}
-
-.evaluation-error-header {
-  margin-bottom: @line-height-computed;
-  padding-left: 52px;
-  background: transparent url("../images/icons/48x48/error.png") no-repeat scroll 0 50%;
-  color: @black;
-  font-family: @font-family-sans-serif;
-  font-weight: bold;
-  line-height: 48px;
-  vertical-align: middle;
-}
-
-ul.evaluation-error-list,
-ul.evaluation-warning-list {
-  li {
-    margin-bottom: 1em;
-
-    pre {
-      margin-top: 0.5em;
-      white-space: pre;
-      overflow: auto;
-    }
-  }
-}
-
-ul.evaluation-error-list li pre {
-  background-color: @state-danger-bg;
-}
-
-ul.evaluation-warning-list li pre {
-  background-color: @state-warning-bg;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/forms.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/forms.less
deleted file mode 100644
index 2ceb0559..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/forms.less
+++ /dev/null
@@ -1,99 +0,0 @@
-//
-// Forms
-// --------------------------------------------------
-
-// GENERAL STYLES
-// --------------
-
-label {
-  font-weight: normal;
-}
-
-
-// Form controls
-// -------------------------
-
-// Common form controls
-.form-control {
-  line-height: @input-height-base;
-}
-
-.textarea-wrapper {
-  position: relative;
-}
-
-// Form groups
-.form-group {
-  margin-bottom: 0.5em;
-}
-
-// Info and errors
-// --------------------------
-.message-info {
-  border: 1px solid;
-  clear: both;
-  padding: 10px 20px;
-  color: @state-info-text;
-}
-
-.message-error {
-  clear: both;
-  color: @state-danger-text;
-  font-size: 1.1em;
-  font-weight: bold;
-  margin: 20px 0 10px 0;
-}
-
-.message-success {
-  color: @state-success-text;
-  font-size: 1.3em;
-  font-weight: bold;
-  margin: 20px 0 10px 0;
-}
-
-.error {
-  color: @state-danger-text;
-}
-
-// Styles for validation helpers
-// --------------------------
-.validators {
-  font-style: normal;
-  padding-bottom: 0.5em;
-}
-
-.field-validation-error {
-  display: block;
-  padding-bottom: 0.5em;
-  color: @state-danger-text;
-  font-weight: bold;
-}
-
-.field-validation-valid {
-  display: none;
-}
-
-input.input-validation-error,
-textarea.input-validation-error,
-select.input-validation-error
-{
-  border: 1px solid @state-danger-border;
-  background-color: @state-danger-bg;
-  .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work
-
-  &:focus {
-    border-color: @state-danger-border;
-    @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@state-danger-text, 20%);
-    .box-shadow(@shadow);
-  }
-}
-
-.validation-summary-errors {
-  color: @state-danger-text;
-  font-weight: bold;
-  font-size: 1.1em;
-}
-
-.validation-summary-valid {
-  display: none;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/layout.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/layout.less
deleted file mode 100644
index 35a7f386..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/layout.less
+++ /dev/null
@@ -1,128 +0,0 @@
-html,
-body {
-  margin: 0;
-  height: 100%;
-  /* The html and body elements cannot have any padding or margin */
-}
-
-/* Wrapper for page content to push down footer */
-.l-wrapper {
-  min-height: 100%;
-  height: auto !important;
-  height: 100%;
-  /* Negative indent footer by it's height */
-  margin: 0 auto (-1 * @footer-height);
-}
-
-.l-constrained {
-  margin: 0 auto;
-  padding-left: 20px;
-  padding-right: 20px;
-  max-width: 1200px;
-  min-width: 800px;
-}
-
-.l-header {
-  border-top: solid 10px @black;
-  border-bottom: 1px solid #d4b33a;
-  background-color: #f0db4f;
-
-  .l-constrained {
-    padding-top: 20px;
-    padding-bottom: 20px;
-    .clearfix();
-  }
-}
-
-.l-content {
-  .clearfix();
-}
-
-.l-main-content {
-  float: left;
-  width: 70%;
-}
-
-.l-sidebar {
-  float: right;
-  width: 30%;
-}
-
-/* Set the fixed height of the footer here */
-.l-push,
-.l-footer {
-  height: @footer-height;
-}
-
-.l-footer {
-  width: 100%;
-  background-color: @black;
-  color: @gray-lighter;
-  font-size: @font-size-small;
-  line-height: 100%;
-
-  .l-constrained {
-    padding-top: (@footer-height - 32) / 2;
-    .clearfix();
-  }
-
-  a {
-    color: @gray-lighter;
-    text-decoration: none;
-
-    &:hover,
-    &:active {
-      text-decoration: underline;
-    }
-  }
-}
-
-
-// Header
-// -------------------------
-
-.logo {
-  margin: 0;
-
-  a {
-    display: block;
-    float: left;
-    width: 100px;
-    height: 100px;
-    background: transparent url("../images/jsengineswitcher-logo.png") no-repeat scroll 0 0;
-    text-indent: -9999em;
-  }
-}
-
-.primary-nav {
-  position: relative;
-  left: 40px;
-  float: left;
-}
-
-
-// Footer
-// -------------------------
-
-.l-copyright {
-  float: left;
-    p {
-      margin: 0;
-      padding: 0;
-  }
-}
-
-.l-social {
-  float: right;
-
-  li {
-    display: inline;
-    list-style: none outside none;
-    padding-left: 10px;
-
-    a {
-      text-indent: -9999px;
-      outline: none;
-    }
-  }
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/mixins.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/mixins.less
deleted file mode 100644
index d26eee79..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/mixins.less
+++ /dev/null
@@ -1,9 +0,0 @@
-//
-// Mixins
-// --------------------------------------------------
-
-// NO Drop shadows
-.no-box-shadow {
-  -webkit-box-shadow: none; // iOS <4.3 & Android <4.1
-          box-shadow: none;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/navbar.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/navbar.less
deleted file mode 100644
index 95edf3c2..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/navbar.less
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// Navbars
-// --------------------------------------------------
-
-
-// Wrapper and base class
-//
-// Provide a static navbar from which we expand to create full-width, fixed, and
-// other navbar variations.
-
-.navbar {
-  border: none;
-  border-radius: 0;
-}
-
-// Navbar nav links
-//
-// Builds on top of the `.nav` components with it's own modifier class to make
-// the nav the full height of the horizontal nav (above 768px).
-
-.navbar-nav {
-  float: left;
-  margin: 0 auto;
-
-  > li {
-    > a {
-      float: none;
-      // Vertically center the text given @navbar-height
-      padding: ((@navbar-height - @line-height-computed) / 2) 15px ((@navbar-height - @line-height-computed) / 2);
-      border: 1px solid transparent;
-      font-family: "Open Sans", sans-serif;
-      font-size: 2.0em;
-      text-decoration: none;
-      text-transform: uppercase;
-      outline: none;
-    }
-  }
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/page-socials.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/page-socials.less
deleted file mode 100644
index ea12dc09..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/page-socials.less
+++ /dev/null
@@ -1,14 +0,0 @@
-.page-socials {
-  min-height: 60px;
-  margin-top: 20px;
-  padding-top: 15px;
-  border-top: 1px solid #b2b2b2;
-}
-
-.share-buttons {
-  li {
-    margin-right: 15px;
-    vertical-align: top;
-    line-height: normal;
-  }
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/type.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/type.less
deleted file mode 100644
index 02d69502..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/type.less
+++ /dev/null
@@ -1,24 +0,0 @@
-//
-// Typography
-// --------------------------------------------------
-
-// Headings
-// -------------------------
-
-h1, h2, h3 {
-  margin-top: 10px;
-}
-
-h1, h2 {
-  line-height: 40px;
-}
-
-h2 {
-  color: @black;
-  font-weight: bold;
-}
-
-h3 {
-  color: @gray-dark;
-  line-height: @line-height-computed * 1.25;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/variables.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/variables.less
deleted file mode 100644
index 498c9796..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore1Full.Mvc1/wwwroot/styles/variables.less
+++ /dev/null
@@ -1,7 +0,0 @@
-// Colors
-// -------------------------
-@black:                 #1d0d0d;
-
-// Footer
-// -------------------------
-@footer-height:                    55px;
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/.bowerrc b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/.bowerrc
deleted file mode 100644
index ea81a597..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/.bowerrc
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "registry": "https://registry.bower.io",
-  "directory": "wwwroot/lib"
-}
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Infrastructure/Helpers/CommonExtensions.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Infrastructure/Helpers/CommonExtensions.cs
deleted file mode 100644
index 944ba51c..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Infrastructure/Helpers/CommonExtensions.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using System.Text.RegularExpressions;
-
-using Microsoft.AspNetCore.Html;
-using Microsoft.AspNetCore.Mvc.Rendering;
-
-namespace JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21.Infrastructure.Helpers
-{
-	public static class CommonExtensions
-	{
-		public static HtmlString EncodedReplace(this IHtmlHelper htmlHelper, string input,
-			string pattern, string replacement)
-		{
-			return new HtmlString(Regex.Replace(htmlHelper.Encode(input), pattern, replacement));
-		}
-	}
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Infrastructure/TagHelpers/ConditionalCommentTagHelper.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Infrastructure/TagHelpers/ConditionalCommentTagHelper.cs
deleted file mode 100644
index acde832e..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Infrastructure/TagHelpers/ConditionalCommentTagHelper.cs
+++ /dev/null
@@ -1,78 +0,0 @@
-using System;
-
-using Microsoft.AspNetCore.Razor.TagHelpers;
-
-namespace JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21.Infrastructure.TagHelpers
-{
-	[HtmlTargetElement("conditional-comment")]
-	public class ConditionalCommentTagHelper : TagHelper
-	{
-		[HtmlAttributeName("type")]
-		public ConditionalCommentType CommentType { get; set; }
-
-		[HtmlAttributeName("expression")]
-		public string Expression { get; set; }
-
-
-		public override void Process(TagHelperContext context, TagHelperOutput output)
-		{
-			output.TagName = null;
-
-			ConditionalCommentType type = CommentType;
-
-			string ifCommentStartPart;
-			string ifCommentEndPart;
-
-			switch (type)
-			{
-				case ConditionalCommentType.Hidden:
-					ifCommentStartPart = "";
-
-					break;
-				case ConditionalCommentType.RevealedValidatingSimplified:
-					ifCommentStartPart = "";
-
-					break;
-				case ConditionalCommentType.Revealed:
-					ifCommentStartPart = "";
-
-					break;
-				default:
-					throw new NotSupportedException();
-			}
-
-			TagHelperContent preContent = output.PreContent;
-			preContent.AppendHtml(ifCommentStartPart);
-			preContent.AppendHtml(Expression);
-			preContent.AppendHtml(ifCommentEndPart);
-
-			string endIfComment;
-
-			switch (type)
-			{
-				case ConditionalCommentType.Hidden:
-					endIfComment = "";
-					break;
-				case ConditionalCommentType.RevealedValidating:
-				case ConditionalCommentType.RevealedValidatingSimplified:
-					endIfComment = "";
-					break;
-				case ConditionalCommentType.Revealed:
-					endIfComment = "";
-					break;
-				default:
-					throw new NotSupportedException();
-			}
-
-			output.PostContent.AppendHtml(endIfComment);
-		}
-	}
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Infrastructure/TagHelpers/ConditionalCommentType.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Infrastructure/TagHelpers/ConditionalCommentType.cs
deleted file mode 100644
index fa53afea..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Infrastructure/TagHelpers/ConditionalCommentType.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-namespace JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21.Infrastructure.TagHelpers
-{
-	public enum ConditionalCommentType
-	{
-		Hidden,
-		Revealed,
-		RevealedValidating,
-		RevealedValidatingSimplified
-	}
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21.csproj b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21.csproj
index 69e0754e..620e4ee2 100644
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21.csproj
+++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21.csproj
@@ -2,10 +2,12 @@
 
   
     JS Engine Switcher: Sample ASP.NET Core 2.1 MVC 2.1 Site
-    3.21.3
+    3.30.2
     netcoreapp2.1
     Exe
     true
+    $(NoWarn);NU1902;NU1903;NU1904
+    true
     true
     true
     false
@@ -28,25 +30,11 @@
     
     
     
+    
     
     
   
 
-  
-    
-  
-  
-    
-  
-  
-    
-  
-  
-    
-  
-  
-    
-    
-    
-  
+  
+
 
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Program.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Program.cs
index 51f24982..3dcfa5fc 100644
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Program.cs
+++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Program.cs
@@ -1,4 +1,6 @@
-using Microsoft.AspNetCore;
+using System.IO;
+
+using Microsoft.AspNetCore;
 using Microsoft.AspNetCore.Hosting;
 
 namespace JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21
@@ -12,6 +14,10 @@ public static void Main(string[] args)
 
 		public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
 			WebHost.CreateDefaultBuilder(args)
+				.UseWebRoot(Path.Combine(
+					Directory.GetCurrentDirectory(),
+					"../JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot"
+				))
 				.UseStartup()
 				;
 	}
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Properties/launchSettings.json b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Properties/launchSettings.json
index 2e5caf19..def3944c 100644
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Properties/launchSettings.json
+++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Properties/launchSettings.json
@@ -8,13 +8,6 @@
     }
   },
   "profiles": {
-    "IIS Express": {
-      "commandName": "IISExpress",
-      "launchBrowser": true,
-      "environmentVariables": {
-        "ASPNETCORE_ENVIRONMENT": "Development"
-      }
-    },
     "JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21": {
       "commandName": "Project",
       "launchBrowser": true,
@@ -22,6 +15,13 @@
         "ASPNETCORE_ENVIRONMENT": "Development"
       },
       "applicationUrl": "http://localhost:1973/"
+    },
+    "IIS Express": {
+      "commandName": "IISExpress",
+      "launchBrowser": true,
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development"
+      }
     }
   }
 }
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Startup.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Startup.cs
index 6f114bde..5a5b6be7 100644
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Startup.cs
+++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Startup.cs
@@ -54,8 +54,10 @@ public void ConfigureServices(IServiceCollection services)
 
 			// Add JavaScriptEngineSwitcher services to the services container.
 			services.AddJsEngineSwitcher(options =>
-				options.DefaultEngineName = ChakraCoreJsEngine.EngineName
-			)
+			{
+				options.AllowCurrentProperty = false;
+				options.DefaultEngineName = ChakraCoreJsEngine.EngineName;
+			})
 				.AddChakraCore()
 				.AddJint()
 				.AddJurassic()
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Views/Home/Contact.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Views/Home/Contact.cshtml
index cd9663df..58785ebe 100644
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Views/Home/Contact.cshtml
+++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Views/Home/Contact.cshtml
@@ -5,19 +5,4 @@
 

@ViewBag.Title

@ViewBag.Body -
- -@section Scripts { - -} \ No newline at end of file + \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Views/Shared/_JsEvaluationErrorList.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Views/Shared/_JsEvaluationErrorList.cshtml index 4f3e0b6c..9e0601d6 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Views/Shared/_JsEvaluationErrorList.cshtml +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Views/Shared/_JsEvaluationErrorList.cshtml @@ -1,4 +1,4 @@ -@using JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21.Infrastructure.Helpers +@using JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure.Helpers @using JavaScriptEngineSwitcher.Sample.Logic.Models @model IList diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Views/Shared/_Layout.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Views/Shared/_Layout.cshtml index 4de7a488..93808b86 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Views/Shared/_Layout.cshtml +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Views/Shared/_Layout.cshtml @@ -1,4 +1,4 @@ -@using JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21.Infrastructure.TagHelpers +@using JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure.TagHelpers @@ -61,9 +61,10 @@ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Views/_ViewImports.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Views/_ViewImports.cshtml index 817835eb..8fe8384e 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Views/_ViewImports.cshtml +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/Views/_ViewImports.cshtml @@ -1,2 +1,2 @@ @addTagHelper "*, Microsoft.AspNetCore.Mvc.TagHelpers" -@addTagHelper "*, JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21" \ No newline at end of file +@addTagHelper "*, JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure" \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/bower.json b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/bower.json deleted file mode 100644 index cc2b80bb..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/bower.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "jsengineswitcher.sample.aspnetcore21.mvc21", - "dependencies": { - "modernizr": "2.8.3", - "jquery-compat": "jquery#1.10.2", - "jquery": "jquery#2.0.3", - "jquery-validation": "1.13.1", - "jquery-validation-unobtrusive": "3.2.3", - "bootstrap": "3.3.0" - } -} diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/gulpfile.js b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/gulpfile.js deleted file mode 100644 index 0f259437..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/gulpfile.js +++ /dev/null @@ -1,130 +0,0 @@ -/*global require, exports */ -/*jshint esversion: 6 */ -const WEB_ROOT_PATH = "wwwroot"; -const BOWER_DIR_PATH = WEB_ROOT_PATH + "/lib"; -const STYLE_DIR_PATH = WEB_ROOT_PATH + '/styles'; -const SCRIPT_DIR_PATH = WEB_ROOT_PATH + '/scripts'; - -// include plug-ins -let { src, dest, series, parallel, watch } = require('gulp'); -let del = require('del'); -let sourcemaps = require('gulp-sourcemaps'); -let rename = require('gulp-rename'); -let concat = require('gulp-concat'); -let less = require('gulp-less'); -let autoprefixer = require('gulp-autoprefixer'); -let cleanCss = require('gulp-clean-css'); -let uglify = require('gulp-uglify'); - -//#region Clean -//#region Clean builded assets -function cleanBuildedStyles() { - return del([STYLE_DIR_PATH + '/build/*']); -} - -function cleanBuildedScripts() { - return del([SCRIPT_DIR_PATH + '/build/*']); -} - -let cleanBuildedAssets = parallel(cleanBuildedStyles, cleanBuildedScripts); -//#endregion -//#endregion - -//#region Build assets -//#region Build styles -let autoprefixerOptions = { - overrideBrowserslist: ['> 1%', 'last 3 versions', 'Firefox ESR', 'Opera 12.1'], - cascade: true -}; -let cssCleanOptions = { specialComments: '*' }; -let cssRenameOptions = { extname: '.min.css' }; - -function buildCommonStyles() { - return src([STYLE_DIR_PATH + '/app.less']) - .pipe(sourcemaps.init()) - .pipe(less({ - relativeUrls: true, - rootpath: '/styles/' - })) - .pipe(autoprefixer(autoprefixerOptions)) - .pipe(sourcemaps.write('./')) - .pipe(dest(STYLE_DIR_PATH + '/build')) - .pipe(sourcemaps.init({ loadMaps: true })) - .pipe(concat('common-styles.css')) - .pipe(cleanCss(cssCleanOptions)) - .pipe(rename(cssRenameOptions)) - .pipe(sourcemaps.write('./')) - .pipe(dest(STYLE_DIR_PATH + '/build')) - ; -} - -let buildStyles = buildCommonStyles; -//#endregion - -//#region Build scripts -let jsConcatOptions = { newLine: ';' }; -let jsUglifyOptions = { - output: { comments: /^!/ } -}; -let jsRenameOptions = { extname: '.min.js' }; - -function buildModernizrScripts() { - return src([BOWER_DIR_PATH + '/modernizr/modernizr.js']) - .pipe(sourcemaps.init()) - .pipe(uglify(jsUglifyOptions)) - .pipe(rename(jsRenameOptions)) - .pipe(sourcemaps.write('./')) - .pipe(dest(SCRIPT_DIR_PATH + '/build')) - ; -} - -function buildCommonScripts() { - return src([SCRIPT_DIR_PATH + '/common.js']) - .pipe(sourcemaps.init({ loadMaps: true })) - .pipe(rename({ basename: 'common-scripts' })) - .pipe(uglify(jsUglifyOptions)) - .pipe(rename(jsRenameOptions)) - .pipe(sourcemaps.write('./')) - .pipe(dest(SCRIPT_DIR_PATH + '/build')) - ; -} - -function buildEvaluationFormScripts() { - return src([BOWER_DIR_PATH + '/jquery-validation/dist/jquery.validate.js', - BOWER_DIR_PATH + '/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js', - BOWER_DIR_PATH + '/bootstrap/js/button.js', - SCRIPT_DIR_PATH + '/evaluation-form.js']) - .pipe(sourcemaps.init({ loadMaps: true })) - .pipe(concat('evaluation-form-scripts.js', jsConcatOptions)) - .pipe(uglify(jsUglifyOptions)) - .pipe(rename(jsRenameOptions)) - .pipe(sourcemaps.write('./')) - .pipe(dest(SCRIPT_DIR_PATH + '/build')) - ; -} - -let buildScripts = parallel(buildModernizrScripts, buildCommonScripts, buildEvaluationFormScripts); -//#endregion - -let buildAssets = parallel(buildStyles, buildScripts); -//#endregion - -//#region Watch assets -function watchStyles() { - return watch([STYLE_DIR_PATH + '/**/*.{less,css}', '!' + STYLE_DIR_PATH + '/build/**/*.*'], - buildStyles); -} - -function watchScripts() { - return watch([SCRIPT_DIR_PATH + '/**/*.js', '!' + SCRIPT_DIR_PATH + '/build/**/*.*'], - buildScripts); -} - -let watchAssets = parallel(watchStyles, watchScripts); -//#endregion - -// Export tasks -exports.cleanBuildedAssets = cleanBuildedAssets; -exports.buildAssets = buildAssets; -exports.watchAssets = watchAssets; -exports.default = series(cleanBuildedAssets, buildAssets); \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/images/0.gif b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/images/0.gif deleted file mode 100644 index 35d42e80..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/images/0.gif and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/images/clear-text.png b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/images/clear-text.png deleted file mode 100644 index 9d217b7f..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/images/clear-text.png and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/images/icons/32x32/social-media-icons-32.png b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/images/icons/32x32/social-media-icons-32.png deleted file mode 100644 index 49aa1fe3..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/images/icons/32x32/social-media-icons-32.png and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/images/icons/48x48/error.png b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/images/icons/48x48/error.png deleted file mode 100644 index 3d6185f7..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/images/icons/48x48/error.png and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/images/jsengineswitcher-logo.png b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/images/jsengineswitcher-logo.png deleted file mode 100644 index 12ed97e0..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/images/jsengineswitcher-logo.png and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/scripts/_references.js b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/scripts/_references.js deleted file mode 100644 index 2b54eea8..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/scripts/_references.js and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/scripts/common.js b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/scripts/common.js deleted file mode 100644 index c94bf102..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/scripts/common.js +++ /dev/null @@ -1,29 +0,0 @@ -var jsEngineSwitcher; - -(function (jsEngineSwitcher, undefined) { - "use strict"; - - jsEngineSwitcher.registerNamespace = function (namespaceString) { - var parts = namespaceString.split("."), - parent = jsEngineSwitcher, - i - ; - - if (parts[0] === "jsEngineSwitcher") { - parts = parts.slice(1); - } - - for (i = 0; i < parts.length; i += 1) { - if (typeof parent[parts[i]] === "undefined") { - parent[parts[i]] = {}; - } - parent = parent[parts[i]]; - } - - return parent; - }; - - jsEngineSwitcher.hasScrollbar = function(elem) { - return (elem.clientHeight < elem.scrollHeight); - }; -}(jsEngineSwitcher = jsEngineSwitcher || {})); \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/scripts/evaluation-form.js b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/scripts/evaluation-form.js deleted file mode 100644 index da1f0199..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/scripts/evaluation-form.js +++ /dev/null @@ -1,83 +0,0 @@ -(function (jsEngineSwitcher, $, undefined) { - "use strict"; - - var $evaluationForm, - $evaluationInputField, - $evaluationInputClearButton, - $evaluateButton - ; - - $(function () { - $evaluationForm = $("form[data-form-type='evaluation-form']"); - $evaluationInputField = $(":input[data-control-type='evaluation-input-field']", $evaluationForm); - $evaluationInputClearButton = $("
"); - $evaluateButton = $(":input[data-control-type='evaluate-button']", $evaluationForm); - - $evaluationForm.on("submit", onEvaluationFormSubmitHandler); - - $evaluationInputClearButton.on("click", onEvaluationInputClearButtonClickHandler); - $evaluationInputField.parent().append($evaluationInputClearButton); - refreshEvaluationInputClearButton(); - $evaluationInputField - .on("input propertychange keydown keyup paste", onEvaluationInputFieldChangeHandler) - ; - - $evaluateButton.removeAttr("disabled"); - }); - - $(window).unload(function() { - $evaluationForm.off("submit", onEvaluationFormSubmitHandler); - - $evaluationInputClearButton - .off("click", onEvaluationInputClearButtonClickHandler) - .remove() - ; - - $evaluationInputField - .off("input propertychange keydown keyup paste", onEvaluationInputFieldChangeHandler) - ; - - $evaluationForm = null; - $evaluationInputField = null; - $evaluationInputClearButton = null; - $evaluateButton = null; - }); - - var refreshEvaluationInputClearButton = function() { - if ($.trim($evaluationInputField.val()).length > 0) { - $evaluationInputClearButton.show(); - } else { - $evaluationInputClearButton.hide(); - } - - if (jsEngineSwitcher.hasScrollbar($evaluationInputField.get(0))) { - $evaluationInputClearButton.addClass("with-scrollbar"); - } - else { - $evaluationInputClearButton.removeClass("with-scrollbar"); - } - }; - - var onEvaluationFormSubmitHandler = function () { - var $form = $(this); - if ($form.valid()) { - $evaluateButton.attr("disabled", "disabled"); - $("textarea[data-control-type='evaluation-output-field']", $form).val(''); - - return true; - } - - return false; - }; - - var onEvaluationInputFieldChangeHandler = function () { - refreshEvaluationInputClearButton(); - }; - - var onEvaluationInputClearButtonClickHandler = function() { - $evaluationInputField.val(""); - - var $button = $(this); - $button.hide(); - }; -}(jsEngineSwitcher, jQuery)); \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/app.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/app.less deleted file mode 100644 index c41a9315..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/app.less +++ /dev/null @@ -1,71 +0,0 @@ -/*! - * Bootstrap v3.3.0 (http://getbootstrap.com) - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -// Core variables and mixins -@import "bootstrap-custom-variables.less"; -@import "../lib/bootstrap/less/mixins.less"; - -// Reset -@import "../lib/bootstrap/less/normalize.less"; -//@import "../lib/bootstrap/less/print.less"; -//@import "../lib/bootstrap/less/glyphicons.less"; - -// Core CSS -@import "../lib/bootstrap/less/scaffolding.less"; -@import "../lib/bootstrap/less/type.less"; -@import "../lib/bootstrap/less/code.less"; -//@import "../lib/bootstrap/less/grid.less"; -//@import "../lib/bootstrap/less/tables.less"; -@import "../lib/bootstrap/less/forms.less"; -//@import "../lib/bootstrap/less/buttons.less"; - -// Components -//@import "../lib/bootstrap/less/component-animations.less"; -//@import "../lib/bootstrap/less/dropdowns.less"; -//@import "../lib/bootstrap/less/button-groups.less"; -//@import "../lib/bootstrap/less/input-groups.less"; -@import "../lib/bootstrap/less/navs.less"; -@import "../lib/bootstrap/less/navbar.less"; -//@import "../lib/bootstrap/less/breadcrumbs.less"; -//@import "../lib/bootstrap/less/pagination.less"; -//@import "../lib/bootstrap/less/pager.less"; -//@import "../lib/bootstrap/less/labels.less"; -//@import "../lib/bootstrap/less/badges.less"; -//@import "../lib/bootstrap/less/jumbotron.less"; -//@import "../lib/bootstrap/less/thumbnails.less"; -//@import "../lib/bootstrap/less/alerts.less"; -//@import "../lib/bootstrap/less/progress-bars.less"; -//@import "../lib/bootstrap/less/media.less"; -//@import "../lib/bootstrap/less/list-group.less"; -//@import "../lib/bootstrap/less/panels.less"; -//@import "../lib/bootstrap/less/responsive-embed.less"; -//@import "../lib/bootstrap/less/wells.less"; -//@import "../lib/bootstrap/less/close.less"; - -// Components w/ JavaScript -//@import "../lib/bootstrap/less/modals.less"; -//@import "../lib/bootstrap/less/tooltip.less"; -//@import "../lib/bootstrap/less/popovers.less"; -//@import "../lib/bootstrap/less/carousel.less"; - -// Utility classes -@import "../lib/bootstrap/less/utilities.less"; -//@import "../lib/bootstrap/less/responsive-utilities.less"; - -// JavaScriptEngineSwitcher specs -@import "variables.less"; -@import "mixins.less"; - -@import "type.less"; -@import "code.less"; -@import "forms.less"; -@import "buttons.less"; -@import "icons.less"; -@import "navbar.less"; - -@import "layout.less"; -@import "evaluation-form.less"; -@import "page-socials.less"; \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/bootstrap-custom-variables.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/bootstrap-custom-variables.less deleted file mode 100644 index 0be2aa6f..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/bootstrap-custom-variables.less +++ /dev/null @@ -1,856 +0,0 @@ -// -// Variables -// -------------------------------------------------- - - -//== Colors -// -//## Gray and brand colors for use across Bootstrap. - -@gray-base: #323330; -@gray-darker: lighten(@gray-base, 13.5%); // #222 -@gray-dark: lighten(@gray-base, 20%); // #333 -@gray: lighten(@gray-base, 33.5%); // #555 -@gray-light: lighten(@gray-base, 46.7%); // #777 -@gray-lighter: #e3e3e3; - -@brand-primary: #428bca; -@brand-success: #5cb85c; -@brand-info: #5bc0de; -@brand-warning: #f0ad4e; -@brand-danger: #d9534f; - - -//== Scaffolding -// -//## Settings for some of the most global styles. - -//** Background color for ``. -@body-bg: #fff; -//** Global text color on ``. -@text-color: #1d0d0d; - -//** Global textual link color. -@link-color: @brand-primary; -//** Link hover color set via `darken()` function. -@link-hover-color: darken(@link-color, 15%); -//** Link hover decoration. -@link-hover-decoration: underline; - - -//== Typography -// -//## Font, line-height, and color for body text, headings, and more. - -@font-family-sans-serif: "Helvetica Neue", Arial, sans-serif; -@font-family-serif: Georgia, "Times New Roman", Times, serif; -//** Default monospace fonts for ``, ``, and `
`.
-@font-family-monospace:   Consolas, "Courier New", monospace;
-@font-family-base:        @font-family-sans-serif;
-
-@font-size-base:          14px;
-@font-size-large:         ceil((@font-size-base * 1.25)); // ~18px
-@font-size-small:         ceil((@font-size-base * 0.85)); // ~12px
-
-@font-size-h1:            floor(@font-size-base * 3);
-@font-size-h2:            @font-size-base * 2.5;
-@font-size-h3:            ceil(@font-size-base * 1.75);
-@font-size-h4:            ceil(@font-size-base * 1.25);
-@font-size-h5:            @font-size-base;
-@font-size-h6:            ceil(@font-size-base * 0.85);
-
-//** Unit-less `line-height` for use in components like buttons.
-@line-height-base:        1.428571429; // 20/14
-//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
-@line-height-computed:    floor((@font-size-base * @line-height-base)); // ~20px
-
-//** By default, this inherits from the ``.
-@headings-font-family:    "Open Sans", sans-serif;
-@headings-font-weight:    normal;
-@headings-line-height:    1.1;
-@headings-color:          inherit;
-
-
-//== Iconography
-//
-//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
-
-//** Load fonts from this directory.
-@icon-font-path:          "../fonts/";
-//** File name for all font files.
-@icon-font-name:          "glyphicons-halflings-regular";
-//** Element ID within SVG icon file.
-@icon-font-svg-id:        "glyphicons_halflingsregular";
-
-
-//== Components
-//
-//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
-
-@padding-base-vertical:     4px;
-@padding-base-horizontal:   6px;
-
-@padding-large-vertical:    10px;
-@padding-large-horizontal:  16px;
-
-@padding-small-vertical:    5px;
-@padding-small-horizontal:  10px;
-
-@padding-xs-vertical:       1px;
-@padding-xs-horizontal:     5px;
-
-@line-height-large:         1.33;
-@line-height-small:         1.5;
-
-@border-radius-base:        4px;
-@border-radius-large:       6px;
-@border-radius-small:       3px;
-
-//** Global color for active items (e.g., navs or dropdowns).
-@component-active-color:    #fff;
-//** Global background color for active items (e.g., navs or dropdowns).
-@component-active-bg:       @brand-primary;
-
-//** Width of the `border` for generating carets that indicator dropdowns.
-@caret-width-base:          4px;
-//** Carets increase slightly in size for larger components.
-@caret-width-large:         5px;
-
-
-//== Tables
-//
-//## Customizes the `.table` component with basic values, each used across all table variations.
-
-//** Padding for ``s and ``s.
-@table-cell-padding:            8px;
-//** Padding for cells in `.table-condensed`.
-@table-condensed-cell-padding:  5px;
-
-//** Default background color used for all tables.
-@table-bg:                      transparent;
-//** Background color used for `.table-striped`.
-@table-bg-accent:               #f9f9f9;
-//** Background color used for `.table-hover`.
-@table-bg-hover:                #f5f5f5;
-@table-bg-active:               @table-bg-hover;
-
-//** Border color for table and cell borders.
-@table-border-color:            #ddd;
-
-
-//== Buttons
-//
-//## For each of Bootstrap's buttons, define text, background and border color.
-
-@btn-font-weight:                normal;
-
-@btn-default-color:              #333;
-@btn-default-bg:                 @gray-lighter;
-@btn-default-border:             @gray-lighter;
-
-@btn-primary-color:              #fff;
-@btn-primary-bg:                 @brand-primary;
-@btn-primary-border:             darken(@btn-primary-bg, 5%);
-
-@btn-success-color:              #fff;
-@btn-success-bg:                 @brand-success;
-@btn-success-border:             darken(@btn-success-bg, 5%);
-
-@btn-info-color:                 #fff;
-@btn-info-bg:                    @brand-info;
-@btn-info-border:                darken(@btn-info-bg, 5%);
-
-@btn-warning-color:              #fff;
-@btn-warning-bg:                 @brand-warning;
-@btn-warning-border:             darken(@btn-warning-bg, 5%);
-
-@btn-danger-color:               #fff;
-@btn-danger-bg:                  @brand-danger;
-@btn-danger-border:              darken(@btn-danger-bg, 5%);
-
-@btn-link-disabled-color:        @gray-light;
-
-
-//== Forms
-//
-//##
-
-//** `` background color
-@input-bg:                       #fff;
-//** `` background color
-@input-bg-disabled:              @gray-lighter;
-
-//** Text color for ``s
-@input-color:                    @gray;
-//** `` border color
-@input-border:                   #b2b2b2;
-
-// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4
-//** Default `.form-control` border radius
-@input-border-radius:            @border-radius-base;
-//** Large `.form-control` border radius
-@input-border-radius-large:      @border-radius-large;
-//** Small `.form-control` border radius
-@input-border-radius-small:      @border-radius-small;
-
-//** Border color for inputs on focus
-@input-border-focus:             #d4b33a;
-
-//** Placeholder text color
-@input-color-placeholder:        #999;
-
-//** Default `.form-control` height
-@input-height-base:              (@line-height-computed + (@padding-base-vertical * 2) + 2);
-//** Large `.form-control` height
-@input-height-large:             (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);
-//** Small `.form-control` height
-@input-height-small:             (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);
-
-@legend-color:                   @gray-dark;
-@legend-border-color:            #e5e5e5;
-
-//** Background color for textual input addons
-@input-group-addon-bg:           @gray-lighter;
-//** Border color for textual input addons
-@input-group-addon-border-color: @input-border;
-
-//** Disabled cursor for form controls and buttons.
-@cursor-disabled:                not-allowed;
-
-
-//== Dropdowns
-//
-//## Dropdown menu container and contents.
-
-//** Background for the dropdown menu.
-@dropdown-bg:                    #fff;
-//** Dropdown menu `border-color`.
-@dropdown-border:                rgba(0,0,0,.15);
-//** Dropdown menu `border-color` **for IE8**.
-@dropdown-fallback-border:       #ccc;
-//** Divider color for between dropdown items.
-@dropdown-divider-bg:            #e5e5e5;
-
-//** Dropdown link text color.
-@dropdown-link-color:            @gray-dark;
-//** Hover color for dropdown links.
-@dropdown-link-hover-color:      darken(@gray-dark, 5%);
-//** Hover background for dropdown links.
-@dropdown-link-hover-bg:         #f5f5f5;
-
-//** Active dropdown menu item text color.
-@dropdown-link-active-color:     @component-active-color;
-//** Active dropdown menu item background color.
-@dropdown-link-active-bg:        @component-active-bg;
-
-//** Disabled dropdown menu item background color.
-@dropdown-link-disabled-color:   @gray-light;
-
-//** Text color for headers within dropdown menus.
-@dropdown-header-color:          @gray-light;
-
-//** Deprecated `@dropdown-caret-color` as of v3.1.0
-@dropdown-caret-color:           #000;
-
-
-//-- Z-index master list
-//
-// Warning: Avoid customizing these values. They're used for a bird's eye view
-// of components dependent on the z-axis and are designed to all work together.
-//
-// Note: These variables are not generated into the Customizer.
-
-@zindex-navbar:            1000;
-@zindex-dropdown:          1000;
-@zindex-popover:           1060;
-@zindex-tooltip:           1070;
-@zindex-navbar-fixed:      1030;
-@zindex-modal:             1040;
-
-
-//== Media queries breakpoints
-//
-//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
-
-// Extra small screen / phone
-//** Deprecated `@screen-xs` as of v3.0.1
-@screen-xs:                  480px;
-//** Deprecated `@screen-xs-min` as of v3.2.0
-@screen-xs-min:              @screen-xs;
-//** Deprecated `@screen-phone` as of v3.0.1
-@screen-phone:               @screen-xs-min;
-
-// Small screen / tablet
-//** Deprecated `@screen-sm` as of v3.0.1
-@screen-sm:                  768px;
-@screen-sm-min:              @screen-sm;
-//** Deprecated `@screen-tablet` as of v3.0.1
-@screen-tablet:              @screen-sm-min;
-
-// Medium screen / desktop
-//** Deprecated `@screen-md` as of v3.0.1
-@screen-md:                  992px;
-@screen-md-min:              @screen-md;
-//** Deprecated `@screen-desktop` as of v3.0.1
-@screen-desktop:             @screen-md-min;
-
-// Large screen / wide desktop
-//** Deprecated `@screen-lg` as of v3.0.1
-@screen-lg:                  1200px;
-@screen-lg-min:              @screen-lg;
-//** Deprecated `@screen-lg-desktop` as of v3.0.1
-@screen-lg-desktop:          @screen-lg-min;
-
-// So media queries don't overlap when required, provide a maximum
-@screen-xs-max:              (@screen-sm-min - 1);
-@screen-sm-max:              (@screen-md-min - 1);
-@screen-md-max:              (@screen-lg-min - 1);
-
-
-//== Grid system
-//
-//## Define your custom responsive grid.
-
-//** Number of columns in the grid.
-@grid-columns:              12;
-//** Padding between columns. Gets divided in half for the left and right.
-@grid-gutter-width:         30px;
-// Navbar collapse
-//** Point at which the navbar becomes uncollapsed.
-@grid-float-breakpoint:     @screen-sm-min;
-//** Point at which the navbar begins collapsing.
-@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);
-
-
-//== Container sizes
-//
-//## Define the maximum width of `.container` for different screen sizes.
-
-// Small screen / tablet
-@container-tablet:             (720px + @grid-gutter-width);
-//** For `@screen-sm-min` and up.
-@container-sm:                 @container-tablet;
-
-// Medium screen / desktop
-@container-desktop:            (940px + @grid-gutter-width);
-//** For `@screen-md-min` and up.
-@container-md:                 @container-desktop;
-
-// Large screen / wide desktop
-@container-large-desktop:      (1140px + @grid-gutter-width);
-//** For `@screen-lg-min` and up.
-@container-lg:                 @container-large-desktop;
-
-
-//== Navbar
-//
-//##
-
-// Basics of a navbar
-@navbar-height:                    100px;
-@navbar-margin-bottom:             0;
-@navbar-border-radius:             @border-radius-base;
-@navbar-padding-horizontal:        0;
-@navbar-padding-vertical:          ((@navbar-height - @line-height-computed) / 2);
-@navbar-collapse-max-height:       340px;
-
-@navbar-default-color:             @gray-base;
-@navbar-default-bg:                #f0db4f;
-@navbar-default-border:            #f0db4f;
-
-// Navbar links
-@navbar-default-link-color:                @navbar-default-color;
-@navbar-default-link-hover-color:          @gray-dark;
-@navbar-default-link-hover-bg:             transparent;
-@navbar-default-link-active-color:         @navbar-default-color;
-@navbar-default-link-active-bg:            transparent;
-@navbar-default-link-disabled-color:       #ccc;
-@navbar-default-link-disabled-bg:          transparent;
-
-// Navbar brand label
-@navbar-default-brand-color:               @navbar-default-link-color;
-@navbar-default-brand-hover-color:         darken(@navbar-default-brand-color, 10%);
-@navbar-default-brand-hover-bg:            transparent;
-
-// Navbar toggle
-@navbar-default-toggle-hover-bg:           #ddd;
-@navbar-default-toggle-icon-bar-bg:        @gray-dark;
-@navbar-default-toggle-border-color:       #ddd;
-
-
-// Inverted navbar
-// Reset inverted navbar basics
-@navbar-inverse-color:                      lighten(@gray-light, 15%);
-@navbar-inverse-bg:                         #222;
-@navbar-inverse-border:                     darken(@navbar-inverse-bg, 10%);
-
-// Inverted navbar links
-@navbar-inverse-link-color:                 lighten(@gray-light, 15%);
-@navbar-inverse-link-hover-color:           #fff;
-@navbar-inverse-link-hover-bg:              transparent;
-@navbar-inverse-link-active-color:          @navbar-inverse-link-hover-color;
-@navbar-inverse-link-active-bg:             darken(@navbar-inverse-bg, 10%);
-@navbar-inverse-link-disabled-color:        #444;
-@navbar-inverse-link-disabled-bg:           transparent;
-
-// Inverted navbar brand label
-@navbar-inverse-brand-color:                @navbar-inverse-link-color;
-@navbar-inverse-brand-hover-color:          #fff;
-@navbar-inverse-brand-hover-bg:             transparent;
-
-// Inverted navbar toggle
-@navbar-inverse-toggle-hover-bg:            #333;
-@navbar-inverse-toggle-icon-bar-bg:         #fff;
-@navbar-inverse-toggle-border-color:        #333;
-
-
-//== Navs
-//
-//##
-
-//=== Shared nav styles
-@nav-link-padding:                          10px 15px;
-@nav-link-hover-bg:                         @gray-lighter;
-
-@nav-disabled-link-color:                   @gray-light;
-@nav-disabled-link-hover-color:             @gray-light;
-
-//== Tabs
-@nav-tabs-border-color:                     #ddd;
-
-@nav-tabs-link-hover-border-color:          @gray-lighter;
-
-@nav-tabs-active-link-hover-bg:             @body-bg;
-@nav-tabs-active-link-hover-color:          @gray;
-@nav-tabs-active-link-hover-border-color:   #ddd;
-
-@nav-tabs-justified-link-border-color:            #ddd;
-@nav-tabs-justified-active-link-border-color:     @body-bg;
-
-//== Pills
-@nav-pills-border-radius:                   @border-radius-base;
-@nav-pills-active-link-hover-bg:            @component-active-bg;
-@nav-pills-active-link-hover-color:         @component-active-color;
-
-
-//== Pagination
-//
-//##
-
-@pagination-color:                     @link-color;
-@pagination-bg:                        #fff;
-@pagination-border:                    #ddd;
-
-@pagination-hover-color:               @link-hover-color;
-@pagination-hover-bg:                  @gray-lighter;
-@pagination-hover-border:              #ddd;
-
-@pagination-active-color:              #fff;
-@pagination-active-bg:                 @brand-primary;
-@pagination-active-border:             @brand-primary;
-
-@pagination-disabled-color:            @gray-light;
-@pagination-disabled-bg:               #fff;
-@pagination-disabled-border:           #ddd;
-
-
-//== Pager
-//
-//##
-
-@pager-bg:                             @pagination-bg;
-@pager-border:                         @pagination-border;
-@pager-border-radius:                  15px;
-
-@pager-hover-bg:                       @pagination-hover-bg;
-
-@pager-active-bg:                      @pagination-active-bg;
-@pager-active-color:                   @pagination-active-color;
-
-@pager-disabled-color:                 @pagination-disabled-color;
-
-
-//== Jumbotron
-//
-//##
-
-@jumbotron-padding:              30px;
-@jumbotron-color:                inherit;
-@jumbotron-bg:                   @gray-lighter;
-@jumbotron-heading-color:        inherit;
-@jumbotron-font-size:            ceil((@font-size-base * 1.5));
-
-
-//== Form states and alerts
-//
-//## Define colors for form feedback states and, by default, alerts.
-
-@state-success-text:             #3c763d;
-@state-success-bg:               #dff0d8;
-@state-success-border:           darken(spin(@state-success-bg, -10), 5%);
-
-@state-info-text:                #31708f;
-@state-info-bg:                  #d9edf7;
-@state-info-border:              darken(spin(@state-info-bg, -10), 7%);
-
-@state-warning-text:             #8a6d3b;
-@state-warning-bg:               #fcf8e3;
-@state-warning-border:           darken(spin(@state-warning-bg, -10), 5%);
-
-@state-danger-text:              #a94442;
-@state-danger-bg:                #f2dede;
-@state-danger-border:            darken(spin(@state-danger-bg, -10), 5%);
-
-
-//== Tooltips
-//
-//##
-
-//** Tooltip max width
-@tooltip-max-width:           200px;
-//** Tooltip text color
-@tooltip-color:               #fff;
-//** Tooltip background color
-@tooltip-bg:                  #000;
-@tooltip-opacity:             .9;
-
-//** Tooltip arrow width
-@tooltip-arrow-width:         5px;
-//** Tooltip arrow color
-@tooltip-arrow-color:         @tooltip-bg;
-
-
-//== Popovers
-//
-//##
-
-//** Popover body background color
-@popover-bg:                          #fff;
-//** Popover maximum width
-@popover-max-width:                   276px;
-//** Popover border color
-@popover-border-color:                rgba(0,0,0,.2);
-//** Popover fallback border color
-@popover-fallback-border-color:       #ccc;
-
-//** Popover title background color
-@popover-title-bg:                    darken(@popover-bg, 3%);
-
-//** Popover arrow width
-@popover-arrow-width:                 10px;
-//** Popover arrow color
-@popover-arrow-color:                 @popover-bg;
-
-//** Popover outer arrow width
-@popover-arrow-outer-width:           (@popover-arrow-width + 1);
-//** Popover outer arrow color
-@popover-arrow-outer-color:           fadein(@popover-border-color, 5%);
-//** Popover outer arrow fallback color
-@popover-arrow-outer-fallback-color:  darken(@popover-fallback-border-color, 20%);
-
-
-//== Labels
-//
-//##
-
-//** Default label background color
-@label-default-bg:            @gray-light;
-//** Primary label background color
-@label-primary-bg:            @brand-primary;
-//** Success label background color
-@label-success-bg:            @brand-success;
-//** Info label background color
-@label-info-bg:               @brand-info;
-//** Warning label background color
-@label-warning-bg:            @brand-warning;
-//** Danger label background color
-@label-danger-bg:             @brand-danger;
-
-//** Default label text color
-@label-color:                 #fff;
-//** Default text color of a linked label
-@label-link-hover-color:      #fff;
-
-
-//== Modals
-//
-//##
-
-//** Padding applied to the modal body
-@modal-inner-padding:         15px;
-
-//** Padding applied to the modal title
-@modal-title-padding:         15px;
-//** Modal title line-height
-@modal-title-line-height:     @line-height-base;
-
-//** Background color of modal content area
-@modal-content-bg:                             #fff;
-//** Modal content border color
-@modal-content-border-color:                   rgba(0,0,0,.2);
-//** Modal content border color **for IE8**
-@modal-content-fallback-border-color:          #999;
-
-//** Modal backdrop background color
-@modal-backdrop-bg:           #000;
-//** Modal backdrop opacity
-@modal-backdrop-opacity:      .5;
-//** Modal header border color
-@modal-header-border-color:   #e5e5e5;
-//** Modal footer border color
-@modal-footer-border-color:   @modal-header-border-color;
-
-@modal-lg:                    900px;
-@modal-md:                    600px;
-@modal-sm:                    300px;
-
-
-//== Alerts
-//
-//## Define alert colors, border radius, and padding.
-
-@alert-padding:               15px;
-@alert-border-radius:         @border-radius-base;
-@alert-link-font-weight:      bold;
-
-@alert-success-bg:            @state-success-bg;
-@alert-success-text:          @state-success-text;
-@alert-success-border:        @state-success-border;
-
-@alert-info-bg:               @state-info-bg;
-@alert-info-text:             @state-info-text;
-@alert-info-border:           @state-info-border;
-
-@alert-warning-bg:            @state-warning-bg;
-@alert-warning-text:          @state-warning-text;
-@alert-warning-border:        @state-warning-border;
-
-@alert-danger-bg:             @state-danger-bg;
-@alert-danger-text:           @state-danger-text;
-@alert-danger-border:         @state-danger-border;
-
-
-//== Progress bars
-//
-//##
-
-//** Background color of the whole progress component
-@progress-bg:                 #f5f5f5;
-//** Progress bar text color
-@progress-bar-color:          #fff;
-//** Variable for setting rounded corners on progress bar.
-@progress-border-radius:      @border-radius-base;
-
-//** Default progress bar color
-@progress-bar-bg:             @brand-primary;
-//** Success progress bar color
-@progress-bar-success-bg:     @brand-success;
-//** Warning progress bar color
-@progress-bar-warning-bg:     @brand-warning;
-//** Danger progress bar color
-@progress-bar-danger-bg:      @brand-danger;
-//** Info progress bar color
-@progress-bar-info-bg:        @brand-info;
-
-
-//== List group
-//
-//##
-
-//** Background color on `.list-group-item`
-@list-group-bg:                 #fff;
-//** `.list-group-item` border color
-@list-group-border:             #ddd;
-//** List group border radius
-@list-group-border-radius:      @border-radius-base;
-
-//** Background color of single list items on hover
-@list-group-hover-bg:           #f5f5f5;
-//** Text color of active list items
-@list-group-active-color:       @component-active-color;
-//** Background color of active list items
-@list-group-active-bg:          @component-active-bg;
-//** Border color of active list elements
-@list-group-active-border:      @list-group-active-bg;
-//** Text color for content within active list items
-@list-group-active-text-color:  lighten(@list-group-active-bg, 40%);
-
-//** Text color of disabled list items
-@list-group-disabled-color:      @gray-light;
-//** Background color of disabled list items
-@list-group-disabled-bg:         @gray-lighter;
-//** Text color for content within disabled list items
-@list-group-disabled-text-color: @list-group-disabled-color;
-
-@list-group-link-color:         #555;
-@list-group-link-hover-color:   @list-group-link-color;
-@list-group-link-heading-color: #333;
-
-
-//== Panels
-//
-//##
-
-@panel-bg:                    #fff;
-@panel-body-padding:          15px;
-@panel-heading-padding:       10px 15px;
-@panel-footer-padding:        @panel-heading-padding;
-@panel-border-radius:         @border-radius-base;
-
-//** Border color for elements within panels
-@panel-inner-border:          #ddd;
-@panel-footer-bg:             #f5f5f5;
-
-@panel-default-text:          @gray-dark;
-@panel-default-border:        #ddd;
-@panel-default-heading-bg:    #f5f5f5;
-
-@panel-primary-text:          #fff;
-@panel-primary-border:        @brand-primary;
-@panel-primary-heading-bg:    @brand-primary;
-
-@panel-success-text:          @state-success-text;
-@panel-success-border:        @state-success-border;
-@panel-success-heading-bg:    @state-success-bg;
-
-@panel-info-text:             @state-info-text;
-@panel-info-border:           @state-info-border;
-@panel-info-heading-bg:       @state-info-bg;
-
-@panel-warning-text:          @state-warning-text;
-@panel-warning-border:        @state-warning-border;
-@panel-warning-heading-bg:    @state-warning-bg;
-
-@panel-danger-text:           @state-danger-text;
-@panel-danger-border:         @state-danger-border;
-@panel-danger-heading-bg:     @state-danger-bg;
-
-
-//== Thumbnails
-//
-//##
-
-//** Padding around the thumbnail image
-@thumbnail-padding:           4px;
-//** Thumbnail background color
-@thumbnail-bg:                @body-bg;
-//** Thumbnail border color
-@thumbnail-border:            #ddd;
-//** Thumbnail border radius
-@thumbnail-border-radius:     @border-radius-base;
-
-//** Custom text color for thumbnail captions
-@thumbnail-caption-color:     @text-color;
-//** Padding around the thumbnail caption
-@thumbnail-caption-padding:   9px;
-
-
-//== Wells
-//
-//##
-
-@well-bg:                     #f5f5f5;
-@well-border:                 darken(@well-bg, 7%);
-
-
-//== Badges
-//
-//##
-
-@badge-color:                 #fff;
-//** Linked badge text color on hover
-@badge-link-hover-color:      #fff;
-@badge-bg:                    @gray-light;
-
-//** Badge text color in active nav link
-@badge-active-color:          @link-color;
-//** Badge background color in active nav link
-@badge-active-bg:             #fff;
-
-@badge-font-weight:           bold;
-@badge-line-height:           1;
-@badge-border-radius:         10px;
-
-
-//== Breadcrumbs
-//
-//##
-
-@breadcrumb-padding-vertical:   8px;
-@breadcrumb-padding-horizontal: 15px;
-//** Breadcrumb background color
-@breadcrumb-bg:                 #f5f5f5;
-//** Breadcrumb text color
-@breadcrumb-color:              #ccc;
-//** Text color of current page in the breadcrumb
-@breadcrumb-active-color:       @gray-light;
-//** Textual separator for between breadcrumb elements
-@breadcrumb-separator:          "/";
-
-
-//== Carousel
-//
-//##
-
-@carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6);
-
-@carousel-control-color:                      #fff;
-@carousel-control-width:                      15%;
-@carousel-control-opacity:                    .5;
-@carousel-control-font-size:                  20px;
-
-@carousel-indicator-active-bg:                #fff;
-@carousel-indicator-border-color:             #fff;
-
-@carousel-caption-color:                      #fff;
-
-
-//== Close
-//
-//##
-
-@close-font-weight:           bold;
-@close-color:                 #000;
-@close-text-shadow:           0 1px 0 #fff;
-
-
-//== Code
-//
-//##
-
-@code-color:                  #c7254e;
-@code-bg:                     #f9f2f4;
-
-@kbd-color:                   #fff;
-@kbd-bg:                      #333;
-
-@pre-bg:                      #f5f5f5;
-@pre-color:                   @gray-dark;
-@pre-border-color:            #ccc;
-@pre-scrollable-max-height:   340px;
-
-
-//== Type
-//
-//##
-
-//** Horizontal offset for forms and lists.
-@component-offset-horizontal: 180px;
-//** Text muted color
-@text-muted:                  @gray-light;
-//** Abbreviations and acronyms border color
-@abbr-border-color:           @gray-light;
-//** Headings small color
-@headings-small-color:        @gray-light;
-//** Blockquote small color
-@blockquote-small-color:      @gray-light;
-//** Blockquote font size
-@blockquote-font-size:        (@font-size-base * 1.25);
-//** Blockquote border color
-@blockquote-border-color:     @gray-lighter;
-//** Page header border color
-@page-header-border-color:    @gray-lighter;
-//** Width of horizontal description list titles
-@dl-horizontal-offset:        @component-offset-horizontal;
-//** Horizontal line color.
-@hr-border:                   #b2b2b2;
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/buttons.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/buttons.less
deleted file mode 100644
index bbb3c620..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/buttons.less
+++ /dev/null
@@ -1,61 +0,0 @@
-//
-// Buttons
-// --------------------------------------------------
-
-
-// Base styles
-// --------------------------------------------------
-
-// Core styles
-.btn {
-  display: inline-block;
-  padding: 5px 6px 4px 8px;
-  margin-top: 0;
-  margin-bottom: 0; // For input.btn
-  font-family: "Open Sans Condensed", sans-serif;
-  font-size: @font-size-base * 1.3;
-  font-weight: 700;
-  text-transform: uppercase;
-  letter-spacing: 1px;
-  line-height: @line-height-computed;
-  text-align: center;
-  vertical-align: middle;
-  touch-action: manipulation;
-  cursor: pointer;
-  background-color: @gray-lighter;
-  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
-  border: none;
-  border-radius: 3px;
-  .box-shadow(1px 1px 0 rgba(0, 0, 0, 0.3));
-  outline: none !important;
-  white-space: nowrap;
-  .user-select(none);
-
-  &:focus,
-  &.focus {
-    .tab-focus();
-  }
-
-  &:hover,
-  &:focus,
-  &.focus {
-    background-color: lighten(@gray-lighter, 5%);
-    text-decoration: none;
-    .transition(background-color .1s linear);
-  }
-
-  &:active,
-  &.active {
-    outline: 0;
-    padding: 6px 5px 3px 9px;
-  }
-
-  &.disabled,
-  &[disabled],
-  fieldset[disabled] & {
-    cursor: @cursor-disabled;
-    pointer-events: none; // Future-proof disabling of clicks
-    .opacity(65);
-    .box-shadow(1px 1px 0 rgba(0, 0, 0, 0.15));
-  }
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/code.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/code.less
deleted file mode 100644
index 33af7555..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/code.less
+++ /dev/null
@@ -1,8 +0,0 @@
-code {
-  margin: 0 2px;
-  padding: 1px 5px;
-  border: 1px solid #E1E1E8;
-  background-color: #F7F7F9;
-  color: @gray-dark;
-  font-size: 85%;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/evaluation-form.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/evaluation-form.less
deleted file mode 100644
index 6d505d56..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/evaluation-form.less
+++ /dev/null
@@ -1,91 +0,0 @@
-//
-// Evaluation form
-// --------------------------------------------------
-
-
-.evaluation-form {
-  .clearfix();
-
-  textarea {
-    height: 200px;
-  }
-}
-
-.evaluation-input-output {
-  float: left;
-  width: 65%;
-}
-
-.evaluation-input-clear-button {
-  position: absolute;
-  top: 0;
-  right: 0;
-  width: 15px;
-  height: 15px;
-  margin: 6px;
-  display: inline-block;
-  background: transparent url("../images/clear-text.png") no-repeat scroll 0 0;
-  opacity: 0.75;
-  line-height: 0;
-  vertical-align: bottom;
-  cursor: pointer;
-
-  &:hover {
-   opacity: 1;
- }
-}
-
-.evaluation-input-clear-button.with-scrollbar {
-  margin-right: 29px;
-}
-
-.evaluation-output {
-  margin-top: 1.5em;
-}
-
-.evaluation-input-field,
-.evaluation-output-field {
-  margin-bottom: 0.5em;
-  .box-sizing(border-box);
-  overflow-x: hidden;
-  line-height: @line-height-computed;
-}
-
-.evaluation-output-field {
-  &[readonly] {
-    cursor: auto;
-    background-color: @input-bg;
-  }
-}
-
-.evaluation-error-header {
-  margin-bottom: @line-height-computed;
-  padding-left: 52px;
-  background: transparent url("../images/icons/48x48/error.png") no-repeat scroll 0 50%;
-  color: @black;
-  font-family: @font-family-sans-serif;
-  font-weight: bold;
-  line-height: 48px;
-  vertical-align: middle;
-}
-
-ul.evaluation-error-list,
-ul.evaluation-warning-list {
-  li {
-    margin-bottom: 1em;
-
-    pre {
-      margin-top: 0.5em;
-      white-space: pre;
-      overflow: auto;
-    }
-  }
-}
-
-ul.evaluation-error-list li pre {
-  background-color: @state-danger-bg;
-}
-
-ul.evaluation-warning-list li pre {
-  background-color: @state-warning-bg;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/forms.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/forms.less
deleted file mode 100644
index 2ceb0559..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/forms.less
+++ /dev/null
@@ -1,99 +0,0 @@
-//
-// Forms
-// --------------------------------------------------
-
-// GENERAL STYLES
-// --------------
-
-label {
-  font-weight: normal;
-}
-
-
-// Form controls
-// -------------------------
-
-// Common form controls
-.form-control {
-  line-height: @input-height-base;
-}
-
-.textarea-wrapper {
-  position: relative;
-}
-
-// Form groups
-.form-group {
-  margin-bottom: 0.5em;
-}
-
-// Info and errors
-// --------------------------
-.message-info {
-  border: 1px solid;
-  clear: both;
-  padding: 10px 20px;
-  color: @state-info-text;
-}
-
-.message-error {
-  clear: both;
-  color: @state-danger-text;
-  font-size: 1.1em;
-  font-weight: bold;
-  margin: 20px 0 10px 0;
-}
-
-.message-success {
-  color: @state-success-text;
-  font-size: 1.3em;
-  font-weight: bold;
-  margin: 20px 0 10px 0;
-}
-
-.error {
-  color: @state-danger-text;
-}
-
-// Styles for validation helpers
-// --------------------------
-.validators {
-  font-style: normal;
-  padding-bottom: 0.5em;
-}
-
-.field-validation-error {
-  display: block;
-  padding-bottom: 0.5em;
-  color: @state-danger-text;
-  font-weight: bold;
-}
-
-.field-validation-valid {
-  display: none;
-}
-
-input.input-validation-error,
-textarea.input-validation-error,
-select.input-validation-error
-{
-  border: 1px solid @state-danger-border;
-  background-color: @state-danger-bg;
-  .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work
-
-  &:focus {
-    border-color: @state-danger-border;
-    @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@state-danger-text, 20%);
-    .box-shadow(@shadow);
-  }
-}
-
-.validation-summary-errors {
-  color: @state-danger-text;
-  font-weight: bold;
-  font-size: 1.1em;
-}
-
-.validation-summary-valid {
-  display: none;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/icons.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/icons.less
deleted file mode 100644
index 79b9d9e5..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/icons.less
+++ /dev/null
@@ -1,32 +0,0 @@
-//
-// Icons
-// --------------------------------------------------
-
-
-.icon {
-  background: transparent url(../images/icons/32x32/social-media-icons-32.png) no-repeat scroll;
-  display: inline-block;
-  line-height: 0;
-  vertical-align: bottom;
-}
-
-.icon-32 {
-  height: 32px;
-  width: 32px;
-}
-
-.icon-facebook {
-  background-position: 0 0;
-}
-
-.icon-twitter {
-  background-position: 0 -32px;
-}
-
-.icon-linkedin {
-  background-position: 0 -64px;
-}
-
-.icon-rss {
-  background-position: 0 -128px;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/layout.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/layout.less
deleted file mode 100644
index 35a7f386..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/layout.less
+++ /dev/null
@@ -1,128 +0,0 @@
-html,
-body {
-  margin: 0;
-  height: 100%;
-  /* The html and body elements cannot have any padding or margin */
-}
-
-/* Wrapper for page content to push down footer */
-.l-wrapper {
-  min-height: 100%;
-  height: auto !important;
-  height: 100%;
-  /* Negative indent footer by it's height */
-  margin: 0 auto (-1 * @footer-height);
-}
-
-.l-constrained {
-  margin: 0 auto;
-  padding-left: 20px;
-  padding-right: 20px;
-  max-width: 1200px;
-  min-width: 800px;
-}
-
-.l-header {
-  border-top: solid 10px @black;
-  border-bottom: 1px solid #d4b33a;
-  background-color: #f0db4f;
-
-  .l-constrained {
-    padding-top: 20px;
-    padding-bottom: 20px;
-    .clearfix();
-  }
-}
-
-.l-content {
-  .clearfix();
-}
-
-.l-main-content {
-  float: left;
-  width: 70%;
-}
-
-.l-sidebar {
-  float: right;
-  width: 30%;
-}
-
-/* Set the fixed height of the footer here */
-.l-push,
-.l-footer {
-  height: @footer-height;
-}
-
-.l-footer {
-  width: 100%;
-  background-color: @black;
-  color: @gray-lighter;
-  font-size: @font-size-small;
-  line-height: 100%;
-
-  .l-constrained {
-    padding-top: (@footer-height - 32) / 2;
-    .clearfix();
-  }
-
-  a {
-    color: @gray-lighter;
-    text-decoration: none;
-
-    &:hover,
-    &:active {
-      text-decoration: underline;
-    }
-  }
-}
-
-
-// Header
-// -------------------------
-
-.logo {
-  margin: 0;
-
-  a {
-    display: block;
-    float: left;
-    width: 100px;
-    height: 100px;
-    background: transparent url("../images/jsengineswitcher-logo.png") no-repeat scroll 0 0;
-    text-indent: -9999em;
-  }
-}
-
-.primary-nav {
-  position: relative;
-  left: 40px;
-  float: left;
-}
-
-
-// Footer
-// -------------------------
-
-.l-copyright {
-  float: left;
-    p {
-      margin: 0;
-      padding: 0;
-  }
-}
-
-.l-social {
-  float: right;
-
-  li {
-    display: inline;
-    list-style: none outside none;
-    padding-left: 10px;
-
-    a {
-      text-indent: -9999px;
-      outline: none;
-    }
-  }
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/mixins.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/mixins.less
deleted file mode 100644
index d26eee79..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/mixins.less
+++ /dev/null
@@ -1,9 +0,0 @@
-//
-// Mixins
-// --------------------------------------------------
-
-// NO Drop shadows
-.no-box-shadow {
-  -webkit-box-shadow: none; // iOS <4.3 & Android <4.1
-          box-shadow: none;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/navbar.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/navbar.less
deleted file mode 100644
index 95edf3c2..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/navbar.less
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// Navbars
-// --------------------------------------------------
-
-
-// Wrapper and base class
-//
-// Provide a static navbar from which we expand to create full-width, fixed, and
-// other navbar variations.
-
-.navbar {
-  border: none;
-  border-radius: 0;
-}
-
-// Navbar nav links
-//
-// Builds on top of the `.nav` components with it's own modifier class to make
-// the nav the full height of the horizontal nav (above 768px).
-
-.navbar-nav {
-  float: left;
-  margin: 0 auto;
-
-  > li {
-    > a {
-      float: none;
-      // Vertically center the text given @navbar-height
-      padding: ((@navbar-height - @line-height-computed) / 2) 15px ((@navbar-height - @line-height-computed) / 2);
-      border: 1px solid transparent;
-      font-family: "Open Sans", sans-serif;
-      font-size: 2.0em;
-      text-decoration: none;
-      text-transform: uppercase;
-      outline: none;
-    }
-  }
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/page-socials.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/page-socials.less
deleted file mode 100644
index ea12dc09..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/page-socials.less
+++ /dev/null
@@ -1,14 +0,0 @@
-.page-socials {
-  min-height: 60px;
-  margin-top: 20px;
-  padding-top: 15px;
-  border-top: 1px solid #b2b2b2;
-}
-
-.share-buttons {
-  li {
-    margin-right: 15px;
-    vertical-align: top;
-    line-height: normal;
-  }
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/type.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/type.less
deleted file mode 100644
index 02d69502..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/type.less
+++ /dev/null
@@ -1,24 +0,0 @@
-//
-// Typography
-// --------------------------------------------------
-
-// Headings
-// -------------------------
-
-h1, h2, h3 {
-  margin-top: 10px;
-}
-
-h1, h2 {
-  line-height: 40px;
-}
-
-h2 {
-  color: @black;
-  font-weight: bold;
-}
-
-h3 {
-  color: @gray-dark;
-  line-height: @line-height-computed * 1.25;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/variables.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/variables.less
deleted file mode 100644
index 498c9796..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore21.Mvc21/wwwroot/styles/variables.less
+++ /dev/null
@@ -1,7 +0,0 @@
-// Colors
-// -------------------------
-@black:                 #1d0d0d;
-
-// Footer
-// -------------------------
-@footer-height:                    55px;
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/.bowerrc b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/.bowerrc
deleted file mode 100644
index ea81a597..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/.bowerrc
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "registry": "https://registry.bower.io",
-  "directory": "wwwroot/lib"
-}
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Infrastructure/Helpers/CommonExtensions.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Infrastructure/Helpers/CommonExtensions.cs
deleted file mode 100644
index 90d88510..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Infrastructure/Helpers/CommonExtensions.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using System.Text.RegularExpressions;
-
-using Microsoft.AspNetCore.Html;
-using Microsoft.AspNetCore.Mvc.Rendering;
-
-namespace JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31.Infrastructure.Helpers
-{
-	public static class CommonExtensions
-	{
-		public static HtmlString EncodedReplace(this IHtmlHelper htmlHelper, string input,
-			string pattern, string replacement)
-		{
-			return new HtmlString(Regex.Replace(htmlHelper.Encode(input), pattern, replacement));
-		}
-	}
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Infrastructure/TagHelpers/ConditionalCommentTagHelper.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Infrastructure/TagHelpers/ConditionalCommentTagHelper.cs
deleted file mode 100644
index d952325d..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Infrastructure/TagHelpers/ConditionalCommentTagHelper.cs
+++ /dev/null
@@ -1,78 +0,0 @@
-using System;
-
-using Microsoft.AspNetCore.Razor.TagHelpers;
-
-namespace JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31.Infrastructure.TagHelpers
-{
-	[HtmlTargetElement("conditional-comment")]
-	public class ConditionalCommentTagHelper : TagHelper
-	{
-		[HtmlAttributeName("type")]
-		public ConditionalCommentType CommentType { get; set; }
-
-		[HtmlAttributeName("expression")]
-		public string Expression { get; set; }
-
-
-		public override void Process(TagHelperContext context, TagHelperOutput output)
-		{
-			output.TagName = null;
-
-			ConditionalCommentType type = CommentType;
-
-			string ifCommentStartPart;
-			string ifCommentEndPart;
-
-			switch (type)
-			{
-				case ConditionalCommentType.Hidden:
-					ifCommentStartPart = "";
-
-					break;
-				case ConditionalCommentType.RevealedValidatingSimplified:
-					ifCommentStartPart = "";
-
-					break;
-				case ConditionalCommentType.Revealed:
-					ifCommentStartPart = "";
-
-					break;
-				default:
-					throw new NotSupportedException();
-			}
-
-			TagHelperContent preContent = output.PreContent;
-			preContent.AppendHtml(ifCommentStartPart);
-			preContent.AppendHtml(Expression);
-			preContent.AppendHtml(ifCommentEndPart);
-
-			string endIfComment;
-
-			switch (type)
-			{
-				case ConditionalCommentType.Hidden:
-					endIfComment = "";
-					break;
-				case ConditionalCommentType.RevealedValidating:
-				case ConditionalCommentType.RevealedValidatingSimplified:
-					endIfComment = "";
-					break;
-				case ConditionalCommentType.Revealed:
-					endIfComment = "";
-					break;
-				default:
-					throw new NotSupportedException();
-			}
-
-			output.PostContent.AppendHtml(endIfComment);
-		}
-	}
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Infrastructure/TagHelpers/ConditionalCommentType.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Infrastructure/TagHelpers/ConditionalCommentType.cs
deleted file mode 100644
index f00b4d2a..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Infrastructure/TagHelpers/ConditionalCommentType.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-namespace JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31.Infrastructure.TagHelpers
-{
-	public enum ConditionalCommentType
-	{
-		Hidden,
-		Revealed,
-		RevealedValidating,
-		RevealedValidatingSimplified
-	}
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31.csproj b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31.csproj
index fa62a895..807b01b2 100644
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31.csproj
+++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31.csproj
@@ -2,13 +2,15 @@
 
   
     JS Engine Switcher: Sample ASP.NET Core 3.1 MVC 3.1 Site
-    3.21.3
+    3.30.2
     netcoreapp3.1
     Exe
     true
+    true
     true
     true
     false
+    false
   
 
   
@@ -36,27 +38,13 @@
     
     
     
+    
     
     
     
     
   
 
-  
-    
-  
-  
-    
-  
-  
-    
-  
-  
-    
-  
-  
-    
-    
-    
-  
+  
+
 
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Program.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Program.cs
index 88eae706..889d2a4b 100644
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Program.cs
+++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Program.cs
@@ -1,4 +1,6 @@
-using Microsoft.AspNetCore.Hosting;
+using System.IO;
+
+using Microsoft.AspNetCore.Hosting;
 using Microsoft.Extensions.Hosting;
 using Microsoft.Extensions.Logging;
 
@@ -15,6 +17,10 @@ public static IHostBuilder CreateHostBuilder(string[] args) =>
 			Host.CreateDefaultBuilder(args)
 				.ConfigureWebHostDefaults(webBuilder =>
 				{
+					webBuilder.UseWebRoot(Path.Combine(
+						Directory.GetCurrentDirectory(),
+						"../JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot"
+					));
 					webBuilder.UseStartup();
 				})
 				.ConfigureLogging((hostingContext, logging) =>
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Properties/launchSettings.json b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Properties/launchSettings.json
index b6cb115c..1b7533c8 100644
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Properties/launchSettings.json
+++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Properties/launchSettings.json
@@ -3,25 +3,26 @@
     "windowsAuthentication": false,
     "anonymousAuthentication": true,
     "iisExpress": {
-      "applicationUrl": "http://localhost:43491",
+      "applicationUrl": "http://localhost:55126",
       "sslPort": 0
     }
   },
   "profiles": {
-    "IIS Express": {
-      "commandName": "IISExpress",
+    "JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31": {
+      "commandName": "Project",
+      "dotnetRunMessages": "true",
       "launchBrowser": true,
+      "applicationUrl": "http://localhost:5138",
       "environmentVariables": {
         "ASPNETCORE_ENVIRONMENT": "Development"
       }
     },
-    "JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31": {
-      "commandName": "Project",
+    "IIS Express": {
+      "commandName": "IISExpress",
       "launchBrowser": true,
       "environmentVariables": {
         "ASPNETCORE_ENVIRONMENT": "Development"
-      },
-      "applicationUrl": "http://localhost:1973/"
+      }
     }
   }
 }
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Startup.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Startup.cs
index d6edf009..b90eb827 100644
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Startup.cs
+++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Startup.cs
@@ -61,8 +61,10 @@ public void ConfigureServices(IServiceCollection services)
 
 			// Add JavaScriptEngineSwitcher services to the services container.
 			services.AddJsEngineSwitcher(options =>
-				options.DefaultEngineName = ChakraCoreJsEngine.EngineName
-			)
+			{
+				options.AllowCurrentProperty = false;
+				options.DefaultEngineName = ChakraCoreJsEngine.EngineName;
+			})
 				.AddChakraCore()
 				.AddJint()
 				.AddJurassic()
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Views/Home/Contact.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Views/Home/Contact.cshtml
index cd9663df..58785ebe 100644
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Views/Home/Contact.cshtml
+++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Views/Home/Contact.cshtml
@@ -5,19 +5,4 @@
 

@ViewBag.Title

@ViewBag.Body -
- -@section Scripts { - -} \ No newline at end of file + \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Views/Shared/_JsEvaluationErrorList.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Views/Shared/_JsEvaluationErrorList.cshtml index 6d8aae59..9e0601d6 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Views/Shared/_JsEvaluationErrorList.cshtml +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Views/Shared/_JsEvaluationErrorList.cshtml @@ -1,4 +1,4 @@ -@using JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31.Infrastructure.Helpers +@using JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure.Helpers @using JavaScriptEngineSwitcher.Sample.Logic.Models @model IList diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Views/Shared/_Layout.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Views/Shared/_Layout.cshtml index 1da2faf8..e9ffc46f 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Views/Shared/_Layout.cshtml +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Views/Shared/_Layout.cshtml @@ -1,4 +1,4 @@ -@using JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31.Infrastructure.TagHelpers +@using JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure.TagHelpers @@ -61,9 +61,10 @@ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Views/_ViewImports.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Views/_ViewImports.cshtml index 5430be13..8fe8384e 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Views/_ViewImports.cshtml +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/Views/_ViewImports.cshtml @@ -1,2 +1,2 @@ @addTagHelper "*, Microsoft.AspNetCore.Mvc.TagHelpers" -@addTagHelper "*, JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31" \ No newline at end of file +@addTagHelper "*, JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure" \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/bower.json b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/bower.json deleted file mode 100644 index d2010af1..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/bower.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "jsengineswitcher.sample.aspnetcore31.mvc31", - "dependencies": { - "modernizr": "2.8.3", - "jquery-compat": "jquery#1.10.2", - "jquery": "jquery#2.0.3", - "jquery-validation": "1.13.1", - "jquery-validation-unobtrusive": "3.2.3", - "bootstrap": "3.3.0" - } -} diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/gulpfile.js b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/gulpfile.js deleted file mode 100644 index 0f259437..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/gulpfile.js +++ /dev/null @@ -1,130 +0,0 @@ -/*global require, exports */ -/*jshint esversion: 6 */ -const WEB_ROOT_PATH = "wwwroot"; -const BOWER_DIR_PATH = WEB_ROOT_PATH + "/lib"; -const STYLE_DIR_PATH = WEB_ROOT_PATH + '/styles'; -const SCRIPT_DIR_PATH = WEB_ROOT_PATH + '/scripts'; - -// include plug-ins -let { src, dest, series, parallel, watch } = require('gulp'); -let del = require('del'); -let sourcemaps = require('gulp-sourcemaps'); -let rename = require('gulp-rename'); -let concat = require('gulp-concat'); -let less = require('gulp-less'); -let autoprefixer = require('gulp-autoprefixer'); -let cleanCss = require('gulp-clean-css'); -let uglify = require('gulp-uglify'); - -//#region Clean -//#region Clean builded assets -function cleanBuildedStyles() { - return del([STYLE_DIR_PATH + '/build/*']); -} - -function cleanBuildedScripts() { - return del([SCRIPT_DIR_PATH + '/build/*']); -} - -let cleanBuildedAssets = parallel(cleanBuildedStyles, cleanBuildedScripts); -//#endregion -//#endregion - -//#region Build assets -//#region Build styles -let autoprefixerOptions = { - overrideBrowserslist: ['> 1%', 'last 3 versions', 'Firefox ESR', 'Opera 12.1'], - cascade: true -}; -let cssCleanOptions = { specialComments: '*' }; -let cssRenameOptions = { extname: '.min.css' }; - -function buildCommonStyles() { - return src([STYLE_DIR_PATH + '/app.less']) - .pipe(sourcemaps.init()) - .pipe(less({ - relativeUrls: true, - rootpath: '/styles/' - })) - .pipe(autoprefixer(autoprefixerOptions)) - .pipe(sourcemaps.write('./')) - .pipe(dest(STYLE_DIR_PATH + '/build')) - .pipe(sourcemaps.init({ loadMaps: true })) - .pipe(concat('common-styles.css')) - .pipe(cleanCss(cssCleanOptions)) - .pipe(rename(cssRenameOptions)) - .pipe(sourcemaps.write('./')) - .pipe(dest(STYLE_DIR_PATH + '/build')) - ; -} - -let buildStyles = buildCommonStyles; -//#endregion - -//#region Build scripts -let jsConcatOptions = { newLine: ';' }; -let jsUglifyOptions = { - output: { comments: /^!/ } -}; -let jsRenameOptions = { extname: '.min.js' }; - -function buildModernizrScripts() { - return src([BOWER_DIR_PATH + '/modernizr/modernizr.js']) - .pipe(sourcemaps.init()) - .pipe(uglify(jsUglifyOptions)) - .pipe(rename(jsRenameOptions)) - .pipe(sourcemaps.write('./')) - .pipe(dest(SCRIPT_DIR_PATH + '/build')) - ; -} - -function buildCommonScripts() { - return src([SCRIPT_DIR_PATH + '/common.js']) - .pipe(sourcemaps.init({ loadMaps: true })) - .pipe(rename({ basename: 'common-scripts' })) - .pipe(uglify(jsUglifyOptions)) - .pipe(rename(jsRenameOptions)) - .pipe(sourcemaps.write('./')) - .pipe(dest(SCRIPT_DIR_PATH + '/build')) - ; -} - -function buildEvaluationFormScripts() { - return src([BOWER_DIR_PATH + '/jquery-validation/dist/jquery.validate.js', - BOWER_DIR_PATH + '/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js', - BOWER_DIR_PATH + '/bootstrap/js/button.js', - SCRIPT_DIR_PATH + '/evaluation-form.js']) - .pipe(sourcemaps.init({ loadMaps: true })) - .pipe(concat('evaluation-form-scripts.js', jsConcatOptions)) - .pipe(uglify(jsUglifyOptions)) - .pipe(rename(jsRenameOptions)) - .pipe(sourcemaps.write('./')) - .pipe(dest(SCRIPT_DIR_PATH + '/build')) - ; -} - -let buildScripts = parallel(buildModernizrScripts, buildCommonScripts, buildEvaluationFormScripts); -//#endregion - -let buildAssets = parallel(buildStyles, buildScripts); -//#endregion - -//#region Watch assets -function watchStyles() { - return watch([STYLE_DIR_PATH + '/**/*.{less,css}', '!' + STYLE_DIR_PATH + '/build/**/*.*'], - buildStyles); -} - -function watchScripts() { - return watch([SCRIPT_DIR_PATH + '/**/*.js', '!' + SCRIPT_DIR_PATH + '/build/**/*.*'], - buildScripts); -} - -let watchAssets = parallel(watchStyles, watchScripts); -//#endregion - -// Export tasks -exports.cleanBuildedAssets = cleanBuildedAssets; -exports.buildAssets = buildAssets; -exports.watchAssets = watchAssets; -exports.default = series(cleanBuildedAssets, buildAssets); \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/package.json b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/package.json deleted file mode 100644 index f715255c..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "jsengineswitcher.sample.aspnetcore31.mvc31", - "private": true, - "version": "3.21.3", - "devDependencies": { - "gulp": "4.0.2", - "del": "5.1.0", - "gulp-sourcemaps": "2.6.5", - "gulp-rename": "2.0.0", - "gulp-concat": "2.6.1", - "gulp-less": "4.0.1", - "gulp-autoprefixer": "7.0.1", - "gulp-clean-css": "4.2.0", - "gulp-uglify": "3.0.2" - } -} diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/images/0.gif b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/images/0.gif deleted file mode 100644 index 35d42e80..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/images/0.gif and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/images/clear-text.png b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/images/clear-text.png deleted file mode 100644 index 9d217b7f..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/images/clear-text.png and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/images/icons/32x32/social-media-icons-32.png b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/images/icons/32x32/social-media-icons-32.png deleted file mode 100644 index 49aa1fe3..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/images/icons/32x32/social-media-icons-32.png and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/images/icons/48x48/error.png b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/images/icons/48x48/error.png deleted file mode 100644 index 3d6185f7..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/images/icons/48x48/error.png and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/images/jsengineswitcher-logo.png b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/images/jsengineswitcher-logo.png deleted file mode 100644 index 12ed97e0..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/images/jsengineswitcher-logo.png and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/scripts/_references.js b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/scripts/_references.js deleted file mode 100644 index 2b54eea8..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/scripts/_references.js and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/scripts/common.js b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/scripts/common.js deleted file mode 100644 index c94bf102..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/scripts/common.js +++ /dev/null @@ -1,29 +0,0 @@ -var jsEngineSwitcher; - -(function (jsEngineSwitcher, undefined) { - "use strict"; - - jsEngineSwitcher.registerNamespace = function (namespaceString) { - var parts = namespaceString.split("."), - parent = jsEngineSwitcher, - i - ; - - if (parts[0] === "jsEngineSwitcher") { - parts = parts.slice(1); - } - - for (i = 0; i < parts.length; i += 1) { - if (typeof parent[parts[i]] === "undefined") { - parent[parts[i]] = {}; - } - parent = parent[parts[i]]; - } - - return parent; - }; - - jsEngineSwitcher.hasScrollbar = function(elem) { - return (elem.clientHeight < elem.scrollHeight); - }; -}(jsEngineSwitcher = jsEngineSwitcher || {})); \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/scripts/evaluation-form.js b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/scripts/evaluation-form.js deleted file mode 100644 index da1f0199..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/scripts/evaluation-form.js +++ /dev/null @@ -1,83 +0,0 @@ -(function (jsEngineSwitcher, $, undefined) { - "use strict"; - - var $evaluationForm, - $evaluationInputField, - $evaluationInputClearButton, - $evaluateButton - ; - - $(function () { - $evaluationForm = $("form[data-form-type='evaluation-form']"); - $evaluationInputField = $(":input[data-control-type='evaluation-input-field']", $evaluationForm); - $evaluationInputClearButton = $("
"); - $evaluateButton = $(":input[data-control-type='evaluate-button']", $evaluationForm); - - $evaluationForm.on("submit", onEvaluationFormSubmitHandler); - - $evaluationInputClearButton.on("click", onEvaluationInputClearButtonClickHandler); - $evaluationInputField.parent().append($evaluationInputClearButton); - refreshEvaluationInputClearButton(); - $evaluationInputField - .on("input propertychange keydown keyup paste", onEvaluationInputFieldChangeHandler) - ; - - $evaluateButton.removeAttr("disabled"); - }); - - $(window).unload(function() { - $evaluationForm.off("submit", onEvaluationFormSubmitHandler); - - $evaluationInputClearButton - .off("click", onEvaluationInputClearButtonClickHandler) - .remove() - ; - - $evaluationInputField - .off("input propertychange keydown keyup paste", onEvaluationInputFieldChangeHandler) - ; - - $evaluationForm = null; - $evaluationInputField = null; - $evaluationInputClearButton = null; - $evaluateButton = null; - }); - - var refreshEvaluationInputClearButton = function() { - if ($.trim($evaluationInputField.val()).length > 0) { - $evaluationInputClearButton.show(); - } else { - $evaluationInputClearButton.hide(); - } - - if (jsEngineSwitcher.hasScrollbar($evaluationInputField.get(0))) { - $evaluationInputClearButton.addClass("with-scrollbar"); - } - else { - $evaluationInputClearButton.removeClass("with-scrollbar"); - } - }; - - var onEvaluationFormSubmitHandler = function () { - var $form = $(this); - if ($form.valid()) { - $evaluateButton.attr("disabled", "disabled"); - $("textarea[data-control-type='evaluation-output-field']", $form).val(''); - - return true; - } - - return false; - }; - - var onEvaluationInputFieldChangeHandler = function () { - refreshEvaluationInputClearButton(); - }; - - var onEvaluationInputClearButtonClickHandler = function() { - $evaluationInputField.val(""); - - var $button = $(this); - $button.hide(); - }; -}(jsEngineSwitcher, jQuery)); \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/app.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/app.less deleted file mode 100644 index c41a9315..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/app.less +++ /dev/null @@ -1,71 +0,0 @@ -/*! - * Bootstrap v3.3.0 (http://getbootstrap.com) - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -// Core variables and mixins -@import "bootstrap-custom-variables.less"; -@import "../lib/bootstrap/less/mixins.less"; - -// Reset -@import "../lib/bootstrap/less/normalize.less"; -//@import "../lib/bootstrap/less/print.less"; -//@import "../lib/bootstrap/less/glyphicons.less"; - -// Core CSS -@import "../lib/bootstrap/less/scaffolding.less"; -@import "../lib/bootstrap/less/type.less"; -@import "../lib/bootstrap/less/code.less"; -//@import "../lib/bootstrap/less/grid.less"; -//@import "../lib/bootstrap/less/tables.less"; -@import "../lib/bootstrap/less/forms.less"; -//@import "../lib/bootstrap/less/buttons.less"; - -// Components -//@import "../lib/bootstrap/less/component-animations.less"; -//@import "../lib/bootstrap/less/dropdowns.less"; -//@import "../lib/bootstrap/less/button-groups.less"; -//@import "../lib/bootstrap/less/input-groups.less"; -@import "../lib/bootstrap/less/navs.less"; -@import "../lib/bootstrap/less/navbar.less"; -//@import "../lib/bootstrap/less/breadcrumbs.less"; -//@import "../lib/bootstrap/less/pagination.less"; -//@import "../lib/bootstrap/less/pager.less"; -//@import "../lib/bootstrap/less/labels.less"; -//@import "../lib/bootstrap/less/badges.less"; -//@import "../lib/bootstrap/less/jumbotron.less"; -//@import "../lib/bootstrap/less/thumbnails.less"; -//@import "../lib/bootstrap/less/alerts.less"; -//@import "../lib/bootstrap/less/progress-bars.less"; -//@import "../lib/bootstrap/less/media.less"; -//@import "../lib/bootstrap/less/list-group.less"; -//@import "../lib/bootstrap/less/panels.less"; -//@import "../lib/bootstrap/less/responsive-embed.less"; -//@import "../lib/bootstrap/less/wells.less"; -//@import "../lib/bootstrap/less/close.less"; - -// Components w/ JavaScript -//@import "../lib/bootstrap/less/modals.less"; -//@import "../lib/bootstrap/less/tooltip.less"; -//@import "../lib/bootstrap/less/popovers.less"; -//@import "../lib/bootstrap/less/carousel.less"; - -// Utility classes -@import "../lib/bootstrap/less/utilities.less"; -//@import "../lib/bootstrap/less/responsive-utilities.less"; - -// JavaScriptEngineSwitcher specs -@import "variables.less"; -@import "mixins.less"; - -@import "type.less"; -@import "code.less"; -@import "forms.less"; -@import "buttons.less"; -@import "icons.less"; -@import "navbar.less"; - -@import "layout.less"; -@import "evaluation-form.less"; -@import "page-socials.less"; \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/bootstrap-custom-variables.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/bootstrap-custom-variables.less deleted file mode 100644 index 0be2aa6f..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/bootstrap-custom-variables.less +++ /dev/null @@ -1,856 +0,0 @@ -// -// Variables -// -------------------------------------------------- - - -//== Colors -// -//## Gray and brand colors for use across Bootstrap. - -@gray-base: #323330; -@gray-darker: lighten(@gray-base, 13.5%); // #222 -@gray-dark: lighten(@gray-base, 20%); // #333 -@gray: lighten(@gray-base, 33.5%); // #555 -@gray-light: lighten(@gray-base, 46.7%); // #777 -@gray-lighter: #e3e3e3; - -@brand-primary: #428bca; -@brand-success: #5cb85c; -@brand-info: #5bc0de; -@brand-warning: #f0ad4e; -@brand-danger: #d9534f; - - -//== Scaffolding -// -//## Settings for some of the most global styles. - -//** Background color for ``. -@body-bg: #fff; -//** Global text color on ``. -@text-color: #1d0d0d; - -//** Global textual link color. -@link-color: @brand-primary; -//** Link hover color set via `darken()` function. -@link-hover-color: darken(@link-color, 15%); -//** Link hover decoration. -@link-hover-decoration: underline; - - -//== Typography -// -//## Font, line-height, and color for body text, headings, and more. - -@font-family-sans-serif: "Helvetica Neue", Arial, sans-serif; -@font-family-serif: Georgia, "Times New Roman", Times, serif; -//** Default monospace fonts for ``, ``, and `
`.
-@font-family-monospace:   Consolas, "Courier New", monospace;
-@font-family-base:        @font-family-sans-serif;
-
-@font-size-base:          14px;
-@font-size-large:         ceil((@font-size-base * 1.25)); // ~18px
-@font-size-small:         ceil((@font-size-base * 0.85)); // ~12px
-
-@font-size-h1:            floor(@font-size-base * 3);
-@font-size-h2:            @font-size-base * 2.5;
-@font-size-h3:            ceil(@font-size-base * 1.75);
-@font-size-h4:            ceil(@font-size-base * 1.25);
-@font-size-h5:            @font-size-base;
-@font-size-h6:            ceil(@font-size-base * 0.85);
-
-//** Unit-less `line-height` for use in components like buttons.
-@line-height-base:        1.428571429; // 20/14
-//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
-@line-height-computed:    floor((@font-size-base * @line-height-base)); // ~20px
-
-//** By default, this inherits from the ``.
-@headings-font-family:    "Open Sans", sans-serif;
-@headings-font-weight:    normal;
-@headings-line-height:    1.1;
-@headings-color:          inherit;
-
-
-//== Iconography
-//
-//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
-
-//** Load fonts from this directory.
-@icon-font-path:          "../fonts/";
-//** File name for all font files.
-@icon-font-name:          "glyphicons-halflings-regular";
-//** Element ID within SVG icon file.
-@icon-font-svg-id:        "glyphicons_halflingsregular";
-
-
-//== Components
-//
-//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
-
-@padding-base-vertical:     4px;
-@padding-base-horizontal:   6px;
-
-@padding-large-vertical:    10px;
-@padding-large-horizontal:  16px;
-
-@padding-small-vertical:    5px;
-@padding-small-horizontal:  10px;
-
-@padding-xs-vertical:       1px;
-@padding-xs-horizontal:     5px;
-
-@line-height-large:         1.33;
-@line-height-small:         1.5;
-
-@border-radius-base:        4px;
-@border-radius-large:       6px;
-@border-radius-small:       3px;
-
-//** Global color for active items (e.g., navs or dropdowns).
-@component-active-color:    #fff;
-//** Global background color for active items (e.g., navs or dropdowns).
-@component-active-bg:       @brand-primary;
-
-//** Width of the `border` for generating carets that indicator dropdowns.
-@caret-width-base:          4px;
-//** Carets increase slightly in size for larger components.
-@caret-width-large:         5px;
-
-
-//== Tables
-//
-//## Customizes the `.table` component with basic values, each used across all table variations.
-
-//** Padding for ``s and ``s.
-@table-cell-padding:            8px;
-//** Padding for cells in `.table-condensed`.
-@table-condensed-cell-padding:  5px;
-
-//** Default background color used for all tables.
-@table-bg:                      transparent;
-//** Background color used for `.table-striped`.
-@table-bg-accent:               #f9f9f9;
-//** Background color used for `.table-hover`.
-@table-bg-hover:                #f5f5f5;
-@table-bg-active:               @table-bg-hover;
-
-//** Border color for table and cell borders.
-@table-border-color:            #ddd;
-
-
-//== Buttons
-//
-//## For each of Bootstrap's buttons, define text, background and border color.
-
-@btn-font-weight:                normal;
-
-@btn-default-color:              #333;
-@btn-default-bg:                 @gray-lighter;
-@btn-default-border:             @gray-lighter;
-
-@btn-primary-color:              #fff;
-@btn-primary-bg:                 @brand-primary;
-@btn-primary-border:             darken(@btn-primary-bg, 5%);
-
-@btn-success-color:              #fff;
-@btn-success-bg:                 @brand-success;
-@btn-success-border:             darken(@btn-success-bg, 5%);
-
-@btn-info-color:                 #fff;
-@btn-info-bg:                    @brand-info;
-@btn-info-border:                darken(@btn-info-bg, 5%);
-
-@btn-warning-color:              #fff;
-@btn-warning-bg:                 @brand-warning;
-@btn-warning-border:             darken(@btn-warning-bg, 5%);
-
-@btn-danger-color:               #fff;
-@btn-danger-bg:                  @brand-danger;
-@btn-danger-border:              darken(@btn-danger-bg, 5%);
-
-@btn-link-disabled-color:        @gray-light;
-
-
-//== Forms
-//
-//##
-
-//** `` background color
-@input-bg:                       #fff;
-//** `` background color
-@input-bg-disabled:              @gray-lighter;
-
-//** Text color for ``s
-@input-color:                    @gray;
-//** `` border color
-@input-border:                   #b2b2b2;
-
-// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4
-//** Default `.form-control` border radius
-@input-border-radius:            @border-radius-base;
-//** Large `.form-control` border radius
-@input-border-radius-large:      @border-radius-large;
-//** Small `.form-control` border radius
-@input-border-radius-small:      @border-radius-small;
-
-//** Border color for inputs on focus
-@input-border-focus:             #d4b33a;
-
-//** Placeholder text color
-@input-color-placeholder:        #999;
-
-//** Default `.form-control` height
-@input-height-base:              (@line-height-computed + (@padding-base-vertical * 2) + 2);
-//** Large `.form-control` height
-@input-height-large:             (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);
-//** Small `.form-control` height
-@input-height-small:             (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);
-
-@legend-color:                   @gray-dark;
-@legend-border-color:            #e5e5e5;
-
-//** Background color for textual input addons
-@input-group-addon-bg:           @gray-lighter;
-//** Border color for textual input addons
-@input-group-addon-border-color: @input-border;
-
-//** Disabled cursor for form controls and buttons.
-@cursor-disabled:                not-allowed;
-
-
-//== Dropdowns
-//
-//## Dropdown menu container and contents.
-
-//** Background for the dropdown menu.
-@dropdown-bg:                    #fff;
-//** Dropdown menu `border-color`.
-@dropdown-border:                rgba(0,0,0,.15);
-//** Dropdown menu `border-color` **for IE8**.
-@dropdown-fallback-border:       #ccc;
-//** Divider color for between dropdown items.
-@dropdown-divider-bg:            #e5e5e5;
-
-//** Dropdown link text color.
-@dropdown-link-color:            @gray-dark;
-//** Hover color for dropdown links.
-@dropdown-link-hover-color:      darken(@gray-dark, 5%);
-//** Hover background for dropdown links.
-@dropdown-link-hover-bg:         #f5f5f5;
-
-//** Active dropdown menu item text color.
-@dropdown-link-active-color:     @component-active-color;
-//** Active dropdown menu item background color.
-@dropdown-link-active-bg:        @component-active-bg;
-
-//** Disabled dropdown menu item background color.
-@dropdown-link-disabled-color:   @gray-light;
-
-//** Text color for headers within dropdown menus.
-@dropdown-header-color:          @gray-light;
-
-//** Deprecated `@dropdown-caret-color` as of v3.1.0
-@dropdown-caret-color:           #000;
-
-
-//-- Z-index master list
-//
-// Warning: Avoid customizing these values. They're used for a bird's eye view
-// of components dependent on the z-axis and are designed to all work together.
-//
-// Note: These variables are not generated into the Customizer.
-
-@zindex-navbar:            1000;
-@zindex-dropdown:          1000;
-@zindex-popover:           1060;
-@zindex-tooltip:           1070;
-@zindex-navbar-fixed:      1030;
-@zindex-modal:             1040;
-
-
-//== Media queries breakpoints
-//
-//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
-
-// Extra small screen / phone
-//** Deprecated `@screen-xs` as of v3.0.1
-@screen-xs:                  480px;
-//** Deprecated `@screen-xs-min` as of v3.2.0
-@screen-xs-min:              @screen-xs;
-//** Deprecated `@screen-phone` as of v3.0.1
-@screen-phone:               @screen-xs-min;
-
-// Small screen / tablet
-//** Deprecated `@screen-sm` as of v3.0.1
-@screen-sm:                  768px;
-@screen-sm-min:              @screen-sm;
-//** Deprecated `@screen-tablet` as of v3.0.1
-@screen-tablet:              @screen-sm-min;
-
-// Medium screen / desktop
-//** Deprecated `@screen-md` as of v3.0.1
-@screen-md:                  992px;
-@screen-md-min:              @screen-md;
-//** Deprecated `@screen-desktop` as of v3.0.1
-@screen-desktop:             @screen-md-min;
-
-// Large screen / wide desktop
-//** Deprecated `@screen-lg` as of v3.0.1
-@screen-lg:                  1200px;
-@screen-lg-min:              @screen-lg;
-//** Deprecated `@screen-lg-desktop` as of v3.0.1
-@screen-lg-desktop:          @screen-lg-min;
-
-// So media queries don't overlap when required, provide a maximum
-@screen-xs-max:              (@screen-sm-min - 1);
-@screen-sm-max:              (@screen-md-min - 1);
-@screen-md-max:              (@screen-lg-min - 1);
-
-
-//== Grid system
-//
-//## Define your custom responsive grid.
-
-//** Number of columns in the grid.
-@grid-columns:              12;
-//** Padding between columns. Gets divided in half for the left and right.
-@grid-gutter-width:         30px;
-// Navbar collapse
-//** Point at which the navbar becomes uncollapsed.
-@grid-float-breakpoint:     @screen-sm-min;
-//** Point at which the navbar begins collapsing.
-@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);
-
-
-//== Container sizes
-//
-//## Define the maximum width of `.container` for different screen sizes.
-
-// Small screen / tablet
-@container-tablet:             (720px + @grid-gutter-width);
-//** For `@screen-sm-min` and up.
-@container-sm:                 @container-tablet;
-
-// Medium screen / desktop
-@container-desktop:            (940px + @grid-gutter-width);
-//** For `@screen-md-min` and up.
-@container-md:                 @container-desktop;
-
-// Large screen / wide desktop
-@container-large-desktop:      (1140px + @grid-gutter-width);
-//** For `@screen-lg-min` and up.
-@container-lg:                 @container-large-desktop;
-
-
-//== Navbar
-//
-//##
-
-// Basics of a navbar
-@navbar-height:                    100px;
-@navbar-margin-bottom:             0;
-@navbar-border-radius:             @border-radius-base;
-@navbar-padding-horizontal:        0;
-@navbar-padding-vertical:          ((@navbar-height - @line-height-computed) / 2);
-@navbar-collapse-max-height:       340px;
-
-@navbar-default-color:             @gray-base;
-@navbar-default-bg:                #f0db4f;
-@navbar-default-border:            #f0db4f;
-
-// Navbar links
-@navbar-default-link-color:                @navbar-default-color;
-@navbar-default-link-hover-color:          @gray-dark;
-@navbar-default-link-hover-bg:             transparent;
-@navbar-default-link-active-color:         @navbar-default-color;
-@navbar-default-link-active-bg:            transparent;
-@navbar-default-link-disabled-color:       #ccc;
-@navbar-default-link-disabled-bg:          transparent;
-
-// Navbar brand label
-@navbar-default-brand-color:               @navbar-default-link-color;
-@navbar-default-brand-hover-color:         darken(@navbar-default-brand-color, 10%);
-@navbar-default-brand-hover-bg:            transparent;
-
-// Navbar toggle
-@navbar-default-toggle-hover-bg:           #ddd;
-@navbar-default-toggle-icon-bar-bg:        @gray-dark;
-@navbar-default-toggle-border-color:       #ddd;
-
-
-// Inverted navbar
-// Reset inverted navbar basics
-@navbar-inverse-color:                      lighten(@gray-light, 15%);
-@navbar-inverse-bg:                         #222;
-@navbar-inverse-border:                     darken(@navbar-inverse-bg, 10%);
-
-// Inverted navbar links
-@navbar-inverse-link-color:                 lighten(@gray-light, 15%);
-@navbar-inverse-link-hover-color:           #fff;
-@navbar-inverse-link-hover-bg:              transparent;
-@navbar-inverse-link-active-color:          @navbar-inverse-link-hover-color;
-@navbar-inverse-link-active-bg:             darken(@navbar-inverse-bg, 10%);
-@navbar-inverse-link-disabled-color:        #444;
-@navbar-inverse-link-disabled-bg:           transparent;
-
-// Inverted navbar brand label
-@navbar-inverse-brand-color:                @navbar-inverse-link-color;
-@navbar-inverse-brand-hover-color:          #fff;
-@navbar-inverse-brand-hover-bg:             transparent;
-
-// Inverted navbar toggle
-@navbar-inverse-toggle-hover-bg:            #333;
-@navbar-inverse-toggle-icon-bar-bg:         #fff;
-@navbar-inverse-toggle-border-color:        #333;
-
-
-//== Navs
-//
-//##
-
-//=== Shared nav styles
-@nav-link-padding:                          10px 15px;
-@nav-link-hover-bg:                         @gray-lighter;
-
-@nav-disabled-link-color:                   @gray-light;
-@nav-disabled-link-hover-color:             @gray-light;
-
-//== Tabs
-@nav-tabs-border-color:                     #ddd;
-
-@nav-tabs-link-hover-border-color:          @gray-lighter;
-
-@nav-tabs-active-link-hover-bg:             @body-bg;
-@nav-tabs-active-link-hover-color:          @gray;
-@nav-tabs-active-link-hover-border-color:   #ddd;
-
-@nav-tabs-justified-link-border-color:            #ddd;
-@nav-tabs-justified-active-link-border-color:     @body-bg;
-
-//== Pills
-@nav-pills-border-radius:                   @border-radius-base;
-@nav-pills-active-link-hover-bg:            @component-active-bg;
-@nav-pills-active-link-hover-color:         @component-active-color;
-
-
-//== Pagination
-//
-//##
-
-@pagination-color:                     @link-color;
-@pagination-bg:                        #fff;
-@pagination-border:                    #ddd;
-
-@pagination-hover-color:               @link-hover-color;
-@pagination-hover-bg:                  @gray-lighter;
-@pagination-hover-border:              #ddd;
-
-@pagination-active-color:              #fff;
-@pagination-active-bg:                 @brand-primary;
-@pagination-active-border:             @brand-primary;
-
-@pagination-disabled-color:            @gray-light;
-@pagination-disabled-bg:               #fff;
-@pagination-disabled-border:           #ddd;
-
-
-//== Pager
-//
-//##
-
-@pager-bg:                             @pagination-bg;
-@pager-border:                         @pagination-border;
-@pager-border-radius:                  15px;
-
-@pager-hover-bg:                       @pagination-hover-bg;
-
-@pager-active-bg:                      @pagination-active-bg;
-@pager-active-color:                   @pagination-active-color;
-
-@pager-disabled-color:                 @pagination-disabled-color;
-
-
-//== Jumbotron
-//
-//##
-
-@jumbotron-padding:              30px;
-@jumbotron-color:                inherit;
-@jumbotron-bg:                   @gray-lighter;
-@jumbotron-heading-color:        inherit;
-@jumbotron-font-size:            ceil((@font-size-base * 1.5));
-
-
-//== Form states and alerts
-//
-//## Define colors for form feedback states and, by default, alerts.
-
-@state-success-text:             #3c763d;
-@state-success-bg:               #dff0d8;
-@state-success-border:           darken(spin(@state-success-bg, -10), 5%);
-
-@state-info-text:                #31708f;
-@state-info-bg:                  #d9edf7;
-@state-info-border:              darken(spin(@state-info-bg, -10), 7%);
-
-@state-warning-text:             #8a6d3b;
-@state-warning-bg:               #fcf8e3;
-@state-warning-border:           darken(spin(@state-warning-bg, -10), 5%);
-
-@state-danger-text:              #a94442;
-@state-danger-bg:                #f2dede;
-@state-danger-border:            darken(spin(@state-danger-bg, -10), 5%);
-
-
-//== Tooltips
-//
-//##
-
-//** Tooltip max width
-@tooltip-max-width:           200px;
-//** Tooltip text color
-@tooltip-color:               #fff;
-//** Tooltip background color
-@tooltip-bg:                  #000;
-@tooltip-opacity:             .9;
-
-//** Tooltip arrow width
-@tooltip-arrow-width:         5px;
-//** Tooltip arrow color
-@tooltip-arrow-color:         @tooltip-bg;
-
-
-//== Popovers
-//
-//##
-
-//** Popover body background color
-@popover-bg:                          #fff;
-//** Popover maximum width
-@popover-max-width:                   276px;
-//** Popover border color
-@popover-border-color:                rgba(0,0,0,.2);
-//** Popover fallback border color
-@popover-fallback-border-color:       #ccc;
-
-//** Popover title background color
-@popover-title-bg:                    darken(@popover-bg, 3%);
-
-//** Popover arrow width
-@popover-arrow-width:                 10px;
-//** Popover arrow color
-@popover-arrow-color:                 @popover-bg;
-
-//** Popover outer arrow width
-@popover-arrow-outer-width:           (@popover-arrow-width + 1);
-//** Popover outer arrow color
-@popover-arrow-outer-color:           fadein(@popover-border-color, 5%);
-//** Popover outer arrow fallback color
-@popover-arrow-outer-fallback-color:  darken(@popover-fallback-border-color, 20%);
-
-
-//== Labels
-//
-//##
-
-//** Default label background color
-@label-default-bg:            @gray-light;
-//** Primary label background color
-@label-primary-bg:            @brand-primary;
-//** Success label background color
-@label-success-bg:            @brand-success;
-//** Info label background color
-@label-info-bg:               @brand-info;
-//** Warning label background color
-@label-warning-bg:            @brand-warning;
-//** Danger label background color
-@label-danger-bg:             @brand-danger;
-
-//** Default label text color
-@label-color:                 #fff;
-//** Default text color of a linked label
-@label-link-hover-color:      #fff;
-
-
-//== Modals
-//
-//##
-
-//** Padding applied to the modal body
-@modal-inner-padding:         15px;
-
-//** Padding applied to the modal title
-@modal-title-padding:         15px;
-//** Modal title line-height
-@modal-title-line-height:     @line-height-base;
-
-//** Background color of modal content area
-@modal-content-bg:                             #fff;
-//** Modal content border color
-@modal-content-border-color:                   rgba(0,0,0,.2);
-//** Modal content border color **for IE8**
-@modal-content-fallback-border-color:          #999;
-
-//** Modal backdrop background color
-@modal-backdrop-bg:           #000;
-//** Modal backdrop opacity
-@modal-backdrop-opacity:      .5;
-//** Modal header border color
-@modal-header-border-color:   #e5e5e5;
-//** Modal footer border color
-@modal-footer-border-color:   @modal-header-border-color;
-
-@modal-lg:                    900px;
-@modal-md:                    600px;
-@modal-sm:                    300px;
-
-
-//== Alerts
-//
-//## Define alert colors, border radius, and padding.
-
-@alert-padding:               15px;
-@alert-border-radius:         @border-radius-base;
-@alert-link-font-weight:      bold;
-
-@alert-success-bg:            @state-success-bg;
-@alert-success-text:          @state-success-text;
-@alert-success-border:        @state-success-border;
-
-@alert-info-bg:               @state-info-bg;
-@alert-info-text:             @state-info-text;
-@alert-info-border:           @state-info-border;
-
-@alert-warning-bg:            @state-warning-bg;
-@alert-warning-text:          @state-warning-text;
-@alert-warning-border:        @state-warning-border;
-
-@alert-danger-bg:             @state-danger-bg;
-@alert-danger-text:           @state-danger-text;
-@alert-danger-border:         @state-danger-border;
-
-
-//== Progress bars
-//
-//##
-
-//** Background color of the whole progress component
-@progress-bg:                 #f5f5f5;
-//** Progress bar text color
-@progress-bar-color:          #fff;
-//** Variable for setting rounded corners on progress bar.
-@progress-border-radius:      @border-radius-base;
-
-//** Default progress bar color
-@progress-bar-bg:             @brand-primary;
-//** Success progress bar color
-@progress-bar-success-bg:     @brand-success;
-//** Warning progress bar color
-@progress-bar-warning-bg:     @brand-warning;
-//** Danger progress bar color
-@progress-bar-danger-bg:      @brand-danger;
-//** Info progress bar color
-@progress-bar-info-bg:        @brand-info;
-
-
-//== List group
-//
-//##
-
-//** Background color on `.list-group-item`
-@list-group-bg:                 #fff;
-//** `.list-group-item` border color
-@list-group-border:             #ddd;
-//** List group border radius
-@list-group-border-radius:      @border-radius-base;
-
-//** Background color of single list items on hover
-@list-group-hover-bg:           #f5f5f5;
-//** Text color of active list items
-@list-group-active-color:       @component-active-color;
-//** Background color of active list items
-@list-group-active-bg:          @component-active-bg;
-//** Border color of active list elements
-@list-group-active-border:      @list-group-active-bg;
-//** Text color for content within active list items
-@list-group-active-text-color:  lighten(@list-group-active-bg, 40%);
-
-//** Text color of disabled list items
-@list-group-disabled-color:      @gray-light;
-//** Background color of disabled list items
-@list-group-disabled-bg:         @gray-lighter;
-//** Text color for content within disabled list items
-@list-group-disabled-text-color: @list-group-disabled-color;
-
-@list-group-link-color:         #555;
-@list-group-link-hover-color:   @list-group-link-color;
-@list-group-link-heading-color: #333;
-
-
-//== Panels
-//
-//##
-
-@panel-bg:                    #fff;
-@panel-body-padding:          15px;
-@panel-heading-padding:       10px 15px;
-@panel-footer-padding:        @panel-heading-padding;
-@panel-border-radius:         @border-radius-base;
-
-//** Border color for elements within panels
-@panel-inner-border:          #ddd;
-@panel-footer-bg:             #f5f5f5;
-
-@panel-default-text:          @gray-dark;
-@panel-default-border:        #ddd;
-@panel-default-heading-bg:    #f5f5f5;
-
-@panel-primary-text:          #fff;
-@panel-primary-border:        @brand-primary;
-@panel-primary-heading-bg:    @brand-primary;
-
-@panel-success-text:          @state-success-text;
-@panel-success-border:        @state-success-border;
-@panel-success-heading-bg:    @state-success-bg;
-
-@panel-info-text:             @state-info-text;
-@panel-info-border:           @state-info-border;
-@panel-info-heading-bg:       @state-info-bg;
-
-@panel-warning-text:          @state-warning-text;
-@panel-warning-border:        @state-warning-border;
-@panel-warning-heading-bg:    @state-warning-bg;
-
-@panel-danger-text:           @state-danger-text;
-@panel-danger-border:         @state-danger-border;
-@panel-danger-heading-bg:     @state-danger-bg;
-
-
-//== Thumbnails
-//
-//##
-
-//** Padding around the thumbnail image
-@thumbnail-padding:           4px;
-//** Thumbnail background color
-@thumbnail-bg:                @body-bg;
-//** Thumbnail border color
-@thumbnail-border:            #ddd;
-//** Thumbnail border radius
-@thumbnail-border-radius:     @border-radius-base;
-
-//** Custom text color for thumbnail captions
-@thumbnail-caption-color:     @text-color;
-//** Padding around the thumbnail caption
-@thumbnail-caption-padding:   9px;
-
-
-//== Wells
-//
-//##
-
-@well-bg:                     #f5f5f5;
-@well-border:                 darken(@well-bg, 7%);
-
-
-//== Badges
-//
-//##
-
-@badge-color:                 #fff;
-//** Linked badge text color on hover
-@badge-link-hover-color:      #fff;
-@badge-bg:                    @gray-light;
-
-//** Badge text color in active nav link
-@badge-active-color:          @link-color;
-//** Badge background color in active nav link
-@badge-active-bg:             #fff;
-
-@badge-font-weight:           bold;
-@badge-line-height:           1;
-@badge-border-radius:         10px;
-
-
-//== Breadcrumbs
-//
-//##
-
-@breadcrumb-padding-vertical:   8px;
-@breadcrumb-padding-horizontal: 15px;
-//** Breadcrumb background color
-@breadcrumb-bg:                 #f5f5f5;
-//** Breadcrumb text color
-@breadcrumb-color:              #ccc;
-//** Text color of current page in the breadcrumb
-@breadcrumb-active-color:       @gray-light;
-//** Textual separator for between breadcrumb elements
-@breadcrumb-separator:          "/";
-
-
-//== Carousel
-//
-//##
-
-@carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6);
-
-@carousel-control-color:                      #fff;
-@carousel-control-width:                      15%;
-@carousel-control-opacity:                    .5;
-@carousel-control-font-size:                  20px;
-
-@carousel-indicator-active-bg:                #fff;
-@carousel-indicator-border-color:             #fff;
-
-@carousel-caption-color:                      #fff;
-
-
-//== Close
-//
-//##
-
-@close-font-weight:           bold;
-@close-color:                 #000;
-@close-text-shadow:           0 1px 0 #fff;
-
-
-//== Code
-//
-//##
-
-@code-color:                  #c7254e;
-@code-bg:                     #f9f2f4;
-
-@kbd-color:                   #fff;
-@kbd-bg:                      #333;
-
-@pre-bg:                      #f5f5f5;
-@pre-color:                   @gray-dark;
-@pre-border-color:            #ccc;
-@pre-scrollable-max-height:   340px;
-
-
-//== Type
-//
-//##
-
-//** Horizontal offset for forms and lists.
-@component-offset-horizontal: 180px;
-//** Text muted color
-@text-muted:                  @gray-light;
-//** Abbreviations and acronyms border color
-@abbr-border-color:           @gray-light;
-//** Headings small color
-@headings-small-color:        @gray-light;
-//** Blockquote small color
-@blockquote-small-color:      @gray-light;
-//** Blockquote font size
-@blockquote-font-size:        (@font-size-base * 1.25);
-//** Blockquote border color
-@blockquote-border-color:     @gray-lighter;
-//** Page header border color
-@page-header-border-color:    @gray-lighter;
-//** Width of horizontal description list titles
-@dl-horizontal-offset:        @component-offset-horizontal;
-//** Horizontal line color.
-@hr-border:                   #b2b2b2;
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/buttons.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/buttons.less
deleted file mode 100644
index bbb3c620..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/buttons.less
+++ /dev/null
@@ -1,61 +0,0 @@
-//
-// Buttons
-// --------------------------------------------------
-
-
-// Base styles
-// --------------------------------------------------
-
-// Core styles
-.btn {
-  display: inline-block;
-  padding: 5px 6px 4px 8px;
-  margin-top: 0;
-  margin-bottom: 0; // For input.btn
-  font-family: "Open Sans Condensed", sans-serif;
-  font-size: @font-size-base * 1.3;
-  font-weight: 700;
-  text-transform: uppercase;
-  letter-spacing: 1px;
-  line-height: @line-height-computed;
-  text-align: center;
-  vertical-align: middle;
-  touch-action: manipulation;
-  cursor: pointer;
-  background-color: @gray-lighter;
-  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
-  border: none;
-  border-radius: 3px;
-  .box-shadow(1px 1px 0 rgba(0, 0, 0, 0.3));
-  outline: none !important;
-  white-space: nowrap;
-  .user-select(none);
-
-  &:focus,
-  &.focus {
-    .tab-focus();
-  }
-
-  &:hover,
-  &:focus,
-  &.focus {
-    background-color: lighten(@gray-lighter, 5%);
-    text-decoration: none;
-    .transition(background-color .1s linear);
-  }
-
-  &:active,
-  &.active {
-    outline: 0;
-    padding: 6px 5px 3px 9px;
-  }
-
-  &.disabled,
-  &[disabled],
-  fieldset[disabled] & {
-    cursor: @cursor-disabled;
-    pointer-events: none; // Future-proof disabling of clicks
-    .opacity(65);
-    .box-shadow(1px 1px 0 rgba(0, 0, 0, 0.15));
-  }
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/code.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/code.less
deleted file mode 100644
index 33af7555..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/code.less
+++ /dev/null
@@ -1,8 +0,0 @@
-code {
-  margin: 0 2px;
-  padding: 1px 5px;
-  border: 1px solid #E1E1E8;
-  background-color: #F7F7F9;
-  color: @gray-dark;
-  font-size: 85%;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/evaluation-form.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/evaluation-form.less
deleted file mode 100644
index 6d505d56..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/evaluation-form.less
+++ /dev/null
@@ -1,91 +0,0 @@
-//
-// Evaluation form
-// --------------------------------------------------
-
-
-.evaluation-form {
-  .clearfix();
-
-  textarea {
-    height: 200px;
-  }
-}
-
-.evaluation-input-output {
-  float: left;
-  width: 65%;
-}
-
-.evaluation-input-clear-button {
-  position: absolute;
-  top: 0;
-  right: 0;
-  width: 15px;
-  height: 15px;
-  margin: 6px;
-  display: inline-block;
-  background: transparent url("../images/clear-text.png") no-repeat scroll 0 0;
-  opacity: 0.75;
-  line-height: 0;
-  vertical-align: bottom;
-  cursor: pointer;
-
-  &:hover {
-   opacity: 1;
- }
-}
-
-.evaluation-input-clear-button.with-scrollbar {
-  margin-right: 29px;
-}
-
-.evaluation-output {
-  margin-top: 1.5em;
-}
-
-.evaluation-input-field,
-.evaluation-output-field {
-  margin-bottom: 0.5em;
-  .box-sizing(border-box);
-  overflow-x: hidden;
-  line-height: @line-height-computed;
-}
-
-.evaluation-output-field {
-  &[readonly] {
-    cursor: auto;
-    background-color: @input-bg;
-  }
-}
-
-.evaluation-error-header {
-  margin-bottom: @line-height-computed;
-  padding-left: 52px;
-  background: transparent url("../images/icons/48x48/error.png") no-repeat scroll 0 50%;
-  color: @black;
-  font-family: @font-family-sans-serif;
-  font-weight: bold;
-  line-height: 48px;
-  vertical-align: middle;
-}
-
-ul.evaluation-error-list,
-ul.evaluation-warning-list {
-  li {
-    margin-bottom: 1em;
-
-    pre {
-      margin-top: 0.5em;
-      white-space: pre;
-      overflow: auto;
-    }
-  }
-}
-
-ul.evaluation-error-list li pre {
-  background-color: @state-danger-bg;
-}
-
-ul.evaluation-warning-list li pre {
-  background-color: @state-warning-bg;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/forms.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/forms.less
deleted file mode 100644
index 2ceb0559..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/forms.less
+++ /dev/null
@@ -1,99 +0,0 @@
-//
-// Forms
-// --------------------------------------------------
-
-// GENERAL STYLES
-// --------------
-
-label {
-  font-weight: normal;
-}
-
-
-// Form controls
-// -------------------------
-
-// Common form controls
-.form-control {
-  line-height: @input-height-base;
-}
-
-.textarea-wrapper {
-  position: relative;
-}
-
-// Form groups
-.form-group {
-  margin-bottom: 0.5em;
-}
-
-// Info and errors
-// --------------------------
-.message-info {
-  border: 1px solid;
-  clear: both;
-  padding: 10px 20px;
-  color: @state-info-text;
-}
-
-.message-error {
-  clear: both;
-  color: @state-danger-text;
-  font-size: 1.1em;
-  font-weight: bold;
-  margin: 20px 0 10px 0;
-}
-
-.message-success {
-  color: @state-success-text;
-  font-size: 1.3em;
-  font-weight: bold;
-  margin: 20px 0 10px 0;
-}
-
-.error {
-  color: @state-danger-text;
-}
-
-// Styles for validation helpers
-// --------------------------
-.validators {
-  font-style: normal;
-  padding-bottom: 0.5em;
-}
-
-.field-validation-error {
-  display: block;
-  padding-bottom: 0.5em;
-  color: @state-danger-text;
-  font-weight: bold;
-}
-
-.field-validation-valid {
-  display: none;
-}
-
-input.input-validation-error,
-textarea.input-validation-error,
-select.input-validation-error
-{
-  border: 1px solid @state-danger-border;
-  background-color: @state-danger-bg;
-  .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work
-
-  &:focus {
-    border-color: @state-danger-border;
-    @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@state-danger-text, 20%);
-    .box-shadow(@shadow);
-  }
-}
-
-.validation-summary-errors {
-  color: @state-danger-text;
-  font-weight: bold;
-  font-size: 1.1em;
-}
-
-.validation-summary-valid {
-  display: none;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/icons.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/icons.less
deleted file mode 100644
index 79b9d9e5..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/icons.less
+++ /dev/null
@@ -1,32 +0,0 @@
-//
-// Icons
-// --------------------------------------------------
-
-
-.icon {
-  background: transparent url(../images/icons/32x32/social-media-icons-32.png) no-repeat scroll;
-  display: inline-block;
-  line-height: 0;
-  vertical-align: bottom;
-}
-
-.icon-32 {
-  height: 32px;
-  width: 32px;
-}
-
-.icon-facebook {
-  background-position: 0 0;
-}
-
-.icon-twitter {
-  background-position: 0 -32px;
-}
-
-.icon-linkedin {
-  background-position: 0 -64px;
-}
-
-.icon-rss {
-  background-position: 0 -128px;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/layout.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/layout.less
deleted file mode 100644
index 35a7f386..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/layout.less
+++ /dev/null
@@ -1,128 +0,0 @@
-html,
-body {
-  margin: 0;
-  height: 100%;
-  /* The html and body elements cannot have any padding or margin */
-}
-
-/* Wrapper for page content to push down footer */
-.l-wrapper {
-  min-height: 100%;
-  height: auto !important;
-  height: 100%;
-  /* Negative indent footer by it's height */
-  margin: 0 auto (-1 * @footer-height);
-}
-
-.l-constrained {
-  margin: 0 auto;
-  padding-left: 20px;
-  padding-right: 20px;
-  max-width: 1200px;
-  min-width: 800px;
-}
-
-.l-header {
-  border-top: solid 10px @black;
-  border-bottom: 1px solid #d4b33a;
-  background-color: #f0db4f;
-
-  .l-constrained {
-    padding-top: 20px;
-    padding-bottom: 20px;
-    .clearfix();
-  }
-}
-
-.l-content {
-  .clearfix();
-}
-
-.l-main-content {
-  float: left;
-  width: 70%;
-}
-
-.l-sidebar {
-  float: right;
-  width: 30%;
-}
-
-/* Set the fixed height of the footer here */
-.l-push,
-.l-footer {
-  height: @footer-height;
-}
-
-.l-footer {
-  width: 100%;
-  background-color: @black;
-  color: @gray-lighter;
-  font-size: @font-size-small;
-  line-height: 100%;
-
-  .l-constrained {
-    padding-top: (@footer-height - 32) / 2;
-    .clearfix();
-  }
-
-  a {
-    color: @gray-lighter;
-    text-decoration: none;
-
-    &:hover,
-    &:active {
-      text-decoration: underline;
-    }
-  }
-}
-
-
-// Header
-// -------------------------
-
-.logo {
-  margin: 0;
-
-  a {
-    display: block;
-    float: left;
-    width: 100px;
-    height: 100px;
-    background: transparent url("../images/jsengineswitcher-logo.png") no-repeat scroll 0 0;
-    text-indent: -9999em;
-  }
-}
-
-.primary-nav {
-  position: relative;
-  left: 40px;
-  float: left;
-}
-
-
-// Footer
-// -------------------------
-
-.l-copyright {
-  float: left;
-    p {
-      margin: 0;
-      padding: 0;
-  }
-}
-
-.l-social {
-  float: right;
-
-  li {
-    display: inline;
-    list-style: none outside none;
-    padding-left: 10px;
-
-    a {
-      text-indent: -9999px;
-      outline: none;
-    }
-  }
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/mixins.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/mixins.less
deleted file mode 100644
index d26eee79..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/mixins.less
+++ /dev/null
@@ -1,9 +0,0 @@
-//
-// Mixins
-// --------------------------------------------------
-
-// NO Drop shadows
-.no-box-shadow {
-  -webkit-box-shadow: none; // iOS <4.3 & Android <4.1
-          box-shadow: none;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/navbar.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/navbar.less
deleted file mode 100644
index 95edf3c2..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/navbar.less
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// Navbars
-// --------------------------------------------------
-
-
-// Wrapper and base class
-//
-// Provide a static navbar from which we expand to create full-width, fixed, and
-// other navbar variations.
-
-.navbar {
-  border: none;
-  border-radius: 0;
-}
-
-// Navbar nav links
-//
-// Builds on top of the `.nav` components with it's own modifier class to make
-// the nav the full height of the horizontal nav (above 768px).
-
-.navbar-nav {
-  float: left;
-  margin: 0 auto;
-
-  > li {
-    > a {
-      float: none;
-      // Vertically center the text given @navbar-height
-      padding: ((@navbar-height - @line-height-computed) / 2) 15px ((@navbar-height - @line-height-computed) / 2);
-      border: 1px solid transparent;
-      font-family: "Open Sans", sans-serif;
-      font-size: 2.0em;
-      text-decoration: none;
-      text-transform: uppercase;
-      outline: none;
-    }
-  }
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/page-socials.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/page-socials.less
deleted file mode 100644
index ea12dc09..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/page-socials.less
+++ /dev/null
@@ -1,14 +0,0 @@
-.page-socials {
-  min-height: 60px;
-  margin-top: 20px;
-  padding-top: 15px;
-  border-top: 1px solid #b2b2b2;
-}
-
-.share-buttons {
-  li {
-    margin-right: 15px;
-    vertical-align: top;
-    line-height: normal;
-  }
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/type.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/type.less
deleted file mode 100644
index 02d69502..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/type.less
+++ /dev/null
@@ -1,24 +0,0 @@
-//
-// Typography
-// --------------------------------------------------
-
-// Headings
-// -------------------------
-
-h1, h2, h3 {
-  margin-top: 10px;
-}
-
-h1, h2 {
-  line-height: 40px;
-}
-
-h2 {
-  color: @black;
-  font-weight: bold;
-}
-
-h3 {
-  color: @gray-dark;
-  line-height: @line-height-computed * 1.25;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/variables.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/variables.less
deleted file mode 100644
index 498c9796..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore31.Mvc31/wwwroot/styles/variables.less
+++ /dev/null
@@ -1,7 +0,0 @@
-// Colors
-// -------------------------
-@black:                 #1d0d0d;
-
-// Footer
-// -------------------------
-@footer-height:                    55px;
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/.bowerrc b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/.bowerrc
deleted file mode 100644
index ea81a597..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/.bowerrc
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "registry": "https://registry.bower.io",
-  "directory": "wwwroot/lib"
-}
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Infrastructure/TagHelpers/ConditionalCommentTagHelper.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Infrastructure/TagHelpers/ConditionalCommentTagHelper.cs
deleted file mode 100644
index 4a0ffa8d..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Infrastructure/TagHelpers/ConditionalCommentTagHelper.cs
+++ /dev/null
@@ -1,78 +0,0 @@
-using System;
-
-using Microsoft.AspNetCore.Razor.TagHelpers;
-
-namespace JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5.Infrastructure.TagHelpers
-{
-	[HtmlTargetElement("conditional-comment")]
-	public class ConditionalCommentTagHelper : TagHelper
-	{
-		[HtmlAttributeName("type")]
-		public ConditionalCommentType CommentType { get; set; }
-
-		[HtmlAttributeName("expression")]
-		public string Expression { get; set; }
-
-
-		public override void Process(TagHelperContext context, TagHelperOutput output)
-		{
-			output.TagName = null;
-
-			ConditionalCommentType type = CommentType;
-
-			string ifCommentStartPart;
-			string ifCommentEndPart;
-
-			switch (type)
-			{
-				case ConditionalCommentType.Hidden:
-					ifCommentStartPart = "";
-
-					break;
-				case ConditionalCommentType.RevealedValidatingSimplified:
-					ifCommentStartPart = "";
-
-					break;
-				case ConditionalCommentType.Revealed:
-					ifCommentStartPart = "";
-
-					break;
-				default:
-					throw new NotSupportedException();
-			}
-
-			TagHelperContent preContent = output.PreContent;
-			preContent.AppendHtml(ifCommentStartPart);
-			preContent.AppendHtml(Expression);
-			preContent.AppendHtml(ifCommentEndPart);
-
-			string endIfComment;
-
-			switch (type)
-			{
-				case ConditionalCommentType.Hidden:
-					endIfComment = "";
-					break;
-				case ConditionalCommentType.RevealedValidating:
-				case ConditionalCommentType.RevealedValidatingSimplified:
-					endIfComment = "";
-					break;
-				case ConditionalCommentType.Revealed:
-					endIfComment = "";
-					break;
-				default:
-					throw new NotSupportedException();
-			}
-
-			output.PostContent.AppendHtml(endIfComment);
-		}
-	}
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Infrastructure/TagHelpers/ConditionalCommentType.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Infrastructure/TagHelpers/ConditionalCommentType.cs
deleted file mode 100644
index 1db7d03d..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Infrastructure/TagHelpers/ConditionalCommentType.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-namespace JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5.Infrastructure.TagHelpers
-{
-	public enum ConditionalCommentType
-	{
-		Hidden,
-		Revealed,
-		RevealedValidating,
-		RevealedValidatingSimplified
-	}
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5.csproj b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5.csproj
index 5d6fd59c..07820916 100644
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5.csproj
+++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5.csproj
@@ -2,10 +2,11 @@
 
   
     JS Engine Switcher: Sample ASP.NET Core 5.0 MVC 5 Site
-    3.21.3
+    3.30.2
     net5.0
     Exe
     true
+    true
     true
     true
     false
@@ -37,28 +38,13 @@
     
     
     
+    
     
     
     
     
   
 
-  
-    
-  
-  
-    
-  
-  
-    
-  
-  
-    
-  
-  
-    
-    
-    
-  
+  
 
 
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Program.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Program.cs
index f51cce46..376442fc 100644
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Program.cs
+++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Program.cs
@@ -1,4 +1,6 @@
-using Microsoft.AspNetCore.Hosting;
+using System.IO;
+
+using Microsoft.AspNetCore.Hosting;
 using Microsoft.Extensions.Hosting;
 using Microsoft.Extensions.Logging;
 
@@ -15,6 +17,10 @@ public static IHostBuilder CreateHostBuilder(string[] args) =>
 			Host.CreateDefaultBuilder(args)
 				.ConfigureWebHostDefaults(webBuilder =>
 				{
+					webBuilder.UseWebRoot(Path.Combine(
+						Directory.GetCurrentDirectory(),
+						"../JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot"
+					));
 					webBuilder.UseStartup();
 				})
 				.ConfigureLogging((hostingContext, logging) =>
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Properties/launchSettings.json b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Properties/launchSettings.json
index d6c667af..7b2ce114 100644
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Properties/launchSettings.json
+++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Properties/launchSettings.json
@@ -3,23 +3,23 @@
     "windowsAuthentication": false,
     "anonymousAuthentication": true,
     "iisExpress": {
-      "applicationUrl": "http://localhost:52873",
+      "applicationUrl": "http://localhost:19282",
       "sslPort": 0
     }
   },
   "profiles": {
-    "IIS Express": {
-      "commandName": "IISExpress",
+    "JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5": {
+      "commandName": "Project",
+      "dotnetRunMessages": "true",
       "launchBrowser": true,
+      "applicationUrl": "http://localhost:5121",
       "environmentVariables": {
         "ASPNETCORE_ENVIRONMENT": "Development"
       }
     },
-    "JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5": {
-      "commandName": "Project",
-      "dotnetRunMessages": "true",
+    "IIS Express": {
+      "commandName": "IISExpress",
       "launchBrowser": true,
-      "applicationUrl": "http://localhost:5000",
       "environmentVariables": {
         "ASPNETCORE_ENVIRONMENT": "Development"
       }
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Startup.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Startup.cs
index e07b6642..2ef8be36 100644
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Startup.cs
+++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Startup.cs
@@ -61,8 +61,10 @@ public void ConfigureServices(IServiceCollection services)
 
 			// Add JavaScriptEngineSwitcher services to the services container.
 			services.AddJsEngineSwitcher(options =>
-				options.DefaultEngineName = ChakraCoreJsEngine.EngineName
-			)
+			{
+				options.AllowCurrentProperty = false;
+				options.DefaultEngineName = ChakraCoreJsEngine.EngineName;
+			})
 				.AddChakraCore()
 				.AddJint()
 				.AddJurassic()
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Views/Home/Contact.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Views/Home/Contact.cshtml
index cd9663df..58785ebe 100644
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Views/Home/Contact.cshtml
+++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Views/Home/Contact.cshtml
@@ -5,19 +5,4 @@
 

@ViewBag.Title

@ViewBag.Body -
- -@section Scripts { - -} \ No newline at end of file + \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Views/Shared/_JsEvaluationErrorList.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Views/Shared/_JsEvaluationErrorList.cshtml index b5968080..9e0601d6 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Views/Shared/_JsEvaluationErrorList.cshtml +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Views/Shared/_JsEvaluationErrorList.cshtml @@ -1,4 +1,4 @@ -@using JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5.Infrastructure.Helpers +@using JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure.Helpers @using JavaScriptEngineSwitcher.Sample.Logic.Models @model IList diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Views/Shared/_Layout.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Views/Shared/_Layout.cshtml index 022f173b..5fe54776 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Views/Shared/_Layout.cshtml +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Views/Shared/_Layout.cshtml @@ -1,4 +1,4 @@ -@using JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5.Infrastructure.TagHelpers +@using JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure.TagHelpers @@ -61,9 +61,10 @@ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Views/_ViewImports.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Views/_ViewImports.cshtml index 74dd760b..8fe8384e 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Views/_ViewImports.cshtml +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/Views/_ViewImports.cshtml @@ -1,2 +1,2 @@ @addTagHelper "*, Microsoft.AspNetCore.Mvc.TagHelpers" -@addTagHelper "*, JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5" \ No newline at end of file +@addTagHelper "*, JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure" \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/bower.json b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/bower.json deleted file mode 100644 index be2b1906..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/bower.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "jsengineswitcher.sample.aspnetcore5.mvc5", - "dependencies": { - "modernizr": "2.8.3", - "jquery-compat": "jquery#1.10.2", - "jquery": "jquery#2.0.3", - "jquery-validation": "1.13.1", - "jquery-validation-unobtrusive": "3.2.3", - "bootstrap": "3.3.0" - } -} diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/gulpfile.js b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/gulpfile.js deleted file mode 100644 index 0f259437..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/gulpfile.js +++ /dev/null @@ -1,130 +0,0 @@ -/*global require, exports */ -/*jshint esversion: 6 */ -const WEB_ROOT_PATH = "wwwroot"; -const BOWER_DIR_PATH = WEB_ROOT_PATH + "/lib"; -const STYLE_DIR_PATH = WEB_ROOT_PATH + '/styles'; -const SCRIPT_DIR_PATH = WEB_ROOT_PATH + '/scripts'; - -// include plug-ins -let { src, dest, series, parallel, watch } = require('gulp'); -let del = require('del'); -let sourcemaps = require('gulp-sourcemaps'); -let rename = require('gulp-rename'); -let concat = require('gulp-concat'); -let less = require('gulp-less'); -let autoprefixer = require('gulp-autoprefixer'); -let cleanCss = require('gulp-clean-css'); -let uglify = require('gulp-uglify'); - -//#region Clean -//#region Clean builded assets -function cleanBuildedStyles() { - return del([STYLE_DIR_PATH + '/build/*']); -} - -function cleanBuildedScripts() { - return del([SCRIPT_DIR_PATH + '/build/*']); -} - -let cleanBuildedAssets = parallel(cleanBuildedStyles, cleanBuildedScripts); -//#endregion -//#endregion - -//#region Build assets -//#region Build styles -let autoprefixerOptions = { - overrideBrowserslist: ['> 1%', 'last 3 versions', 'Firefox ESR', 'Opera 12.1'], - cascade: true -}; -let cssCleanOptions = { specialComments: '*' }; -let cssRenameOptions = { extname: '.min.css' }; - -function buildCommonStyles() { - return src([STYLE_DIR_PATH + '/app.less']) - .pipe(sourcemaps.init()) - .pipe(less({ - relativeUrls: true, - rootpath: '/styles/' - })) - .pipe(autoprefixer(autoprefixerOptions)) - .pipe(sourcemaps.write('./')) - .pipe(dest(STYLE_DIR_PATH + '/build')) - .pipe(sourcemaps.init({ loadMaps: true })) - .pipe(concat('common-styles.css')) - .pipe(cleanCss(cssCleanOptions)) - .pipe(rename(cssRenameOptions)) - .pipe(sourcemaps.write('./')) - .pipe(dest(STYLE_DIR_PATH + '/build')) - ; -} - -let buildStyles = buildCommonStyles; -//#endregion - -//#region Build scripts -let jsConcatOptions = { newLine: ';' }; -let jsUglifyOptions = { - output: { comments: /^!/ } -}; -let jsRenameOptions = { extname: '.min.js' }; - -function buildModernizrScripts() { - return src([BOWER_DIR_PATH + '/modernizr/modernizr.js']) - .pipe(sourcemaps.init()) - .pipe(uglify(jsUglifyOptions)) - .pipe(rename(jsRenameOptions)) - .pipe(sourcemaps.write('./')) - .pipe(dest(SCRIPT_DIR_PATH + '/build')) - ; -} - -function buildCommonScripts() { - return src([SCRIPT_DIR_PATH + '/common.js']) - .pipe(sourcemaps.init({ loadMaps: true })) - .pipe(rename({ basename: 'common-scripts' })) - .pipe(uglify(jsUglifyOptions)) - .pipe(rename(jsRenameOptions)) - .pipe(sourcemaps.write('./')) - .pipe(dest(SCRIPT_DIR_PATH + '/build')) - ; -} - -function buildEvaluationFormScripts() { - return src([BOWER_DIR_PATH + '/jquery-validation/dist/jquery.validate.js', - BOWER_DIR_PATH + '/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js', - BOWER_DIR_PATH + '/bootstrap/js/button.js', - SCRIPT_DIR_PATH + '/evaluation-form.js']) - .pipe(sourcemaps.init({ loadMaps: true })) - .pipe(concat('evaluation-form-scripts.js', jsConcatOptions)) - .pipe(uglify(jsUglifyOptions)) - .pipe(rename(jsRenameOptions)) - .pipe(sourcemaps.write('./')) - .pipe(dest(SCRIPT_DIR_PATH + '/build')) - ; -} - -let buildScripts = parallel(buildModernizrScripts, buildCommonScripts, buildEvaluationFormScripts); -//#endregion - -let buildAssets = parallel(buildStyles, buildScripts); -//#endregion - -//#region Watch assets -function watchStyles() { - return watch([STYLE_DIR_PATH + '/**/*.{less,css}', '!' + STYLE_DIR_PATH + '/build/**/*.*'], - buildStyles); -} - -function watchScripts() { - return watch([SCRIPT_DIR_PATH + '/**/*.js', '!' + SCRIPT_DIR_PATH + '/build/**/*.*'], - buildScripts); -} - -let watchAssets = parallel(watchStyles, watchScripts); -//#endregion - -// Export tasks -exports.cleanBuildedAssets = cleanBuildedAssets; -exports.buildAssets = buildAssets; -exports.watchAssets = watchAssets; -exports.default = series(cleanBuildedAssets, buildAssets); \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/package.json b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/package.json deleted file mode 100644 index 0f399688..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "javascriptengineswitcher.sample.aspnetcore5.mvc5", - "private": true, - "version": "3.21.3", - "devDependencies": { - "gulp": "4.0.2", - "del": "5.1.0", - "gulp-sourcemaps": "2.6.5", - "gulp-rename": "2.0.0", - "gulp-concat": "2.6.1", - "gulp-less": "4.0.1", - "gulp-autoprefixer": "7.0.1", - "gulp-clean-css": "4.2.0", - "gulp-uglify": "3.0.2" - } -} diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/images/0.gif b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/images/0.gif deleted file mode 100644 index 35d42e80..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/images/0.gif and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/images/clear-text.png b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/images/clear-text.png deleted file mode 100644 index 9d217b7f..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/images/clear-text.png and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/images/icons/32x32/social-media-icons-32.png b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/images/icons/32x32/social-media-icons-32.png deleted file mode 100644 index 49aa1fe3..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/images/icons/32x32/social-media-icons-32.png and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/images/icons/48x48/error.png b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/images/icons/48x48/error.png deleted file mode 100644 index 3d6185f7..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/images/icons/48x48/error.png and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/images/jsengineswitcher-logo.png b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/images/jsengineswitcher-logo.png deleted file mode 100644 index 12ed97e0..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/images/jsengineswitcher-logo.png and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/scripts/_references.js b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/scripts/_references.js deleted file mode 100644 index 2b54eea8..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/scripts/_references.js and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/scripts/common.js b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/scripts/common.js deleted file mode 100644 index c94bf102..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/scripts/common.js +++ /dev/null @@ -1,29 +0,0 @@ -var jsEngineSwitcher; - -(function (jsEngineSwitcher, undefined) { - "use strict"; - - jsEngineSwitcher.registerNamespace = function (namespaceString) { - var parts = namespaceString.split("."), - parent = jsEngineSwitcher, - i - ; - - if (parts[0] === "jsEngineSwitcher") { - parts = parts.slice(1); - } - - for (i = 0; i < parts.length; i += 1) { - if (typeof parent[parts[i]] === "undefined") { - parent[parts[i]] = {}; - } - parent = parent[parts[i]]; - } - - return parent; - }; - - jsEngineSwitcher.hasScrollbar = function(elem) { - return (elem.clientHeight < elem.scrollHeight); - }; -}(jsEngineSwitcher = jsEngineSwitcher || {})); \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/scripts/evaluation-form.js b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/scripts/evaluation-form.js deleted file mode 100644 index da1f0199..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/scripts/evaluation-form.js +++ /dev/null @@ -1,83 +0,0 @@ -(function (jsEngineSwitcher, $, undefined) { - "use strict"; - - var $evaluationForm, - $evaluationInputField, - $evaluationInputClearButton, - $evaluateButton - ; - - $(function () { - $evaluationForm = $("form[data-form-type='evaluation-form']"); - $evaluationInputField = $(":input[data-control-type='evaluation-input-field']", $evaluationForm); - $evaluationInputClearButton = $("
"); - $evaluateButton = $(":input[data-control-type='evaluate-button']", $evaluationForm); - - $evaluationForm.on("submit", onEvaluationFormSubmitHandler); - - $evaluationInputClearButton.on("click", onEvaluationInputClearButtonClickHandler); - $evaluationInputField.parent().append($evaluationInputClearButton); - refreshEvaluationInputClearButton(); - $evaluationInputField - .on("input propertychange keydown keyup paste", onEvaluationInputFieldChangeHandler) - ; - - $evaluateButton.removeAttr("disabled"); - }); - - $(window).unload(function() { - $evaluationForm.off("submit", onEvaluationFormSubmitHandler); - - $evaluationInputClearButton - .off("click", onEvaluationInputClearButtonClickHandler) - .remove() - ; - - $evaluationInputField - .off("input propertychange keydown keyup paste", onEvaluationInputFieldChangeHandler) - ; - - $evaluationForm = null; - $evaluationInputField = null; - $evaluationInputClearButton = null; - $evaluateButton = null; - }); - - var refreshEvaluationInputClearButton = function() { - if ($.trim($evaluationInputField.val()).length > 0) { - $evaluationInputClearButton.show(); - } else { - $evaluationInputClearButton.hide(); - } - - if (jsEngineSwitcher.hasScrollbar($evaluationInputField.get(0))) { - $evaluationInputClearButton.addClass("with-scrollbar"); - } - else { - $evaluationInputClearButton.removeClass("with-scrollbar"); - } - }; - - var onEvaluationFormSubmitHandler = function () { - var $form = $(this); - if ($form.valid()) { - $evaluateButton.attr("disabled", "disabled"); - $("textarea[data-control-type='evaluation-output-field']", $form).val(''); - - return true; - } - - return false; - }; - - var onEvaluationInputFieldChangeHandler = function () { - refreshEvaluationInputClearButton(); - }; - - var onEvaluationInputClearButtonClickHandler = function() { - $evaluationInputField.val(""); - - var $button = $(this); - $button.hide(); - }; -}(jsEngineSwitcher, jQuery)); \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/app.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/app.less deleted file mode 100644 index c41a9315..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/app.less +++ /dev/null @@ -1,71 +0,0 @@ -/*! - * Bootstrap v3.3.0 (http://getbootstrap.com) - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -// Core variables and mixins -@import "bootstrap-custom-variables.less"; -@import "../lib/bootstrap/less/mixins.less"; - -// Reset -@import "../lib/bootstrap/less/normalize.less"; -//@import "../lib/bootstrap/less/print.less"; -//@import "../lib/bootstrap/less/glyphicons.less"; - -// Core CSS -@import "../lib/bootstrap/less/scaffolding.less"; -@import "../lib/bootstrap/less/type.less"; -@import "../lib/bootstrap/less/code.less"; -//@import "../lib/bootstrap/less/grid.less"; -//@import "../lib/bootstrap/less/tables.less"; -@import "../lib/bootstrap/less/forms.less"; -//@import "../lib/bootstrap/less/buttons.less"; - -// Components -//@import "../lib/bootstrap/less/component-animations.less"; -//@import "../lib/bootstrap/less/dropdowns.less"; -//@import "../lib/bootstrap/less/button-groups.less"; -//@import "../lib/bootstrap/less/input-groups.less"; -@import "../lib/bootstrap/less/navs.less"; -@import "../lib/bootstrap/less/navbar.less"; -//@import "../lib/bootstrap/less/breadcrumbs.less"; -//@import "../lib/bootstrap/less/pagination.less"; -//@import "../lib/bootstrap/less/pager.less"; -//@import "../lib/bootstrap/less/labels.less"; -//@import "../lib/bootstrap/less/badges.less"; -//@import "../lib/bootstrap/less/jumbotron.less"; -//@import "../lib/bootstrap/less/thumbnails.less"; -//@import "../lib/bootstrap/less/alerts.less"; -//@import "../lib/bootstrap/less/progress-bars.less"; -//@import "../lib/bootstrap/less/media.less"; -//@import "../lib/bootstrap/less/list-group.less"; -//@import "../lib/bootstrap/less/panels.less"; -//@import "../lib/bootstrap/less/responsive-embed.less"; -//@import "../lib/bootstrap/less/wells.less"; -//@import "../lib/bootstrap/less/close.less"; - -// Components w/ JavaScript -//@import "../lib/bootstrap/less/modals.less"; -//@import "../lib/bootstrap/less/tooltip.less"; -//@import "../lib/bootstrap/less/popovers.less"; -//@import "../lib/bootstrap/less/carousel.less"; - -// Utility classes -@import "../lib/bootstrap/less/utilities.less"; -//@import "../lib/bootstrap/less/responsive-utilities.less"; - -// JavaScriptEngineSwitcher specs -@import "variables.less"; -@import "mixins.less"; - -@import "type.less"; -@import "code.less"; -@import "forms.less"; -@import "buttons.less"; -@import "icons.less"; -@import "navbar.less"; - -@import "layout.less"; -@import "evaluation-form.less"; -@import "page-socials.less"; \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/bootstrap-custom-variables.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/bootstrap-custom-variables.less deleted file mode 100644 index 0be2aa6f..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/bootstrap-custom-variables.less +++ /dev/null @@ -1,856 +0,0 @@ -// -// Variables -// -------------------------------------------------- - - -//== Colors -// -//## Gray and brand colors for use across Bootstrap. - -@gray-base: #323330; -@gray-darker: lighten(@gray-base, 13.5%); // #222 -@gray-dark: lighten(@gray-base, 20%); // #333 -@gray: lighten(@gray-base, 33.5%); // #555 -@gray-light: lighten(@gray-base, 46.7%); // #777 -@gray-lighter: #e3e3e3; - -@brand-primary: #428bca; -@brand-success: #5cb85c; -@brand-info: #5bc0de; -@brand-warning: #f0ad4e; -@brand-danger: #d9534f; - - -//== Scaffolding -// -//## Settings for some of the most global styles. - -//** Background color for ``. -@body-bg: #fff; -//** Global text color on ``. -@text-color: #1d0d0d; - -//** Global textual link color. -@link-color: @brand-primary; -//** Link hover color set via `darken()` function. -@link-hover-color: darken(@link-color, 15%); -//** Link hover decoration. -@link-hover-decoration: underline; - - -//== Typography -// -//## Font, line-height, and color for body text, headings, and more. - -@font-family-sans-serif: "Helvetica Neue", Arial, sans-serif; -@font-family-serif: Georgia, "Times New Roman", Times, serif; -//** Default monospace fonts for ``, ``, and `
`.
-@font-family-monospace:   Consolas, "Courier New", monospace;
-@font-family-base:        @font-family-sans-serif;
-
-@font-size-base:          14px;
-@font-size-large:         ceil((@font-size-base * 1.25)); // ~18px
-@font-size-small:         ceil((@font-size-base * 0.85)); // ~12px
-
-@font-size-h1:            floor(@font-size-base * 3);
-@font-size-h2:            @font-size-base * 2.5;
-@font-size-h3:            ceil(@font-size-base * 1.75);
-@font-size-h4:            ceil(@font-size-base * 1.25);
-@font-size-h5:            @font-size-base;
-@font-size-h6:            ceil(@font-size-base * 0.85);
-
-//** Unit-less `line-height` for use in components like buttons.
-@line-height-base:        1.428571429; // 20/14
-//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
-@line-height-computed:    floor((@font-size-base * @line-height-base)); // ~20px
-
-//** By default, this inherits from the ``.
-@headings-font-family:    "Open Sans", sans-serif;
-@headings-font-weight:    normal;
-@headings-line-height:    1.1;
-@headings-color:          inherit;
-
-
-//== Iconography
-//
-//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
-
-//** Load fonts from this directory.
-@icon-font-path:          "../fonts/";
-//** File name for all font files.
-@icon-font-name:          "glyphicons-halflings-regular";
-//** Element ID within SVG icon file.
-@icon-font-svg-id:        "glyphicons_halflingsregular";
-
-
-//== Components
-//
-//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
-
-@padding-base-vertical:     4px;
-@padding-base-horizontal:   6px;
-
-@padding-large-vertical:    10px;
-@padding-large-horizontal:  16px;
-
-@padding-small-vertical:    5px;
-@padding-small-horizontal:  10px;
-
-@padding-xs-vertical:       1px;
-@padding-xs-horizontal:     5px;
-
-@line-height-large:         1.33;
-@line-height-small:         1.5;
-
-@border-radius-base:        4px;
-@border-radius-large:       6px;
-@border-radius-small:       3px;
-
-//** Global color for active items (e.g., navs or dropdowns).
-@component-active-color:    #fff;
-//** Global background color for active items (e.g., navs or dropdowns).
-@component-active-bg:       @brand-primary;
-
-//** Width of the `border` for generating carets that indicator dropdowns.
-@caret-width-base:          4px;
-//** Carets increase slightly in size for larger components.
-@caret-width-large:         5px;
-
-
-//== Tables
-//
-//## Customizes the `.table` component with basic values, each used across all table variations.
-
-//** Padding for ``s and ``s.
-@table-cell-padding:            8px;
-//** Padding for cells in `.table-condensed`.
-@table-condensed-cell-padding:  5px;
-
-//** Default background color used for all tables.
-@table-bg:                      transparent;
-//** Background color used for `.table-striped`.
-@table-bg-accent:               #f9f9f9;
-//** Background color used for `.table-hover`.
-@table-bg-hover:                #f5f5f5;
-@table-bg-active:               @table-bg-hover;
-
-//** Border color for table and cell borders.
-@table-border-color:            #ddd;
-
-
-//== Buttons
-//
-//## For each of Bootstrap's buttons, define text, background and border color.
-
-@btn-font-weight:                normal;
-
-@btn-default-color:              #333;
-@btn-default-bg:                 @gray-lighter;
-@btn-default-border:             @gray-lighter;
-
-@btn-primary-color:              #fff;
-@btn-primary-bg:                 @brand-primary;
-@btn-primary-border:             darken(@btn-primary-bg, 5%);
-
-@btn-success-color:              #fff;
-@btn-success-bg:                 @brand-success;
-@btn-success-border:             darken(@btn-success-bg, 5%);
-
-@btn-info-color:                 #fff;
-@btn-info-bg:                    @brand-info;
-@btn-info-border:                darken(@btn-info-bg, 5%);
-
-@btn-warning-color:              #fff;
-@btn-warning-bg:                 @brand-warning;
-@btn-warning-border:             darken(@btn-warning-bg, 5%);
-
-@btn-danger-color:               #fff;
-@btn-danger-bg:                  @brand-danger;
-@btn-danger-border:              darken(@btn-danger-bg, 5%);
-
-@btn-link-disabled-color:        @gray-light;
-
-
-//== Forms
-//
-//##
-
-//** `` background color
-@input-bg:                       #fff;
-//** `` background color
-@input-bg-disabled:              @gray-lighter;
-
-//** Text color for ``s
-@input-color:                    @gray;
-//** `` border color
-@input-border:                   #b2b2b2;
-
-// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4
-//** Default `.form-control` border radius
-@input-border-radius:            @border-radius-base;
-//** Large `.form-control` border radius
-@input-border-radius-large:      @border-radius-large;
-//** Small `.form-control` border radius
-@input-border-radius-small:      @border-radius-small;
-
-//** Border color for inputs on focus
-@input-border-focus:             #d4b33a;
-
-//** Placeholder text color
-@input-color-placeholder:        #999;
-
-//** Default `.form-control` height
-@input-height-base:              (@line-height-computed + (@padding-base-vertical * 2) + 2);
-//** Large `.form-control` height
-@input-height-large:             (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);
-//** Small `.form-control` height
-@input-height-small:             (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);
-
-@legend-color:                   @gray-dark;
-@legend-border-color:            #e5e5e5;
-
-//** Background color for textual input addons
-@input-group-addon-bg:           @gray-lighter;
-//** Border color for textual input addons
-@input-group-addon-border-color: @input-border;
-
-//** Disabled cursor for form controls and buttons.
-@cursor-disabled:                not-allowed;
-
-
-//== Dropdowns
-//
-//## Dropdown menu container and contents.
-
-//** Background for the dropdown menu.
-@dropdown-bg:                    #fff;
-//** Dropdown menu `border-color`.
-@dropdown-border:                rgba(0,0,0,.15);
-//** Dropdown menu `border-color` **for IE8**.
-@dropdown-fallback-border:       #ccc;
-//** Divider color for between dropdown items.
-@dropdown-divider-bg:            #e5e5e5;
-
-//** Dropdown link text color.
-@dropdown-link-color:            @gray-dark;
-//** Hover color for dropdown links.
-@dropdown-link-hover-color:      darken(@gray-dark, 5%);
-//** Hover background for dropdown links.
-@dropdown-link-hover-bg:         #f5f5f5;
-
-//** Active dropdown menu item text color.
-@dropdown-link-active-color:     @component-active-color;
-//** Active dropdown menu item background color.
-@dropdown-link-active-bg:        @component-active-bg;
-
-//** Disabled dropdown menu item background color.
-@dropdown-link-disabled-color:   @gray-light;
-
-//** Text color for headers within dropdown menus.
-@dropdown-header-color:          @gray-light;
-
-//** Deprecated `@dropdown-caret-color` as of v3.1.0
-@dropdown-caret-color:           #000;
-
-
-//-- Z-index master list
-//
-// Warning: Avoid customizing these values. They're used for a bird's eye view
-// of components dependent on the z-axis and are designed to all work together.
-//
-// Note: These variables are not generated into the Customizer.
-
-@zindex-navbar:            1000;
-@zindex-dropdown:          1000;
-@zindex-popover:           1060;
-@zindex-tooltip:           1070;
-@zindex-navbar-fixed:      1030;
-@zindex-modal:             1040;
-
-
-//== Media queries breakpoints
-//
-//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
-
-// Extra small screen / phone
-//** Deprecated `@screen-xs` as of v3.0.1
-@screen-xs:                  480px;
-//** Deprecated `@screen-xs-min` as of v3.2.0
-@screen-xs-min:              @screen-xs;
-//** Deprecated `@screen-phone` as of v3.0.1
-@screen-phone:               @screen-xs-min;
-
-// Small screen / tablet
-//** Deprecated `@screen-sm` as of v3.0.1
-@screen-sm:                  768px;
-@screen-sm-min:              @screen-sm;
-//** Deprecated `@screen-tablet` as of v3.0.1
-@screen-tablet:              @screen-sm-min;
-
-// Medium screen / desktop
-//** Deprecated `@screen-md` as of v3.0.1
-@screen-md:                  992px;
-@screen-md-min:              @screen-md;
-//** Deprecated `@screen-desktop` as of v3.0.1
-@screen-desktop:             @screen-md-min;
-
-// Large screen / wide desktop
-//** Deprecated `@screen-lg` as of v3.0.1
-@screen-lg:                  1200px;
-@screen-lg-min:              @screen-lg;
-//** Deprecated `@screen-lg-desktop` as of v3.0.1
-@screen-lg-desktop:          @screen-lg-min;
-
-// So media queries don't overlap when required, provide a maximum
-@screen-xs-max:              (@screen-sm-min - 1);
-@screen-sm-max:              (@screen-md-min - 1);
-@screen-md-max:              (@screen-lg-min - 1);
-
-
-//== Grid system
-//
-//## Define your custom responsive grid.
-
-//** Number of columns in the grid.
-@grid-columns:              12;
-//** Padding between columns. Gets divided in half for the left and right.
-@grid-gutter-width:         30px;
-// Navbar collapse
-//** Point at which the navbar becomes uncollapsed.
-@grid-float-breakpoint:     @screen-sm-min;
-//** Point at which the navbar begins collapsing.
-@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);
-
-
-//== Container sizes
-//
-//## Define the maximum width of `.container` for different screen sizes.
-
-// Small screen / tablet
-@container-tablet:             (720px + @grid-gutter-width);
-//** For `@screen-sm-min` and up.
-@container-sm:                 @container-tablet;
-
-// Medium screen / desktop
-@container-desktop:            (940px + @grid-gutter-width);
-//** For `@screen-md-min` and up.
-@container-md:                 @container-desktop;
-
-// Large screen / wide desktop
-@container-large-desktop:      (1140px + @grid-gutter-width);
-//** For `@screen-lg-min` and up.
-@container-lg:                 @container-large-desktop;
-
-
-//== Navbar
-//
-//##
-
-// Basics of a navbar
-@navbar-height:                    100px;
-@navbar-margin-bottom:             0;
-@navbar-border-radius:             @border-radius-base;
-@navbar-padding-horizontal:        0;
-@navbar-padding-vertical:          ((@navbar-height - @line-height-computed) / 2);
-@navbar-collapse-max-height:       340px;
-
-@navbar-default-color:             @gray-base;
-@navbar-default-bg:                #f0db4f;
-@navbar-default-border:            #f0db4f;
-
-// Navbar links
-@navbar-default-link-color:                @navbar-default-color;
-@navbar-default-link-hover-color:          @gray-dark;
-@navbar-default-link-hover-bg:             transparent;
-@navbar-default-link-active-color:         @navbar-default-color;
-@navbar-default-link-active-bg:            transparent;
-@navbar-default-link-disabled-color:       #ccc;
-@navbar-default-link-disabled-bg:          transparent;
-
-// Navbar brand label
-@navbar-default-brand-color:               @navbar-default-link-color;
-@navbar-default-brand-hover-color:         darken(@navbar-default-brand-color, 10%);
-@navbar-default-brand-hover-bg:            transparent;
-
-// Navbar toggle
-@navbar-default-toggle-hover-bg:           #ddd;
-@navbar-default-toggle-icon-bar-bg:        @gray-dark;
-@navbar-default-toggle-border-color:       #ddd;
-
-
-// Inverted navbar
-// Reset inverted navbar basics
-@navbar-inverse-color:                      lighten(@gray-light, 15%);
-@navbar-inverse-bg:                         #222;
-@navbar-inverse-border:                     darken(@navbar-inverse-bg, 10%);
-
-// Inverted navbar links
-@navbar-inverse-link-color:                 lighten(@gray-light, 15%);
-@navbar-inverse-link-hover-color:           #fff;
-@navbar-inverse-link-hover-bg:              transparent;
-@navbar-inverse-link-active-color:          @navbar-inverse-link-hover-color;
-@navbar-inverse-link-active-bg:             darken(@navbar-inverse-bg, 10%);
-@navbar-inverse-link-disabled-color:        #444;
-@navbar-inverse-link-disabled-bg:           transparent;
-
-// Inverted navbar brand label
-@navbar-inverse-brand-color:                @navbar-inverse-link-color;
-@navbar-inverse-brand-hover-color:          #fff;
-@navbar-inverse-brand-hover-bg:             transparent;
-
-// Inverted navbar toggle
-@navbar-inverse-toggle-hover-bg:            #333;
-@navbar-inverse-toggle-icon-bar-bg:         #fff;
-@navbar-inverse-toggle-border-color:        #333;
-
-
-//== Navs
-//
-//##
-
-//=== Shared nav styles
-@nav-link-padding:                          10px 15px;
-@nav-link-hover-bg:                         @gray-lighter;
-
-@nav-disabled-link-color:                   @gray-light;
-@nav-disabled-link-hover-color:             @gray-light;
-
-//== Tabs
-@nav-tabs-border-color:                     #ddd;
-
-@nav-tabs-link-hover-border-color:          @gray-lighter;
-
-@nav-tabs-active-link-hover-bg:             @body-bg;
-@nav-tabs-active-link-hover-color:          @gray;
-@nav-tabs-active-link-hover-border-color:   #ddd;
-
-@nav-tabs-justified-link-border-color:            #ddd;
-@nav-tabs-justified-active-link-border-color:     @body-bg;
-
-//== Pills
-@nav-pills-border-radius:                   @border-radius-base;
-@nav-pills-active-link-hover-bg:            @component-active-bg;
-@nav-pills-active-link-hover-color:         @component-active-color;
-
-
-//== Pagination
-//
-//##
-
-@pagination-color:                     @link-color;
-@pagination-bg:                        #fff;
-@pagination-border:                    #ddd;
-
-@pagination-hover-color:               @link-hover-color;
-@pagination-hover-bg:                  @gray-lighter;
-@pagination-hover-border:              #ddd;
-
-@pagination-active-color:              #fff;
-@pagination-active-bg:                 @brand-primary;
-@pagination-active-border:             @brand-primary;
-
-@pagination-disabled-color:            @gray-light;
-@pagination-disabled-bg:               #fff;
-@pagination-disabled-border:           #ddd;
-
-
-//== Pager
-//
-//##
-
-@pager-bg:                             @pagination-bg;
-@pager-border:                         @pagination-border;
-@pager-border-radius:                  15px;
-
-@pager-hover-bg:                       @pagination-hover-bg;
-
-@pager-active-bg:                      @pagination-active-bg;
-@pager-active-color:                   @pagination-active-color;
-
-@pager-disabled-color:                 @pagination-disabled-color;
-
-
-//== Jumbotron
-//
-//##
-
-@jumbotron-padding:              30px;
-@jumbotron-color:                inherit;
-@jumbotron-bg:                   @gray-lighter;
-@jumbotron-heading-color:        inherit;
-@jumbotron-font-size:            ceil((@font-size-base * 1.5));
-
-
-//== Form states and alerts
-//
-//## Define colors for form feedback states and, by default, alerts.
-
-@state-success-text:             #3c763d;
-@state-success-bg:               #dff0d8;
-@state-success-border:           darken(spin(@state-success-bg, -10), 5%);
-
-@state-info-text:                #31708f;
-@state-info-bg:                  #d9edf7;
-@state-info-border:              darken(spin(@state-info-bg, -10), 7%);
-
-@state-warning-text:             #8a6d3b;
-@state-warning-bg:               #fcf8e3;
-@state-warning-border:           darken(spin(@state-warning-bg, -10), 5%);
-
-@state-danger-text:              #a94442;
-@state-danger-bg:                #f2dede;
-@state-danger-border:            darken(spin(@state-danger-bg, -10), 5%);
-
-
-//== Tooltips
-//
-//##
-
-//** Tooltip max width
-@tooltip-max-width:           200px;
-//** Tooltip text color
-@tooltip-color:               #fff;
-//** Tooltip background color
-@tooltip-bg:                  #000;
-@tooltip-opacity:             .9;
-
-//** Tooltip arrow width
-@tooltip-arrow-width:         5px;
-//** Tooltip arrow color
-@tooltip-arrow-color:         @tooltip-bg;
-
-
-//== Popovers
-//
-//##
-
-//** Popover body background color
-@popover-bg:                          #fff;
-//** Popover maximum width
-@popover-max-width:                   276px;
-//** Popover border color
-@popover-border-color:                rgba(0,0,0,.2);
-//** Popover fallback border color
-@popover-fallback-border-color:       #ccc;
-
-//** Popover title background color
-@popover-title-bg:                    darken(@popover-bg, 3%);
-
-//** Popover arrow width
-@popover-arrow-width:                 10px;
-//** Popover arrow color
-@popover-arrow-color:                 @popover-bg;
-
-//** Popover outer arrow width
-@popover-arrow-outer-width:           (@popover-arrow-width + 1);
-//** Popover outer arrow color
-@popover-arrow-outer-color:           fadein(@popover-border-color, 5%);
-//** Popover outer arrow fallback color
-@popover-arrow-outer-fallback-color:  darken(@popover-fallback-border-color, 20%);
-
-
-//== Labels
-//
-//##
-
-//** Default label background color
-@label-default-bg:            @gray-light;
-//** Primary label background color
-@label-primary-bg:            @brand-primary;
-//** Success label background color
-@label-success-bg:            @brand-success;
-//** Info label background color
-@label-info-bg:               @brand-info;
-//** Warning label background color
-@label-warning-bg:            @brand-warning;
-//** Danger label background color
-@label-danger-bg:             @brand-danger;
-
-//** Default label text color
-@label-color:                 #fff;
-//** Default text color of a linked label
-@label-link-hover-color:      #fff;
-
-
-//== Modals
-//
-//##
-
-//** Padding applied to the modal body
-@modal-inner-padding:         15px;
-
-//** Padding applied to the modal title
-@modal-title-padding:         15px;
-//** Modal title line-height
-@modal-title-line-height:     @line-height-base;
-
-//** Background color of modal content area
-@modal-content-bg:                             #fff;
-//** Modal content border color
-@modal-content-border-color:                   rgba(0,0,0,.2);
-//** Modal content border color **for IE8**
-@modal-content-fallback-border-color:          #999;
-
-//** Modal backdrop background color
-@modal-backdrop-bg:           #000;
-//** Modal backdrop opacity
-@modal-backdrop-opacity:      .5;
-//** Modal header border color
-@modal-header-border-color:   #e5e5e5;
-//** Modal footer border color
-@modal-footer-border-color:   @modal-header-border-color;
-
-@modal-lg:                    900px;
-@modal-md:                    600px;
-@modal-sm:                    300px;
-
-
-//== Alerts
-//
-//## Define alert colors, border radius, and padding.
-
-@alert-padding:               15px;
-@alert-border-radius:         @border-radius-base;
-@alert-link-font-weight:      bold;
-
-@alert-success-bg:            @state-success-bg;
-@alert-success-text:          @state-success-text;
-@alert-success-border:        @state-success-border;
-
-@alert-info-bg:               @state-info-bg;
-@alert-info-text:             @state-info-text;
-@alert-info-border:           @state-info-border;
-
-@alert-warning-bg:            @state-warning-bg;
-@alert-warning-text:          @state-warning-text;
-@alert-warning-border:        @state-warning-border;
-
-@alert-danger-bg:             @state-danger-bg;
-@alert-danger-text:           @state-danger-text;
-@alert-danger-border:         @state-danger-border;
-
-
-//== Progress bars
-//
-//##
-
-//** Background color of the whole progress component
-@progress-bg:                 #f5f5f5;
-//** Progress bar text color
-@progress-bar-color:          #fff;
-//** Variable for setting rounded corners on progress bar.
-@progress-border-radius:      @border-radius-base;
-
-//** Default progress bar color
-@progress-bar-bg:             @brand-primary;
-//** Success progress bar color
-@progress-bar-success-bg:     @brand-success;
-//** Warning progress bar color
-@progress-bar-warning-bg:     @brand-warning;
-//** Danger progress bar color
-@progress-bar-danger-bg:      @brand-danger;
-//** Info progress bar color
-@progress-bar-info-bg:        @brand-info;
-
-
-//== List group
-//
-//##
-
-//** Background color on `.list-group-item`
-@list-group-bg:                 #fff;
-//** `.list-group-item` border color
-@list-group-border:             #ddd;
-//** List group border radius
-@list-group-border-radius:      @border-radius-base;
-
-//** Background color of single list items on hover
-@list-group-hover-bg:           #f5f5f5;
-//** Text color of active list items
-@list-group-active-color:       @component-active-color;
-//** Background color of active list items
-@list-group-active-bg:          @component-active-bg;
-//** Border color of active list elements
-@list-group-active-border:      @list-group-active-bg;
-//** Text color for content within active list items
-@list-group-active-text-color:  lighten(@list-group-active-bg, 40%);
-
-//** Text color of disabled list items
-@list-group-disabled-color:      @gray-light;
-//** Background color of disabled list items
-@list-group-disabled-bg:         @gray-lighter;
-//** Text color for content within disabled list items
-@list-group-disabled-text-color: @list-group-disabled-color;
-
-@list-group-link-color:         #555;
-@list-group-link-hover-color:   @list-group-link-color;
-@list-group-link-heading-color: #333;
-
-
-//== Panels
-//
-//##
-
-@panel-bg:                    #fff;
-@panel-body-padding:          15px;
-@panel-heading-padding:       10px 15px;
-@panel-footer-padding:        @panel-heading-padding;
-@panel-border-radius:         @border-radius-base;
-
-//** Border color for elements within panels
-@panel-inner-border:          #ddd;
-@panel-footer-bg:             #f5f5f5;
-
-@panel-default-text:          @gray-dark;
-@panel-default-border:        #ddd;
-@panel-default-heading-bg:    #f5f5f5;
-
-@panel-primary-text:          #fff;
-@panel-primary-border:        @brand-primary;
-@panel-primary-heading-bg:    @brand-primary;
-
-@panel-success-text:          @state-success-text;
-@panel-success-border:        @state-success-border;
-@panel-success-heading-bg:    @state-success-bg;
-
-@panel-info-text:             @state-info-text;
-@panel-info-border:           @state-info-border;
-@panel-info-heading-bg:       @state-info-bg;
-
-@panel-warning-text:          @state-warning-text;
-@panel-warning-border:        @state-warning-border;
-@panel-warning-heading-bg:    @state-warning-bg;
-
-@panel-danger-text:           @state-danger-text;
-@panel-danger-border:         @state-danger-border;
-@panel-danger-heading-bg:     @state-danger-bg;
-
-
-//== Thumbnails
-//
-//##
-
-//** Padding around the thumbnail image
-@thumbnail-padding:           4px;
-//** Thumbnail background color
-@thumbnail-bg:                @body-bg;
-//** Thumbnail border color
-@thumbnail-border:            #ddd;
-//** Thumbnail border radius
-@thumbnail-border-radius:     @border-radius-base;
-
-//** Custom text color for thumbnail captions
-@thumbnail-caption-color:     @text-color;
-//** Padding around the thumbnail caption
-@thumbnail-caption-padding:   9px;
-
-
-//== Wells
-//
-//##
-
-@well-bg:                     #f5f5f5;
-@well-border:                 darken(@well-bg, 7%);
-
-
-//== Badges
-//
-//##
-
-@badge-color:                 #fff;
-//** Linked badge text color on hover
-@badge-link-hover-color:      #fff;
-@badge-bg:                    @gray-light;
-
-//** Badge text color in active nav link
-@badge-active-color:          @link-color;
-//** Badge background color in active nav link
-@badge-active-bg:             #fff;
-
-@badge-font-weight:           bold;
-@badge-line-height:           1;
-@badge-border-radius:         10px;
-
-
-//== Breadcrumbs
-//
-//##
-
-@breadcrumb-padding-vertical:   8px;
-@breadcrumb-padding-horizontal: 15px;
-//** Breadcrumb background color
-@breadcrumb-bg:                 #f5f5f5;
-//** Breadcrumb text color
-@breadcrumb-color:              #ccc;
-//** Text color of current page in the breadcrumb
-@breadcrumb-active-color:       @gray-light;
-//** Textual separator for between breadcrumb elements
-@breadcrumb-separator:          "/";
-
-
-//== Carousel
-//
-//##
-
-@carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6);
-
-@carousel-control-color:                      #fff;
-@carousel-control-width:                      15%;
-@carousel-control-opacity:                    .5;
-@carousel-control-font-size:                  20px;
-
-@carousel-indicator-active-bg:                #fff;
-@carousel-indicator-border-color:             #fff;
-
-@carousel-caption-color:                      #fff;
-
-
-//== Close
-//
-//##
-
-@close-font-weight:           bold;
-@close-color:                 #000;
-@close-text-shadow:           0 1px 0 #fff;
-
-
-//== Code
-//
-//##
-
-@code-color:                  #c7254e;
-@code-bg:                     #f9f2f4;
-
-@kbd-color:                   #fff;
-@kbd-bg:                      #333;
-
-@pre-bg:                      #f5f5f5;
-@pre-color:                   @gray-dark;
-@pre-border-color:            #ccc;
-@pre-scrollable-max-height:   340px;
-
-
-//== Type
-//
-//##
-
-//** Horizontal offset for forms and lists.
-@component-offset-horizontal: 180px;
-//** Text muted color
-@text-muted:                  @gray-light;
-//** Abbreviations and acronyms border color
-@abbr-border-color:           @gray-light;
-//** Headings small color
-@headings-small-color:        @gray-light;
-//** Blockquote small color
-@blockquote-small-color:      @gray-light;
-//** Blockquote font size
-@blockquote-font-size:        (@font-size-base * 1.25);
-//** Blockquote border color
-@blockquote-border-color:     @gray-lighter;
-//** Page header border color
-@page-header-border-color:    @gray-lighter;
-//** Width of horizontal description list titles
-@dl-horizontal-offset:        @component-offset-horizontal;
-//** Horizontal line color.
-@hr-border:                   #b2b2b2;
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/buttons.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/buttons.less
deleted file mode 100644
index bbb3c620..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/buttons.less
+++ /dev/null
@@ -1,61 +0,0 @@
-//
-// Buttons
-// --------------------------------------------------
-
-
-// Base styles
-// --------------------------------------------------
-
-// Core styles
-.btn {
-  display: inline-block;
-  padding: 5px 6px 4px 8px;
-  margin-top: 0;
-  margin-bottom: 0; // For input.btn
-  font-family: "Open Sans Condensed", sans-serif;
-  font-size: @font-size-base * 1.3;
-  font-weight: 700;
-  text-transform: uppercase;
-  letter-spacing: 1px;
-  line-height: @line-height-computed;
-  text-align: center;
-  vertical-align: middle;
-  touch-action: manipulation;
-  cursor: pointer;
-  background-color: @gray-lighter;
-  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
-  border: none;
-  border-radius: 3px;
-  .box-shadow(1px 1px 0 rgba(0, 0, 0, 0.3));
-  outline: none !important;
-  white-space: nowrap;
-  .user-select(none);
-
-  &:focus,
-  &.focus {
-    .tab-focus();
-  }
-
-  &:hover,
-  &:focus,
-  &.focus {
-    background-color: lighten(@gray-lighter, 5%);
-    text-decoration: none;
-    .transition(background-color .1s linear);
-  }
-
-  &:active,
-  &.active {
-    outline: 0;
-    padding: 6px 5px 3px 9px;
-  }
-
-  &.disabled,
-  &[disabled],
-  fieldset[disabled] & {
-    cursor: @cursor-disabled;
-    pointer-events: none; // Future-proof disabling of clicks
-    .opacity(65);
-    .box-shadow(1px 1px 0 rgba(0, 0, 0, 0.15));
-  }
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/code.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/code.less
deleted file mode 100644
index 33af7555..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/code.less
+++ /dev/null
@@ -1,8 +0,0 @@
-code {
-  margin: 0 2px;
-  padding: 1px 5px;
-  border: 1px solid #E1E1E8;
-  background-color: #F7F7F9;
-  color: @gray-dark;
-  font-size: 85%;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/evaluation-form.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/evaluation-form.less
deleted file mode 100644
index 6d505d56..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/evaluation-form.less
+++ /dev/null
@@ -1,91 +0,0 @@
-//
-// Evaluation form
-// --------------------------------------------------
-
-
-.evaluation-form {
-  .clearfix();
-
-  textarea {
-    height: 200px;
-  }
-}
-
-.evaluation-input-output {
-  float: left;
-  width: 65%;
-}
-
-.evaluation-input-clear-button {
-  position: absolute;
-  top: 0;
-  right: 0;
-  width: 15px;
-  height: 15px;
-  margin: 6px;
-  display: inline-block;
-  background: transparent url("../images/clear-text.png") no-repeat scroll 0 0;
-  opacity: 0.75;
-  line-height: 0;
-  vertical-align: bottom;
-  cursor: pointer;
-
-  &:hover {
-   opacity: 1;
- }
-}
-
-.evaluation-input-clear-button.with-scrollbar {
-  margin-right: 29px;
-}
-
-.evaluation-output {
-  margin-top: 1.5em;
-}
-
-.evaluation-input-field,
-.evaluation-output-field {
-  margin-bottom: 0.5em;
-  .box-sizing(border-box);
-  overflow-x: hidden;
-  line-height: @line-height-computed;
-}
-
-.evaluation-output-field {
-  &[readonly] {
-    cursor: auto;
-    background-color: @input-bg;
-  }
-}
-
-.evaluation-error-header {
-  margin-bottom: @line-height-computed;
-  padding-left: 52px;
-  background: transparent url("../images/icons/48x48/error.png") no-repeat scroll 0 50%;
-  color: @black;
-  font-family: @font-family-sans-serif;
-  font-weight: bold;
-  line-height: 48px;
-  vertical-align: middle;
-}
-
-ul.evaluation-error-list,
-ul.evaluation-warning-list {
-  li {
-    margin-bottom: 1em;
-
-    pre {
-      margin-top: 0.5em;
-      white-space: pre;
-      overflow: auto;
-    }
-  }
-}
-
-ul.evaluation-error-list li pre {
-  background-color: @state-danger-bg;
-}
-
-ul.evaluation-warning-list li pre {
-  background-color: @state-warning-bg;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/forms.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/forms.less
deleted file mode 100644
index 2ceb0559..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/forms.less
+++ /dev/null
@@ -1,99 +0,0 @@
-//
-// Forms
-// --------------------------------------------------
-
-// GENERAL STYLES
-// --------------
-
-label {
-  font-weight: normal;
-}
-
-
-// Form controls
-// -------------------------
-
-// Common form controls
-.form-control {
-  line-height: @input-height-base;
-}
-
-.textarea-wrapper {
-  position: relative;
-}
-
-// Form groups
-.form-group {
-  margin-bottom: 0.5em;
-}
-
-// Info and errors
-// --------------------------
-.message-info {
-  border: 1px solid;
-  clear: both;
-  padding: 10px 20px;
-  color: @state-info-text;
-}
-
-.message-error {
-  clear: both;
-  color: @state-danger-text;
-  font-size: 1.1em;
-  font-weight: bold;
-  margin: 20px 0 10px 0;
-}
-
-.message-success {
-  color: @state-success-text;
-  font-size: 1.3em;
-  font-weight: bold;
-  margin: 20px 0 10px 0;
-}
-
-.error {
-  color: @state-danger-text;
-}
-
-// Styles for validation helpers
-// --------------------------
-.validators {
-  font-style: normal;
-  padding-bottom: 0.5em;
-}
-
-.field-validation-error {
-  display: block;
-  padding-bottom: 0.5em;
-  color: @state-danger-text;
-  font-weight: bold;
-}
-
-.field-validation-valid {
-  display: none;
-}
-
-input.input-validation-error,
-textarea.input-validation-error,
-select.input-validation-error
-{
-  border: 1px solid @state-danger-border;
-  background-color: @state-danger-bg;
-  .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work
-
-  &:focus {
-    border-color: @state-danger-border;
-    @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@state-danger-text, 20%);
-    .box-shadow(@shadow);
-  }
-}
-
-.validation-summary-errors {
-  color: @state-danger-text;
-  font-weight: bold;
-  font-size: 1.1em;
-}
-
-.validation-summary-valid {
-  display: none;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/icons.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/icons.less
deleted file mode 100644
index 79b9d9e5..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/icons.less
+++ /dev/null
@@ -1,32 +0,0 @@
-//
-// Icons
-// --------------------------------------------------
-
-
-.icon {
-  background: transparent url(../images/icons/32x32/social-media-icons-32.png) no-repeat scroll;
-  display: inline-block;
-  line-height: 0;
-  vertical-align: bottom;
-}
-
-.icon-32 {
-  height: 32px;
-  width: 32px;
-}
-
-.icon-facebook {
-  background-position: 0 0;
-}
-
-.icon-twitter {
-  background-position: 0 -32px;
-}
-
-.icon-linkedin {
-  background-position: 0 -64px;
-}
-
-.icon-rss {
-  background-position: 0 -128px;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/layout.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/layout.less
deleted file mode 100644
index 35a7f386..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/layout.less
+++ /dev/null
@@ -1,128 +0,0 @@
-html,
-body {
-  margin: 0;
-  height: 100%;
-  /* The html and body elements cannot have any padding or margin */
-}
-
-/* Wrapper for page content to push down footer */
-.l-wrapper {
-  min-height: 100%;
-  height: auto !important;
-  height: 100%;
-  /* Negative indent footer by it's height */
-  margin: 0 auto (-1 * @footer-height);
-}
-
-.l-constrained {
-  margin: 0 auto;
-  padding-left: 20px;
-  padding-right: 20px;
-  max-width: 1200px;
-  min-width: 800px;
-}
-
-.l-header {
-  border-top: solid 10px @black;
-  border-bottom: 1px solid #d4b33a;
-  background-color: #f0db4f;
-
-  .l-constrained {
-    padding-top: 20px;
-    padding-bottom: 20px;
-    .clearfix();
-  }
-}
-
-.l-content {
-  .clearfix();
-}
-
-.l-main-content {
-  float: left;
-  width: 70%;
-}
-
-.l-sidebar {
-  float: right;
-  width: 30%;
-}
-
-/* Set the fixed height of the footer here */
-.l-push,
-.l-footer {
-  height: @footer-height;
-}
-
-.l-footer {
-  width: 100%;
-  background-color: @black;
-  color: @gray-lighter;
-  font-size: @font-size-small;
-  line-height: 100%;
-
-  .l-constrained {
-    padding-top: (@footer-height - 32) / 2;
-    .clearfix();
-  }
-
-  a {
-    color: @gray-lighter;
-    text-decoration: none;
-
-    &:hover,
-    &:active {
-      text-decoration: underline;
-    }
-  }
-}
-
-
-// Header
-// -------------------------
-
-.logo {
-  margin: 0;
-
-  a {
-    display: block;
-    float: left;
-    width: 100px;
-    height: 100px;
-    background: transparent url("../images/jsengineswitcher-logo.png") no-repeat scroll 0 0;
-    text-indent: -9999em;
-  }
-}
-
-.primary-nav {
-  position: relative;
-  left: 40px;
-  float: left;
-}
-
-
-// Footer
-// -------------------------
-
-.l-copyright {
-  float: left;
-    p {
-      margin: 0;
-      padding: 0;
-  }
-}
-
-.l-social {
-  float: right;
-
-  li {
-    display: inline;
-    list-style: none outside none;
-    padding-left: 10px;
-
-    a {
-      text-indent: -9999px;
-      outline: none;
-    }
-  }
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/mixins.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/mixins.less
deleted file mode 100644
index d26eee79..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/mixins.less
+++ /dev/null
@@ -1,9 +0,0 @@
-//
-// Mixins
-// --------------------------------------------------
-
-// NO Drop shadows
-.no-box-shadow {
-  -webkit-box-shadow: none; // iOS <4.3 & Android <4.1
-          box-shadow: none;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/navbar.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/navbar.less
deleted file mode 100644
index 95edf3c2..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/navbar.less
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// Navbars
-// --------------------------------------------------
-
-
-// Wrapper and base class
-//
-// Provide a static navbar from which we expand to create full-width, fixed, and
-// other navbar variations.
-
-.navbar {
-  border: none;
-  border-radius: 0;
-}
-
-// Navbar nav links
-//
-// Builds on top of the `.nav` components with it's own modifier class to make
-// the nav the full height of the horizontal nav (above 768px).
-
-.navbar-nav {
-  float: left;
-  margin: 0 auto;
-
-  > li {
-    > a {
-      float: none;
-      // Vertically center the text given @navbar-height
-      padding: ((@navbar-height - @line-height-computed) / 2) 15px ((@navbar-height - @line-height-computed) / 2);
-      border: 1px solid transparent;
-      font-family: "Open Sans", sans-serif;
-      font-size: 2.0em;
-      text-decoration: none;
-      text-transform: uppercase;
-      outline: none;
-    }
-  }
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/page-socials.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/page-socials.less
deleted file mode 100644
index ea12dc09..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/page-socials.less
+++ /dev/null
@@ -1,14 +0,0 @@
-.page-socials {
-  min-height: 60px;
-  margin-top: 20px;
-  padding-top: 15px;
-  border-top: 1px solid #b2b2b2;
-}
-
-.share-buttons {
-  li {
-    margin-right: 15px;
-    vertical-align: top;
-    line-height: normal;
-  }
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/type.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/type.less
deleted file mode 100644
index 02d69502..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/type.less
+++ /dev/null
@@ -1,24 +0,0 @@
-//
-// Typography
-// --------------------------------------------------
-
-// Headings
-// -------------------------
-
-h1, h2, h3 {
-  margin-top: 10px;
-}
-
-h1, h2 {
-  line-height: 40px;
-}
-
-h2 {
-  color: @black;
-  font-weight: bold;
-}
-
-h3 {
-  color: @gray-dark;
-  line-height: @line-height-computed * 1.25;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/variables.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/variables.less
deleted file mode 100644
index 498c9796..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore5.Mvc5/wwwroot/styles/variables.less
+++ /dev/null
@@ -1,7 +0,0 @@
-// Colors
-// -------------------------
-@black:                 #1d0d0d;
-
-// Footer
-// -------------------------
-@footer-height:                    55px;
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/.bowerrc b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/.bowerrc
deleted file mode 100644
index ea81a597..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/.bowerrc
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "registry": "https://registry.bower.io",
-  "directory": "wwwroot/lib"
-}
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/Infrastructure/Helpers/CommonExtensions.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/Infrastructure/Helpers/CommonExtensions.cs
deleted file mode 100644
index 6203fe87..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/Infrastructure/Helpers/CommonExtensions.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using System.Text.RegularExpressions;
-
-using Microsoft.AspNetCore.Html;
-using Microsoft.AspNetCore.Mvc.Rendering;
-
-namespace JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6.Infrastructure.Helpers
-{
-	public static class CommonExtensions
-	{
-		public static HtmlString EncodedReplace(this IHtmlHelper htmlHelper, string input,
-			string pattern, string replacement)
-		{
-			return new HtmlString(Regex.Replace(htmlHelper.Encode(input), pattern, replacement));
-		}
-	}
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/Infrastructure/TagHelpers/ConditionalCommentType.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/Infrastructure/TagHelpers/ConditionalCommentType.cs
deleted file mode 100644
index aa2b8eca..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/Infrastructure/TagHelpers/ConditionalCommentType.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-namespace JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6.Infrastructure.TagHelpers
-{
-	public enum ConditionalCommentType
-	{
-		Hidden,
-		Revealed,
-		RevealedValidating,
-		RevealedValidatingSimplified
-	}
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6.csproj b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6.csproj
index 27e3bf9e..726386ed 100644
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6.csproj
+++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6.csproj
@@ -2,11 +2,13 @@
 
   
     JS Engine Switcher: Sample ASP.NET Core 6.0 MVC 6 Site
-    3.21.3
+    3.30.2
     net6.0
     enable
     Exe
     true
+    $(NoWarn);NETSDK1138
+    true
     true
     true
     false
@@ -37,28 +39,13 @@
     
     
     
+    
     
     
     
     
   
 
-  
-    
-  
-  
-    
-  
-  
-    
-  
-  
-    
-  
-  
-    
-    
-    
-  
+  
 
 
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/Program.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/Program.cs
index 3a1bc256..2e472860 100644
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/Program.cs
+++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/Program.cs
@@ -13,7 +13,13 @@
 using JavaScriptEngineSwitcher.Vroom;
 using JavaScriptEngineSwitcher.Yantra;
 
-var builder = WebApplication.CreateBuilder(args);
+var builder = WebApplication.CreateBuilder(new WebApplicationOptions()
+{
+	WebRootPath = Path.Combine(
+		Directory.GetCurrentDirectory(),
+		"../JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot"
+	)
+});
 var env = builder.Environment;
 var configuration = new ConfigurationBuilder()
 	.SetBasePath(env.ContentRootPath)
@@ -34,8 +40,10 @@
 
 // Add JavaScriptEngineSwitcher services to the services container.
 services.AddJsEngineSwitcher(options =>
-	options.DefaultEngineName = ChakraCoreJsEngine.EngineName
-)
+{
+	options.AllowCurrentProperty = false;
+	options.DefaultEngineName = ChakraCoreJsEngine.EngineName;
+})
 	.AddChakraCore()
 	.AddJint()
 	.AddJurassic()
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/Views/Home/Contact.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/Views/Home/Contact.cshtml
index cd9663df..58785ebe 100644
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/Views/Home/Contact.cshtml
+++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/Views/Home/Contact.cshtml
@@ -5,19 +5,4 @@
 

@ViewBag.Title

@ViewBag.Body -
- -@section Scripts { - -} \ No newline at end of file + \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/Views/Shared/_JsEvaluationErrorList.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/Views/Shared/_JsEvaluationErrorList.cshtml index a8f2a202..9e0601d6 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/Views/Shared/_JsEvaluationErrorList.cshtml +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/Views/Shared/_JsEvaluationErrorList.cshtml @@ -1,4 +1,4 @@ -@using JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6.Infrastructure.Helpers +@using JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure.Helpers @using JavaScriptEngineSwitcher.Sample.Logic.Models @model IList diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/Views/Shared/_Layout.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/Views/Shared/_Layout.cshtml index 1edcbebc..b1f433fd 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/Views/Shared/_Layout.cshtml +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/Views/Shared/_Layout.cshtml @@ -1,4 +1,4 @@ -@using JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6.Infrastructure.TagHelpers +@using JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure.TagHelpers @@ -61,9 +61,10 @@ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/Views/_ViewImports.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/Views/_ViewImports.cshtml index 6a3fbed1..8fe8384e 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/Views/_ViewImports.cshtml +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/Views/_ViewImports.cshtml @@ -1,2 +1,2 @@ @addTagHelper "*, Microsoft.AspNetCore.Mvc.TagHelpers" -@addTagHelper "*, JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6" \ No newline at end of file +@addTagHelper "*, JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure" \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/bower.json b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/bower.json deleted file mode 100644 index 992994cf..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/bower.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "jsengineswitcher.sample.aspnetcore6.mvc6", - "dependencies": { - "modernizr": "2.8.3", - "jquery-compat": "jquery#1.10.2", - "jquery": "jquery#2.0.3", - "jquery-validation": "1.13.1", - "jquery-validation-unobtrusive": "3.2.3", - "bootstrap": "3.3.0" - } -} diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/gulpfile.js b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/gulpfile.js deleted file mode 100644 index 0f259437..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/gulpfile.js +++ /dev/null @@ -1,130 +0,0 @@ -/*global require, exports */ -/*jshint esversion: 6 */ -const WEB_ROOT_PATH = "wwwroot"; -const BOWER_DIR_PATH = WEB_ROOT_PATH + "/lib"; -const STYLE_DIR_PATH = WEB_ROOT_PATH + '/styles'; -const SCRIPT_DIR_PATH = WEB_ROOT_PATH + '/scripts'; - -// include plug-ins -let { src, dest, series, parallel, watch } = require('gulp'); -let del = require('del'); -let sourcemaps = require('gulp-sourcemaps'); -let rename = require('gulp-rename'); -let concat = require('gulp-concat'); -let less = require('gulp-less'); -let autoprefixer = require('gulp-autoprefixer'); -let cleanCss = require('gulp-clean-css'); -let uglify = require('gulp-uglify'); - -//#region Clean -//#region Clean builded assets -function cleanBuildedStyles() { - return del([STYLE_DIR_PATH + '/build/*']); -} - -function cleanBuildedScripts() { - return del([SCRIPT_DIR_PATH + '/build/*']); -} - -let cleanBuildedAssets = parallel(cleanBuildedStyles, cleanBuildedScripts); -//#endregion -//#endregion - -//#region Build assets -//#region Build styles -let autoprefixerOptions = { - overrideBrowserslist: ['> 1%', 'last 3 versions', 'Firefox ESR', 'Opera 12.1'], - cascade: true -}; -let cssCleanOptions = { specialComments: '*' }; -let cssRenameOptions = { extname: '.min.css' }; - -function buildCommonStyles() { - return src([STYLE_DIR_PATH + '/app.less']) - .pipe(sourcemaps.init()) - .pipe(less({ - relativeUrls: true, - rootpath: '/styles/' - })) - .pipe(autoprefixer(autoprefixerOptions)) - .pipe(sourcemaps.write('./')) - .pipe(dest(STYLE_DIR_PATH + '/build')) - .pipe(sourcemaps.init({ loadMaps: true })) - .pipe(concat('common-styles.css')) - .pipe(cleanCss(cssCleanOptions)) - .pipe(rename(cssRenameOptions)) - .pipe(sourcemaps.write('./')) - .pipe(dest(STYLE_DIR_PATH + '/build')) - ; -} - -let buildStyles = buildCommonStyles; -//#endregion - -//#region Build scripts -let jsConcatOptions = { newLine: ';' }; -let jsUglifyOptions = { - output: { comments: /^!/ } -}; -let jsRenameOptions = { extname: '.min.js' }; - -function buildModernizrScripts() { - return src([BOWER_DIR_PATH + '/modernizr/modernizr.js']) - .pipe(sourcemaps.init()) - .pipe(uglify(jsUglifyOptions)) - .pipe(rename(jsRenameOptions)) - .pipe(sourcemaps.write('./')) - .pipe(dest(SCRIPT_DIR_PATH + '/build')) - ; -} - -function buildCommonScripts() { - return src([SCRIPT_DIR_PATH + '/common.js']) - .pipe(sourcemaps.init({ loadMaps: true })) - .pipe(rename({ basename: 'common-scripts' })) - .pipe(uglify(jsUglifyOptions)) - .pipe(rename(jsRenameOptions)) - .pipe(sourcemaps.write('./')) - .pipe(dest(SCRIPT_DIR_PATH + '/build')) - ; -} - -function buildEvaluationFormScripts() { - return src([BOWER_DIR_PATH + '/jquery-validation/dist/jquery.validate.js', - BOWER_DIR_PATH + '/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js', - BOWER_DIR_PATH + '/bootstrap/js/button.js', - SCRIPT_DIR_PATH + '/evaluation-form.js']) - .pipe(sourcemaps.init({ loadMaps: true })) - .pipe(concat('evaluation-form-scripts.js', jsConcatOptions)) - .pipe(uglify(jsUglifyOptions)) - .pipe(rename(jsRenameOptions)) - .pipe(sourcemaps.write('./')) - .pipe(dest(SCRIPT_DIR_PATH + '/build')) - ; -} - -let buildScripts = parallel(buildModernizrScripts, buildCommonScripts, buildEvaluationFormScripts); -//#endregion - -let buildAssets = parallel(buildStyles, buildScripts); -//#endregion - -//#region Watch assets -function watchStyles() { - return watch([STYLE_DIR_PATH + '/**/*.{less,css}', '!' + STYLE_DIR_PATH + '/build/**/*.*'], - buildStyles); -} - -function watchScripts() { - return watch([SCRIPT_DIR_PATH + '/**/*.js', '!' + SCRIPT_DIR_PATH + '/build/**/*.*'], - buildScripts); -} - -let watchAssets = parallel(watchStyles, watchScripts); -//#endregion - -// Export tasks -exports.cleanBuildedAssets = cleanBuildedAssets; -exports.buildAssets = buildAssets; -exports.watchAssets = watchAssets; -exports.default = series(cleanBuildedAssets, buildAssets); \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/package.json b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/package.json deleted file mode 100644 index 5fda93d4..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "javascriptengineswitcher.sample.aspnetcore6.mvc6", - "private": true, - "version": "3.21.3", - "devDependencies": { - "gulp": "4.0.2", - "del": "5.1.0", - "gulp-sourcemaps": "2.6.5", - "gulp-rename": "2.0.0", - "gulp-concat": "2.6.1", - "gulp-less": "4.0.1", - "gulp-autoprefixer": "7.0.1", - "gulp-clean-css": "4.2.0", - "gulp-uglify": "3.0.2" - } -} diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/images/0.gif b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/images/0.gif deleted file mode 100644 index 35d42e80..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/images/0.gif and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/images/clear-text.png b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/images/clear-text.png deleted file mode 100644 index 9d217b7f..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/images/clear-text.png and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/images/icons/32x32/social-media-icons-32.png b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/images/icons/32x32/social-media-icons-32.png deleted file mode 100644 index 49aa1fe3..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/images/icons/32x32/social-media-icons-32.png and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/images/icons/48x48/error.png b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/images/icons/48x48/error.png deleted file mode 100644 index 3d6185f7..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/images/icons/48x48/error.png and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/images/jsengineswitcher-logo.png b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/images/jsengineswitcher-logo.png deleted file mode 100644 index 12ed97e0..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/images/jsengineswitcher-logo.png and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/scripts/_references.js b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/scripts/_references.js deleted file mode 100644 index 2b54eea8..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/scripts/_references.js and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/scripts/common.js b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/scripts/common.js deleted file mode 100644 index c94bf102..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/scripts/common.js +++ /dev/null @@ -1,29 +0,0 @@ -var jsEngineSwitcher; - -(function (jsEngineSwitcher, undefined) { - "use strict"; - - jsEngineSwitcher.registerNamespace = function (namespaceString) { - var parts = namespaceString.split("."), - parent = jsEngineSwitcher, - i - ; - - if (parts[0] === "jsEngineSwitcher") { - parts = parts.slice(1); - } - - for (i = 0; i < parts.length; i += 1) { - if (typeof parent[parts[i]] === "undefined") { - parent[parts[i]] = {}; - } - parent = parent[parts[i]]; - } - - return parent; - }; - - jsEngineSwitcher.hasScrollbar = function(elem) { - return (elem.clientHeight < elem.scrollHeight); - }; -}(jsEngineSwitcher = jsEngineSwitcher || {})); \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/scripts/evaluation-form.js b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/scripts/evaluation-form.js deleted file mode 100644 index da1f0199..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/scripts/evaluation-form.js +++ /dev/null @@ -1,83 +0,0 @@ -(function (jsEngineSwitcher, $, undefined) { - "use strict"; - - var $evaluationForm, - $evaluationInputField, - $evaluationInputClearButton, - $evaluateButton - ; - - $(function () { - $evaluationForm = $("form[data-form-type='evaluation-form']"); - $evaluationInputField = $(":input[data-control-type='evaluation-input-field']", $evaluationForm); - $evaluationInputClearButton = $("
"); - $evaluateButton = $(":input[data-control-type='evaluate-button']", $evaluationForm); - - $evaluationForm.on("submit", onEvaluationFormSubmitHandler); - - $evaluationInputClearButton.on("click", onEvaluationInputClearButtonClickHandler); - $evaluationInputField.parent().append($evaluationInputClearButton); - refreshEvaluationInputClearButton(); - $evaluationInputField - .on("input propertychange keydown keyup paste", onEvaluationInputFieldChangeHandler) - ; - - $evaluateButton.removeAttr("disabled"); - }); - - $(window).unload(function() { - $evaluationForm.off("submit", onEvaluationFormSubmitHandler); - - $evaluationInputClearButton - .off("click", onEvaluationInputClearButtonClickHandler) - .remove() - ; - - $evaluationInputField - .off("input propertychange keydown keyup paste", onEvaluationInputFieldChangeHandler) - ; - - $evaluationForm = null; - $evaluationInputField = null; - $evaluationInputClearButton = null; - $evaluateButton = null; - }); - - var refreshEvaluationInputClearButton = function() { - if ($.trim($evaluationInputField.val()).length > 0) { - $evaluationInputClearButton.show(); - } else { - $evaluationInputClearButton.hide(); - } - - if (jsEngineSwitcher.hasScrollbar($evaluationInputField.get(0))) { - $evaluationInputClearButton.addClass("with-scrollbar"); - } - else { - $evaluationInputClearButton.removeClass("with-scrollbar"); - } - }; - - var onEvaluationFormSubmitHandler = function () { - var $form = $(this); - if ($form.valid()) { - $evaluateButton.attr("disabled", "disabled"); - $("textarea[data-control-type='evaluation-output-field']", $form).val(''); - - return true; - } - - return false; - }; - - var onEvaluationInputFieldChangeHandler = function () { - refreshEvaluationInputClearButton(); - }; - - var onEvaluationInputClearButtonClickHandler = function() { - $evaluationInputField.val(""); - - var $button = $(this); - $button.hide(); - }; -}(jsEngineSwitcher, jQuery)); \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/app.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/app.less deleted file mode 100644 index c41a9315..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/app.less +++ /dev/null @@ -1,71 +0,0 @@ -/*! - * Bootstrap v3.3.0 (http://getbootstrap.com) - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -// Core variables and mixins -@import "bootstrap-custom-variables.less"; -@import "../lib/bootstrap/less/mixins.less"; - -// Reset -@import "../lib/bootstrap/less/normalize.less"; -//@import "../lib/bootstrap/less/print.less"; -//@import "../lib/bootstrap/less/glyphicons.less"; - -// Core CSS -@import "../lib/bootstrap/less/scaffolding.less"; -@import "../lib/bootstrap/less/type.less"; -@import "../lib/bootstrap/less/code.less"; -//@import "../lib/bootstrap/less/grid.less"; -//@import "../lib/bootstrap/less/tables.less"; -@import "../lib/bootstrap/less/forms.less"; -//@import "../lib/bootstrap/less/buttons.less"; - -// Components -//@import "../lib/bootstrap/less/component-animations.less"; -//@import "../lib/bootstrap/less/dropdowns.less"; -//@import "../lib/bootstrap/less/button-groups.less"; -//@import "../lib/bootstrap/less/input-groups.less"; -@import "../lib/bootstrap/less/navs.less"; -@import "../lib/bootstrap/less/navbar.less"; -//@import "../lib/bootstrap/less/breadcrumbs.less"; -//@import "../lib/bootstrap/less/pagination.less"; -//@import "../lib/bootstrap/less/pager.less"; -//@import "../lib/bootstrap/less/labels.less"; -//@import "../lib/bootstrap/less/badges.less"; -//@import "../lib/bootstrap/less/jumbotron.less"; -//@import "../lib/bootstrap/less/thumbnails.less"; -//@import "../lib/bootstrap/less/alerts.less"; -//@import "../lib/bootstrap/less/progress-bars.less"; -//@import "../lib/bootstrap/less/media.less"; -//@import "../lib/bootstrap/less/list-group.less"; -//@import "../lib/bootstrap/less/panels.less"; -//@import "../lib/bootstrap/less/responsive-embed.less"; -//@import "../lib/bootstrap/less/wells.less"; -//@import "../lib/bootstrap/less/close.less"; - -// Components w/ JavaScript -//@import "../lib/bootstrap/less/modals.less"; -//@import "../lib/bootstrap/less/tooltip.less"; -//@import "../lib/bootstrap/less/popovers.less"; -//@import "../lib/bootstrap/less/carousel.less"; - -// Utility classes -@import "../lib/bootstrap/less/utilities.less"; -//@import "../lib/bootstrap/less/responsive-utilities.less"; - -// JavaScriptEngineSwitcher specs -@import "variables.less"; -@import "mixins.less"; - -@import "type.less"; -@import "code.less"; -@import "forms.less"; -@import "buttons.less"; -@import "icons.less"; -@import "navbar.less"; - -@import "layout.less"; -@import "evaluation-form.less"; -@import "page-socials.less"; \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/bootstrap-custom-variables.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/bootstrap-custom-variables.less deleted file mode 100644 index 0be2aa6f..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/bootstrap-custom-variables.less +++ /dev/null @@ -1,856 +0,0 @@ -// -// Variables -// -------------------------------------------------- - - -//== Colors -// -//## Gray and brand colors for use across Bootstrap. - -@gray-base: #323330; -@gray-darker: lighten(@gray-base, 13.5%); // #222 -@gray-dark: lighten(@gray-base, 20%); // #333 -@gray: lighten(@gray-base, 33.5%); // #555 -@gray-light: lighten(@gray-base, 46.7%); // #777 -@gray-lighter: #e3e3e3; - -@brand-primary: #428bca; -@brand-success: #5cb85c; -@brand-info: #5bc0de; -@brand-warning: #f0ad4e; -@brand-danger: #d9534f; - - -//== Scaffolding -// -//## Settings for some of the most global styles. - -//** Background color for ``. -@body-bg: #fff; -//** Global text color on ``. -@text-color: #1d0d0d; - -//** Global textual link color. -@link-color: @brand-primary; -//** Link hover color set via `darken()` function. -@link-hover-color: darken(@link-color, 15%); -//** Link hover decoration. -@link-hover-decoration: underline; - - -//== Typography -// -//## Font, line-height, and color for body text, headings, and more. - -@font-family-sans-serif: "Helvetica Neue", Arial, sans-serif; -@font-family-serif: Georgia, "Times New Roman", Times, serif; -//** Default monospace fonts for ``, ``, and `
`.
-@font-family-monospace:   Consolas, "Courier New", monospace;
-@font-family-base:        @font-family-sans-serif;
-
-@font-size-base:          14px;
-@font-size-large:         ceil((@font-size-base * 1.25)); // ~18px
-@font-size-small:         ceil((@font-size-base * 0.85)); // ~12px
-
-@font-size-h1:            floor(@font-size-base * 3);
-@font-size-h2:            @font-size-base * 2.5;
-@font-size-h3:            ceil(@font-size-base * 1.75);
-@font-size-h4:            ceil(@font-size-base * 1.25);
-@font-size-h5:            @font-size-base;
-@font-size-h6:            ceil(@font-size-base * 0.85);
-
-//** Unit-less `line-height` for use in components like buttons.
-@line-height-base:        1.428571429; // 20/14
-//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
-@line-height-computed:    floor((@font-size-base * @line-height-base)); // ~20px
-
-//** By default, this inherits from the ``.
-@headings-font-family:    "Open Sans", sans-serif;
-@headings-font-weight:    normal;
-@headings-line-height:    1.1;
-@headings-color:          inherit;
-
-
-//== Iconography
-//
-//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
-
-//** Load fonts from this directory.
-@icon-font-path:          "../fonts/";
-//** File name for all font files.
-@icon-font-name:          "glyphicons-halflings-regular";
-//** Element ID within SVG icon file.
-@icon-font-svg-id:        "glyphicons_halflingsregular";
-
-
-//== Components
-//
-//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
-
-@padding-base-vertical:     4px;
-@padding-base-horizontal:   6px;
-
-@padding-large-vertical:    10px;
-@padding-large-horizontal:  16px;
-
-@padding-small-vertical:    5px;
-@padding-small-horizontal:  10px;
-
-@padding-xs-vertical:       1px;
-@padding-xs-horizontal:     5px;
-
-@line-height-large:         1.33;
-@line-height-small:         1.5;
-
-@border-radius-base:        4px;
-@border-radius-large:       6px;
-@border-radius-small:       3px;
-
-//** Global color for active items (e.g., navs or dropdowns).
-@component-active-color:    #fff;
-//** Global background color for active items (e.g., navs or dropdowns).
-@component-active-bg:       @brand-primary;
-
-//** Width of the `border` for generating carets that indicator dropdowns.
-@caret-width-base:          4px;
-//** Carets increase slightly in size for larger components.
-@caret-width-large:         5px;
-
-
-//== Tables
-//
-//## Customizes the `.table` component with basic values, each used across all table variations.
-
-//** Padding for ``s and ``s.
-@table-cell-padding:            8px;
-//** Padding for cells in `.table-condensed`.
-@table-condensed-cell-padding:  5px;
-
-//** Default background color used for all tables.
-@table-bg:                      transparent;
-//** Background color used for `.table-striped`.
-@table-bg-accent:               #f9f9f9;
-//** Background color used for `.table-hover`.
-@table-bg-hover:                #f5f5f5;
-@table-bg-active:               @table-bg-hover;
-
-//** Border color for table and cell borders.
-@table-border-color:            #ddd;
-
-
-//== Buttons
-//
-//## For each of Bootstrap's buttons, define text, background and border color.
-
-@btn-font-weight:                normal;
-
-@btn-default-color:              #333;
-@btn-default-bg:                 @gray-lighter;
-@btn-default-border:             @gray-lighter;
-
-@btn-primary-color:              #fff;
-@btn-primary-bg:                 @brand-primary;
-@btn-primary-border:             darken(@btn-primary-bg, 5%);
-
-@btn-success-color:              #fff;
-@btn-success-bg:                 @brand-success;
-@btn-success-border:             darken(@btn-success-bg, 5%);
-
-@btn-info-color:                 #fff;
-@btn-info-bg:                    @brand-info;
-@btn-info-border:                darken(@btn-info-bg, 5%);
-
-@btn-warning-color:              #fff;
-@btn-warning-bg:                 @brand-warning;
-@btn-warning-border:             darken(@btn-warning-bg, 5%);
-
-@btn-danger-color:               #fff;
-@btn-danger-bg:                  @brand-danger;
-@btn-danger-border:              darken(@btn-danger-bg, 5%);
-
-@btn-link-disabled-color:        @gray-light;
-
-
-//== Forms
-//
-//##
-
-//** `` background color
-@input-bg:                       #fff;
-//** `` background color
-@input-bg-disabled:              @gray-lighter;
-
-//** Text color for ``s
-@input-color:                    @gray;
-//** `` border color
-@input-border:                   #b2b2b2;
-
-// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4
-//** Default `.form-control` border radius
-@input-border-radius:            @border-radius-base;
-//** Large `.form-control` border radius
-@input-border-radius-large:      @border-radius-large;
-//** Small `.form-control` border radius
-@input-border-radius-small:      @border-radius-small;
-
-//** Border color for inputs on focus
-@input-border-focus:             #d4b33a;
-
-//** Placeholder text color
-@input-color-placeholder:        #999;
-
-//** Default `.form-control` height
-@input-height-base:              (@line-height-computed + (@padding-base-vertical * 2) + 2);
-//** Large `.form-control` height
-@input-height-large:             (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);
-//** Small `.form-control` height
-@input-height-small:             (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);
-
-@legend-color:                   @gray-dark;
-@legend-border-color:            #e5e5e5;
-
-//** Background color for textual input addons
-@input-group-addon-bg:           @gray-lighter;
-//** Border color for textual input addons
-@input-group-addon-border-color: @input-border;
-
-//** Disabled cursor for form controls and buttons.
-@cursor-disabled:                not-allowed;
-
-
-//== Dropdowns
-//
-//## Dropdown menu container and contents.
-
-//** Background for the dropdown menu.
-@dropdown-bg:                    #fff;
-//** Dropdown menu `border-color`.
-@dropdown-border:                rgba(0,0,0,.15);
-//** Dropdown menu `border-color` **for IE8**.
-@dropdown-fallback-border:       #ccc;
-//** Divider color for between dropdown items.
-@dropdown-divider-bg:            #e5e5e5;
-
-//** Dropdown link text color.
-@dropdown-link-color:            @gray-dark;
-//** Hover color for dropdown links.
-@dropdown-link-hover-color:      darken(@gray-dark, 5%);
-//** Hover background for dropdown links.
-@dropdown-link-hover-bg:         #f5f5f5;
-
-//** Active dropdown menu item text color.
-@dropdown-link-active-color:     @component-active-color;
-//** Active dropdown menu item background color.
-@dropdown-link-active-bg:        @component-active-bg;
-
-//** Disabled dropdown menu item background color.
-@dropdown-link-disabled-color:   @gray-light;
-
-//** Text color for headers within dropdown menus.
-@dropdown-header-color:          @gray-light;
-
-//** Deprecated `@dropdown-caret-color` as of v3.1.0
-@dropdown-caret-color:           #000;
-
-
-//-- Z-index master list
-//
-// Warning: Avoid customizing these values. They're used for a bird's eye view
-// of components dependent on the z-axis and are designed to all work together.
-//
-// Note: These variables are not generated into the Customizer.
-
-@zindex-navbar:            1000;
-@zindex-dropdown:          1000;
-@zindex-popover:           1060;
-@zindex-tooltip:           1070;
-@zindex-navbar-fixed:      1030;
-@zindex-modal:             1040;
-
-
-//== Media queries breakpoints
-//
-//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
-
-// Extra small screen / phone
-//** Deprecated `@screen-xs` as of v3.0.1
-@screen-xs:                  480px;
-//** Deprecated `@screen-xs-min` as of v3.2.0
-@screen-xs-min:              @screen-xs;
-//** Deprecated `@screen-phone` as of v3.0.1
-@screen-phone:               @screen-xs-min;
-
-// Small screen / tablet
-//** Deprecated `@screen-sm` as of v3.0.1
-@screen-sm:                  768px;
-@screen-sm-min:              @screen-sm;
-//** Deprecated `@screen-tablet` as of v3.0.1
-@screen-tablet:              @screen-sm-min;
-
-// Medium screen / desktop
-//** Deprecated `@screen-md` as of v3.0.1
-@screen-md:                  992px;
-@screen-md-min:              @screen-md;
-//** Deprecated `@screen-desktop` as of v3.0.1
-@screen-desktop:             @screen-md-min;
-
-// Large screen / wide desktop
-//** Deprecated `@screen-lg` as of v3.0.1
-@screen-lg:                  1200px;
-@screen-lg-min:              @screen-lg;
-//** Deprecated `@screen-lg-desktop` as of v3.0.1
-@screen-lg-desktop:          @screen-lg-min;
-
-// So media queries don't overlap when required, provide a maximum
-@screen-xs-max:              (@screen-sm-min - 1);
-@screen-sm-max:              (@screen-md-min - 1);
-@screen-md-max:              (@screen-lg-min - 1);
-
-
-//== Grid system
-//
-//## Define your custom responsive grid.
-
-//** Number of columns in the grid.
-@grid-columns:              12;
-//** Padding between columns. Gets divided in half for the left and right.
-@grid-gutter-width:         30px;
-// Navbar collapse
-//** Point at which the navbar becomes uncollapsed.
-@grid-float-breakpoint:     @screen-sm-min;
-//** Point at which the navbar begins collapsing.
-@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);
-
-
-//== Container sizes
-//
-//## Define the maximum width of `.container` for different screen sizes.
-
-// Small screen / tablet
-@container-tablet:             (720px + @grid-gutter-width);
-//** For `@screen-sm-min` and up.
-@container-sm:                 @container-tablet;
-
-// Medium screen / desktop
-@container-desktop:            (940px + @grid-gutter-width);
-//** For `@screen-md-min` and up.
-@container-md:                 @container-desktop;
-
-// Large screen / wide desktop
-@container-large-desktop:      (1140px + @grid-gutter-width);
-//** For `@screen-lg-min` and up.
-@container-lg:                 @container-large-desktop;
-
-
-//== Navbar
-//
-//##
-
-// Basics of a navbar
-@navbar-height:                    100px;
-@navbar-margin-bottom:             0;
-@navbar-border-radius:             @border-radius-base;
-@navbar-padding-horizontal:        0;
-@navbar-padding-vertical:          ((@navbar-height - @line-height-computed) / 2);
-@navbar-collapse-max-height:       340px;
-
-@navbar-default-color:             @gray-base;
-@navbar-default-bg:                #f0db4f;
-@navbar-default-border:            #f0db4f;
-
-// Navbar links
-@navbar-default-link-color:                @navbar-default-color;
-@navbar-default-link-hover-color:          @gray-dark;
-@navbar-default-link-hover-bg:             transparent;
-@navbar-default-link-active-color:         @navbar-default-color;
-@navbar-default-link-active-bg:            transparent;
-@navbar-default-link-disabled-color:       #ccc;
-@navbar-default-link-disabled-bg:          transparent;
-
-// Navbar brand label
-@navbar-default-brand-color:               @navbar-default-link-color;
-@navbar-default-brand-hover-color:         darken(@navbar-default-brand-color, 10%);
-@navbar-default-brand-hover-bg:            transparent;
-
-// Navbar toggle
-@navbar-default-toggle-hover-bg:           #ddd;
-@navbar-default-toggle-icon-bar-bg:        @gray-dark;
-@navbar-default-toggle-border-color:       #ddd;
-
-
-// Inverted navbar
-// Reset inverted navbar basics
-@navbar-inverse-color:                      lighten(@gray-light, 15%);
-@navbar-inverse-bg:                         #222;
-@navbar-inverse-border:                     darken(@navbar-inverse-bg, 10%);
-
-// Inverted navbar links
-@navbar-inverse-link-color:                 lighten(@gray-light, 15%);
-@navbar-inverse-link-hover-color:           #fff;
-@navbar-inverse-link-hover-bg:              transparent;
-@navbar-inverse-link-active-color:          @navbar-inverse-link-hover-color;
-@navbar-inverse-link-active-bg:             darken(@navbar-inverse-bg, 10%);
-@navbar-inverse-link-disabled-color:        #444;
-@navbar-inverse-link-disabled-bg:           transparent;
-
-// Inverted navbar brand label
-@navbar-inverse-brand-color:                @navbar-inverse-link-color;
-@navbar-inverse-brand-hover-color:          #fff;
-@navbar-inverse-brand-hover-bg:             transparent;
-
-// Inverted navbar toggle
-@navbar-inverse-toggle-hover-bg:            #333;
-@navbar-inverse-toggle-icon-bar-bg:         #fff;
-@navbar-inverse-toggle-border-color:        #333;
-
-
-//== Navs
-//
-//##
-
-//=== Shared nav styles
-@nav-link-padding:                          10px 15px;
-@nav-link-hover-bg:                         @gray-lighter;
-
-@nav-disabled-link-color:                   @gray-light;
-@nav-disabled-link-hover-color:             @gray-light;
-
-//== Tabs
-@nav-tabs-border-color:                     #ddd;
-
-@nav-tabs-link-hover-border-color:          @gray-lighter;
-
-@nav-tabs-active-link-hover-bg:             @body-bg;
-@nav-tabs-active-link-hover-color:          @gray;
-@nav-tabs-active-link-hover-border-color:   #ddd;
-
-@nav-tabs-justified-link-border-color:            #ddd;
-@nav-tabs-justified-active-link-border-color:     @body-bg;
-
-//== Pills
-@nav-pills-border-radius:                   @border-radius-base;
-@nav-pills-active-link-hover-bg:            @component-active-bg;
-@nav-pills-active-link-hover-color:         @component-active-color;
-
-
-//== Pagination
-//
-//##
-
-@pagination-color:                     @link-color;
-@pagination-bg:                        #fff;
-@pagination-border:                    #ddd;
-
-@pagination-hover-color:               @link-hover-color;
-@pagination-hover-bg:                  @gray-lighter;
-@pagination-hover-border:              #ddd;
-
-@pagination-active-color:              #fff;
-@pagination-active-bg:                 @brand-primary;
-@pagination-active-border:             @brand-primary;
-
-@pagination-disabled-color:            @gray-light;
-@pagination-disabled-bg:               #fff;
-@pagination-disabled-border:           #ddd;
-
-
-//== Pager
-//
-//##
-
-@pager-bg:                             @pagination-bg;
-@pager-border:                         @pagination-border;
-@pager-border-radius:                  15px;
-
-@pager-hover-bg:                       @pagination-hover-bg;
-
-@pager-active-bg:                      @pagination-active-bg;
-@pager-active-color:                   @pagination-active-color;
-
-@pager-disabled-color:                 @pagination-disabled-color;
-
-
-//== Jumbotron
-//
-//##
-
-@jumbotron-padding:              30px;
-@jumbotron-color:                inherit;
-@jumbotron-bg:                   @gray-lighter;
-@jumbotron-heading-color:        inherit;
-@jumbotron-font-size:            ceil((@font-size-base * 1.5));
-
-
-//== Form states and alerts
-//
-//## Define colors for form feedback states and, by default, alerts.
-
-@state-success-text:             #3c763d;
-@state-success-bg:               #dff0d8;
-@state-success-border:           darken(spin(@state-success-bg, -10), 5%);
-
-@state-info-text:                #31708f;
-@state-info-bg:                  #d9edf7;
-@state-info-border:              darken(spin(@state-info-bg, -10), 7%);
-
-@state-warning-text:             #8a6d3b;
-@state-warning-bg:               #fcf8e3;
-@state-warning-border:           darken(spin(@state-warning-bg, -10), 5%);
-
-@state-danger-text:              #a94442;
-@state-danger-bg:                #f2dede;
-@state-danger-border:            darken(spin(@state-danger-bg, -10), 5%);
-
-
-//== Tooltips
-//
-//##
-
-//** Tooltip max width
-@tooltip-max-width:           200px;
-//** Tooltip text color
-@tooltip-color:               #fff;
-//** Tooltip background color
-@tooltip-bg:                  #000;
-@tooltip-opacity:             .9;
-
-//** Tooltip arrow width
-@tooltip-arrow-width:         5px;
-//** Tooltip arrow color
-@tooltip-arrow-color:         @tooltip-bg;
-
-
-//== Popovers
-//
-//##
-
-//** Popover body background color
-@popover-bg:                          #fff;
-//** Popover maximum width
-@popover-max-width:                   276px;
-//** Popover border color
-@popover-border-color:                rgba(0,0,0,.2);
-//** Popover fallback border color
-@popover-fallback-border-color:       #ccc;
-
-//** Popover title background color
-@popover-title-bg:                    darken(@popover-bg, 3%);
-
-//** Popover arrow width
-@popover-arrow-width:                 10px;
-//** Popover arrow color
-@popover-arrow-color:                 @popover-bg;
-
-//** Popover outer arrow width
-@popover-arrow-outer-width:           (@popover-arrow-width + 1);
-//** Popover outer arrow color
-@popover-arrow-outer-color:           fadein(@popover-border-color, 5%);
-//** Popover outer arrow fallback color
-@popover-arrow-outer-fallback-color:  darken(@popover-fallback-border-color, 20%);
-
-
-//== Labels
-//
-//##
-
-//** Default label background color
-@label-default-bg:            @gray-light;
-//** Primary label background color
-@label-primary-bg:            @brand-primary;
-//** Success label background color
-@label-success-bg:            @brand-success;
-//** Info label background color
-@label-info-bg:               @brand-info;
-//** Warning label background color
-@label-warning-bg:            @brand-warning;
-//** Danger label background color
-@label-danger-bg:             @brand-danger;
-
-//** Default label text color
-@label-color:                 #fff;
-//** Default text color of a linked label
-@label-link-hover-color:      #fff;
-
-
-//== Modals
-//
-//##
-
-//** Padding applied to the modal body
-@modal-inner-padding:         15px;
-
-//** Padding applied to the modal title
-@modal-title-padding:         15px;
-//** Modal title line-height
-@modal-title-line-height:     @line-height-base;
-
-//** Background color of modal content area
-@modal-content-bg:                             #fff;
-//** Modal content border color
-@modal-content-border-color:                   rgba(0,0,0,.2);
-//** Modal content border color **for IE8**
-@modal-content-fallback-border-color:          #999;
-
-//** Modal backdrop background color
-@modal-backdrop-bg:           #000;
-//** Modal backdrop opacity
-@modal-backdrop-opacity:      .5;
-//** Modal header border color
-@modal-header-border-color:   #e5e5e5;
-//** Modal footer border color
-@modal-footer-border-color:   @modal-header-border-color;
-
-@modal-lg:                    900px;
-@modal-md:                    600px;
-@modal-sm:                    300px;
-
-
-//== Alerts
-//
-//## Define alert colors, border radius, and padding.
-
-@alert-padding:               15px;
-@alert-border-radius:         @border-radius-base;
-@alert-link-font-weight:      bold;
-
-@alert-success-bg:            @state-success-bg;
-@alert-success-text:          @state-success-text;
-@alert-success-border:        @state-success-border;
-
-@alert-info-bg:               @state-info-bg;
-@alert-info-text:             @state-info-text;
-@alert-info-border:           @state-info-border;
-
-@alert-warning-bg:            @state-warning-bg;
-@alert-warning-text:          @state-warning-text;
-@alert-warning-border:        @state-warning-border;
-
-@alert-danger-bg:             @state-danger-bg;
-@alert-danger-text:           @state-danger-text;
-@alert-danger-border:         @state-danger-border;
-
-
-//== Progress bars
-//
-//##
-
-//** Background color of the whole progress component
-@progress-bg:                 #f5f5f5;
-//** Progress bar text color
-@progress-bar-color:          #fff;
-//** Variable for setting rounded corners on progress bar.
-@progress-border-radius:      @border-radius-base;
-
-//** Default progress bar color
-@progress-bar-bg:             @brand-primary;
-//** Success progress bar color
-@progress-bar-success-bg:     @brand-success;
-//** Warning progress bar color
-@progress-bar-warning-bg:     @brand-warning;
-//** Danger progress bar color
-@progress-bar-danger-bg:      @brand-danger;
-//** Info progress bar color
-@progress-bar-info-bg:        @brand-info;
-
-
-//== List group
-//
-//##
-
-//** Background color on `.list-group-item`
-@list-group-bg:                 #fff;
-//** `.list-group-item` border color
-@list-group-border:             #ddd;
-//** List group border radius
-@list-group-border-radius:      @border-radius-base;
-
-//** Background color of single list items on hover
-@list-group-hover-bg:           #f5f5f5;
-//** Text color of active list items
-@list-group-active-color:       @component-active-color;
-//** Background color of active list items
-@list-group-active-bg:          @component-active-bg;
-//** Border color of active list elements
-@list-group-active-border:      @list-group-active-bg;
-//** Text color for content within active list items
-@list-group-active-text-color:  lighten(@list-group-active-bg, 40%);
-
-//** Text color of disabled list items
-@list-group-disabled-color:      @gray-light;
-//** Background color of disabled list items
-@list-group-disabled-bg:         @gray-lighter;
-//** Text color for content within disabled list items
-@list-group-disabled-text-color: @list-group-disabled-color;
-
-@list-group-link-color:         #555;
-@list-group-link-hover-color:   @list-group-link-color;
-@list-group-link-heading-color: #333;
-
-
-//== Panels
-//
-//##
-
-@panel-bg:                    #fff;
-@panel-body-padding:          15px;
-@panel-heading-padding:       10px 15px;
-@panel-footer-padding:        @panel-heading-padding;
-@panel-border-radius:         @border-radius-base;
-
-//** Border color for elements within panels
-@panel-inner-border:          #ddd;
-@panel-footer-bg:             #f5f5f5;
-
-@panel-default-text:          @gray-dark;
-@panel-default-border:        #ddd;
-@panel-default-heading-bg:    #f5f5f5;
-
-@panel-primary-text:          #fff;
-@panel-primary-border:        @brand-primary;
-@panel-primary-heading-bg:    @brand-primary;
-
-@panel-success-text:          @state-success-text;
-@panel-success-border:        @state-success-border;
-@panel-success-heading-bg:    @state-success-bg;
-
-@panel-info-text:             @state-info-text;
-@panel-info-border:           @state-info-border;
-@panel-info-heading-bg:       @state-info-bg;
-
-@panel-warning-text:          @state-warning-text;
-@panel-warning-border:        @state-warning-border;
-@panel-warning-heading-bg:    @state-warning-bg;
-
-@panel-danger-text:           @state-danger-text;
-@panel-danger-border:         @state-danger-border;
-@panel-danger-heading-bg:     @state-danger-bg;
-
-
-//== Thumbnails
-//
-//##
-
-//** Padding around the thumbnail image
-@thumbnail-padding:           4px;
-//** Thumbnail background color
-@thumbnail-bg:                @body-bg;
-//** Thumbnail border color
-@thumbnail-border:            #ddd;
-//** Thumbnail border radius
-@thumbnail-border-radius:     @border-radius-base;
-
-//** Custom text color for thumbnail captions
-@thumbnail-caption-color:     @text-color;
-//** Padding around the thumbnail caption
-@thumbnail-caption-padding:   9px;
-
-
-//== Wells
-//
-//##
-
-@well-bg:                     #f5f5f5;
-@well-border:                 darken(@well-bg, 7%);
-
-
-//== Badges
-//
-//##
-
-@badge-color:                 #fff;
-//** Linked badge text color on hover
-@badge-link-hover-color:      #fff;
-@badge-bg:                    @gray-light;
-
-//** Badge text color in active nav link
-@badge-active-color:          @link-color;
-//** Badge background color in active nav link
-@badge-active-bg:             #fff;
-
-@badge-font-weight:           bold;
-@badge-line-height:           1;
-@badge-border-radius:         10px;
-
-
-//== Breadcrumbs
-//
-//##
-
-@breadcrumb-padding-vertical:   8px;
-@breadcrumb-padding-horizontal: 15px;
-//** Breadcrumb background color
-@breadcrumb-bg:                 #f5f5f5;
-//** Breadcrumb text color
-@breadcrumb-color:              #ccc;
-//** Text color of current page in the breadcrumb
-@breadcrumb-active-color:       @gray-light;
-//** Textual separator for between breadcrumb elements
-@breadcrumb-separator:          "/";
-
-
-//== Carousel
-//
-//##
-
-@carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6);
-
-@carousel-control-color:                      #fff;
-@carousel-control-width:                      15%;
-@carousel-control-opacity:                    .5;
-@carousel-control-font-size:                  20px;
-
-@carousel-indicator-active-bg:                #fff;
-@carousel-indicator-border-color:             #fff;
-
-@carousel-caption-color:                      #fff;
-
-
-//== Close
-//
-//##
-
-@close-font-weight:           bold;
-@close-color:                 #000;
-@close-text-shadow:           0 1px 0 #fff;
-
-
-//== Code
-//
-//##
-
-@code-color:                  #c7254e;
-@code-bg:                     #f9f2f4;
-
-@kbd-color:                   #fff;
-@kbd-bg:                      #333;
-
-@pre-bg:                      #f5f5f5;
-@pre-color:                   @gray-dark;
-@pre-border-color:            #ccc;
-@pre-scrollable-max-height:   340px;
-
-
-//== Type
-//
-//##
-
-//** Horizontal offset for forms and lists.
-@component-offset-horizontal: 180px;
-//** Text muted color
-@text-muted:                  @gray-light;
-//** Abbreviations and acronyms border color
-@abbr-border-color:           @gray-light;
-//** Headings small color
-@headings-small-color:        @gray-light;
-//** Blockquote small color
-@blockquote-small-color:      @gray-light;
-//** Blockquote font size
-@blockquote-font-size:        (@font-size-base * 1.25);
-//** Blockquote border color
-@blockquote-border-color:     @gray-lighter;
-//** Page header border color
-@page-header-border-color:    @gray-lighter;
-//** Width of horizontal description list titles
-@dl-horizontal-offset:        @component-offset-horizontal;
-//** Horizontal line color.
-@hr-border:                   #b2b2b2;
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/buttons.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/buttons.less
deleted file mode 100644
index bbb3c620..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/buttons.less
+++ /dev/null
@@ -1,61 +0,0 @@
-//
-// Buttons
-// --------------------------------------------------
-
-
-// Base styles
-// --------------------------------------------------
-
-// Core styles
-.btn {
-  display: inline-block;
-  padding: 5px 6px 4px 8px;
-  margin-top: 0;
-  margin-bottom: 0; // For input.btn
-  font-family: "Open Sans Condensed", sans-serif;
-  font-size: @font-size-base * 1.3;
-  font-weight: 700;
-  text-transform: uppercase;
-  letter-spacing: 1px;
-  line-height: @line-height-computed;
-  text-align: center;
-  vertical-align: middle;
-  touch-action: manipulation;
-  cursor: pointer;
-  background-color: @gray-lighter;
-  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
-  border: none;
-  border-radius: 3px;
-  .box-shadow(1px 1px 0 rgba(0, 0, 0, 0.3));
-  outline: none !important;
-  white-space: nowrap;
-  .user-select(none);
-
-  &:focus,
-  &.focus {
-    .tab-focus();
-  }
-
-  &:hover,
-  &:focus,
-  &.focus {
-    background-color: lighten(@gray-lighter, 5%);
-    text-decoration: none;
-    .transition(background-color .1s linear);
-  }
-
-  &:active,
-  &.active {
-    outline: 0;
-    padding: 6px 5px 3px 9px;
-  }
-
-  &.disabled,
-  &[disabled],
-  fieldset[disabled] & {
-    cursor: @cursor-disabled;
-    pointer-events: none; // Future-proof disabling of clicks
-    .opacity(65);
-    .box-shadow(1px 1px 0 rgba(0, 0, 0, 0.15));
-  }
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/code.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/code.less
deleted file mode 100644
index 33af7555..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/code.less
+++ /dev/null
@@ -1,8 +0,0 @@
-code {
-  margin: 0 2px;
-  padding: 1px 5px;
-  border: 1px solid #E1E1E8;
-  background-color: #F7F7F9;
-  color: @gray-dark;
-  font-size: 85%;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/evaluation-form.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/evaluation-form.less
deleted file mode 100644
index 6d505d56..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/evaluation-form.less
+++ /dev/null
@@ -1,91 +0,0 @@
-//
-// Evaluation form
-// --------------------------------------------------
-
-
-.evaluation-form {
-  .clearfix();
-
-  textarea {
-    height: 200px;
-  }
-}
-
-.evaluation-input-output {
-  float: left;
-  width: 65%;
-}
-
-.evaluation-input-clear-button {
-  position: absolute;
-  top: 0;
-  right: 0;
-  width: 15px;
-  height: 15px;
-  margin: 6px;
-  display: inline-block;
-  background: transparent url("../images/clear-text.png") no-repeat scroll 0 0;
-  opacity: 0.75;
-  line-height: 0;
-  vertical-align: bottom;
-  cursor: pointer;
-
-  &:hover {
-   opacity: 1;
- }
-}
-
-.evaluation-input-clear-button.with-scrollbar {
-  margin-right: 29px;
-}
-
-.evaluation-output {
-  margin-top: 1.5em;
-}
-
-.evaluation-input-field,
-.evaluation-output-field {
-  margin-bottom: 0.5em;
-  .box-sizing(border-box);
-  overflow-x: hidden;
-  line-height: @line-height-computed;
-}
-
-.evaluation-output-field {
-  &[readonly] {
-    cursor: auto;
-    background-color: @input-bg;
-  }
-}
-
-.evaluation-error-header {
-  margin-bottom: @line-height-computed;
-  padding-left: 52px;
-  background: transparent url("../images/icons/48x48/error.png") no-repeat scroll 0 50%;
-  color: @black;
-  font-family: @font-family-sans-serif;
-  font-weight: bold;
-  line-height: 48px;
-  vertical-align: middle;
-}
-
-ul.evaluation-error-list,
-ul.evaluation-warning-list {
-  li {
-    margin-bottom: 1em;
-
-    pre {
-      margin-top: 0.5em;
-      white-space: pre;
-      overflow: auto;
-    }
-  }
-}
-
-ul.evaluation-error-list li pre {
-  background-color: @state-danger-bg;
-}
-
-ul.evaluation-warning-list li pre {
-  background-color: @state-warning-bg;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/forms.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/forms.less
deleted file mode 100644
index 2ceb0559..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/forms.less
+++ /dev/null
@@ -1,99 +0,0 @@
-//
-// Forms
-// --------------------------------------------------
-
-// GENERAL STYLES
-// --------------
-
-label {
-  font-weight: normal;
-}
-
-
-// Form controls
-// -------------------------
-
-// Common form controls
-.form-control {
-  line-height: @input-height-base;
-}
-
-.textarea-wrapper {
-  position: relative;
-}
-
-// Form groups
-.form-group {
-  margin-bottom: 0.5em;
-}
-
-// Info and errors
-// --------------------------
-.message-info {
-  border: 1px solid;
-  clear: both;
-  padding: 10px 20px;
-  color: @state-info-text;
-}
-
-.message-error {
-  clear: both;
-  color: @state-danger-text;
-  font-size: 1.1em;
-  font-weight: bold;
-  margin: 20px 0 10px 0;
-}
-
-.message-success {
-  color: @state-success-text;
-  font-size: 1.3em;
-  font-weight: bold;
-  margin: 20px 0 10px 0;
-}
-
-.error {
-  color: @state-danger-text;
-}
-
-// Styles for validation helpers
-// --------------------------
-.validators {
-  font-style: normal;
-  padding-bottom: 0.5em;
-}
-
-.field-validation-error {
-  display: block;
-  padding-bottom: 0.5em;
-  color: @state-danger-text;
-  font-weight: bold;
-}
-
-.field-validation-valid {
-  display: none;
-}
-
-input.input-validation-error,
-textarea.input-validation-error,
-select.input-validation-error
-{
-  border: 1px solid @state-danger-border;
-  background-color: @state-danger-bg;
-  .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work
-
-  &:focus {
-    border-color: @state-danger-border;
-    @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@state-danger-text, 20%);
-    .box-shadow(@shadow);
-  }
-}
-
-.validation-summary-errors {
-  color: @state-danger-text;
-  font-weight: bold;
-  font-size: 1.1em;
-}
-
-.validation-summary-valid {
-  display: none;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/icons.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/icons.less
deleted file mode 100644
index 79b9d9e5..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/icons.less
+++ /dev/null
@@ -1,32 +0,0 @@
-//
-// Icons
-// --------------------------------------------------
-
-
-.icon {
-  background: transparent url(../images/icons/32x32/social-media-icons-32.png) no-repeat scroll;
-  display: inline-block;
-  line-height: 0;
-  vertical-align: bottom;
-}
-
-.icon-32 {
-  height: 32px;
-  width: 32px;
-}
-
-.icon-facebook {
-  background-position: 0 0;
-}
-
-.icon-twitter {
-  background-position: 0 -32px;
-}
-
-.icon-linkedin {
-  background-position: 0 -64px;
-}
-
-.icon-rss {
-  background-position: 0 -128px;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/layout.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/layout.less
deleted file mode 100644
index 35a7f386..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/layout.less
+++ /dev/null
@@ -1,128 +0,0 @@
-html,
-body {
-  margin: 0;
-  height: 100%;
-  /* The html and body elements cannot have any padding or margin */
-}
-
-/* Wrapper for page content to push down footer */
-.l-wrapper {
-  min-height: 100%;
-  height: auto !important;
-  height: 100%;
-  /* Negative indent footer by it's height */
-  margin: 0 auto (-1 * @footer-height);
-}
-
-.l-constrained {
-  margin: 0 auto;
-  padding-left: 20px;
-  padding-right: 20px;
-  max-width: 1200px;
-  min-width: 800px;
-}
-
-.l-header {
-  border-top: solid 10px @black;
-  border-bottom: 1px solid #d4b33a;
-  background-color: #f0db4f;
-
-  .l-constrained {
-    padding-top: 20px;
-    padding-bottom: 20px;
-    .clearfix();
-  }
-}
-
-.l-content {
-  .clearfix();
-}
-
-.l-main-content {
-  float: left;
-  width: 70%;
-}
-
-.l-sidebar {
-  float: right;
-  width: 30%;
-}
-
-/* Set the fixed height of the footer here */
-.l-push,
-.l-footer {
-  height: @footer-height;
-}
-
-.l-footer {
-  width: 100%;
-  background-color: @black;
-  color: @gray-lighter;
-  font-size: @font-size-small;
-  line-height: 100%;
-
-  .l-constrained {
-    padding-top: (@footer-height - 32) / 2;
-    .clearfix();
-  }
-
-  a {
-    color: @gray-lighter;
-    text-decoration: none;
-
-    &:hover,
-    &:active {
-      text-decoration: underline;
-    }
-  }
-}
-
-
-// Header
-// -------------------------
-
-.logo {
-  margin: 0;
-
-  a {
-    display: block;
-    float: left;
-    width: 100px;
-    height: 100px;
-    background: transparent url("../images/jsengineswitcher-logo.png") no-repeat scroll 0 0;
-    text-indent: -9999em;
-  }
-}
-
-.primary-nav {
-  position: relative;
-  left: 40px;
-  float: left;
-}
-
-
-// Footer
-// -------------------------
-
-.l-copyright {
-  float: left;
-    p {
-      margin: 0;
-      padding: 0;
-  }
-}
-
-.l-social {
-  float: right;
-
-  li {
-    display: inline;
-    list-style: none outside none;
-    padding-left: 10px;
-
-    a {
-      text-indent: -9999px;
-      outline: none;
-    }
-  }
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/mixins.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/mixins.less
deleted file mode 100644
index d26eee79..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/mixins.less
+++ /dev/null
@@ -1,9 +0,0 @@
-//
-// Mixins
-// --------------------------------------------------
-
-// NO Drop shadows
-.no-box-shadow {
-  -webkit-box-shadow: none; // iOS <4.3 & Android <4.1
-          box-shadow: none;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/navbar.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/navbar.less
deleted file mode 100644
index 95edf3c2..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/navbar.less
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// Navbars
-// --------------------------------------------------
-
-
-// Wrapper and base class
-//
-// Provide a static navbar from which we expand to create full-width, fixed, and
-// other navbar variations.
-
-.navbar {
-  border: none;
-  border-radius: 0;
-}
-
-// Navbar nav links
-//
-// Builds on top of the `.nav` components with it's own modifier class to make
-// the nav the full height of the horizontal nav (above 768px).
-
-.navbar-nav {
-  float: left;
-  margin: 0 auto;
-
-  > li {
-    > a {
-      float: none;
-      // Vertically center the text given @navbar-height
-      padding: ((@navbar-height - @line-height-computed) / 2) 15px ((@navbar-height - @line-height-computed) / 2);
-      border: 1px solid transparent;
-      font-family: "Open Sans", sans-serif;
-      font-size: 2.0em;
-      text-decoration: none;
-      text-transform: uppercase;
-      outline: none;
-    }
-  }
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/page-socials.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/page-socials.less
deleted file mode 100644
index ea12dc09..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/page-socials.less
+++ /dev/null
@@ -1,14 +0,0 @@
-.page-socials {
-  min-height: 60px;
-  margin-top: 20px;
-  padding-top: 15px;
-  border-top: 1px solid #b2b2b2;
-}
-
-.share-buttons {
-  li {
-    margin-right: 15px;
-    vertical-align: top;
-    line-height: normal;
-  }
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/type.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/type.less
deleted file mode 100644
index 02d69502..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/type.less
+++ /dev/null
@@ -1,24 +0,0 @@
-//
-// Typography
-// --------------------------------------------------
-
-// Headings
-// -------------------------
-
-h1, h2, h3 {
-  margin-top: 10px;
-}
-
-h1, h2 {
-  line-height: 40px;
-}
-
-h2 {
-  color: @black;
-  font-weight: bold;
-}
-
-h3 {
-  color: @gray-dark;
-  line-height: @line-height-computed * 1.25;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/variables.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/variables.less
deleted file mode 100644
index 498c9796..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore6.Mvc6/wwwroot/styles/variables.less
+++ /dev/null
@@ -1,7 +0,0 @@
-// Colors
-// -------------------------
-@black:                 #1d0d0d;
-
-// Footer
-// -------------------------
-@footer-height:                    55px;
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/.bowerrc b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/.bowerrc
deleted file mode 100644
index ea81a597..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/.bowerrc
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-  "registry": "https://registry.bower.io",
-  "directory": "wwwroot/lib"
-}
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/Infrastructure/Helpers/CommonExtensions.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/Infrastructure/Helpers/CommonExtensions.cs
deleted file mode 100644
index 39762ac1..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/Infrastructure/Helpers/CommonExtensions.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using System.Text.RegularExpressions;
-
-using Microsoft.AspNetCore.Html;
-using Microsoft.AspNetCore.Mvc.Rendering;
-
-namespace JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7.Infrastructure.Helpers
-{
-	public static class CommonExtensions
-	{
-		public static HtmlString EncodedReplace(this IHtmlHelper htmlHelper, string input,
-			string pattern, string replacement)
-		{
-			return new HtmlString(Regex.Replace(htmlHelper.Encode(input), pattern, replacement));
-		}
-	}
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/Infrastructure/TagHelpers/ConditionalCommentTagHelper.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/Infrastructure/TagHelpers/ConditionalCommentTagHelper.cs
deleted file mode 100644
index f7408101..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/Infrastructure/TagHelpers/ConditionalCommentTagHelper.cs
+++ /dev/null
@@ -1,78 +0,0 @@
-using System;
-
-using Microsoft.AspNetCore.Razor.TagHelpers;
-
-namespace JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7.Infrastructure.TagHelpers
-{
-	[HtmlTargetElement("conditional-comment")]
-	public class ConditionalCommentTagHelper : TagHelper
-	{
-		[HtmlAttributeName("type")]
-		public ConditionalCommentType CommentType { get; set; }
-
-		[HtmlAttributeName("expression")]
-		public string Expression { get; set; }
-
-
-		public override void Process(TagHelperContext context, TagHelperOutput output)
-		{
-			output.TagName = null;
-
-			ConditionalCommentType type = CommentType;
-
-			string ifCommentStartPart;
-			string ifCommentEndPart;
-
-			switch (type)
-			{
-				case ConditionalCommentType.Hidden:
-					ifCommentStartPart = "";
-
-					break;
-				case ConditionalCommentType.RevealedValidatingSimplified:
-					ifCommentStartPart = "";
-
-					break;
-				case ConditionalCommentType.Revealed:
-					ifCommentStartPart = "";
-
-					break;
-				default:
-					throw new NotSupportedException();
-			}
-
-			TagHelperContent preContent = output.PreContent;
-			preContent.AppendHtml(ifCommentStartPart);
-			preContent.AppendHtml(Expression);
-			preContent.AppendHtml(ifCommentEndPart);
-
-			string endIfComment;
-
-			switch (type)
-			{
-				case ConditionalCommentType.Hidden:
-					endIfComment = "";
-					break;
-				case ConditionalCommentType.RevealedValidating:
-				case ConditionalCommentType.RevealedValidatingSimplified:
-					endIfComment = "";
-					break;
-				case ConditionalCommentType.Revealed:
-					endIfComment = "";
-					break;
-				default:
-					throw new NotSupportedException();
-			}
-
-			output.PostContent.AppendHtml(endIfComment);
-		}
-	}
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/Infrastructure/TagHelpers/ConditionalCommentType.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/Infrastructure/TagHelpers/ConditionalCommentType.cs
deleted file mode 100644
index 680b307d..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/Infrastructure/TagHelpers/ConditionalCommentType.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-namespace JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7.Infrastructure.TagHelpers
-{
-	public enum ConditionalCommentType
-	{
-		Hidden,
-		Revealed,
-		RevealedValidating,
-		RevealedValidatingSimplified
-	}
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7.csproj b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7.csproj
index e067c589..a2750c47 100644
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7.csproj
+++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7.csproj
@@ -2,14 +2,16 @@
 
   
     JS Engine Switcher: Sample ASP.NET Core 7.0 MVC 7 Site
-    3.21.3
+    3.30.2
     net7.0
     enable
     Exe
     true
+    true
     true
     true
     false
+    false
   
 
   
@@ -37,28 +39,13 @@
     
     
     
+    
     
     
     
     
   
 
-  
-    
-  
-  
-    
-  
-  
-    
-  
-  
-    
-  
-  
-    
-    
-    
-  
+  
 
 
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/Program.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/Program.cs
index 3a1bc256..2e472860 100644
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/Program.cs
+++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/Program.cs
@@ -13,7 +13,13 @@
 using JavaScriptEngineSwitcher.Vroom;
 using JavaScriptEngineSwitcher.Yantra;
 
-var builder = WebApplication.CreateBuilder(args);
+var builder = WebApplication.CreateBuilder(new WebApplicationOptions()
+{
+	WebRootPath = Path.Combine(
+		Directory.GetCurrentDirectory(),
+		"../JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot"
+	)
+});
 var env = builder.Environment;
 var configuration = new ConfigurationBuilder()
 	.SetBasePath(env.ContentRootPath)
@@ -34,8 +40,10 @@
 
 // Add JavaScriptEngineSwitcher services to the services container.
 services.AddJsEngineSwitcher(options =>
-	options.DefaultEngineName = ChakraCoreJsEngine.EngineName
-)
+{
+	options.AllowCurrentProperty = false;
+	options.DefaultEngineName = ChakraCoreJsEngine.EngineName;
+})
 	.AddChakraCore()
 	.AddJint()
 	.AddJurassic()
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/Views/Home/Contact.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/Views/Home/Contact.cshtml
index cd9663df..58785ebe 100644
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/Views/Home/Contact.cshtml
+++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/Views/Home/Contact.cshtml
@@ -5,19 +5,4 @@
 

@ViewBag.Title

@ViewBag.Body -
- -@section Scripts { - -} \ No newline at end of file + \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/Views/Shared/_JsEvaluationErrorList.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/Views/Shared/_JsEvaluationErrorList.cshtml index 7f3078c3..9e0601d6 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/Views/Shared/_JsEvaluationErrorList.cshtml +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/Views/Shared/_JsEvaluationErrorList.cshtml @@ -1,4 +1,4 @@ -@using JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7.Infrastructure.Helpers +@using JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure.Helpers @using JavaScriptEngineSwitcher.Sample.Logic.Models @model IList diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/Views/Shared/_Layout.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/Views/Shared/_Layout.cshtml index 9ecae8ce..fe014242 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/Views/Shared/_Layout.cshtml +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/Views/Shared/_Layout.cshtml @@ -1,4 +1,4 @@ -@using JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7.Infrastructure.TagHelpers +@using JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure.TagHelpers @@ -7,7 +7,7 @@ - @if (!string.IsNullOrEmpty(ViewBag.Title)) {<text>@ViewBag.Title | </text>}JavaScriptEngineSwitcher Sample ASP.NET Core 6.0 MVC 6 Site + @if (!string.IsNullOrEmpty(ViewBag.Title)) {<text>@ViewBag.Title | </text>}JavaScriptEngineSwitcher Sample ASP.NET Core 7.0 MVC 7 Site @@ -61,9 +61,10 @@ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/Views/_ViewImports.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/Views/_ViewImports.cshtml index 12f9e2eb..8fe8384e 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/Views/_ViewImports.cshtml +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/Views/_ViewImports.cshtml @@ -1,2 +1,2 @@ @addTagHelper "*, Microsoft.AspNetCore.Mvc.TagHelpers" -@addTagHelper "*, JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7" \ No newline at end of file +@addTagHelper "*, JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure" \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/bower.json b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/bower.json deleted file mode 100644 index 0283757d..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/bower.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "jsengineswitcher.sample.aspnetcore7.mvc7", - "dependencies": { - "modernizr": "2.8.3", - "jquery-compat": "jquery#1.10.2", - "jquery": "jquery#2.0.3", - "jquery-validation": "1.13.1", - "jquery-validation-unobtrusive": "3.2.3", - "bootstrap": "3.3.0" - } -} diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/gulpfile.js b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/gulpfile.js deleted file mode 100644 index 0f259437..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/gulpfile.js +++ /dev/null @@ -1,130 +0,0 @@ -/*global require, exports */ -/*jshint esversion: 6 */ -const WEB_ROOT_PATH = "wwwroot"; -const BOWER_DIR_PATH = WEB_ROOT_PATH + "/lib"; -const STYLE_DIR_PATH = WEB_ROOT_PATH + '/styles'; -const SCRIPT_DIR_PATH = WEB_ROOT_PATH + '/scripts'; - -// include plug-ins -let { src, dest, series, parallel, watch } = require('gulp'); -let del = require('del'); -let sourcemaps = require('gulp-sourcemaps'); -let rename = require('gulp-rename'); -let concat = require('gulp-concat'); -let less = require('gulp-less'); -let autoprefixer = require('gulp-autoprefixer'); -let cleanCss = require('gulp-clean-css'); -let uglify = require('gulp-uglify'); - -//#region Clean -//#region Clean builded assets -function cleanBuildedStyles() { - return del([STYLE_DIR_PATH + '/build/*']); -} - -function cleanBuildedScripts() { - return del([SCRIPT_DIR_PATH + '/build/*']); -} - -let cleanBuildedAssets = parallel(cleanBuildedStyles, cleanBuildedScripts); -//#endregion -//#endregion - -//#region Build assets -//#region Build styles -let autoprefixerOptions = { - overrideBrowserslist: ['> 1%', 'last 3 versions', 'Firefox ESR', 'Opera 12.1'], - cascade: true -}; -let cssCleanOptions = { specialComments: '*' }; -let cssRenameOptions = { extname: '.min.css' }; - -function buildCommonStyles() { - return src([STYLE_DIR_PATH + '/app.less']) - .pipe(sourcemaps.init()) - .pipe(less({ - relativeUrls: true, - rootpath: '/styles/' - })) - .pipe(autoprefixer(autoprefixerOptions)) - .pipe(sourcemaps.write('./')) - .pipe(dest(STYLE_DIR_PATH + '/build')) - .pipe(sourcemaps.init({ loadMaps: true })) - .pipe(concat('common-styles.css')) - .pipe(cleanCss(cssCleanOptions)) - .pipe(rename(cssRenameOptions)) - .pipe(sourcemaps.write('./')) - .pipe(dest(STYLE_DIR_PATH + '/build')) - ; -} - -let buildStyles = buildCommonStyles; -//#endregion - -//#region Build scripts -let jsConcatOptions = { newLine: ';' }; -let jsUglifyOptions = { - output: { comments: /^!/ } -}; -let jsRenameOptions = { extname: '.min.js' }; - -function buildModernizrScripts() { - return src([BOWER_DIR_PATH + '/modernizr/modernizr.js']) - .pipe(sourcemaps.init()) - .pipe(uglify(jsUglifyOptions)) - .pipe(rename(jsRenameOptions)) - .pipe(sourcemaps.write('./')) - .pipe(dest(SCRIPT_DIR_PATH + '/build')) - ; -} - -function buildCommonScripts() { - return src([SCRIPT_DIR_PATH + '/common.js']) - .pipe(sourcemaps.init({ loadMaps: true })) - .pipe(rename({ basename: 'common-scripts' })) - .pipe(uglify(jsUglifyOptions)) - .pipe(rename(jsRenameOptions)) - .pipe(sourcemaps.write('./')) - .pipe(dest(SCRIPT_DIR_PATH + '/build')) - ; -} - -function buildEvaluationFormScripts() { - return src([BOWER_DIR_PATH + '/jquery-validation/dist/jquery.validate.js', - BOWER_DIR_PATH + '/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js', - BOWER_DIR_PATH + '/bootstrap/js/button.js', - SCRIPT_DIR_PATH + '/evaluation-form.js']) - .pipe(sourcemaps.init({ loadMaps: true })) - .pipe(concat('evaluation-form-scripts.js', jsConcatOptions)) - .pipe(uglify(jsUglifyOptions)) - .pipe(rename(jsRenameOptions)) - .pipe(sourcemaps.write('./')) - .pipe(dest(SCRIPT_DIR_PATH + '/build')) - ; -} - -let buildScripts = parallel(buildModernizrScripts, buildCommonScripts, buildEvaluationFormScripts); -//#endregion - -let buildAssets = parallel(buildStyles, buildScripts); -//#endregion - -//#region Watch assets -function watchStyles() { - return watch([STYLE_DIR_PATH + '/**/*.{less,css}', '!' + STYLE_DIR_PATH + '/build/**/*.*'], - buildStyles); -} - -function watchScripts() { - return watch([SCRIPT_DIR_PATH + '/**/*.js', '!' + SCRIPT_DIR_PATH + '/build/**/*.*'], - buildScripts); -} - -let watchAssets = parallel(watchStyles, watchScripts); -//#endregion - -// Export tasks -exports.cleanBuildedAssets = cleanBuildedAssets; -exports.buildAssets = buildAssets; -exports.watchAssets = watchAssets; -exports.default = series(cleanBuildedAssets, buildAssets); \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/package.json b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/package.json deleted file mode 100644 index f624a3f8..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/package.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "name": "javascriptengineswitcher.sample.aspnetcore7.mvc7", - "private": true, - "version": "3.21.3", - "devDependencies": { - "gulp": "4.0.2", - "del": "5.1.0", - "gulp-sourcemaps": "2.6.5", - "gulp-rename": "2.0.0", - "gulp-concat": "2.6.1", - "gulp-less": "4.0.1", - "gulp-autoprefixer": "7.0.1", - "gulp-clean-css": "4.2.0", - "gulp-uglify": "3.0.2" - } -} diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/images/0.gif b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/images/0.gif deleted file mode 100644 index 35d42e80..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/images/0.gif and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/images/clear-text.png b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/images/clear-text.png deleted file mode 100644 index 9d217b7f..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/images/clear-text.png and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/images/icons/32x32/social-media-icons-32.png b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/images/icons/32x32/social-media-icons-32.png deleted file mode 100644 index 49aa1fe3..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/images/icons/32x32/social-media-icons-32.png and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/images/icons/48x48/error.png b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/images/icons/48x48/error.png deleted file mode 100644 index 3d6185f7..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/images/icons/48x48/error.png and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/images/jsengineswitcher-logo.png b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/images/jsengineswitcher-logo.png deleted file mode 100644 index 12ed97e0..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/images/jsengineswitcher-logo.png and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/scripts/_references.js b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/scripts/_references.js deleted file mode 100644 index 2b54eea8..00000000 Binary files a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/scripts/_references.js and /dev/null differ diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/scripts/common.js b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/scripts/common.js deleted file mode 100644 index c94bf102..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/scripts/common.js +++ /dev/null @@ -1,29 +0,0 @@ -var jsEngineSwitcher; - -(function (jsEngineSwitcher, undefined) { - "use strict"; - - jsEngineSwitcher.registerNamespace = function (namespaceString) { - var parts = namespaceString.split("."), - parent = jsEngineSwitcher, - i - ; - - if (parts[0] === "jsEngineSwitcher") { - parts = parts.slice(1); - } - - for (i = 0; i < parts.length; i += 1) { - if (typeof parent[parts[i]] === "undefined") { - parent[parts[i]] = {}; - } - parent = parent[parts[i]]; - } - - return parent; - }; - - jsEngineSwitcher.hasScrollbar = function(elem) { - return (elem.clientHeight < elem.scrollHeight); - }; -}(jsEngineSwitcher = jsEngineSwitcher || {})); \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/scripts/evaluation-form.js b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/scripts/evaluation-form.js deleted file mode 100644 index da1f0199..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/scripts/evaluation-form.js +++ /dev/null @@ -1,83 +0,0 @@ -(function (jsEngineSwitcher, $, undefined) { - "use strict"; - - var $evaluationForm, - $evaluationInputField, - $evaluationInputClearButton, - $evaluateButton - ; - - $(function () { - $evaluationForm = $("form[data-form-type='evaluation-form']"); - $evaluationInputField = $(":input[data-control-type='evaluation-input-field']", $evaluationForm); - $evaluationInputClearButton = $("
"); - $evaluateButton = $(":input[data-control-type='evaluate-button']", $evaluationForm); - - $evaluationForm.on("submit", onEvaluationFormSubmitHandler); - - $evaluationInputClearButton.on("click", onEvaluationInputClearButtonClickHandler); - $evaluationInputField.parent().append($evaluationInputClearButton); - refreshEvaluationInputClearButton(); - $evaluationInputField - .on("input propertychange keydown keyup paste", onEvaluationInputFieldChangeHandler) - ; - - $evaluateButton.removeAttr("disabled"); - }); - - $(window).unload(function() { - $evaluationForm.off("submit", onEvaluationFormSubmitHandler); - - $evaluationInputClearButton - .off("click", onEvaluationInputClearButtonClickHandler) - .remove() - ; - - $evaluationInputField - .off("input propertychange keydown keyup paste", onEvaluationInputFieldChangeHandler) - ; - - $evaluationForm = null; - $evaluationInputField = null; - $evaluationInputClearButton = null; - $evaluateButton = null; - }); - - var refreshEvaluationInputClearButton = function() { - if ($.trim($evaluationInputField.val()).length > 0) { - $evaluationInputClearButton.show(); - } else { - $evaluationInputClearButton.hide(); - } - - if (jsEngineSwitcher.hasScrollbar($evaluationInputField.get(0))) { - $evaluationInputClearButton.addClass("with-scrollbar"); - } - else { - $evaluationInputClearButton.removeClass("with-scrollbar"); - } - }; - - var onEvaluationFormSubmitHandler = function () { - var $form = $(this); - if ($form.valid()) { - $evaluateButton.attr("disabled", "disabled"); - $("textarea[data-control-type='evaluation-output-field']", $form).val(''); - - return true; - } - - return false; - }; - - var onEvaluationInputFieldChangeHandler = function () { - refreshEvaluationInputClearButton(); - }; - - var onEvaluationInputClearButtonClickHandler = function() { - $evaluationInputField.val(""); - - var $button = $(this); - $button.hide(); - }; -}(jsEngineSwitcher, jQuery)); \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/app.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/app.less deleted file mode 100644 index c41a9315..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/app.less +++ /dev/null @@ -1,71 +0,0 @@ -/*! - * Bootstrap v3.3.0 (http://getbootstrap.com) - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -// Core variables and mixins -@import "bootstrap-custom-variables.less"; -@import "../lib/bootstrap/less/mixins.less"; - -// Reset -@import "../lib/bootstrap/less/normalize.less"; -//@import "../lib/bootstrap/less/print.less"; -//@import "../lib/bootstrap/less/glyphicons.less"; - -// Core CSS -@import "../lib/bootstrap/less/scaffolding.less"; -@import "../lib/bootstrap/less/type.less"; -@import "../lib/bootstrap/less/code.less"; -//@import "../lib/bootstrap/less/grid.less"; -//@import "../lib/bootstrap/less/tables.less"; -@import "../lib/bootstrap/less/forms.less"; -//@import "../lib/bootstrap/less/buttons.less"; - -// Components -//@import "../lib/bootstrap/less/component-animations.less"; -//@import "../lib/bootstrap/less/dropdowns.less"; -//@import "../lib/bootstrap/less/button-groups.less"; -//@import "../lib/bootstrap/less/input-groups.less"; -@import "../lib/bootstrap/less/navs.less"; -@import "../lib/bootstrap/less/navbar.less"; -//@import "../lib/bootstrap/less/breadcrumbs.less"; -//@import "../lib/bootstrap/less/pagination.less"; -//@import "../lib/bootstrap/less/pager.less"; -//@import "../lib/bootstrap/less/labels.less"; -//@import "../lib/bootstrap/less/badges.less"; -//@import "../lib/bootstrap/less/jumbotron.less"; -//@import "../lib/bootstrap/less/thumbnails.less"; -//@import "../lib/bootstrap/less/alerts.less"; -//@import "../lib/bootstrap/less/progress-bars.less"; -//@import "../lib/bootstrap/less/media.less"; -//@import "../lib/bootstrap/less/list-group.less"; -//@import "../lib/bootstrap/less/panels.less"; -//@import "../lib/bootstrap/less/responsive-embed.less"; -//@import "../lib/bootstrap/less/wells.less"; -//@import "../lib/bootstrap/less/close.less"; - -// Components w/ JavaScript -//@import "../lib/bootstrap/less/modals.less"; -//@import "../lib/bootstrap/less/tooltip.less"; -//@import "../lib/bootstrap/less/popovers.less"; -//@import "../lib/bootstrap/less/carousel.less"; - -// Utility classes -@import "../lib/bootstrap/less/utilities.less"; -//@import "../lib/bootstrap/less/responsive-utilities.less"; - -// JavaScriptEngineSwitcher specs -@import "variables.less"; -@import "mixins.less"; - -@import "type.less"; -@import "code.less"; -@import "forms.less"; -@import "buttons.less"; -@import "icons.less"; -@import "navbar.less"; - -@import "layout.less"; -@import "evaluation-form.less"; -@import "page-socials.less"; \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/bootstrap-custom-variables.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/bootstrap-custom-variables.less deleted file mode 100644 index 0be2aa6f..00000000 --- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/bootstrap-custom-variables.less +++ /dev/null @@ -1,856 +0,0 @@ -// -// Variables -// -------------------------------------------------- - - -//== Colors -// -//## Gray and brand colors for use across Bootstrap. - -@gray-base: #323330; -@gray-darker: lighten(@gray-base, 13.5%); // #222 -@gray-dark: lighten(@gray-base, 20%); // #333 -@gray: lighten(@gray-base, 33.5%); // #555 -@gray-light: lighten(@gray-base, 46.7%); // #777 -@gray-lighter: #e3e3e3; - -@brand-primary: #428bca; -@brand-success: #5cb85c; -@brand-info: #5bc0de; -@brand-warning: #f0ad4e; -@brand-danger: #d9534f; - - -//== Scaffolding -// -//## Settings for some of the most global styles. - -//** Background color for ``. -@body-bg: #fff; -//** Global text color on ``. -@text-color: #1d0d0d; - -//** Global textual link color. -@link-color: @brand-primary; -//** Link hover color set via `darken()` function. -@link-hover-color: darken(@link-color, 15%); -//** Link hover decoration. -@link-hover-decoration: underline; - - -//== Typography -// -//## Font, line-height, and color for body text, headings, and more. - -@font-family-sans-serif: "Helvetica Neue", Arial, sans-serif; -@font-family-serif: Georgia, "Times New Roman", Times, serif; -//** Default monospace fonts for ``, ``, and `
`.
-@font-family-monospace:   Consolas, "Courier New", monospace;
-@font-family-base:        @font-family-sans-serif;
-
-@font-size-base:          14px;
-@font-size-large:         ceil((@font-size-base * 1.25)); // ~18px
-@font-size-small:         ceil((@font-size-base * 0.85)); // ~12px
-
-@font-size-h1:            floor(@font-size-base * 3);
-@font-size-h2:            @font-size-base * 2.5;
-@font-size-h3:            ceil(@font-size-base * 1.75);
-@font-size-h4:            ceil(@font-size-base * 1.25);
-@font-size-h5:            @font-size-base;
-@font-size-h6:            ceil(@font-size-base * 0.85);
-
-//** Unit-less `line-height` for use in components like buttons.
-@line-height-base:        1.428571429; // 20/14
-//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
-@line-height-computed:    floor((@font-size-base * @line-height-base)); // ~20px
-
-//** By default, this inherits from the ``.
-@headings-font-family:    "Open Sans", sans-serif;
-@headings-font-weight:    normal;
-@headings-line-height:    1.1;
-@headings-color:          inherit;
-
-
-//== Iconography
-//
-//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
-
-//** Load fonts from this directory.
-@icon-font-path:          "../fonts/";
-//** File name for all font files.
-@icon-font-name:          "glyphicons-halflings-regular";
-//** Element ID within SVG icon file.
-@icon-font-svg-id:        "glyphicons_halflingsregular";
-
-
-//== Components
-//
-//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
-
-@padding-base-vertical:     4px;
-@padding-base-horizontal:   6px;
-
-@padding-large-vertical:    10px;
-@padding-large-horizontal:  16px;
-
-@padding-small-vertical:    5px;
-@padding-small-horizontal:  10px;
-
-@padding-xs-vertical:       1px;
-@padding-xs-horizontal:     5px;
-
-@line-height-large:         1.33;
-@line-height-small:         1.5;
-
-@border-radius-base:        4px;
-@border-radius-large:       6px;
-@border-radius-small:       3px;
-
-//** Global color for active items (e.g., navs or dropdowns).
-@component-active-color:    #fff;
-//** Global background color for active items (e.g., navs or dropdowns).
-@component-active-bg:       @brand-primary;
-
-//** Width of the `border` for generating carets that indicator dropdowns.
-@caret-width-base:          4px;
-//** Carets increase slightly in size for larger components.
-@caret-width-large:         5px;
-
-
-//== Tables
-//
-//## Customizes the `.table` component with basic values, each used across all table variations.
-
-//** Padding for ``s and ``s.
-@table-cell-padding:            8px;
-//** Padding for cells in `.table-condensed`.
-@table-condensed-cell-padding:  5px;
-
-//** Default background color used for all tables.
-@table-bg:                      transparent;
-//** Background color used for `.table-striped`.
-@table-bg-accent:               #f9f9f9;
-//** Background color used for `.table-hover`.
-@table-bg-hover:                #f5f5f5;
-@table-bg-active:               @table-bg-hover;
-
-//** Border color for table and cell borders.
-@table-border-color:            #ddd;
-
-
-//== Buttons
-//
-//## For each of Bootstrap's buttons, define text, background and border color.
-
-@btn-font-weight:                normal;
-
-@btn-default-color:              #333;
-@btn-default-bg:                 @gray-lighter;
-@btn-default-border:             @gray-lighter;
-
-@btn-primary-color:              #fff;
-@btn-primary-bg:                 @brand-primary;
-@btn-primary-border:             darken(@btn-primary-bg, 5%);
-
-@btn-success-color:              #fff;
-@btn-success-bg:                 @brand-success;
-@btn-success-border:             darken(@btn-success-bg, 5%);
-
-@btn-info-color:                 #fff;
-@btn-info-bg:                    @brand-info;
-@btn-info-border:                darken(@btn-info-bg, 5%);
-
-@btn-warning-color:              #fff;
-@btn-warning-bg:                 @brand-warning;
-@btn-warning-border:             darken(@btn-warning-bg, 5%);
-
-@btn-danger-color:               #fff;
-@btn-danger-bg:                  @brand-danger;
-@btn-danger-border:              darken(@btn-danger-bg, 5%);
-
-@btn-link-disabled-color:        @gray-light;
-
-
-//== Forms
-//
-//##
-
-//** `` background color
-@input-bg:                       #fff;
-//** `` background color
-@input-bg-disabled:              @gray-lighter;
-
-//** Text color for ``s
-@input-color:                    @gray;
-//** `` border color
-@input-border:                   #b2b2b2;
-
-// TODO: Rename `@input-border-radius` to `@input-border-radius-base` in v4
-//** Default `.form-control` border radius
-@input-border-radius:            @border-radius-base;
-//** Large `.form-control` border radius
-@input-border-radius-large:      @border-radius-large;
-//** Small `.form-control` border radius
-@input-border-radius-small:      @border-radius-small;
-
-//** Border color for inputs on focus
-@input-border-focus:             #d4b33a;
-
-//** Placeholder text color
-@input-color-placeholder:        #999;
-
-//** Default `.form-control` height
-@input-height-base:              (@line-height-computed + (@padding-base-vertical * 2) + 2);
-//** Large `.form-control` height
-@input-height-large:             (ceil(@font-size-large * @line-height-large) + (@padding-large-vertical * 2) + 2);
-//** Small `.form-control` height
-@input-height-small:             (floor(@font-size-small * @line-height-small) + (@padding-small-vertical * 2) + 2);
-
-@legend-color:                   @gray-dark;
-@legend-border-color:            #e5e5e5;
-
-//** Background color for textual input addons
-@input-group-addon-bg:           @gray-lighter;
-//** Border color for textual input addons
-@input-group-addon-border-color: @input-border;
-
-//** Disabled cursor for form controls and buttons.
-@cursor-disabled:                not-allowed;
-
-
-//== Dropdowns
-//
-//## Dropdown menu container and contents.
-
-//** Background for the dropdown menu.
-@dropdown-bg:                    #fff;
-//** Dropdown menu `border-color`.
-@dropdown-border:                rgba(0,0,0,.15);
-//** Dropdown menu `border-color` **for IE8**.
-@dropdown-fallback-border:       #ccc;
-//** Divider color for between dropdown items.
-@dropdown-divider-bg:            #e5e5e5;
-
-//** Dropdown link text color.
-@dropdown-link-color:            @gray-dark;
-//** Hover color for dropdown links.
-@dropdown-link-hover-color:      darken(@gray-dark, 5%);
-//** Hover background for dropdown links.
-@dropdown-link-hover-bg:         #f5f5f5;
-
-//** Active dropdown menu item text color.
-@dropdown-link-active-color:     @component-active-color;
-//** Active dropdown menu item background color.
-@dropdown-link-active-bg:        @component-active-bg;
-
-//** Disabled dropdown menu item background color.
-@dropdown-link-disabled-color:   @gray-light;
-
-//** Text color for headers within dropdown menus.
-@dropdown-header-color:          @gray-light;
-
-//** Deprecated `@dropdown-caret-color` as of v3.1.0
-@dropdown-caret-color:           #000;
-
-
-//-- Z-index master list
-//
-// Warning: Avoid customizing these values. They're used for a bird's eye view
-// of components dependent on the z-axis and are designed to all work together.
-//
-// Note: These variables are not generated into the Customizer.
-
-@zindex-navbar:            1000;
-@zindex-dropdown:          1000;
-@zindex-popover:           1060;
-@zindex-tooltip:           1070;
-@zindex-navbar-fixed:      1030;
-@zindex-modal:             1040;
-
-
-//== Media queries breakpoints
-//
-//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
-
-// Extra small screen / phone
-//** Deprecated `@screen-xs` as of v3.0.1
-@screen-xs:                  480px;
-//** Deprecated `@screen-xs-min` as of v3.2.0
-@screen-xs-min:              @screen-xs;
-//** Deprecated `@screen-phone` as of v3.0.1
-@screen-phone:               @screen-xs-min;
-
-// Small screen / tablet
-//** Deprecated `@screen-sm` as of v3.0.1
-@screen-sm:                  768px;
-@screen-sm-min:              @screen-sm;
-//** Deprecated `@screen-tablet` as of v3.0.1
-@screen-tablet:              @screen-sm-min;
-
-// Medium screen / desktop
-//** Deprecated `@screen-md` as of v3.0.1
-@screen-md:                  992px;
-@screen-md-min:              @screen-md;
-//** Deprecated `@screen-desktop` as of v3.0.1
-@screen-desktop:             @screen-md-min;
-
-// Large screen / wide desktop
-//** Deprecated `@screen-lg` as of v3.0.1
-@screen-lg:                  1200px;
-@screen-lg-min:              @screen-lg;
-//** Deprecated `@screen-lg-desktop` as of v3.0.1
-@screen-lg-desktop:          @screen-lg-min;
-
-// So media queries don't overlap when required, provide a maximum
-@screen-xs-max:              (@screen-sm-min - 1);
-@screen-sm-max:              (@screen-md-min - 1);
-@screen-md-max:              (@screen-lg-min - 1);
-
-
-//== Grid system
-//
-//## Define your custom responsive grid.
-
-//** Number of columns in the grid.
-@grid-columns:              12;
-//** Padding between columns. Gets divided in half for the left and right.
-@grid-gutter-width:         30px;
-// Navbar collapse
-//** Point at which the navbar becomes uncollapsed.
-@grid-float-breakpoint:     @screen-sm-min;
-//** Point at which the navbar begins collapsing.
-@grid-float-breakpoint-max: (@grid-float-breakpoint - 1);
-
-
-//== Container sizes
-//
-//## Define the maximum width of `.container` for different screen sizes.
-
-// Small screen / tablet
-@container-tablet:             (720px + @grid-gutter-width);
-//** For `@screen-sm-min` and up.
-@container-sm:                 @container-tablet;
-
-// Medium screen / desktop
-@container-desktop:            (940px + @grid-gutter-width);
-//** For `@screen-md-min` and up.
-@container-md:                 @container-desktop;
-
-// Large screen / wide desktop
-@container-large-desktop:      (1140px + @grid-gutter-width);
-//** For `@screen-lg-min` and up.
-@container-lg:                 @container-large-desktop;
-
-
-//== Navbar
-//
-//##
-
-// Basics of a navbar
-@navbar-height:                    100px;
-@navbar-margin-bottom:             0;
-@navbar-border-radius:             @border-radius-base;
-@navbar-padding-horizontal:        0;
-@navbar-padding-vertical:          ((@navbar-height - @line-height-computed) / 2);
-@navbar-collapse-max-height:       340px;
-
-@navbar-default-color:             @gray-base;
-@navbar-default-bg:                #f0db4f;
-@navbar-default-border:            #f0db4f;
-
-// Navbar links
-@navbar-default-link-color:                @navbar-default-color;
-@navbar-default-link-hover-color:          @gray-dark;
-@navbar-default-link-hover-bg:             transparent;
-@navbar-default-link-active-color:         @navbar-default-color;
-@navbar-default-link-active-bg:            transparent;
-@navbar-default-link-disabled-color:       #ccc;
-@navbar-default-link-disabled-bg:          transparent;
-
-// Navbar brand label
-@navbar-default-brand-color:               @navbar-default-link-color;
-@navbar-default-brand-hover-color:         darken(@navbar-default-brand-color, 10%);
-@navbar-default-brand-hover-bg:            transparent;
-
-// Navbar toggle
-@navbar-default-toggle-hover-bg:           #ddd;
-@navbar-default-toggle-icon-bar-bg:        @gray-dark;
-@navbar-default-toggle-border-color:       #ddd;
-
-
-// Inverted navbar
-// Reset inverted navbar basics
-@navbar-inverse-color:                      lighten(@gray-light, 15%);
-@navbar-inverse-bg:                         #222;
-@navbar-inverse-border:                     darken(@navbar-inverse-bg, 10%);
-
-// Inverted navbar links
-@navbar-inverse-link-color:                 lighten(@gray-light, 15%);
-@navbar-inverse-link-hover-color:           #fff;
-@navbar-inverse-link-hover-bg:              transparent;
-@navbar-inverse-link-active-color:          @navbar-inverse-link-hover-color;
-@navbar-inverse-link-active-bg:             darken(@navbar-inverse-bg, 10%);
-@navbar-inverse-link-disabled-color:        #444;
-@navbar-inverse-link-disabled-bg:           transparent;
-
-// Inverted navbar brand label
-@navbar-inverse-brand-color:                @navbar-inverse-link-color;
-@navbar-inverse-brand-hover-color:          #fff;
-@navbar-inverse-brand-hover-bg:             transparent;
-
-// Inverted navbar toggle
-@navbar-inverse-toggle-hover-bg:            #333;
-@navbar-inverse-toggle-icon-bar-bg:         #fff;
-@navbar-inverse-toggle-border-color:        #333;
-
-
-//== Navs
-//
-//##
-
-//=== Shared nav styles
-@nav-link-padding:                          10px 15px;
-@nav-link-hover-bg:                         @gray-lighter;
-
-@nav-disabled-link-color:                   @gray-light;
-@nav-disabled-link-hover-color:             @gray-light;
-
-//== Tabs
-@nav-tabs-border-color:                     #ddd;
-
-@nav-tabs-link-hover-border-color:          @gray-lighter;
-
-@nav-tabs-active-link-hover-bg:             @body-bg;
-@nav-tabs-active-link-hover-color:          @gray;
-@nav-tabs-active-link-hover-border-color:   #ddd;
-
-@nav-tabs-justified-link-border-color:            #ddd;
-@nav-tabs-justified-active-link-border-color:     @body-bg;
-
-//== Pills
-@nav-pills-border-radius:                   @border-radius-base;
-@nav-pills-active-link-hover-bg:            @component-active-bg;
-@nav-pills-active-link-hover-color:         @component-active-color;
-
-
-//== Pagination
-//
-//##
-
-@pagination-color:                     @link-color;
-@pagination-bg:                        #fff;
-@pagination-border:                    #ddd;
-
-@pagination-hover-color:               @link-hover-color;
-@pagination-hover-bg:                  @gray-lighter;
-@pagination-hover-border:              #ddd;
-
-@pagination-active-color:              #fff;
-@pagination-active-bg:                 @brand-primary;
-@pagination-active-border:             @brand-primary;
-
-@pagination-disabled-color:            @gray-light;
-@pagination-disabled-bg:               #fff;
-@pagination-disabled-border:           #ddd;
-
-
-//== Pager
-//
-//##
-
-@pager-bg:                             @pagination-bg;
-@pager-border:                         @pagination-border;
-@pager-border-radius:                  15px;
-
-@pager-hover-bg:                       @pagination-hover-bg;
-
-@pager-active-bg:                      @pagination-active-bg;
-@pager-active-color:                   @pagination-active-color;
-
-@pager-disabled-color:                 @pagination-disabled-color;
-
-
-//== Jumbotron
-//
-//##
-
-@jumbotron-padding:              30px;
-@jumbotron-color:                inherit;
-@jumbotron-bg:                   @gray-lighter;
-@jumbotron-heading-color:        inherit;
-@jumbotron-font-size:            ceil((@font-size-base * 1.5));
-
-
-//== Form states and alerts
-//
-//## Define colors for form feedback states and, by default, alerts.
-
-@state-success-text:             #3c763d;
-@state-success-bg:               #dff0d8;
-@state-success-border:           darken(spin(@state-success-bg, -10), 5%);
-
-@state-info-text:                #31708f;
-@state-info-bg:                  #d9edf7;
-@state-info-border:              darken(spin(@state-info-bg, -10), 7%);
-
-@state-warning-text:             #8a6d3b;
-@state-warning-bg:               #fcf8e3;
-@state-warning-border:           darken(spin(@state-warning-bg, -10), 5%);
-
-@state-danger-text:              #a94442;
-@state-danger-bg:                #f2dede;
-@state-danger-border:            darken(spin(@state-danger-bg, -10), 5%);
-
-
-//== Tooltips
-//
-//##
-
-//** Tooltip max width
-@tooltip-max-width:           200px;
-//** Tooltip text color
-@tooltip-color:               #fff;
-//** Tooltip background color
-@tooltip-bg:                  #000;
-@tooltip-opacity:             .9;
-
-//** Tooltip arrow width
-@tooltip-arrow-width:         5px;
-//** Tooltip arrow color
-@tooltip-arrow-color:         @tooltip-bg;
-
-
-//== Popovers
-//
-//##
-
-//** Popover body background color
-@popover-bg:                          #fff;
-//** Popover maximum width
-@popover-max-width:                   276px;
-//** Popover border color
-@popover-border-color:                rgba(0,0,0,.2);
-//** Popover fallback border color
-@popover-fallback-border-color:       #ccc;
-
-//** Popover title background color
-@popover-title-bg:                    darken(@popover-bg, 3%);
-
-//** Popover arrow width
-@popover-arrow-width:                 10px;
-//** Popover arrow color
-@popover-arrow-color:                 @popover-bg;
-
-//** Popover outer arrow width
-@popover-arrow-outer-width:           (@popover-arrow-width + 1);
-//** Popover outer arrow color
-@popover-arrow-outer-color:           fadein(@popover-border-color, 5%);
-//** Popover outer arrow fallback color
-@popover-arrow-outer-fallback-color:  darken(@popover-fallback-border-color, 20%);
-
-
-//== Labels
-//
-//##
-
-//** Default label background color
-@label-default-bg:            @gray-light;
-//** Primary label background color
-@label-primary-bg:            @brand-primary;
-//** Success label background color
-@label-success-bg:            @brand-success;
-//** Info label background color
-@label-info-bg:               @brand-info;
-//** Warning label background color
-@label-warning-bg:            @brand-warning;
-//** Danger label background color
-@label-danger-bg:             @brand-danger;
-
-//** Default label text color
-@label-color:                 #fff;
-//** Default text color of a linked label
-@label-link-hover-color:      #fff;
-
-
-//== Modals
-//
-//##
-
-//** Padding applied to the modal body
-@modal-inner-padding:         15px;
-
-//** Padding applied to the modal title
-@modal-title-padding:         15px;
-//** Modal title line-height
-@modal-title-line-height:     @line-height-base;
-
-//** Background color of modal content area
-@modal-content-bg:                             #fff;
-//** Modal content border color
-@modal-content-border-color:                   rgba(0,0,0,.2);
-//** Modal content border color **for IE8**
-@modal-content-fallback-border-color:          #999;
-
-//** Modal backdrop background color
-@modal-backdrop-bg:           #000;
-//** Modal backdrop opacity
-@modal-backdrop-opacity:      .5;
-//** Modal header border color
-@modal-header-border-color:   #e5e5e5;
-//** Modal footer border color
-@modal-footer-border-color:   @modal-header-border-color;
-
-@modal-lg:                    900px;
-@modal-md:                    600px;
-@modal-sm:                    300px;
-
-
-//== Alerts
-//
-//## Define alert colors, border radius, and padding.
-
-@alert-padding:               15px;
-@alert-border-radius:         @border-radius-base;
-@alert-link-font-weight:      bold;
-
-@alert-success-bg:            @state-success-bg;
-@alert-success-text:          @state-success-text;
-@alert-success-border:        @state-success-border;
-
-@alert-info-bg:               @state-info-bg;
-@alert-info-text:             @state-info-text;
-@alert-info-border:           @state-info-border;
-
-@alert-warning-bg:            @state-warning-bg;
-@alert-warning-text:          @state-warning-text;
-@alert-warning-border:        @state-warning-border;
-
-@alert-danger-bg:             @state-danger-bg;
-@alert-danger-text:           @state-danger-text;
-@alert-danger-border:         @state-danger-border;
-
-
-//== Progress bars
-//
-//##
-
-//** Background color of the whole progress component
-@progress-bg:                 #f5f5f5;
-//** Progress bar text color
-@progress-bar-color:          #fff;
-//** Variable for setting rounded corners on progress bar.
-@progress-border-radius:      @border-radius-base;
-
-//** Default progress bar color
-@progress-bar-bg:             @brand-primary;
-//** Success progress bar color
-@progress-bar-success-bg:     @brand-success;
-//** Warning progress bar color
-@progress-bar-warning-bg:     @brand-warning;
-//** Danger progress bar color
-@progress-bar-danger-bg:      @brand-danger;
-//** Info progress bar color
-@progress-bar-info-bg:        @brand-info;
-
-
-//== List group
-//
-//##
-
-//** Background color on `.list-group-item`
-@list-group-bg:                 #fff;
-//** `.list-group-item` border color
-@list-group-border:             #ddd;
-//** List group border radius
-@list-group-border-radius:      @border-radius-base;
-
-//** Background color of single list items on hover
-@list-group-hover-bg:           #f5f5f5;
-//** Text color of active list items
-@list-group-active-color:       @component-active-color;
-//** Background color of active list items
-@list-group-active-bg:          @component-active-bg;
-//** Border color of active list elements
-@list-group-active-border:      @list-group-active-bg;
-//** Text color for content within active list items
-@list-group-active-text-color:  lighten(@list-group-active-bg, 40%);
-
-//** Text color of disabled list items
-@list-group-disabled-color:      @gray-light;
-//** Background color of disabled list items
-@list-group-disabled-bg:         @gray-lighter;
-//** Text color for content within disabled list items
-@list-group-disabled-text-color: @list-group-disabled-color;
-
-@list-group-link-color:         #555;
-@list-group-link-hover-color:   @list-group-link-color;
-@list-group-link-heading-color: #333;
-
-
-//== Panels
-//
-//##
-
-@panel-bg:                    #fff;
-@panel-body-padding:          15px;
-@panel-heading-padding:       10px 15px;
-@panel-footer-padding:        @panel-heading-padding;
-@panel-border-radius:         @border-radius-base;
-
-//** Border color for elements within panels
-@panel-inner-border:          #ddd;
-@panel-footer-bg:             #f5f5f5;
-
-@panel-default-text:          @gray-dark;
-@panel-default-border:        #ddd;
-@panel-default-heading-bg:    #f5f5f5;
-
-@panel-primary-text:          #fff;
-@panel-primary-border:        @brand-primary;
-@panel-primary-heading-bg:    @brand-primary;
-
-@panel-success-text:          @state-success-text;
-@panel-success-border:        @state-success-border;
-@panel-success-heading-bg:    @state-success-bg;
-
-@panel-info-text:             @state-info-text;
-@panel-info-border:           @state-info-border;
-@panel-info-heading-bg:       @state-info-bg;
-
-@panel-warning-text:          @state-warning-text;
-@panel-warning-border:        @state-warning-border;
-@panel-warning-heading-bg:    @state-warning-bg;
-
-@panel-danger-text:           @state-danger-text;
-@panel-danger-border:         @state-danger-border;
-@panel-danger-heading-bg:     @state-danger-bg;
-
-
-//== Thumbnails
-//
-//##
-
-//** Padding around the thumbnail image
-@thumbnail-padding:           4px;
-//** Thumbnail background color
-@thumbnail-bg:                @body-bg;
-//** Thumbnail border color
-@thumbnail-border:            #ddd;
-//** Thumbnail border radius
-@thumbnail-border-radius:     @border-radius-base;
-
-//** Custom text color for thumbnail captions
-@thumbnail-caption-color:     @text-color;
-//** Padding around the thumbnail caption
-@thumbnail-caption-padding:   9px;
-
-
-//== Wells
-//
-//##
-
-@well-bg:                     #f5f5f5;
-@well-border:                 darken(@well-bg, 7%);
-
-
-//== Badges
-//
-//##
-
-@badge-color:                 #fff;
-//** Linked badge text color on hover
-@badge-link-hover-color:      #fff;
-@badge-bg:                    @gray-light;
-
-//** Badge text color in active nav link
-@badge-active-color:          @link-color;
-//** Badge background color in active nav link
-@badge-active-bg:             #fff;
-
-@badge-font-weight:           bold;
-@badge-line-height:           1;
-@badge-border-radius:         10px;
-
-
-//== Breadcrumbs
-//
-//##
-
-@breadcrumb-padding-vertical:   8px;
-@breadcrumb-padding-horizontal: 15px;
-//** Breadcrumb background color
-@breadcrumb-bg:                 #f5f5f5;
-//** Breadcrumb text color
-@breadcrumb-color:              #ccc;
-//** Text color of current page in the breadcrumb
-@breadcrumb-active-color:       @gray-light;
-//** Textual separator for between breadcrumb elements
-@breadcrumb-separator:          "/";
-
-
-//== Carousel
-//
-//##
-
-@carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6);
-
-@carousel-control-color:                      #fff;
-@carousel-control-width:                      15%;
-@carousel-control-opacity:                    .5;
-@carousel-control-font-size:                  20px;
-
-@carousel-indicator-active-bg:                #fff;
-@carousel-indicator-border-color:             #fff;
-
-@carousel-caption-color:                      #fff;
-
-
-//== Close
-//
-//##
-
-@close-font-weight:           bold;
-@close-color:                 #000;
-@close-text-shadow:           0 1px 0 #fff;
-
-
-//== Code
-//
-//##
-
-@code-color:                  #c7254e;
-@code-bg:                     #f9f2f4;
-
-@kbd-color:                   #fff;
-@kbd-bg:                      #333;
-
-@pre-bg:                      #f5f5f5;
-@pre-color:                   @gray-dark;
-@pre-border-color:            #ccc;
-@pre-scrollable-max-height:   340px;
-
-
-//== Type
-//
-//##
-
-//** Horizontal offset for forms and lists.
-@component-offset-horizontal: 180px;
-//** Text muted color
-@text-muted:                  @gray-light;
-//** Abbreviations and acronyms border color
-@abbr-border-color:           @gray-light;
-//** Headings small color
-@headings-small-color:        @gray-light;
-//** Blockquote small color
-@blockquote-small-color:      @gray-light;
-//** Blockquote font size
-@blockquote-font-size:        (@font-size-base * 1.25);
-//** Blockquote border color
-@blockquote-border-color:     @gray-lighter;
-//** Page header border color
-@page-header-border-color:    @gray-lighter;
-//** Width of horizontal description list titles
-@dl-horizontal-offset:        @component-offset-horizontal;
-//** Horizontal line color.
-@hr-border:                   #b2b2b2;
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/buttons.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/buttons.less
deleted file mode 100644
index bbb3c620..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/buttons.less
+++ /dev/null
@@ -1,61 +0,0 @@
-//
-// Buttons
-// --------------------------------------------------
-
-
-// Base styles
-// --------------------------------------------------
-
-// Core styles
-.btn {
-  display: inline-block;
-  padding: 5px 6px 4px 8px;
-  margin-top: 0;
-  margin-bottom: 0; // For input.btn
-  font-family: "Open Sans Condensed", sans-serif;
-  font-size: @font-size-base * 1.3;
-  font-weight: 700;
-  text-transform: uppercase;
-  letter-spacing: 1px;
-  line-height: @line-height-computed;
-  text-align: center;
-  vertical-align: middle;
-  touch-action: manipulation;
-  cursor: pointer;
-  background-color: @gray-lighter;
-  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
-  border: none;
-  border-radius: 3px;
-  .box-shadow(1px 1px 0 rgba(0, 0, 0, 0.3));
-  outline: none !important;
-  white-space: nowrap;
-  .user-select(none);
-
-  &:focus,
-  &.focus {
-    .tab-focus();
-  }
-
-  &:hover,
-  &:focus,
-  &.focus {
-    background-color: lighten(@gray-lighter, 5%);
-    text-decoration: none;
-    .transition(background-color .1s linear);
-  }
-
-  &:active,
-  &.active {
-    outline: 0;
-    padding: 6px 5px 3px 9px;
-  }
-
-  &.disabled,
-  &[disabled],
-  fieldset[disabled] & {
-    cursor: @cursor-disabled;
-    pointer-events: none; // Future-proof disabling of clicks
-    .opacity(65);
-    .box-shadow(1px 1px 0 rgba(0, 0, 0, 0.15));
-  }
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/code.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/code.less
deleted file mode 100644
index 33af7555..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/code.less
+++ /dev/null
@@ -1,8 +0,0 @@
-code {
-  margin: 0 2px;
-  padding: 1px 5px;
-  border: 1px solid #E1E1E8;
-  background-color: #F7F7F9;
-  color: @gray-dark;
-  font-size: 85%;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/evaluation-form.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/evaluation-form.less
deleted file mode 100644
index 6d505d56..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/evaluation-form.less
+++ /dev/null
@@ -1,91 +0,0 @@
-//
-// Evaluation form
-// --------------------------------------------------
-
-
-.evaluation-form {
-  .clearfix();
-
-  textarea {
-    height: 200px;
-  }
-}
-
-.evaluation-input-output {
-  float: left;
-  width: 65%;
-}
-
-.evaluation-input-clear-button {
-  position: absolute;
-  top: 0;
-  right: 0;
-  width: 15px;
-  height: 15px;
-  margin: 6px;
-  display: inline-block;
-  background: transparent url("../images/clear-text.png") no-repeat scroll 0 0;
-  opacity: 0.75;
-  line-height: 0;
-  vertical-align: bottom;
-  cursor: pointer;
-
-  &:hover {
-   opacity: 1;
- }
-}
-
-.evaluation-input-clear-button.with-scrollbar {
-  margin-right: 29px;
-}
-
-.evaluation-output {
-  margin-top: 1.5em;
-}
-
-.evaluation-input-field,
-.evaluation-output-field {
-  margin-bottom: 0.5em;
-  .box-sizing(border-box);
-  overflow-x: hidden;
-  line-height: @line-height-computed;
-}
-
-.evaluation-output-field {
-  &[readonly] {
-    cursor: auto;
-    background-color: @input-bg;
-  }
-}
-
-.evaluation-error-header {
-  margin-bottom: @line-height-computed;
-  padding-left: 52px;
-  background: transparent url("../images/icons/48x48/error.png") no-repeat scroll 0 50%;
-  color: @black;
-  font-family: @font-family-sans-serif;
-  font-weight: bold;
-  line-height: 48px;
-  vertical-align: middle;
-}
-
-ul.evaluation-error-list,
-ul.evaluation-warning-list {
-  li {
-    margin-bottom: 1em;
-
-    pre {
-      margin-top: 0.5em;
-      white-space: pre;
-      overflow: auto;
-    }
-  }
-}
-
-ul.evaluation-error-list li pre {
-  background-color: @state-danger-bg;
-}
-
-ul.evaluation-warning-list li pre {
-  background-color: @state-warning-bg;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/forms.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/forms.less
deleted file mode 100644
index 2ceb0559..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/forms.less
+++ /dev/null
@@ -1,99 +0,0 @@
-//
-// Forms
-// --------------------------------------------------
-
-// GENERAL STYLES
-// --------------
-
-label {
-  font-weight: normal;
-}
-
-
-// Form controls
-// -------------------------
-
-// Common form controls
-.form-control {
-  line-height: @input-height-base;
-}
-
-.textarea-wrapper {
-  position: relative;
-}
-
-// Form groups
-.form-group {
-  margin-bottom: 0.5em;
-}
-
-// Info and errors
-// --------------------------
-.message-info {
-  border: 1px solid;
-  clear: both;
-  padding: 10px 20px;
-  color: @state-info-text;
-}
-
-.message-error {
-  clear: both;
-  color: @state-danger-text;
-  font-size: 1.1em;
-  font-weight: bold;
-  margin: 20px 0 10px 0;
-}
-
-.message-success {
-  color: @state-success-text;
-  font-size: 1.3em;
-  font-weight: bold;
-  margin: 20px 0 10px 0;
-}
-
-.error {
-  color: @state-danger-text;
-}
-
-// Styles for validation helpers
-// --------------------------
-.validators {
-  font-style: normal;
-  padding-bottom: 0.5em;
-}
-
-.field-validation-error {
-  display: block;
-  padding-bottom: 0.5em;
-  color: @state-danger-text;
-  font-weight: bold;
-}
-
-.field-validation-valid {
-  display: none;
-}
-
-input.input-validation-error,
-textarea.input-validation-error,
-select.input-validation-error
-{
-  border: 1px solid @state-danger-border;
-  background-color: @state-danger-bg;
-  .box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work
-
-  &:focus {
-    border-color: @state-danger-border;
-    @shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@state-danger-text, 20%);
-    .box-shadow(@shadow);
-  }
-}
-
-.validation-summary-errors {
-  color: @state-danger-text;
-  font-weight: bold;
-  font-size: 1.1em;
-}
-
-.validation-summary-valid {
-  display: none;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/icons.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/icons.less
deleted file mode 100644
index 79b9d9e5..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/icons.less
+++ /dev/null
@@ -1,32 +0,0 @@
-//
-// Icons
-// --------------------------------------------------
-
-
-.icon {
-  background: transparent url(../images/icons/32x32/social-media-icons-32.png) no-repeat scroll;
-  display: inline-block;
-  line-height: 0;
-  vertical-align: bottom;
-}
-
-.icon-32 {
-  height: 32px;
-  width: 32px;
-}
-
-.icon-facebook {
-  background-position: 0 0;
-}
-
-.icon-twitter {
-  background-position: 0 -32px;
-}
-
-.icon-linkedin {
-  background-position: 0 -64px;
-}
-
-.icon-rss {
-  background-position: 0 -128px;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/layout.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/layout.less
deleted file mode 100644
index 35a7f386..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/layout.less
+++ /dev/null
@@ -1,128 +0,0 @@
-html,
-body {
-  margin: 0;
-  height: 100%;
-  /* The html and body elements cannot have any padding or margin */
-}
-
-/* Wrapper for page content to push down footer */
-.l-wrapper {
-  min-height: 100%;
-  height: auto !important;
-  height: 100%;
-  /* Negative indent footer by it's height */
-  margin: 0 auto (-1 * @footer-height);
-}
-
-.l-constrained {
-  margin: 0 auto;
-  padding-left: 20px;
-  padding-right: 20px;
-  max-width: 1200px;
-  min-width: 800px;
-}
-
-.l-header {
-  border-top: solid 10px @black;
-  border-bottom: 1px solid #d4b33a;
-  background-color: #f0db4f;
-
-  .l-constrained {
-    padding-top: 20px;
-    padding-bottom: 20px;
-    .clearfix();
-  }
-}
-
-.l-content {
-  .clearfix();
-}
-
-.l-main-content {
-  float: left;
-  width: 70%;
-}
-
-.l-sidebar {
-  float: right;
-  width: 30%;
-}
-
-/* Set the fixed height of the footer here */
-.l-push,
-.l-footer {
-  height: @footer-height;
-}
-
-.l-footer {
-  width: 100%;
-  background-color: @black;
-  color: @gray-lighter;
-  font-size: @font-size-small;
-  line-height: 100%;
-
-  .l-constrained {
-    padding-top: (@footer-height - 32) / 2;
-    .clearfix();
-  }
-
-  a {
-    color: @gray-lighter;
-    text-decoration: none;
-
-    &:hover,
-    &:active {
-      text-decoration: underline;
-    }
-  }
-}
-
-
-// Header
-// -------------------------
-
-.logo {
-  margin: 0;
-
-  a {
-    display: block;
-    float: left;
-    width: 100px;
-    height: 100px;
-    background: transparent url("../images/jsengineswitcher-logo.png") no-repeat scroll 0 0;
-    text-indent: -9999em;
-  }
-}
-
-.primary-nav {
-  position: relative;
-  left: 40px;
-  float: left;
-}
-
-
-// Footer
-// -------------------------
-
-.l-copyright {
-  float: left;
-    p {
-      margin: 0;
-      padding: 0;
-  }
-}
-
-.l-social {
-  float: right;
-
-  li {
-    display: inline;
-    list-style: none outside none;
-    padding-left: 10px;
-
-    a {
-      text-indent: -9999px;
-      outline: none;
-    }
-  }
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/mixins.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/mixins.less
deleted file mode 100644
index d26eee79..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/mixins.less
+++ /dev/null
@@ -1,9 +0,0 @@
-//
-// Mixins
-// --------------------------------------------------
-
-// NO Drop shadows
-.no-box-shadow {
-  -webkit-box-shadow: none; // iOS <4.3 & Android <4.1
-          box-shadow: none;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/navbar.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/navbar.less
deleted file mode 100644
index 95edf3c2..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/navbar.less
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// Navbars
-// --------------------------------------------------
-
-
-// Wrapper and base class
-//
-// Provide a static navbar from which we expand to create full-width, fixed, and
-// other navbar variations.
-
-.navbar {
-  border: none;
-  border-radius: 0;
-}
-
-// Navbar nav links
-//
-// Builds on top of the `.nav` components with it's own modifier class to make
-// the nav the full height of the horizontal nav (above 768px).
-
-.navbar-nav {
-  float: left;
-  margin: 0 auto;
-
-  > li {
-    > a {
-      float: none;
-      // Vertically center the text given @navbar-height
-      padding: ((@navbar-height - @line-height-computed) / 2) 15px ((@navbar-height - @line-height-computed) / 2);
-      border: 1px solid transparent;
-      font-family: "Open Sans", sans-serif;
-      font-size: 2.0em;
-      text-decoration: none;
-      text-transform: uppercase;
-      outline: none;
-    }
-  }
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/page-socials.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/page-socials.less
deleted file mode 100644
index ea12dc09..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/page-socials.less
+++ /dev/null
@@ -1,14 +0,0 @@
-.page-socials {
-  min-height: 60px;
-  margin-top: 20px;
-  padding-top: 15px;
-  border-top: 1px solid #b2b2b2;
-}
-
-.share-buttons {
-  li {
-    margin-right: 15px;
-    vertical-align: top;
-    line-height: normal;
-  }
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/type.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/type.less
deleted file mode 100644
index 02d69502..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/type.less
+++ /dev/null
@@ -1,24 +0,0 @@
-//
-// Typography
-// --------------------------------------------------
-
-// Headings
-// -------------------------
-
-h1, h2, h3 {
-  margin-top: 10px;
-}
-
-h1, h2 {
-  line-height: 40px;
-}
-
-h2 {
-  color: @black;
-  font-weight: bold;
-}
-
-h3 {
-  color: @gray-dark;
-  line-height: @line-height-computed * 1.25;
-}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/variables.less b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/variables.less
deleted file mode 100644
index 498c9796..00000000
--- a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore7.Mvc7/wwwroot/styles/variables.less
+++ /dev/null
@@ -1,7 +0,0 @@
-// Colors
-// -------------------------
-@black:                 #1d0d0d;
-
-// Footer
-// -------------------------
-@footer-height:                    55px;
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Controllers/HomeController.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Controllers/HomeController.cs
new file mode 100644
index 00000000..0128dc52
--- /dev/null
+++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Controllers/HomeController.cs
@@ -0,0 +1,83 @@
+using System.Diagnostics;
+using System.Threading.Tasks;
+
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.AspNetCore.Html;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Configuration;
+
+using JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8.Models;
+using JavaScriptEngineSwitcher.Sample.Logic.Models;
+using JavaScriptEngineSwitcher.Sample.Logic.Services;
+
+namespace JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8.Controllers
+{
+	public class HomeController : Controller
+	{
+		private readonly FileContentService _fileContentService;
+		private readonly JsEvaluationService _jsEvaluationService;
+
+
+		public HomeController(
+			IConfigurationRoot configuration,
+			IWebHostEnvironment hostingEnvironment,
+			JsEvaluationService jsEvaluationService)
+		{
+			string textContentDirectoryPath = configuration
+				.GetSection("jsengineswitcher")
+				.GetSection("Samples")["TextContentDirectoryPath"]
+				;
+
+			_fileContentService = new FileContentService(textContentDirectoryPath, hostingEnvironment);
+			_jsEvaluationService = jsEvaluationService;
+		}
+
+
+		[ResponseCache(CacheProfileName = "CacheCompressedContent5Minutes")]
+		public IActionResult Index()
+		{
+			ViewBag.Body = new HtmlString(_fileContentService.GetFileContent("index.html"));
+
+			return View();
+		}
+
+		[HttpGet]
+		[ResponseCache(CacheProfileName = "CacheCompressedContent5Minutes")]
+		public IActionResult Demo()
+		{
+			var model = _jsEvaluationService.GetInitializationData();
+
+			return View(model);
+		}
+
+		[HttpPost]
+		public async Task Demo(JsEvaluationViewModel editedModel)
+		{
+			var model = _jsEvaluationService.GetInitializationData();
+			await TryUpdateModelAsync(model, string.Empty, m => m.EngineName, m=> m.Expression);
+
+			if (ModelState.IsValid)
+			{
+				model = _jsEvaluationService.Evaluate(model);
+
+				ModelState.Clear();
+			}
+
+			return View(model);
+		}
+
+		[ResponseCache(CacheProfileName = "CacheCompressedContent5Minutes")]
+		public IActionResult Contact()
+		{
+			ViewBag.Body = new HtmlString(_fileContentService.GetFileContent("contact.html"));
+
+			return View();
+		}
+
+		[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
+		public IActionResult Error()
+		{
+			return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
+		}
+	}
+}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8.csproj b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8.csproj
new file mode 100644
index 00000000..1845c729
--- /dev/null
+++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8.csproj
@@ -0,0 +1,49 @@
+
+
+  
+    JS Engine Switcher: Sample ASP.NET Core 8.0 MVC 8 Site
+    3.30.2
+    net8.0
+    enable
+    Exe
+    true
+    true
+    true
+    false
+  
+
+  
+
+  
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+    
+  
+
+  
+
+
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Models/ErrorViewModel.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Models/ErrorViewModel.cs
new file mode 100644
index 00000000..8cf789c5
--- /dev/null
+++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Models/ErrorViewModel.cs
@@ -0,0 +1,9 @@
+namespace JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8.Models
+{
+	public class ErrorViewModel
+	{
+		public string RequestId { get; set; }
+
+		public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
+	}
+}
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Program.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Program.cs
new file mode 100644
index 00000000..2e472860
--- /dev/null
+++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Program.cs
@@ -0,0 +1,106 @@
+using Jering.Javascript.NodeJS;
+using Microsoft.AspNetCore.Mvc;
+
+using JavaScriptEngineSwitcher.ChakraCore;
+using JavaScriptEngineSwitcher.Extensions.MsDependencyInjection;
+using JavaScriptEngineSwitcher.Jint;
+using JavaScriptEngineSwitcher.Jurassic;
+using JavaScriptEngineSwitcher.Msie;
+using JavaScriptEngineSwitcher.NiL;
+using JavaScriptEngineSwitcher.Node;
+using JavaScriptEngineSwitcher.Sample.Logic.Services;
+using JavaScriptEngineSwitcher.V8;
+using JavaScriptEngineSwitcher.Vroom;
+using JavaScriptEngineSwitcher.Yantra;
+
+var builder = WebApplication.CreateBuilder(new WebApplicationOptions()
+{
+	WebRootPath = Path.Combine(
+		Directory.GetCurrentDirectory(),
+		"../JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot"
+	)
+});
+var env = builder.Environment;
+var configuration = new ConfigurationBuilder()
+	.SetBasePath(env.ContentRootPath)
+	.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
+	.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
+	.AddEnvironmentVariables()
+	.Build()
+	;
+
+#region Configure services
+
+IServiceCollection services = builder.Services;
+
+services.AddSingleton(configuration);
+
+// Add Jering Node.js service to the services container.
+services.AddNodeJS();
+
+// Add JavaScriptEngineSwitcher services to the services container.
+services.AddJsEngineSwitcher(options =>
+{
+	options.AllowCurrentProperty = false;
+	options.DefaultEngineName = ChakraCoreJsEngine.EngineName;
+})
+	.AddChakraCore()
+	.AddJint()
+	.AddJurassic()
+	.AddMsie(options =>
+	{
+		options.EngineMode = JsEngineMode.ChakraIeJsRt;
+	})
+	.AddNiL()
+	.AddNode(services)
+	.AddV8()
+	.AddVroom()
+	.AddYantra()
+	;
+
+services.Configure(options =>
+{
+	options.CacheProfiles.Add("CacheCompressedContent5Minutes",
+		new CacheProfile
+		{
+			NoStore = builder.Environment.IsDevelopment(),
+			Duration = 300,
+			Location = ResponseCacheLocation.Client,
+			VaryByHeader = "Accept-Encoding"
+		}
+	);
+});
+
+// Add framework services.
+services.AddControllersWithViews();
+
+// Add JavaScriptEngineSwitcher sample services to the services container.
+services.AddSingleton();
+
+#endregion
+
+#region Configure the HTTP request pipeline
+
+var app = builder.Build();
+
+if (app.Environment.IsDevelopment())
+{
+	app.UseDeveloperExceptionPage();
+}
+else
+{
+	app.UseExceptionHandler("/Home/Error");
+}
+
+app.UseStaticFiles();
+
+app.UseRouting();
+
+app.MapControllerRoute(
+	name: "default",
+	pattern: "{controller=Home}/{action=Index}/{id?}"
+);
+
+#endregion
+
+app.Run();
\ No newline at end of file
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Properties/launchSettings.json b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Properties/launchSettings.json
new file mode 100644
index 00000000..dda1c460
--- /dev/null
+++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Properties/launchSettings.json
@@ -0,0 +1,29 @@
+{
+  "$schema": "http://json.schemastore.org/launchsettings.json",
+  "iisSettings": {
+    "windowsAuthentication": false,
+    "anonymousAuthentication": true,
+    "iisExpress": {
+      "applicationUrl": "http://localhost:29737",
+      "sslPort": 0
+    }
+  },
+  "profiles": {
+    "http": {
+      "commandName": "Project",
+      "dotnetRunMessages": true,
+      "launchBrowser": true,
+      "applicationUrl": "http://localhost:5282",
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development"
+      }
+    },
+    "IIS Express": {
+      "commandName": "IISExpress",
+      "launchBrowser": true,
+      "environmentVariables": {
+        "ASPNETCORE_ENVIRONMENT": "Development"
+      }
+    }
+  }
+}
diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Views/Home/Contact.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Views/Home/Contact.cshtml
new file mode 100644
index 00000000..58785ebe
--- /dev/null
+++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Views/Home/Contact.cshtml
@@ -0,0 +1,8 @@
+@{
+	ViewBag.Title = "Contact";
+}
+
+
+

@ViewBag.Title

+ @ViewBag.Body +
\ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Views/Home/Demo.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Views/Home/Demo.cshtml new file mode 100644 index 00000000..befb8f43 --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Views/Home/Demo.cshtml @@ -0,0 +1,67 @@ +@using JavaScriptEngineSwitcher.Sample.Logic.Models +@using JavaScriptEngineSwitcher.Sample.Resources + +@model JsEvaluationViewModel + +@{ + ViewBag.Title = "Demo"; +} + +

@ViewBag.Title

+ +
+
+
+
+
+ + +
+
+ +
+ +
+ +
+
+ +
+
+ + @if (Model.Result != null) + { +
+ @if (Model.Result.Errors.Count == 0) + { +
+ + +
+ } + else + { + await Html.RenderPartialAsync("_JsEvaluationErrorList", Model.Result.Errors); + } +
+ } +
+
+
+ +@section Scripts { + + + + + + + + + +} \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Views/Home/Index.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Views/Home/Index.cshtml new file mode 100644 index 00000000..a9c2cfb1 --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Views/Home/Index.cshtml @@ -0,0 +1,8 @@ +@{ + ViewBag.Title = string.Empty; +} + +
+

Project Description

+ @ViewBag.Body +
\ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Views/Shared/Error.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Views/Shared/Error.cshtml new file mode 100644 index 00000000..bfb58107 --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Views/Shared/Error.cshtml @@ -0,0 +1,28 @@ +@using JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8.Models + +@model ErrorViewModel + +@{ + ViewData["Title"] = "Error"; +} + +

Error.

+

An error occurred while processing your request.

+ +@if (Model.ShowRequestId) +{ +

+ Request ID: @Model.RequestId +

+} + +

Development Mode

+

+ Swapping to Development environment will display more detailed information about the error that occurred. +

+

+ The Development environment shouldn't be enabled for deployed applications. + It can result in displaying sensitive information from exceptions to end users. + For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development + and restarting the app. +

\ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Views/Shared/_JsEvaluationErrorList.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Views/Shared/_JsEvaluationErrorList.cshtml new file mode 100644 index 00000000..9e0601d6 --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Views/Shared/_JsEvaluationErrorList.cshtml @@ -0,0 +1,23 @@ +@using JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure.Helpers +@using JavaScriptEngineSwitcher.Sample.Logic.Models + +@model IList + +

Found @Model.Count error(s):

+
    + @foreach (var error in Model) + { +
  • + @error.EngineFullName
    + @if (error.LineNumber > 0) + { + Line @error.LineNumber, Column @error.ColumnNumber
    + } + @Html.EncodedReplace(@error.Message, "\n\r?", "
    ") + @if (!string.IsNullOrWhiteSpace(error.SourceFragment)) + { +
    @error.SourceFragment
    + } +
  • + } +
\ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Views/Shared/_Layout.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Views/Shared/_Layout.cshtml new file mode 100644 index 00000000..ebe02bba --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Views/Shared/_Layout.cshtml @@ -0,0 +1,107 @@ +@using JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure.TagHelpers + + + + + + + + + @if (!string.IsNullOrEmpty(ViewBag.Title)) {<text>@ViewBag.Title | </text>}JavaScriptEngineSwitcher Sample ASP.NET Core 8.0 MVC 8 Site + + + + + + + + + + + + +
+ + + + + +
+
+ @RenderBody() +
+
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @await RenderSectionAsync("scripts", required: false) + + \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Views/_ViewImports.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Views/_ViewImports.cshtml new file mode 100644 index 00000000..8fe8384e --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Views/_ViewImports.cshtml @@ -0,0 +1,2 @@ +@addTagHelper "*, Microsoft.AspNetCore.Mvc.TagHelpers" +@addTagHelper "*, JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure" \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Views/_ViewStart.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Views/_ViewStart.cshtml new file mode 100644 index 00000000..817a9134 --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/Views/_ViewStart.cshtml @@ -0,0 +1,3 @@ +@{ + Layout = "_Layout"; +} \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/appsettings.Development.json b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/appsettings.Development.json new file mode 100644 index 00000000..0c208ae9 --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/appsettings.json b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/appsettings.json new file mode 100644 index 00000000..ed44b7ae --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore8.Mvc8/appsettings.json @@ -0,0 +1,15 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*", + + "JsEngineSwitcher": { + "Samples": { + "TextContentDirectoryPath": "../SharedData/text-content" + } + } +} diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Controllers/HomeController.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Controllers/HomeController.cs new file mode 100644 index 00000000..57f376ff --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Controllers/HomeController.cs @@ -0,0 +1,83 @@ +using System.Diagnostics; +using System.Threading.Tasks; + +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Html; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Configuration; + +using JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9.Models; +using JavaScriptEngineSwitcher.Sample.Logic.Models; +using JavaScriptEngineSwitcher.Sample.Logic.Services; + +namespace JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9.Controllers +{ + public class HomeController : Controller + { + private readonly FileContentService _fileContentService; + private readonly JsEvaluationService _jsEvaluationService; + + + public HomeController( + IConfigurationRoot configuration, + IWebHostEnvironment hostingEnvironment, + JsEvaluationService jsEvaluationService) + { + string textContentDirectoryPath = configuration + .GetSection("jsengineswitcher") + .GetSection("Samples")["TextContentDirectoryPath"] + ; + + _fileContentService = new FileContentService(textContentDirectoryPath, hostingEnvironment); + _jsEvaluationService = jsEvaluationService; + } + + + [ResponseCache(CacheProfileName = "CacheCompressedContent5Minutes")] + public IActionResult Index() + { + ViewBag.Body = new HtmlString(_fileContentService.GetFileContent("index.html")); + + return View(); + } + + [HttpGet] + [ResponseCache(CacheProfileName = "CacheCompressedContent5Minutes")] + public IActionResult Demo() + { + var model = _jsEvaluationService.GetInitializationData(); + + return View(model); + } + + [HttpPost] + public async Task Demo(JsEvaluationViewModel editedModel) + { + var model = _jsEvaluationService.GetInitializationData(); + await TryUpdateModelAsync(model, string.Empty, m => m.EngineName, m=> m.Expression); + + if (ModelState.IsValid) + { + model = _jsEvaluationService.Evaluate(model); + + ModelState.Clear(); + } + + return View(model); + } + + [ResponseCache(CacheProfileName = "CacheCompressedContent5Minutes")] + public IActionResult Contact() + { + ViewBag.Body = new HtmlString(_fileContentService.GetFileContent("contact.html")); + + return View(); + } + + [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] + public IActionResult Error() + { + return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); + } + } +} \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9.csproj b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9.csproj new file mode 100644 index 00000000..8f79d123 --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9.csproj @@ -0,0 +1,49 @@ + + + + JS Engine Switcher: Sample ASP.NET Core 9.0 MVC 9 Site + 3.30.2 + net9.0 + enable + Exe + true + true + true + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Models/ErrorViewModel.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Models/ErrorViewModel.cs new file mode 100644 index 00000000..20cc9827 --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Models/ErrorViewModel.cs @@ -0,0 +1,9 @@ +namespace JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9.Models +{ + public class ErrorViewModel + { + public string RequestId { get; set; } + + public bool ShowRequestId => !string.IsNullOrEmpty(RequestId); + } +} \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Program.cs b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Program.cs new file mode 100644 index 00000000..457ccf63 --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Program.cs @@ -0,0 +1,105 @@ +using Jering.Javascript.NodeJS; +using Microsoft.AspNetCore.Mvc; + +using JavaScriptEngineSwitcher.ChakraCore; +using JavaScriptEngineSwitcher.Extensions.MsDependencyInjection; +using JavaScriptEngineSwitcher.Jint; +using JavaScriptEngineSwitcher.Jurassic; +using JavaScriptEngineSwitcher.Msie; +using JavaScriptEngineSwitcher.NiL; +using JavaScriptEngineSwitcher.Node; +using JavaScriptEngineSwitcher.Sample.Logic.Services; +using JavaScriptEngineSwitcher.V8; +using JavaScriptEngineSwitcher.Vroom; +using JavaScriptEngineSwitcher.Yantra; + +var builder = WebApplication.CreateBuilder(new WebApplicationOptions() { + WebRootPath = Path.Combine( + Directory.GetCurrentDirectory(), + "../JavaScriptEngineSwitcher.Sample.AspNetCore.ClientSideAssets/wwwroot" + ) +}); +var env = builder.Environment; +var configuration = new ConfigurationBuilder() + .SetBasePath(env.ContentRootPath) + .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) + .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) + .AddEnvironmentVariables() + .Build() + ; + +#region Configure services + +IServiceCollection services = builder.Services; + +services.AddSingleton(configuration); + +// Add Jering Node.js service to the services container. +services.AddNodeJS(); + +// Add JavaScriptEngineSwitcher services to the services container. +services.AddJsEngineSwitcher(options => +{ + options.AllowCurrentProperty = false; + options.DefaultEngineName = ChakraCoreJsEngine.EngineName; +}) + .AddChakraCore() + .AddJint() + .AddJurassic() + .AddMsie(options => + { + options.EngineMode = JsEngineMode.ChakraIeJsRt; + }) + .AddNiL() + .AddNode(services) + .AddV8() + .AddVroom() + .AddYantra() + ; + +services.Configure(options => +{ + options.CacheProfiles.Add("CacheCompressedContent5Minutes", + new CacheProfile + { + NoStore = builder.Environment.IsDevelopment(), + Duration = 300, + Location = ResponseCacheLocation.Client, + VaryByHeader = "Accept-Encoding" + } + ); +}); + +// Add framework services. +services.AddControllersWithViews(); + +// Add JavaScriptEngineSwitcher sample services to the services container. +services.AddSingleton(); + +#endregion + +#region Configure the HTTP request pipeline + +var app = builder.Build(); + +if (app.Environment.IsDevelopment()) +{ + app.UseDeveloperExceptionPage(); +} +else +{ + app.UseExceptionHandler("/Home/Error"); +} + +app.UseRouting(); + +app.MapStaticAssets(); + +app.MapControllerRoute( + name: "default", + pattern: "{controller=Home}/{action=Index}/{id?}") + .WithStaticAssets(); + +#endregion + +app.Run(); \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Properties/launchSettings.json b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Properties/launchSettings.json new file mode 100644 index 00000000..a94e92ed --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Properties/launchSettings.json @@ -0,0 +1,38 @@ +{ + "$schema": "https://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:53687/", + "sslPort": 44308 + } + }, + "profiles": { + "http": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "dotnetRunMessages": true, + "applicationUrl": "http://localhost:5220" + }, + "https": { + "commandName": "Project", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "dotnetRunMessages": true, + "applicationUrl": "https://localhost:7242;http://localhost:5220" + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Views/Home/Contact.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Views/Home/Contact.cshtml new file mode 100644 index 00000000..58785ebe --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Views/Home/Contact.cshtml @@ -0,0 +1,8 @@ +@{ + ViewBag.Title = "Contact"; +} + +
+

@ViewBag.Title

+ @ViewBag.Body +
\ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Views/Home/Demo.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Views/Home/Demo.cshtml new file mode 100644 index 00000000..befb8f43 --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Views/Home/Demo.cshtml @@ -0,0 +1,67 @@ +@using JavaScriptEngineSwitcher.Sample.Logic.Models +@using JavaScriptEngineSwitcher.Sample.Resources + +@model JsEvaluationViewModel + +@{ + ViewBag.Title = "Demo"; +} + +

@ViewBag.Title

+ +
+
+
+
+
+ + +
+
+ +
+ +
+ +
+
+ +
+
+ + @if (Model.Result != null) + { +
+ @if (Model.Result.Errors.Count == 0) + { +
+ + +
+ } + else + { + await Html.RenderPartialAsync("_JsEvaluationErrorList", Model.Result.Errors); + } +
+ } +
+
+
+ +@section Scripts { + + + + + + + + + +} \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Views/Home/Index.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Views/Home/Index.cshtml new file mode 100644 index 00000000..a9c2cfb1 --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Views/Home/Index.cshtml @@ -0,0 +1,8 @@ +@{ + ViewBag.Title = string.Empty; +} + +
+

Project Description

+ @ViewBag.Body +
\ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Views/Shared/Error.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Views/Shared/Error.cshtml new file mode 100644 index 00000000..b568b9f2 --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Views/Shared/Error.cshtml @@ -0,0 +1,28 @@ +@using JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9.Models + +@model ErrorViewModel + +@{ + ViewData["Title"] = "Error"; +} + +

Error.

+

An error occurred while processing your request.

+ +@if (Model.ShowRequestId) +{ +

+ Request ID: @Model.RequestId +

+} + +

Development Mode

+

+ Swapping to Development environment will display more detailed information about the error that occurred. +

+

+ The Development environment shouldn't be enabled for deployed applications. + It can result in displaying sensitive information from exceptions to end users. + For local debugging, enable the Development environment by setting the ASPNETCORE_ENVIRONMENT environment variable to Development + and restarting the app. +

\ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Views/Shared/_JsEvaluationErrorList.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Views/Shared/_JsEvaluationErrorList.cshtml new file mode 100644 index 00000000..9e0601d6 --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Views/Shared/_JsEvaluationErrorList.cshtml @@ -0,0 +1,23 @@ +@using JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure.Helpers +@using JavaScriptEngineSwitcher.Sample.Logic.Models + +@model IList + +

Found @Model.Count error(s):

+
    + @foreach (var error in Model) + { +
  • + @error.EngineFullName
    + @if (error.LineNumber > 0) + { + Line @error.LineNumber, Column @error.ColumnNumber
    + } + @Html.EncodedReplace(@error.Message, "\n\r?", "
    ") + @if (!string.IsNullOrWhiteSpace(error.SourceFragment)) + { +
    @error.SourceFragment
    + } +
  • + } +
\ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Views/Shared/_Layout.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Views/Shared/_Layout.cshtml new file mode 100644 index 00000000..b595497f --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Views/Shared/_Layout.cshtml @@ -0,0 +1,107 @@ +@using JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure.TagHelpers + + + + + + + + + @if (!string.IsNullOrEmpty(ViewBag.Title)) {<text>@ViewBag.Title | </text>}JavaScriptEngineSwitcher Sample ASP.NET Core 9.0 MVC 9 Site + + + + + + + + + + + + +
+ + + + + +
+
+ @RenderBody() +
+
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @await RenderSectionAsync("scripts", required: false) + + \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Views/_ViewImports.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Views/_ViewImports.cshtml new file mode 100644 index 00000000..dcad619c --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Views/_ViewImports.cshtml @@ -0,0 +1,2 @@ +@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers +@addTagHelper *, JavaScriptEngineSwitcher.Sample.AspNetCore.Infrastructure \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Views/_ViewStart.cshtml b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Views/_ViewStart.cshtml new file mode 100644 index 00000000..817a9134 --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/Views/_ViewStart.cshtml @@ -0,0 +1,3 @@ +@{ + Layout = "_Layout"; +} \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/appsettings.Development.json b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/appsettings.Development.json new file mode 100644 index 00000000..0c208ae9 --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/appsettings.json b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/appsettings.json new file mode 100644 index 00000000..ed44b7ae --- /dev/null +++ b/samples/JavaScriptEngineSwitcher.Sample.AspNetCore9.Mvc9/appsettings.json @@ -0,0 +1,15 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*", + + "JsEngineSwitcher": { + "Samples": { + "TextContentDirectoryPath": "../SharedData/text-content" + } + } +} diff --git a/samples/JavaScriptEngineSwitcher.Sample.Logic/JavaScriptEngineSwitcher.Sample.Logic.csproj b/samples/JavaScriptEngineSwitcher.Sample.Logic/JavaScriptEngineSwitcher.Sample.Logic.csproj index 09fca428..9112f74a 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.Logic/JavaScriptEngineSwitcher.Sample.Logic.csproj +++ b/samples/JavaScriptEngineSwitcher.Sample.Logic/JavaScriptEngineSwitcher.Sample.Logic.csproj @@ -2,11 +2,13 @@ JS Engine Switcher: Logic for Samples - 3.21.3 - net40;net451;net471;netstandard1.6;netstandard2.0;netcoreapp3.1;net5.0;net6.0;net7.0 + 3.30.2 + net40;net451;net471;netstandard1.6;netstandard2.0;netcoreapp3.1;net5.0;net6.0;net7.0;net8.0;net9.0;net10.0 1.6.0 Library true + $(NoWarn);NETSDK1215;NU1902;NU1903;NU1904 + false false false @@ -31,7 +33,7 @@ - + @@ -44,11 +46,23 @@ - + - + + + + + + + + + + + + + \ No newline at end of file diff --git a/samples/JavaScriptEngineSwitcher.Sample.Resources/CommonStrings.Designer.cs b/samples/JavaScriptEngineSwitcher.Sample.Resources/CommonStrings.Designer.cs index 131d9cd3..3e6c3446 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.Resources/CommonStrings.Designer.cs +++ b/samples/JavaScriptEngineSwitcher.Sample.Resources/CommonStrings.Designer.cs @@ -21,7 +21,7 @@ public class CommonStrings private static Lazy _resourceManager = new Lazy(() => new ResourceManager( "JavaScriptEngineSwitcher.Sample.Resources.CommonStrings", -#if NET40 +#if NET20 || NET30 || NET35 || NET40 typeof(CommonStrings).Assembly #else typeof(CommonStrings).GetTypeInfo().Assembly diff --git a/samples/JavaScriptEngineSwitcher.Sample.Resources/EvaluationStrings.Designer.cs b/samples/JavaScriptEngineSwitcher.Sample.Resources/EvaluationStrings.Designer.cs index 7fc38392..14fa940f 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.Resources/EvaluationStrings.Designer.cs +++ b/samples/JavaScriptEngineSwitcher.Sample.Resources/EvaluationStrings.Designer.cs @@ -21,7 +21,7 @@ public class EvaluationStrings private static Lazy _resourceManager = new Lazy(() => new ResourceManager( "JavaScriptEngineSwitcher.Sample.Resources.EvaluationStrings", -#if NET40 +#if NET20 || NET30 || NET35 || NET40 typeof(EvaluationStrings).Assembly #else typeof(EvaluationStrings).GetTypeInfo().Assembly diff --git a/samples/JavaScriptEngineSwitcher.Sample.Resources/JavaScriptEngineSwitcher.Sample.Resources.csproj b/samples/JavaScriptEngineSwitcher.Sample.Resources/JavaScriptEngineSwitcher.Sample.Resources.csproj index 85deffc3..21b8c5cb 100644 --- a/samples/JavaScriptEngineSwitcher.Sample.Resources/JavaScriptEngineSwitcher.Sample.Resources.csproj +++ b/samples/JavaScriptEngineSwitcher.Sample.Resources/JavaScriptEngineSwitcher.Sample.Resources.csproj @@ -2,11 +2,13 @@ JS Engine Switcher: Resources for Samples - 3.21.3 + 3.30.2 net40-client;net45;net471;netstandard1.3;netstandard2.0 1.6.0 Library true + $(NoWarn);NETSDK1215;NU1903 + false true false @@ -15,7 +17,7 @@ - + diff --git a/samples/SharedData/text-content/contact.html b/samples/SharedData/text-content/contact.html index 5fef06d5..7b72dd94 100644 --- a/samples/SharedData/text-content/contact.html +++ b/samples/SharedData/text-content/contact.html @@ -9,7 +9,5 @@

Email

Personal Site

www.taritsyn.ru

-

Twitter

-

- -

\ No newline at end of file +

Mastodon

+

@taritsyn@fosstodon.org

\ No newline at end of file diff --git a/samples/SharedData/text-content/index.html b/samples/SharedData/text-content/index.html index bdf731bf..3f876a89 100644 --- a/samples/SharedData/text-content/index.html +++ b/samples/SharedData/text-content/index.html @@ -1,2 +1,2 @@ -

JavaScript Engine Switcher determines unified interface for access to the basic features of popular JavaScript engines (ChakraCore, Jint, Jurassic, MSIE JavaScript Engine for .NET, NiL.JS, Jering.Javascript.NodeJS, Microsoft ClearScript.V8, VroomJs and YantraJS). This library allows you to quickly and easily switch to using of another JavaScript engine.

+

JavaScript Engine Switcher determines unified interface for access to the basic features of popular JavaScript engines (ChakraCore, Jint, Jurassic, MSIE JavaScript Engine for .NET, NiL.JS, Jering.Javascript.NodeJS, Microsoft ClearScript.V8, VroomJs and YantraJS). This library allows you to quickly and easily switch to using of another JavaScript engine.

JavaScript Engine Switcher was created and is maintained by Andrey Taritsyn.

\ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64/JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64.csproj b/src/JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64/JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64.csproj index cb23b32c..40c96426 100644 --- a/src/JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64/JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64.csproj +++ b/src/JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64/JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64.csproj @@ -2,7 +2,7 @@ JS Engine Switcher: ChakraCore for Linux (x64) - 3.21.0 + 3.27.3 netstandard2.0 @@ -11,12 +11,11 @@ - This package complements the JavaScriptEngineSwitcher.ChakraCore package and contains the native implementation of ChakraCore version of January 26, 2023 for Linux (x64). - -This package is only compatible with .NET Core. - $(PackageCommonTags);ChakraCore;Linux;x64 + https://raw.githubusercontent.com/Taritsyn/JavaScriptEngineSwitcher/master/Icons/JavaScriptEngineSwitcher_ChakraCore_Logo128x128.png ../../Icons/JavaScriptEngineSwitcher_ChakraCore_Logo128x128.png - ChakraCore was updated to version of January 26, 2023. + This package complements the JavaScriptEngineSwitcher.ChakraCore package and contains the native implementation of ChakraCore for Linux (x64). + $(PackageCommonTags);ChakraCore;Linux;x64 + ChakraCore was updated to version of August 1, 2024. \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64/JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64.nuspec b/src/JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64/JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64.nuspec index 3a5890de..d5a1567f 100644 --- a/src/JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64/JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64.nuspec +++ b/src/JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64/JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64.nuspec @@ -1,12 +1,11 @@  - + $CommonMetadataElements$ $CommonFileElements$ - - + \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64/PACKAGE-DESCRIPTION.md b/src/JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64/PACKAGE-DESCRIPTION.md new file mode 100644 index 00000000..202c0c2b --- /dev/null +++ b/src/JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64/PACKAGE-DESCRIPTION.md @@ -0,0 +1,3 @@ +This package complements the [JavaScriptEngineSwitcher.ChakraCore](https://www.nuget.org/packages/JavaScriptEngineSwitcher.ChakraCore) package and contains the native implementation of [ChakraCore](https://github.com/chakra-core/ChakraCore) version of August 1, 2024 for Linux (x64). + +This package is only compatible with .NET Core. \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64/readme.txt b/src/JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64/readme.txt index 3a26e0d8..fd2f8f3c 100644 --- a/src/JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64/readme.txt +++ b/src/JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64/readme.txt @@ -1,18 +1,18 @@  -------------------------------------------------------------------------------- - README file for JS Engine Switcher: ChakraCore for Linux x64 v3.21.0 + README file for JS Engine Switcher: ChakraCore for Linux x64 v3.27.3 -------------------------------------------------------------------------------- - Copyright (c) 2013-2023 Andrey Taritsyn - http://www.taritsyn.ru + Copyright (c) 2013-2024 Andrey Taritsyn - http://www.taritsyn.ru =========== DESCRIPTION =========== This package complements the JavaScriptEngineSwitcher.ChakraCore package and - contains the native implementation of ChakraCore version of January 26, 2023 + contains the native implementation of ChakraCore version of August 1, 2024 for Linux (x64). This package is only compatible with .NET Core. @@ -20,7 +20,7 @@ ============= RELEASE NOTES ============= - ChakraCore was updated to version of January 26, 2023. + ChakraCore was updated to version of August 1, 2024. ============= DOCUMENTATION diff --git a/src/JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64/JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64.csproj b/src/JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64/JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64.csproj index 01a3c9a0..16d5be07 100644 --- a/src/JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64/JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64.csproj +++ b/src/JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64/JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64.csproj @@ -2,7 +2,7 @@ JS Engine Switcher: ChakraCore for OS X (x64) - 3.21.0 + 3.27.3 netstandard2.0 @@ -11,12 +11,11 @@ - This package complements the JavaScriptEngineSwitcher.ChakraCore package and contains the native implementation of ChakraCore version of January 26, 2023 for OS X (x64). - -This package is only compatible with .NET Core. - $(PackageCommonTags);ChakraCore;macOS;OSX;x64 + https://raw.githubusercontent.com/Taritsyn/JavaScriptEngineSwitcher/master/Icons/JavaScriptEngineSwitcher_ChakraCore_Logo128x128.png ../../Icons/JavaScriptEngineSwitcher_ChakraCore_Logo128x128.png - ChakraCore was updated to version of January 26, 2023. + This package complements the JavaScriptEngineSwitcher.ChakraCore package and contains the native implementation of ChakraCore for OS X (x64). + $(PackageCommonTags);ChakraCore;macOS;OSX;x64 + ChakraCore was updated to version of August 1, 2024. \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64/JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64.nuspec b/src/JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64/JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64.nuspec index 1c927fed..a9105540 100644 --- a/src/JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64/JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64.nuspec +++ b/src/JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64/JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64.nuspec @@ -1,12 +1,11 @@  - + $CommonMetadataElements$ $CommonFileElements$ - - + \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64/PACKAGE-DESCRIPTION.md b/src/JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64/PACKAGE-DESCRIPTION.md new file mode 100644 index 00000000..910cd8d8 --- /dev/null +++ b/src/JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64/PACKAGE-DESCRIPTION.md @@ -0,0 +1,3 @@ +This package complements the [JavaScriptEngineSwitcher.ChakraCore](https://www.nuget.org/packages/JavaScriptEngineSwitcher.ChakraCore) package and contains the native implementation of [ChakraCore](https://github.com/chakra-core/ChakraCore) version of August 1, 2024 for OS X (x64). + +This package is only compatible with .NET Core. \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64/readme.txt b/src/JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64/readme.txt index d40b3267..2b84ec5b 100644 --- a/src/JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64/readme.txt +++ b/src/JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64/readme.txt @@ -1,18 +1,18 @@  -------------------------------------------------------------------------------- - README file for JS Engine Switcher: ChakraCore for OS X x64 v3.21.0 + README file for JS Engine Switcher: ChakraCore for OS X x64 v3.27.3 -------------------------------------------------------------------------------- - Copyright (c) 2013-2023 Andrey Taritsyn - http://www.taritsyn.ru + Copyright (c) 2013-2024 Andrey Taritsyn - http://www.taritsyn.ru =========== DESCRIPTION =========== This package complements the JavaScriptEngineSwitcher.ChakraCore package and - contains the native implementation of ChakraCore version of January 26, 2023 + contains the native implementation of ChakraCore version of August 1, 2024 for OS X (x64). This package is only compatible with .NET Core. @@ -20,7 +20,7 @@ ============= RELEASE NOTES ============= - ChakraCore was updated to version of January 26, 2023. + ChakraCore was updated to version of August 1, 2024. ============= DOCUMENTATION diff --git a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm.csproj b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm.csproj index 43532cbc..4c281d94 100644 --- a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm.csproj +++ b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm.csproj @@ -2,7 +2,7 @@ JS Engine Switcher: ChakraCore for Windows (ARM) - 3.21.0 + 3.27.3 netstandard2.0 @@ -11,12 +11,11 @@ - This package complements the JavaScriptEngineSwitcher.ChakraCore package and contains the native implementation of ChakraCore version of January 26, 2023 for Windows (ARM). - -This package is only compatible with .NET Core and .NET Framework 4.5. - $(PackageCommonTags);ChakraCore;Windows;ARM + https://raw.githubusercontent.com/Taritsyn/JavaScriptEngineSwitcher/master/Icons/JavaScriptEngineSwitcher_ChakraCore_Logo128x128.png ../../Icons/JavaScriptEngineSwitcher_ChakraCore_Logo128x128.png - ChakraCore was updated to version of January 26, 2023. + This package complements the JavaScriptEngineSwitcher.ChakraCore package and contains the native implementation of ChakraCore for Windows (ARM). + $(PackageCommonTags);ChakraCore;Windows;ARM + ChakraCore was updated to version of August 1, 2024. \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm.nuspec b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm.nuspec index a947ac29..bd55ce3c 100644 --- a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm.nuspec +++ b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm.nuspec @@ -1,5 +1,5 @@  - + $CommonMetadataElements$ @@ -9,7 +9,6 @@ - - + \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm/PACKAGE-DESCRIPTION.md b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm/PACKAGE-DESCRIPTION.md new file mode 100644 index 00000000..0e15d877 --- /dev/null +++ b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm/PACKAGE-DESCRIPTION.md @@ -0,0 +1,3 @@ +This package complements the [JavaScriptEngineSwitcher.ChakraCore](https://www.nuget.org/packages/JavaScriptEngineSwitcher.ChakraCore) package and contains the native implementation of [ChakraCore](https://github.com/chakra-core/ChakraCore) version of August 1, 2024 for Windows (ARM). + +This package is only compatible with .NET Core and .NET Framework 4.5. \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm/build/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm.props b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm/build/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm.props index 2e821127..bedb5851 100644 --- a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm/build/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm.props +++ b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm/build/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm.props @@ -1,10 +1,16 @@  - + - + arm/%(Filename)%(Extension) PreserveNewest False + + + %(Filename)%(Extension) + PreserveNewest + False + \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm/readme.txt b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm/readme.txt index 6e20d155..5f8ec868 100644 --- a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm/readme.txt +++ b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm/readme.txt @@ -1,18 +1,18 @@  -------------------------------------------------------------------------------- - README file for JS Engine Switcher: ChakraCore for Windows ARM v3.21.0 + README file for JS Engine Switcher: ChakraCore for Windows ARM v3.27.3 -------------------------------------------------------------------------------- - Copyright (c) 2013-2023 Andrey Taritsyn - http://www.taritsyn.ru + Copyright (c) 2013-2024 Andrey Taritsyn - http://www.taritsyn.ru =========== DESCRIPTION =========== This package complements the JavaScriptEngineSwitcher.ChakraCore package and - contains the native implementation of ChakraCore version of January 26, 2023 + contains the native implementation of ChakraCore version of August 1, 2024 for Windows (ARM). This package is only compatible with .NET Core and .NET Framework 4.5. @@ -20,7 +20,7 @@ ============= RELEASE NOTES ============= - ChakraCore was updated to version of January 26, 2023. + ChakraCore was updated to version of August 1, 2024. ============= DOCUMENTATION diff --git a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64.csproj b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64.csproj index 03d9e5c6..8e1d3262 100644 --- a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64.csproj +++ b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64.csproj @@ -2,7 +2,7 @@ JS Engine Switcher: ChakraCore for Windows (ARM64) - 3.21.0 + 3.27.3 netstandard2.0 @@ -11,12 +11,11 @@ - This package complements the JavaScriptEngineSwitcher.ChakraCore package and contains the native implementation of ChakraCore version of January 26, 2023 for Windows (ARM64). - -This package is only compatible with .NET Core and .NET Framework 4.5. - $(PackageCommonTags);ChakraCore;Windows;ARM64 + https://raw.githubusercontent.com/Taritsyn/JavaScriptEngineSwitcher/master/Icons/JavaScriptEngineSwitcher_ChakraCore_Logo128x128.png ../../Icons/JavaScriptEngineSwitcher_ChakraCore_Logo128x128.png - ChakraCore was updated to version of January 26, 2023. + This package complements the JavaScriptEngineSwitcher.ChakraCore package and contains the native implementation of ChakraCore for Windows (ARM64). + $(PackageCommonTags);ChakraCore;Windows;ARM64 + ChakraCore was updated to version of August 1, 2024. \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64.nuspec b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64.nuspec index 9a929187..be7a9192 100644 --- a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64.nuspec +++ b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64.nuspec @@ -1,5 +1,5 @@  - + $CommonMetadataElements$ @@ -9,7 +9,6 @@ - - + \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64/PACKAGE-DESCRIPTION.md b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64/PACKAGE-DESCRIPTION.md new file mode 100644 index 00000000..70ef2878 --- /dev/null +++ b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64/PACKAGE-DESCRIPTION.md @@ -0,0 +1,3 @@ +This package complements the [JavaScriptEngineSwitcher.ChakraCore](https://www.nuget.org/packages/JavaScriptEngineSwitcher.ChakraCore) package and contains the native implementation of [ChakraCore](https://github.com/chakra-core/ChakraCore) version of August 1, 2024 for Windows (ARM64). + +This package is only compatible with .NET Core and .NET Framework 4.5. \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64/build/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64.props b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64/build/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64.props index 83a3b254..f783db92 100644 --- a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64/build/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64.props +++ b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64/build/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64.props @@ -1,10 +1,16 @@  - + - + arm64/%(Filename)%(Extension) PreserveNewest False + + + %(Filename)%(Extension) + PreserveNewest + False + \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64/readme.txt b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64/readme.txt index 45ead7bd..d6809f35 100644 --- a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64/readme.txt +++ b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64/readme.txt @@ -1,18 +1,18 @@  -------------------------------------------------------------------------------- - README file for JS Engine Switcher: ChakraCore for Windows ARM64 v3.21.0 + README file for JS Engine Switcher: ChakraCore for Windows ARM64 v3.27.3 -------------------------------------------------------------------------------- - Copyright (c) 2013-2023 Andrey Taritsyn - http://www.taritsyn.ru + Copyright (c) 2013-2024 Andrey Taritsyn - http://www.taritsyn.ru =========== DESCRIPTION =========== This package complements the JavaScriptEngineSwitcher.ChakraCore package and - contains the native implementation of ChakraCore version of January 26, 2023 + contains the native implementation of ChakraCore version of August 1, 2024 for Windows (ARM64). This package is only compatible with .NET Core and .NET Framework 4.5. @@ -20,7 +20,7 @@ ============= RELEASE NOTES ============= - ChakraCore was updated to version of January 26, 2023. + ChakraCore was updated to version of August 1, 2024. ============= DOCUMENTATION diff --git a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x64/JavaScriptEngineSwitcher.ChakraCore.Native.win-x64.csproj b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x64/JavaScriptEngineSwitcher.ChakraCore.Native.win-x64.csproj index 62efb0c6..26562fe9 100644 --- a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x64/JavaScriptEngineSwitcher.ChakraCore.Native.win-x64.csproj +++ b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x64/JavaScriptEngineSwitcher.ChakraCore.Native.win-x64.csproj @@ -2,7 +2,7 @@ JS Engine Switcher: ChakraCore for Windows (x64) - 3.21.0 + 3.27.3 netstandard2.0 @@ -11,10 +11,11 @@ - This package complements the JavaScriptEngineSwitcher.ChakraCore package and contains the native implementation of ChakraCore version of January 26, 2023 for Windows (x64). - $(PackageCommonTags);ChakraCore;Windows;x64 + https://raw.githubusercontent.com/Taritsyn/JavaScriptEngineSwitcher/master/Icons/JavaScriptEngineSwitcher_ChakraCore_Logo128x128.png ../../Icons/JavaScriptEngineSwitcher_ChakraCore_Logo128x128.png - ChakraCore was updated to version of January 26, 2023. + This package complements the JavaScriptEngineSwitcher.ChakraCore package and contains the native implementation of ChakraCore for Windows (x64). + $(PackageCommonTags);ChakraCore;Windows;x64 + ChakraCore was updated to version of August 1, 2024. \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x64/JavaScriptEngineSwitcher.ChakraCore.Native.win-x64.nuspec b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x64/JavaScriptEngineSwitcher.ChakraCore.Native.win-x64.nuspec index 59d49552..dd6618a8 100644 --- a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x64/JavaScriptEngineSwitcher.ChakraCore.Native.win-x64.nuspec +++ b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x64/JavaScriptEngineSwitcher.ChakraCore.Native.win-x64.nuspec @@ -1,5 +1,5 @@  - + $CommonMetadataElements$ @@ -9,7 +9,6 @@ - - + \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x64/PACKAGE-DESCRIPTION.md b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x64/PACKAGE-DESCRIPTION.md new file mode 100644 index 00000000..0cd8c83c --- /dev/null +++ b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x64/PACKAGE-DESCRIPTION.md @@ -0,0 +1 @@ +This package complements the [JavaScriptEngineSwitcher.ChakraCore](https://www.nuget.org/packages/JavaScriptEngineSwitcher.ChakraCore) package and contains the native implementation of [ChakraCore](https://github.com/chakra-core/ChakraCore) version of August 1, 2024 for Windows (x64). \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x64/build/JavaScriptEngineSwitcher.ChakraCore.Native.win-x64.props b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x64/build/JavaScriptEngineSwitcher.ChakraCore.Native.win-x64.props index eb04ff0a..5a187768 100644 --- a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x64/build/JavaScriptEngineSwitcher.ChakraCore.Native.win-x64.props +++ b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x64/build/JavaScriptEngineSwitcher.ChakraCore.Native.win-x64.props @@ -1,10 +1,16 @@  - + - + x64/%(Filename)%(Extension) PreserveNewest False + + + %(Filename)%(Extension) + PreserveNewest + False + \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x64/readme.txt b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x64/readme.txt index b09dfd0f..6ac75fb7 100644 --- a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x64/readme.txt +++ b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x64/readme.txt @@ -1,24 +1,24 @@  -------------------------------------------------------------------------------- - README file for JS Engine Switcher: ChakraCore for Windows x64 v3.21.0 + README file for JS Engine Switcher: ChakraCore for Windows x64 v3.27.3 -------------------------------------------------------------------------------- - Copyright (c) 2013-2023 Andrey Taritsyn - http://www.taritsyn.ru + Copyright (c) 2013-2024 Andrey Taritsyn - http://www.taritsyn.ru =========== DESCRIPTION =========== This package complements the JavaScriptEngineSwitcher.ChakraCore package and - contains the native implementation of ChakraCore version of January 26, 2023 + contains the native implementation of ChakraCore version of August 1, 2024 for Windows (x64). ============= RELEASE NOTES ============= - ChakraCore was updated to version of January 26, 2023. + ChakraCore was updated to version of August 1, 2024. ============= DOCUMENTATION diff --git a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x86/JavaScriptEngineSwitcher.ChakraCore.Native.win-x86.csproj b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x86/JavaScriptEngineSwitcher.ChakraCore.Native.win-x86.csproj index a04ba2b8..b90cd8f5 100644 --- a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x86/JavaScriptEngineSwitcher.ChakraCore.Native.win-x86.csproj +++ b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x86/JavaScriptEngineSwitcher.ChakraCore.Native.win-x86.csproj @@ -2,7 +2,7 @@ JS Engine Switcher: ChakraCore for Windows (x86) - 3.21.0 + 3.27.3 netstandard2.0 @@ -11,10 +11,11 @@ - This package complements the JavaScriptEngineSwitcher.ChakraCore package and contains the native implementation of ChakraCore version of January 26, 2023 for Windows (x86). - $(PackageCommonTags);ChakraCore;Windows;x86 + https://raw.githubusercontent.com/Taritsyn/JavaScriptEngineSwitcher/master/Icons/JavaScriptEngineSwitcher_ChakraCore_Logo128x128.png ../../Icons/JavaScriptEngineSwitcher_ChakraCore_Logo128x128.png - ChakraCore was updated to version of January 26, 2023. + This package complements the JavaScriptEngineSwitcher.ChakraCore package and contains the native implementation of ChakraCore for Windows (x86). + $(PackageCommonTags);ChakraCore;Windows;x86 + ChakraCore was updated to version of August 1, 2024. \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x86/JavaScriptEngineSwitcher.ChakraCore.Native.win-x86.nuspec b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x86/JavaScriptEngineSwitcher.ChakraCore.Native.win-x86.nuspec index 7f3f7f23..8b0bc5e3 100644 --- a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x86/JavaScriptEngineSwitcher.ChakraCore.Native.win-x86.nuspec +++ b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x86/JavaScriptEngineSwitcher.ChakraCore.Native.win-x86.nuspec @@ -1,5 +1,5 @@  - + $CommonMetadataElements$ @@ -9,7 +9,6 @@ - - + \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x86/PACKAGE-DESCRIPTION.md b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x86/PACKAGE-DESCRIPTION.md new file mode 100644 index 00000000..b6951ff8 --- /dev/null +++ b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x86/PACKAGE-DESCRIPTION.md @@ -0,0 +1 @@ +This package complements the [JavaScriptEngineSwitcher.ChakraCore](https://www.nuget.org/packages/JavaScriptEngineSwitcher.ChakraCore) package and contains the native implementation of [ChakraCore](https://github.com/chakra-core/ChakraCore) version of August 1, 2024 for Windows (x86). \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x86/build/JavaScriptEngineSwitcher.ChakraCore.Native.win-x86.props b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x86/build/JavaScriptEngineSwitcher.ChakraCore.Native.win-x86.props index 21d78888..be3fd380 100644 --- a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x86/build/JavaScriptEngineSwitcher.ChakraCore.Native.win-x86.props +++ b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x86/build/JavaScriptEngineSwitcher.ChakraCore.Native.win-x86.props @@ -1,10 +1,16 @@  - + - + x86/%(Filename)%(Extension) PreserveNewest False + + + %(Filename)%(Extension) + PreserveNewest + False + \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x86/readme.txt b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x86/readme.txt index 58c24f4b..ff0c8d12 100644 --- a/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x86/readme.txt +++ b/src/JavaScriptEngineSwitcher.ChakraCore.Native.win-x86/readme.txt @@ -1,24 +1,24 @@  -------------------------------------------------------------------------------- - README file for JS Engine Switcher: ChakraCore for Windows x86 v3.21.0 + README file for JS Engine Switcher: ChakraCore for Windows x86 v3.27.3 -------------------------------------------------------------------------------- - Copyright (c) 2013-2023 Andrey Taritsyn - http://www.taritsyn.ru + Copyright (c) 2013-2024 Andrey Taritsyn - http://www.taritsyn.ru =========== DESCRIPTION =========== This package complements the JavaScriptEngineSwitcher.ChakraCore package and - contains the native implementation of ChakraCore version of January 26, 2023 + contains the native implementation of ChakraCore version of August 1, 2024 for Windows (x86). ============= RELEASE NOTES ============= - ChakraCore was updated to version of January 26, 2023. + ChakraCore was updated to version of August 1, 2024. ============= DOCUMENTATION diff --git a/src/JavaScriptEngineSwitcher.ChakraCore/ChakraCoreJsEngine.cs b/src/JavaScriptEngineSwitcher.ChakraCore/ChakraCoreJsEngine.cs index f2983c9e..9a545b96 100644 --- a/src/JavaScriptEngineSwitcher.ChakraCore/ChakraCoreJsEngine.cs +++ b/src/JavaScriptEngineSwitcher.ChakraCore/ChakraCoreJsEngine.cs @@ -53,7 +53,7 @@ public sealed class ChakraCoreJsEngine : JsEngineBase /// /// Version of original JS engine /// - private const string EngineVersion = "Jan 26, 2023"; + private const string EngineVersion = "Aug 1, 2024"; /// /// Instance of JS runtime diff --git a/src/JavaScriptEngineSwitcher.ChakraCore/Helpers/ReflectionHelpers.cs b/src/JavaScriptEngineSwitcher.ChakraCore/Helpers/ReflectionHelpers.cs index e7a54dbf..91099f72 100644 --- a/src/JavaScriptEngineSwitcher.ChakraCore/Helpers/ReflectionHelpers.cs +++ b/src/JavaScriptEngineSwitcher.ChakraCore/Helpers/ReflectionHelpers.cs @@ -262,6 +262,15 @@ private MemberComparer() public override bool Equals(T x, T y) { + if (x == null && y == null) + { + return true; + } + else if (x == null || y == null) + { + return false; + } + return x.Module == y.Module #if !NETSTANDARD1_3 && x.MetadataToken == y.MetadataToken diff --git a/src/JavaScriptEngineSwitcher.ChakraCore/JavaScriptEngineSwitcher.ChakraCore.csproj b/src/JavaScriptEngineSwitcher.ChakraCore/JavaScriptEngineSwitcher.ChakraCore.csproj index 995a3468..6ec88163 100644 --- a/src/JavaScriptEngineSwitcher.ChakraCore/JavaScriptEngineSwitcher.ChakraCore.csproj +++ b/src/JavaScriptEngineSwitcher.ChakraCore/JavaScriptEngineSwitcher.ChakraCore.csproj @@ -2,13 +2,14 @@ JS Engine Switcher: ChakraCore - 3.21.0 + 3.27.3 net40-client;net45;net471;netstandard1.3;netstandard2.0;netstandard2.1 1.6.0 Library true true - $(NoWarn);CS1591 + $(NoWarn);CS1591;NETSDK1215;NU1903 + false true true @@ -19,32 +20,22 @@ - JavaScriptEngineSwitcher.ChakraCore contains adapter `ChakraCoreJsEngine` (wrapper for the ChakraCore (https://github.com/chakra-core/ChakraCore)). Project was based on the code of Chakra-Samples (https://github.com/Microsoft/Chakra-Samples) and jsrt-dotnet (https://github.com/robpaveza/jsrt-dotnet). - -This package does not contain the native implementations of ChakraCore. Therefore, you need to choose and install the most appropriate package(s) for your platform. The following packages are available: - - * JavaScriptEngineSwitcher.ChakraCore.Native.win-x86 - * JavaScriptEngineSwitcher.ChakraCore.Native.win-x64 - * JavaScriptEngineSwitcher.ChakraCore.Native.win-arm - * JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64 - * JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64 - * JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64 - $(PackageCommonTags);ChakraCore + https://raw.githubusercontent.com/Taritsyn/JavaScriptEngineSwitcher/master/Icons/JavaScriptEngineSwitcher_ChakraCore_Logo128x128.png ../../Icons/JavaScriptEngineSwitcher_ChakraCore_Logo128x128.png - 1. ChakraCore was updated to version of January 26, 2023; -2. In configuration settings of the ChakraCore JS engine was added one new property - `AllowReflection` (default `false`). + JavaScriptEngineSwitcher.ChakraCore contains a `ChakraCoreJsEngine` adapter (wrapper for the ChakraCore). + $(PackageCommonTags);ChakraCore + ChakraCore was updated to version of August 1, 2024. - - + - - + + @@ -65,31 +56,9 @@ This package does not contain the native implementations of ChakraCore. Therefor - - advanced-string-builder-license.txt - true - false - - - chakra-samples-license.txt - true - false - - - jsrt-dotnet-license.txt - true - false - - - polyfills-for-old-dot-net-license.txt - true - false - - - - readme.txt - true - + + + diff --git a/src/JavaScriptEngineSwitcher.ChakraCore/PACKAGE-DESCRIPTION.md b/src/JavaScriptEngineSwitcher.ChakraCore/PACKAGE-DESCRIPTION.md new file mode 100644 index 00000000..7ba63673 --- /dev/null +++ b/src/JavaScriptEngineSwitcher.ChakraCore/PACKAGE-DESCRIPTION.md @@ -0,0 +1,13 @@ +JavaScriptEngineSwitcher.ChakraCore contains a `ChakraCoreJsEngine` adapter (wrapper for the [ChakraCore](https://github.com/chakra-core/ChakraCore)). +Project was based on the code of [Chakra-Samples](https://github.com/Microsoft/Chakra-Samples) and [jsrt-dotnet](https://github.com/robpaveza/jsrt-dotnet). + +This package does not contain the native implementations of ChakraCore. +Therefore, you need to choose and install the most appropriate package(s) for your platform. +The following packages are available: + + * [JavaScriptEngineSwitcher.ChakraCore.Native.win-x86](https://www.nuget.org/packages/JavaScriptEngineSwitcher.ChakraCore.Native.win-x86) + * [JavaScriptEngineSwitcher.ChakraCore.Native.win-x64](https://www.nuget.org/packages/JavaScriptEngineSwitcher.ChakraCore.Native.win-x64) + * [JavaScriptEngineSwitcher.ChakraCore.Native.win-arm](https://www.nuget.org/packages/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm) + * [JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64](https://www.nuget.org/packages/JavaScriptEngineSwitcher.ChakraCore.Native.win-arm64) + * [JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64](https://www.nuget.org/packages/JavaScriptEngineSwitcher.ChakraCore.Native.linux-x64) + * [JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64](https://www.nuget.org/packages/JavaScriptEngineSwitcher.ChakraCore.Native.osx-x64) \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.ChakraCore/Resources/Strings.Designer.cs b/src/JavaScriptEngineSwitcher.ChakraCore/Resources/Strings.Designer.cs index eb30c061..7547d486 100644 --- a/src/JavaScriptEngineSwitcher.ChakraCore/Resources/Strings.Designer.cs +++ b/src/JavaScriptEngineSwitcher.ChakraCore/Resources/Strings.Designer.cs @@ -21,7 +21,7 @@ internal class Strings private static Lazy _resourceManager = new Lazy(() => new ResourceManager( "JavaScriptEngineSwitcher.ChakraCore.Resources.Strings", -#if NET40 +#if NET20 || NET30 || NET35 || NET40 typeof(Strings).Assembly #else typeof(Strings).GetTypeInfo().Assembly diff --git a/src/JavaScriptEngineSwitcher.ChakraCore/readme.txt b/src/JavaScriptEngineSwitcher.ChakraCore/readme.txt index 6b932ea1..c7484b48 100644 --- a/src/JavaScriptEngineSwitcher.ChakraCore/readme.txt +++ b/src/JavaScriptEngineSwitcher.ChakraCore/readme.txt @@ -1,17 +1,17 @@  -------------------------------------------------------------------------------- - README file for JS Engine Switcher: ChakraCore v3.21.0 + README file for JS Engine Switcher: ChakraCore v3.27.3 -------------------------------------------------------------------------------- - Copyright (c) 2013-2023 Andrey Taritsyn - http://www.taritsyn.ru + Copyright (c) 2013-2024 Andrey Taritsyn - http://www.taritsyn.ru =========== DESCRIPTION =========== - JavaScriptEngineSwitcher.ChakraCore contains adapter `ChakraCoreJsEngine` + JavaScriptEngineSwitcher.ChakraCore contains a `ChakraCoreJsEngine` adapter (wrapper for the ChakraCore (https://github.com/chakra-core/ChakraCore)). Project was based on the code of Chakra-Samples (https://github.com/Microsoft/Chakra-Samples) and jsrt-dotnet @@ -31,9 +31,7 @@ ============= RELEASE NOTES ============= - 1. ChakraCore was updated to version of January 26, 2023; - 2. In configuration settings of the ChakraCore JS engine was added one new - property - `AllowReflection` (default `false`). + ChakraCore was updated to version of August 1, 2024. ============= DOCUMENTATION diff --git a/src/JavaScriptEngineSwitcher.Core/JavaScriptEngineSwitcher.Core.csproj b/src/JavaScriptEngineSwitcher.Core/JavaScriptEngineSwitcher.Core.csproj index 44ec0270..911456c6 100644 --- a/src/JavaScriptEngineSwitcher.Core/JavaScriptEngineSwitcher.Core.csproj +++ b/src/JavaScriptEngineSwitcher.Core/JavaScriptEngineSwitcher.Core.csproj @@ -2,12 +2,13 @@ JS Engine Switcher: Core - 3.21.0 + 3.24.1 net40-client;net45;netstandard1.3;netstandard2.0 1.6.0 Library true - $(NoWarn);CS1591 + $(NoWarn);CS1591;NETSDK1215;NU1903 + false true true @@ -18,14 +19,15 @@ - JavaScript Engine Switcher determines unified interface for access to the basic features of popular JavaScript engines (ChakraCore, Jint, Jurassic, MSIE JavaScript Engine for .NET, NiL.JS, Jering.Javascript.NodeJS, Microsoft ClearScript.V8, VroomJs and YantraJS). This library allows you to quickly and easily switch to using of another JavaScript engine. - $(PackageCommonTags) + https://raw.githubusercontent.com/Taritsyn/JavaScriptEngineSwitcher/master/Icons/JavaScriptEngineSwitcher_Core_Logo128x128.png ../../Icons/JavaScriptEngineSwitcher_Core_Logo128x128.png + JavaScript Engine Switcher determines unified interface for access to the basic features of popular JavaScript engines. This library allows you to quickly and easily switch to using of another JavaScript engine. + $(PackageCommonTags) - - + + @@ -33,16 +35,7 @@ - - advanced-string-builder-license.txt - true - false - - - - readme.txt - true - + diff --git a/src/JavaScriptEngineSwitcher.Core/JsEngineSwitcher.cs b/src/JavaScriptEngineSwitcher.Core/JsEngineSwitcher.cs index 5f8dcaab..6ccf8d9f 100644 --- a/src/JavaScriptEngineSwitcher.Core/JsEngineSwitcher.cs +++ b/src/JavaScriptEngineSwitcher.Core/JsEngineSwitcher.cs @@ -9,6 +9,11 @@ namespace JavaScriptEngineSwitcher.Core /// public sealed class JsEngineSwitcher : IJsEngineSwitcher { + /// + /// Flag for whether to allow usage of the property + /// + private static bool _allowCurrentProperty = true; + /// /// Default instance of JS engine switcher /// @@ -20,6 +25,19 @@ private static readonly Lazy _default /// private static IJsEngineSwitcher _current; + /// + /// Gets or sets a flag for whether to allow usage of the property + /// + /// + /// Required to ensure the usage of an instance of the JS engine switcher that is registered by using + /// the IServiceCollection interface. + /// + public static bool AllowCurrentProperty + { + get { return _allowCurrentProperty; } + set { _allowCurrentProperty = value; } + } + /// /// Gets or sets a instance of JS engine switcher /// @@ -27,10 +45,22 @@ public static IJsEngineSwitcher Current { get { + if (!_allowCurrentProperty) + { + throw new InvalidOperationException( + Strings.Configuration_GettingFromJsEngineSwitcherCurrentPropertyForbidden); + } + return _current ?? _default.Value; } set { + if (!_allowCurrentProperty) + { + throw new InvalidOperationException( + Strings.Configuration_AssigningToJsEngineSwitcherCurrentPropertyForbidden); + } + _current = value; } } diff --git a/src/JavaScriptEngineSwitcher.Core/PACKAGE-DESCRIPTION.md b/src/JavaScriptEngineSwitcher.Core/PACKAGE-DESCRIPTION.md new file mode 100644 index 00000000..663374d6 --- /dev/null +++ b/src/JavaScriptEngineSwitcher.Core/PACKAGE-DESCRIPTION.md @@ -0,0 +1,2 @@ +JavaScript Engine Switcher determines unified interface for access to the basic features of popular JavaScript engines ([ChakraCore](https://github.com/chakra-core/ChakraCore), [Jint](https://github.com/sebastienros/jint), [Jurassic](https://github.com/paulbartrum/jurassic), [MSIE JavaScript Engine for .NET](https://github.com/Taritsyn/MsieJavaScriptEngine), [NiL.JS](https://github.com/nilproject/NiL.JS), [Jering.Javascript.NodeJS](https://github.com/JeringTech/Javascript.NodeJS), [Microsoft ClearScript.V8](https://github.com/Microsoft/ClearScript), [VroomJs](https://github.com/pauldotknopf/vroomjs-core) and [YantraJS](https://yantrajs.com/)). +This library allows you to quickly and easily switch to using of another JavaScript engine. \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.Core/Resources/Strings.Designer.cs b/src/JavaScriptEngineSwitcher.Core/Resources/Strings.Designer.cs index 547e8d70..8dc14700 100644 --- a/src/JavaScriptEngineSwitcher.Core/Resources/Strings.Designer.cs +++ b/src/JavaScriptEngineSwitcher.Core/Resources/Strings.Designer.cs @@ -21,7 +21,7 @@ public class Strings private static Lazy _resourceManager = new Lazy(() => new ResourceManager( "JavaScriptEngineSwitcher.Core.Resources.Strings", -#if NET40 +#if NET20 || NET30 || NET35 || NET40 typeof(Strings).Assembly #else typeof(Strings).GetTypeInfo().Assembly @@ -137,6 +137,14 @@ public static string Common_ValueTypeCannotBeNull get { return GetString("Common_ValueTypeCannotBeNull"); } } + /// + /// Looks up a localized string similar to "Assigning an instance of the JS engine switcher to the `Current` property of `JsEngineSwitcher`..." + /// + public static string Configuration_AssigningToJsEngineSwitcherCurrentPropertyForbidden + { + get { return GetString("Configuration_AssigningToJsEngineSwitcherCurrentPropertyForbidden"); } + } + /// /// Looks up a localized string similar to "Name of default JavaScript engine not specified." /// @@ -145,6 +153,14 @@ public static string Configuration_DefaultJsEngineNameNotSpecified get { return GetString("Configuration_DefaultJsEngineNameNotSpecified"); } } + /// + /// Looks up a localized string similar to "Getting an instance of the JS engine switcher from the `Current` property of `JsEngineSwitcher`..." + /// + public static string Configuration_GettingFromJsEngineSwitcherCurrentPropertyForbidden + { + get { return GetString("Configuration_GettingFromJsEngineSwitcherCurrentPropertyForbidden"); } + } + /// /// Looks up a localized string similar to "Could not find a factory, that creates an instance of the JavaScript engine with name `{0}`." /// diff --git a/src/JavaScriptEngineSwitcher.Core/Resources/Strings.resx b/src/JavaScriptEngineSwitcher.Core/Resources/Strings.resx index 81533d40..d72925bf 100644 --- a/src/JavaScriptEngineSwitcher.Core/Resources/Strings.resx +++ b/src/JavaScriptEngineSwitcher.Core/Resources/Strings.resx @@ -147,9 +147,15 @@ Cannot convert null to a value type. + + Assigning an instance of the JS engine switcher to the `Current` property of `JsEngineSwitcher` class is forbidden. To register an instance of the JS engine switcher, use the `IServiceCollection` interface or set the `AllowCurrentProperty` property of `JsEngineSwitcher` class to `true`. + Name of default JavaScript engine not specified. + + Getting an instance of the JS engine switcher from the `Current` property of `JsEngineSwitcher` class is forbidden. To get an instance of the JS engine switcher, use the `IServiceCollection` interface or set the `AllowCurrentProperty` property of `JsEngineSwitcher` class to `true`. + Could not find a factory, that creates an instance of the JavaScript engine with name `{0}`. diff --git a/src/JavaScriptEngineSwitcher.Core/Resources/Strings.ru-RU.resx b/src/JavaScriptEngineSwitcher.Core/Resources/Strings.ru-RU.resx index 8f1a2f20..a51ccdf8 100644 --- a/src/JavaScriptEngineSwitcher.Core/Resources/Strings.ru-RU.resx +++ b/src/JavaScriptEngineSwitcher.Core/Resources/Strings.ru-RU.resx @@ -147,9 +147,15 @@ Невозможно преобразовать null в значимый тип! + + Присвоение экземпляра JS engine switcher свойству `Current` класса `JsEngineSwitcher` запрещено. Для регистрации экземпляра JS engine switcher используйте интерфейс `IServiceCollection` или присвойте свойству `AllowCurrentProperty` класса `JsEngineSwitcher` значение равное `true`. + Не указано имя JavaScript-движка, который должен использоваться по умолчанию! + + Присвоение экземпляра JS engine switcher свойству `Current` класса `JsEngineSwitcher` запрещено. Для регистрации экземпляра JS engine switcher используйте интерфейс `IServiceCollection` или присвойте свойству `AllowCurrentProperty` класса `JsEngineSwitcher` значение равное `true`. + Не удалось найти фабрику, создающую экземпляр JavaScript-движка с именем `{0}`! diff --git a/src/JavaScriptEngineSwitcher.Core/readme.txt b/src/JavaScriptEngineSwitcher.Core/readme.txt index 8761ac60..cf5e35d8 100644 --- a/src/JavaScriptEngineSwitcher.Core/readme.txt +++ b/src/JavaScriptEngineSwitcher.Core/readme.txt @@ -1,11 +1,11 @@  -------------------------------------------------------------------------------- - README file for JS Engine Switcher: Core v3.21.0 + README file for JS Engine Switcher: Core v3.24.1 -------------------------------------------------------------------------------- - Copyright (c) 2013-2023 Andrey Taritsyn - http://www.taritsyn.ru + Copyright (c) 2013-2024 Andrey Taritsyn - http://www.taritsyn.ru =========== diff --git a/src/JavaScriptEngineSwitcher.Extensions.MsDependencyInjection/JavaScriptEngineSwitcher.Extensions.MsDependencyInjection.csproj b/src/JavaScriptEngineSwitcher.Extensions.MsDependencyInjection/JavaScriptEngineSwitcher.Extensions.MsDependencyInjection.csproj index b93b484d..906de85a 100644 --- a/src/JavaScriptEngineSwitcher.Extensions.MsDependencyInjection/JavaScriptEngineSwitcher.Extensions.MsDependencyInjection.csproj +++ b/src/JavaScriptEngineSwitcher.Extensions.MsDependencyInjection/JavaScriptEngineSwitcher.Extensions.MsDependencyInjection.csproj @@ -2,12 +2,13 @@ JS Engine Switcher: MS Dependency Injection - 3.21.0 + 3.24.1 net45;netstandard1.3;netstandard2.0 1.6.0 Library true - $(NoWarn);CS1591 + $(NoWarn);CS1591;NETSDK1215;NU1903 + false true @@ -16,9 +17,10 @@ + https://raw.githubusercontent.com/Taritsyn/JavaScriptEngineSwitcher/master/Icons/JavaScriptEngineSwitcher_Extensions_MsDependencyInjection_Logo128x128.png + ../../Icons/JavaScriptEngineSwitcher_Extensions_MsDependencyInjection_Logo128x128.png JavaScriptEngineSwitcher.Extensions.MsDependencyInjection contains extension methods for adding the JS engine switcher in an `IServiceCollection`. $(PackageCommonTags);DI - ../../Icons/JavaScriptEngineSwitcher_Extensions_MsDependencyInjection_Logo128x128.png @@ -33,11 +35,4 @@ - - - readme.txt - true - - - \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.Extensions.MsDependencyInjection/JsEngineSwitcherOptions.cs b/src/JavaScriptEngineSwitcher.Extensions.MsDependencyInjection/JsEngineSwitcherOptions.cs new file mode 100644 index 00000000..f22887a3 --- /dev/null +++ b/src/JavaScriptEngineSwitcher.Extensions.MsDependencyInjection/JsEngineSwitcherOptions.cs @@ -0,0 +1,42 @@ +using JavaScriptEngineSwitcher.Core; + +namespace JavaScriptEngineSwitcher.Extensions.MsDependencyInjection +{ + /// + /// Options of the JS engine switcher + /// + public sealed class JsEngineSwitcherOptions + { + /// + /// Gets or sets a flag for whether to allow usage of the property + /// + /// + /// Required to ensure the usage of an instance of the JS engine switcher that is registered by using + /// the IServiceCollection interface. + /// + public bool AllowCurrentProperty + { + get; + set; + } + + /// + /// Gets or sets a name of default JS engine + /// + public string DefaultEngineName + { + get; + set; + } + + + /// + /// Constructs an instance of the JS engine switcher options + /// + public JsEngineSwitcherOptions() + { + AllowCurrentProperty = true; + DefaultEngineName = string.Empty; + } + } +} \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.Extensions.MsDependencyInjection/JsEngineSwitcherServiceCollectionExtensions.cs b/src/JavaScriptEngineSwitcher.Extensions.MsDependencyInjection/JsEngineSwitcherServiceCollectionExtensions.cs index 2f674263..624b2f76 100644 --- a/src/JavaScriptEngineSwitcher.Extensions.MsDependencyInjection/JsEngineSwitcherServiceCollectionExtensions.cs +++ b/src/JavaScriptEngineSwitcher.Extensions.MsDependencyInjection/JsEngineSwitcherServiceCollectionExtensions.cs @@ -12,21 +12,32 @@ namespace JavaScriptEngineSwitcher.Extensions.MsDependencyInjection public static class JsEngineSwitcherServiceCollectionExtensions { /// - /// Adds a default instance of JS engine switcher to + /// Adds a default instance of the JS engine switcher to the /// /// The services available in the application - /// Instance of + /// Instance of the public static JsEngineFactoryCollection AddJsEngineSwitcher(this IServiceCollection services) { - return AddJsEngineSwitcher(services, (IJsEngineSwitcher)null); + if (services == null) + { + throw new ArgumentNullException(nameof(services)); + } + + var options = new JsEngineSwitcherOptions(); + + IJsEngineSwitcher engineSwitcher = CreateJsEngineSwitcher(options); + ApplyOptionsToJsEngineSwitcher(engineSwitcher, options); + RegisterJsEngineSwitcher(services, engineSwitcher, options); + + return engineSwitcher.EngineFactories; } /// - /// Adds a specified instance of JS engine switcher to + /// Adds a specified instance of the JS engine switcher to the /// /// The services available in the application - /// Instance of JS engine switcher - /// Instance of + /// Instance of the JS engine switcher + /// Instance of the public static JsEngineFactoryCollection AddJsEngineSwitcher(this IServiceCollection services, IJsEngineSwitcher engineSwitcher) { @@ -35,61 +46,149 @@ public static JsEngineFactoryCollection AddJsEngineSwitcher(this IServiceCollect throw new ArgumentNullException(nameof(services)); } - // Set the current instance of JS engine switcher - JsEngineSwitcher.Current = engineSwitcher; + if (engineSwitcher == null) + { + throw new ArgumentNullException(nameof(engineSwitcher)); + } - // Get the current instance of JS engine switcher - IJsEngineSwitcher currentEngineSwitcher = JsEngineSwitcher.Current; + var options = new JsEngineSwitcherOptions(); - // Register the current instance of JS engine switcher as a service - services.AddSingleton(currentEngineSwitcher); + IJsEngineSwitcher currentEngineSwitcher = GetJsEngineSwitcher(engineSwitcher, options); + ApplyOptionsToJsEngineSwitcher(currentEngineSwitcher, options); + RegisterJsEngineSwitcher(services, currentEngineSwitcher, options); return currentEngineSwitcher.EngineFactories; } /// - /// Adds a default instance of JS engine switcher to + /// Adds a default instance of the JS engine switcher to the /// /// The services available in the application - /// The which need to be configured - /// Instance of + /// The which need to be configured + /// Instance of the public static JsEngineFactoryCollection AddJsEngineSwitcher(this IServiceCollection services, - Action configure) + Action configure) { - return AddJsEngineSwitcher(services, null, configure); + if (services == null) + { + throw new ArgumentNullException(nameof(services)); + } + + if (configure == null) + { + throw new ArgumentNullException(nameof(configure)); + } + + var options = new JsEngineSwitcherOptions(); + configure(options); + + IJsEngineSwitcher engineSwitcher = CreateJsEngineSwitcher(options); + ApplyOptionsToJsEngineSwitcher(engineSwitcher, options); + RegisterJsEngineSwitcher(services, engineSwitcher, options); + + return engineSwitcher.EngineFactories; } /// - /// Adds a specified instance of JS engine switcher to + /// Adds a specified instance of the JS engine switcher to /// /// The services available in the application - /// Instance of JS engine switcher - /// The which need to be configured - /// Instance of + /// Instance of the JS engine switcher + /// The which need to be configured + /// Instance of the public static JsEngineFactoryCollection AddJsEngineSwitcher(this IServiceCollection services, - IJsEngineSwitcher engineSwitcher, Action configure) + IJsEngineSwitcher engineSwitcher, Action configure) { if (services == null) { throw new ArgumentNullException(nameof(services)); } + if (engineSwitcher == null) + { + throw new ArgumentNullException(nameof(engineSwitcher)); + } + if (configure == null) { throw new ArgumentNullException(nameof(configure)); } - // Set the current instance of JS engine switcher - JsEngineSwitcher.Current = engineSwitcher; + var options = new JsEngineSwitcherOptions(); + configure(options); - // Get and configure the current instance of JS engine switcher - IJsEngineSwitcher currentEngineSwitcher = JsEngineSwitcher.Current; - configure(currentEngineSwitcher); + IJsEngineSwitcher currentEngineSwitcher = GetJsEngineSwitcher(engineSwitcher, options); + ApplyOptionsToJsEngineSwitcher(currentEngineSwitcher, options); + RegisterJsEngineSwitcher(services, currentEngineSwitcher, options); + return currentEngineSwitcher.EngineFactories; + } + + #region Helper methods + + /// + /// Creates an instance of the JS engine switcher + /// + /// Options of the JS engine switcher + /// Instance of the JS engine switcher + private static IJsEngineSwitcher CreateJsEngineSwitcher(JsEngineSwitcherOptions options) + { + IJsEngineSwitcher engineSwitcher = options.AllowCurrentProperty ? + JsEngineSwitcher.Current + : + new JsEngineSwitcher() + ; + + return engineSwitcher; + } + + /// + /// Gets a instance of the JS engine switcher + /// + /// Instance of the JS engine switcher + /// Options of the JS engine switcher + /// Current instance of the JS engine switcher + private static IJsEngineSwitcher GetJsEngineSwitcher(IJsEngineSwitcher engineSwitcher, JsEngineSwitcherOptions options) + { + IJsEngineSwitcher currentEngineSwitcher = options.AllowCurrentProperty ? + JsEngineSwitcher.Current + : + engineSwitcher + ; + + return currentEngineSwitcher; + } + + /// + /// Applies a options to the JS engine switcher + /// + /// Instance of the JS engine switcher + /// Options of the JS engine switcher + private static void ApplyOptionsToJsEngineSwitcher(IJsEngineSwitcher engineSwitcher, JsEngineSwitcherOptions options) + { + JsEngineSwitcher.AllowCurrentProperty = options.AllowCurrentProperty; + engineSwitcher.DefaultEngineName = options.DefaultEngineName; + } + + /// + /// Registers a instance of the JS engine switcher + /// + /// The services available in the application + /// Instance of the JS engine switcher + /// Options of the JS engine switcher + private static void RegisterJsEngineSwitcher(IServiceCollection services, IJsEngineSwitcher engineSwitcher, + JsEngineSwitcherOptions options) + { // Register the current instance of JS engine switcher as a service - services.AddSingleton(currentEngineSwitcher); + services.AddSingleton(engineSwitcher); - return currentEngineSwitcher.EngineFactories; + // Set the current instance of JS engine switcher + if (options.AllowCurrentProperty) + { + JsEngineSwitcher.Current = engineSwitcher; + } } + + #endregion } } \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.Extensions.MsDependencyInjection/PACKAGE-DESCRIPTION.md b/src/JavaScriptEngineSwitcher.Extensions.MsDependencyInjection/PACKAGE-DESCRIPTION.md new file mode 100644 index 00000000..95b60008 --- /dev/null +++ b/src/JavaScriptEngineSwitcher.Extensions.MsDependencyInjection/PACKAGE-DESCRIPTION.md @@ -0,0 +1 @@ +JavaScriptEngineSwitcher.Extensions.MsDependencyInjection contains extension methods for adding the JS engine switcher in an `IServiceCollection`. \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.Extensions.MsDependencyInjection/readme.txt b/src/JavaScriptEngineSwitcher.Extensions.MsDependencyInjection/readme.txt index bda106d5..a4b6267d 100644 --- a/src/JavaScriptEngineSwitcher.Extensions.MsDependencyInjection/readme.txt +++ b/src/JavaScriptEngineSwitcher.Extensions.MsDependencyInjection/readme.txt @@ -1,11 +1,11 @@  -------------------------------------------------------------------------------- - README file for JS Engine Switcher: MS Dependency Injection v3.21.0 + README file for JS Engine Switcher: MS Dependency Injection v3.24.1 -------------------------------------------------------------------------------- - Copyright (c) 2013-2023 Andrey Taritsyn - http://www.taritsyn.ru + Copyright (c) 2013-2024 Andrey Taritsyn - http://www.taritsyn.ru =========== diff --git a/src/JavaScriptEngineSwitcher.Jint/CustomTypeResolvers.cs b/src/JavaScriptEngineSwitcher.Jint/CustomTypeResolvers.cs index 886ba00c..4e1dfd8a 100644 --- a/src/JavaScriptEngineSwitcher.Jint/CustomTypeResolvers.cs +++ b/src/JavaScriptEngineSwitcher.Jint/CustomTypeResolvers.cs @@ -89,6 +89,15 @@ private MemberComparer() public override bool Equals(T x, T y) { + if (x == null && y == null) + { + return true; + } + else if (x == null || y == null) + { + return false; + } + return x.Module == y.Module && x.MetadataToken == y.MetadataToken; } diff --git a/src/JavaScriptEngineSwitcher.Jint/Helpers/JintJsErrorHelpers.cs b/src/JavaScriptEngineSwitcher.Jint/Helpers/JintJsErrorHelpers.cs index 8e30d877..af37c9df 100644 --- a/src/JavaScriptEngineSwitcher.Jint/Helpers/JintJsErrorHelpers.cs +++ b/src/JavaScriptEngineSwitcher.Jint/Helpers/JintJsErrorHelpers.cs @@ -24,27 +24,45 @@ internal static class JintJsErrorHelpers private const string WrapperAnonymousFunctionName = "Anonymous function"; private const string DelegateFunctionName = "delegate"; + /// + /// Pattern for working with document names with coordinates + /// + private static readonly string DocumentNameWithCoordinatesPattern = + @"(?" + CommonRegExps.DocumentNamePattern + @"):" + + @"(?\d+)(?::(?\d+))?"; + /// /// Regular expression for working with line of the script error location /// private static readonly Regex _errorLocationLineRegex = - new Regex(@"^[ ]{3}at " + + new Regex(@"^[ ]{4}at " + @"(?:" + - @"(?:" + - @"(?" + - @"[\w][\w ]*" + - @"|" + - CommonRegExps.JsFullNamePattern + - @"|" + - Regex.Escape(OriginalAnonymousFunctionName) + - @") " + - @"\((?:" + CommonRegExps.JsFullNamePattern + @"(?:, " + CommonRegExps.JsFullNamePattern + @")*)?\)" + + @"(?" + + @"[\w][\w ]*" + + @"|" + + CommonRegExps.JsFullNamePattern + @"|" + - @"(?" + Regex.Escape(DelegateFunctionName) + @")" + + Regex.Escape(OriginalAnonymousFunctionName) + @") " + - @")?" + - @"(?" + CommonRegExps.DocumentNamePattern + @"):" + - @"(?\d+)(?::(?\d+))?$"); + @"\(" + DocumentNameWithCoordinatesPattern + @"\)" + + @"|" + + DocumentNameWithCoordinatesPattern + + @")" + + "$"); + + /// + /// Regular expression for working with the syntax error message + /// + private static readonly Regex _syntaxErrorMessageRegex = + new Regex(@"^(?[\s\S]+?) \(" + CommonRegExps.DocumentNamePattern + @":\d+:\d+\)$"); + + /// + /// Regular expression for working with the script preparation error message + /// + private static readonly Regex _scriptPreparationErrorMessageRegex = + new Regex(@"^Could not prepare script: (?[\s\S]+?) " + + @"\((?" + CommonRegExps.DocumentNamePattern + @"):" + + @"(?\d+):(?\d+)\)$"); /// @@ -152,6 +170,50 @@ public static string ConvertCallChainToStack(string callChain) return callStack; } + /// + /// Gets a description from the syntax error message + /// + /// Error message + /// Description of error + public static string GetDescriptionFromSyntaxErrorMessage(string message) + { + Match messageMatch = _syntaxErrorMessageRegex.Match(message); + string description = messageMatch.Success ? + messageMatch.Groups["description"].Value : message; + + return description; + } + + /// + /// Parses a script preparation error message + /// + /// Error message + /// Description of error + /// Script error location + public static void ParseScriptPreparationErrorMessage(string message, out string description, + out ErrorLocationItem errorLocation) + { + Match messageMatch = _scriptPreparationErrorMessageRegex.Match(message); + + if (messageMatch.Success) + { + GroupCollection messageGroups = messageMatch.Groups; + + description = messageGroups["description"].Value; + errorLocation = new ErrorLocationItem + { + DocumentName = messageGroups["documentName"].Value, + LineNumber = int.Parse(messageGroups["lineNumber"].Value), + ColumnNumber = int.Parse(messageGroups["columnNumber"].Value) + }; + } + else + { + description = message; + errorLocation = new ErrorLocationItem(); + } + } + #endregion } } \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.Jint/JavaScriptEngineSwitcher.Jint.csproj b/src/JavaScriptEngineSwitcher.Jint/JavaScriptEngineSwitcher.Jint.csproj index 32188d60..600738b9 100644 --- a/src/JavaScriptEngineSwitcher.Jint/JavaScriptEngineSwitcher.Jint.csproj +++ b/src/JavaScriptEngineSwitcher.Jint/JavaScriptEngineSwitcher.Jint.csproj @@ -2,11 +2,12 @@ JS Engine Switcher: Jint - 3.21.2 - net462;netstandard2.0;netstandard2.1;net6.0 + 3.30.2 + net462;netstandard2.0;netstandard2.1;net8.0 Library true $(NoWarn);CS1591;NU5104 + false true true @@ -17,36 +18,21 @@ - JavaScriptEngineSwitcher.Jint contains adapter `JintJsEngine` (wrapper for the Jint JavaScript Engine (http://github.com/sebastienros/jint) version 3.0.0 Beta 2049). - $(PackageCommonTags);Jint + https://raw.githubusercontent.com/Taritsyn/JavaScriptEngineSwitcher/master/Icons/JavaScriptEngineSwitcher_Jint_Logo128x128.png ../../Icons/JavaScriptEngineSwitcher_Jint_Logo128x128.png - 1. The package is no longer marked as a prerelease; -2. In configuration settings of the Jint JS engine was added one new property - `MaxJsonParseDepth` (default `64`). + JavaScriptEngineSwitcher.Jint contains a `JintJsEngine` adapter (wrapper for the Jint). + $(PackageCommonTags);Jint + Jint was updated to version 4.4.2. - - + - - advanced-string-builder-license.txt - true - false - - - jint-license.txt - true - false - - - - readme.txt - true - + \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.Jint/JintJsEngine.cs b/src/JavaScriptEngineSwitcher.Jint/JintJsEngine.cs index 23516fee..dd1f80ab 100644 --- a/src/JavaScriptEngineSwitcher.Jint/JintJsEngine.cs +++ b/src/JavaScriptEngineSwitcher.Jint/JintJsEngine.cs @@ -2,23 +2,22 @@ using System.Threading; using Jint; -using IOriginalPrimitiveInstance = Jint.Native.IPrimitiveInstance; +using IOriginalPrimitive = Jint.Native.IJsPrimitive; using OriginalCancellationConstraint = Jint.Constraints.CancellationConstraint; using OriginalDebuggerEventHandler = Jint.Runtime.Debugger.DebugHandler.DebugEventHandler; using OriginalDebuggerStatementHandlingMode = Jint.Runtime.Debugger.DebuggerStatementHandling; using OriginalEngine = Jint.Engine; -using OriginalErrorPosition = Esprima.Position; +using OriginalErrorPosition = Acornima.Position; using OriginalExecutionCanceledException = Jint.Runtime.ExecutionCanceledException; +using OriginalException = Jint.JintException; using OriginalJavaScriptException = Jint.Runtime.JavaScriptException; using OriginalMemoryLimitExceededException = Jint.Runtime.MemoryLimitExceededException; using OriginalObjectInstance = Jint.Native.Object.ObjectInstance; -using OriginalParsedScript = Esprima.Ast.Script; -using OriginalParserException = Esprima.ParserException; +using OriginalParsedScript = Jint.Prepared; using OriginalRecursionDepthOverflowException = Jint.Runtime.RecursionDepthOverflowException; -using OriginalRuntimeException = Jint.Runtime.JintException; +using OriginalScriptPreparationException = Jint.ScriptPreparationException; using OriginalStatementsCountOverflowException = Jint.Runtime.StatementsCountOverflowException; using OriginalTypeReference = Jint.Runtime.Interop.TypeReference; -using OriginalTypeResolver = Jint.Runtime.Interop.TypeResolver; using OriginalTypes = Jint.Runtime.Types; using OriginalValue = Jint.Native.JsValue; @@ -31,6 +30,7 @@ using WrapperCompilationException = JavaScriptEngineSwitcher.Core.JsCompilationException; using WrapperInterruptedException = JavaScriptEngineSwitcher.Core.JsInterruptedException; using WrapperRuntimeException = JavaScriptEngineSwitcher.Core.JsRuntimeException; +using WrapperScriptException = JavaScriptEngineSwitcher.Core.JsScriptException; using WrapperTimeoutException = JavaScriptEngineSwitcher.Core.JsTimeoutException; using WrapperUsageException = JavaScriptEngineSwitcher.Core.JsUsageException; @@ -51,7 +51,7 @@ public sealed class JintJsEngine : JsEngineBase /// /// Version of original JS engine /// - private const string EngineVersion = "3.0.0 Beta 2049"; + private const string EngineVersion = "4.4.2"; /// /// Jint JS engine @@ -146,14 +146,14 @@ public JintJsEngine(JintSettings settings) options.SetTypeResolver(jintSettings.AllowReflection ? CustomTypeResolvers.AllowingReflection : CustomTypeResolvers.DisallowingReflection); }); - _cancellationConstraint = _jsEngine.FindConstraint(); + _cancellationConstraint = _jsEngine.Constraints.Find(); if (_debuggerBreakCallback != null) { - _jsEngine.DebugHandler.Break += _debuggerBreakCallback; + _jsEngine.Debugger.Break += _debuggerBreakCallback; } if (_debuggerStepCallback != null) { - _jsEngine.DebugHandler.Step += _debuggerStepCallback; + _jsEngine.Debugger.Step += _debuggerStepCallback; } _strictMode = settings.StrictMode; } @@ -189,7 +189,7 @@ private object MapToHostType(OriginalValue value) return Undefined.Value; case OriginalTypes.Object: - if (!(value is IOriginalPrimitiveInstance)) + if (!(value is IOriginalPrimitive)) { return value; } @@ -202,33 +202,10 @@ private object MapToHostType(OriginalValue value) return value.ToObject(); } - private static WrapperCompilationException WrapParserException(OriginalParserException originalParserException) + private WrapperScriptException WrapException(OriginalException originalException) { - string description = originalParserException.Description; - string type = JsErrorType.Syntax; - string documentName = originalParserException.SourceLocation ?? string.Empty; - int lineNumber = originalParserException.LineNumber; - int columnNumber = originalParserException.Column; - string message = JsErrorHelpers.GenerateScriptErrorMessage(type, description, documentName, lineNumber, - columnNumber); - - var wrapperCompilationException = new WrapperCompilationException(message, EngineName, EngineVersion, - originalParserException) - { - Description = description, - Type = type, - DocumentName = documentName, - LineNumber = lineNumber, - ColumnNumber = columnNumber - }; - - return wrapperCompilationException; - } - - private WrapperRuntimeException WrapRuntimeException(OriginalRuntimeException originalRuntimeException) - { - WrapperRuntimeException wrapperRuntimeException; - string message = originalRuntimeException.Message; + WrapperScriptException wrapperScriptException; + string message = originalException.Message; if (string.IsNullOrWhiteSpace(message)) { message = "An unknown error occurred"; @@ -240,10 +217,10 @@ private WrapperRuntimeException WrapRuntimeException(OriginalRuntimeException or int columnNumber = 0; string callStack = string.Empty; - if (originalRuntimeException is OriginalJavaScriptException) + if (originalException is OriginalJavaScriptException) { - var originalJavaScriptException = (OriginalJavaScriptException)originalRuntimeException; - documentName = originalJavaScriptException.Location.Source; + var originalJavaScriptException = (OriginalJavaScriptException)originalException; + documentName = originalJavaScriptException.Location.SourceFile; OriginalErrorPosition errorPosition = originalJavaScriptException.Location.Start; lineNumber = errorPosition.Line; columnNumber = errorPosition.Column + 1; @@ -273,38 +250,68 @@ private WrapperRuntimeException WrapRuntimeException(OriginalRuntimeException or type = JsErrorType.Common; } - message = JsErrorHelpers.GenerateScriptErrorMessage(type, description, callStack); - - wrapperRuntimeException = new WrapperRuntimeException(message, EngineName, EngineVersion, - originalJavaScriptException); + if (type == JsErrorType.Syntax) + { + description = JintJsErrorHelpers.GetDescriptionFromSyntaxErrorMessage(message); + message = JsErrorHelpers.GenerateScriptErrorMessage(type, description, documentName, lineNumber, + columnNumber); + wrapperScriptException = new WrapperCompilationException(message, EngineName, EngineVersion, + originalJavaScriptException); + } + else + { + message = JsErrorHelpers.GenerateScriptErrorMessage(type, description, callStack); + wrapperScriptException = new WrapperRuntimeException(message, EngineName, EngineVersion, + originalJavaScriptException) + { + CallStack = callStack + }; + } + } + else if (originalException is OriginalScriptPreparationException) + { + ErrorLocationItem errorLocation; + JintJsErrorHelpers.ParseScriptPreparationErrorMessage(message, out description, out errorLocation); + + type = JsErrorType.Syntax; + documentName = errorLocation.DocumentName; + lineNumber = errorLocation.LineNumber; + columnNumber = errorLocation.ColumnNumber; + message = JsErrorHelpers.GenerateScriptErrorMessage(type, description, documentName, lineNumber, + columnNumber); + wrapperScriptException = new WrapperCompilationException(message, EngineName, EngineVersion, + originalException); } - else if (originalRuntimeException is OriginalMemoryLimitExceededException) + else if (originalException is OriginalMemoryLimitExceededException) { type = JsErrorType.Common; message = JsErrorHelpers.GenerateScriptErrorMessage(type, description, string.Empty); - wrapperRuntimeException = new WrapperRuntimeException(message, EngineName, EngineVersion, - originalRuntimeException); + wrapperScriptException = new WrapperRuntimeException(message, EngineName, EngineVersion, + originalException); } - else if (originalRuntimeException is OriginalRecursionDepthOverflowException) + else if (originalException is OriginalRecursionDepthOverflowException) { - var originalRecursionException = (OriginalRecursionDepthOverflowException)originalRuntimeException; + var originalRecursionException = (OriginalRecursionDepthOverflowException)originalException; callStack = JintJsErrorHelpers.ConvertCallChainToStack(originalRecursionException.CallChain); type = JsErrorType.Range; message = JsErrorHelpers.GenerateScriptErrorMessage(type, description, callStack); - wrapperRuntimeException = new WrapperRuntimeException(message, EngineName, EngineVersion, - originalRecursionException); + wrapperScriptException = new WrapperRuntimeException(message, EngineName, EngineVersion, + originalRecursionException) + { + CallStack = callStack + }; } - else if (originalRuntimeException is OriginalStatementsCountOverflowException) + else if (originalException is OriginalStatementsCountOverflowException) { type = JsErrorType.Range; message = JsErrorHelpers.GenerateScriptErrorMessage(type, description, string.Empty); - wrapperRuntimeException = new WrapperRuntimeException(message, EngineName, EngineVersion, - originalRuntimeException); + wrapperScriptException = new WrapperRuntimeException(message, EngineName, EngineVersion, + originalException); } - else if (originalRuntimeException is OriginalExecutionCanceledException) + else if (originalException is OriginalExecutionCanceledException) { _cancellationTokenSource.Dispose(); _cancellationTokenSource = new CancellationTokenSource(); @@ -315,26 +322,25 @@ private WrapperRuntimeException WrapRuntimeException(OriginalRuntimeException or message = CoreStrings.Runtime_ScriptInterrupted; description = message; - wrapperRuntimeException = new WrapperInterruptedException(message, - EngineName, EngineVersion, originalRuntimeException); + wrapperScriptException = new WrapperInterruptedException(message, + EngineName, EngineVersion, originalException); } else { type = JsErrorType.Common; message = JsErrorHelpers.GenerateScriptErrorMessage(type, description, string.Empty); - wrapperRuntimeException = new WrapperRuntimeException(message, EngineName, EngineVersion, - originalRuntimeException); + wrapperScriptException = new WrapperRuntimeException(message, EngineName, EngineVersion, + originalException); } - wrapperRuntimeException.Description = description; - wrapperRuntimeException.Type = type; - wrapperRuntimeException.DocumentName = documentName; - wrapperRuntimeException.LineNumber = lineNumber; - wrapperRuntimeException.ColumnNumber = columnNumber; - wrapperRuntimeException.CallStack = callStack; + wrapperScriptException.Description = description; + wrapperScriptException.Type = type; + wrapperScriptException.DocumentName = documentName; + wrapperScriptException.LineNumber = lineNumber; + wrapperScriptException.ColumnNumber = columnNumber; - return wrapperRuntimeException; + return wrapperScriptException; } private static WrapperTimeoutException WrapTimeoutException(TimeoutException originalTimeoutException) @@ -369,9 +375,9 @@ protected override IPrecompiledScript InnerPrecompile(string code, string docume { parsedScript = OriginalEngine.PrepareScript(code, uniqueDocumentName, _strictMode); } - catch (OriginalParserException e) + catch (OriginalException e) { - throw WrapParserException(e); + throw WrapException(e); } return new JintPrecompiledScript(parsedScript); @@ -395,13 +401,9 @@ protected override object InnerEvaluate(string expression, string documentName) { resultValue = _jsEngine.Evaluate(expression, uniqueDocumentName); } - catch (OriginalParserException e) - { - throw WrapParserException(e); - } - catch (OriginalRuntimeException e) + catch (OriginalException e) { - throw WrapRuntimeException(e); + throw WrapException(e); } catch (TimeoutException e) { @@ -441,13 +443,9 @@ protected override void InnerExecute(string code, string documentName) { _jsEngine.Execute(code, uniqueDocumentName); } - catch (OriginalParserException e) - { - throw WrapParserException(e); - } - catch (OriginalRuntimeException e) + catch (OriginalException e) { - throw WrapRuntimeException(e); + throw WrapException(e); } catch (TimeoutException e) { @@ -474,9 +472,9 @@ protected override void InnerExecute(IPrecompiledScript precompiledScript) { _jsEngine.Execute(jintPrecompiledScript.ParsedScript); } - catch (OriginalRuntimeException e) + catch (OriginalException e) { - throw WrapRuntimeException(e); + throw WrapException(e); } catch (TimeoutException e) { @@ -497,9 +495,9 @@ protected override object InnerCallFunction(string functionName, params object[] { functionValue = _jsEngine.GetValue(functionName); } - catch (OriginalRuntimeException e) + catch (OriginalException e) { - throw WrapRuntimeException(e); + throw WrapException(e); } OriginalValue resultValue; @@ -508,9 +506,9 @@ protected override object InnerCallFunction(string functionName, params object[] { resultValue = _jsEngine.Invoke(functionValue, args); } - catch (OriginalRuntimeException e) + catch (OriginalException e) { - throw WrapRuntimeException(e); + throw WrapException(e); } catch (TimeoutException e) { @@ -567,9 +565,9 @@ protected override object InnerGetVariableValue(string variableName) { variableValue = _jsEngine.GetValue(variableName); } - catch (OriginalRuntimeException e) + catch (OriginalException e) { - throw WrapRuntimeException(e); + throw WrapException(e); } result = MapToHostType(variableValue); @@ -595,9 +593,9 @@ protected override void InnerSetVariableValue(string variableName, object value) { _jsEngine.SetValue(variableName, processedValue); } - catch (OriginalRuntimeException e) + catch (OriginalException e) { - throw WrapRuntimeException(e); + throw WrapException(e); } } } @@ -617,9 +615,9 @@ protected override void InnerEmbedHostObject(string itemName, object value) { _jsEngine.SetValue(itemName, processedValue); } - catch (OriginalRuntimeException e) + catch (OriginalException e) { - throw WrapRuntimeException(e); + throw WrapException(e); } } } @@ -634,9 +632,9 @@ protected override void InnerEmbedHostType(string itemName, Type type) { _jsEngine.SetValue(itemName, typeReference); } - catch (OriginalRuntimeException e) + catch (OriginalException e) { - throw WrapRuntimeException(e); + throw WrapException(e); } } } @@ -692,12 +690,12 @@ public override void Dispose() { if (_debuggerStepCallback != null) { - _jsEngine.DebugHandler.Step -= _debuggerStepCallback; + _jsEngine.Debugger.Step -= _debuggerStepCallback; } if (_debuggerBreakCallback != null) { - _jsEngine.DebugHandler.Break -= _debuggerBreakCallback; + _jsEngine.Debugger.Break -= _debuggerBreakCallback; } _jsEngine.Dispose(); diff --git a/src/JavaScriptEngineSwitcher.Jint/JintPrecompiledScript.cs b/src/JavaScriptEngineSwitcher.Jint/JintPrecompiledScript.cs index f30b9423..0d36e5b9 100644 --- a/src/JavaScriptEngineSwitcher.Jint/JintPrecompiledScript.cs +++ b/src/JavaScriptEngineSwitcher.Jint/JintPrecompiledScript.cs @@ -1,4 +1,4 @@ -using OriginalParsedScript = Esprima.Ast.Script; +using OriginalParsedScript = Jint.Prepared; using JavaScriptEngineSwitcher.Core; diff --git a/src/JavaScriptEngineSwitcher.Jint/PACKAGE-DESCRIPTION.md b/src/JavaScriptEngineSwitcher.Jint/PACKAGE-DESCRIPTION.md new file mode 100644 index 00000000..9c58f953 --- /dev/null +++ b/src/JavaScriptEngineSwitcher.Jint/PACKAGE-DESCRIPTION.md @@ -0,0 +1 @@ +JavaScriptEngineSwitcher.Jint contains a `JintJsEngine` adapter (wrapper for the [Jint](http://github.com/sebastienros/jint) version 4.4.2). \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.Jint/readme.txt b/src/JavaScriptEngineSwitcher.Jint/readme.txt index 20044ce8..02775102 100644 --- a/src/JavaScriptEngineSwitcher.Jint/readme.txt +++ b/src/JavaScriptEngineSwitcher.Jint/readme.txt @@ -1,26 +1,23 @@  -------------------------------------------------------------------------------- - README file for JS Engine Switcher: Jint v3.21.2 + README file for JS Engine Switcher: Jint v3.30.2 -------------------------------------------------------------------------------- - Copyright (c) 2013-2023 Andrey Taritsyn - http://www.taritsyn.ru + Copyright (c) 2013-2025 Andrey Taritsyn - http://www.taritsyn.ru =========== DESCRIPTION =========== - JavaScriptEngineSwitcher.Jint contains adapter `JintJsEngine` (wrapper for the - Jint JavaScript Engine (http://github.com/sebastienros/jint) version - 3.0.0 Beta 2049). + JavaScriptEngineSwitcher.Jint contains a `JintJsEngine` adapter (wrapper for the + Jint (http://github.com/sebastienros/jint) version 4.4.2). ============= RELEASE NOTES ============= - 1. The package is no longer marked as a prerelease; - 2. In configuration settings of the Jint JS engine was added one new property - - `MaxJsonParseDepth` (default `64`). + Jint was updated to version 4.4.2. ============= DOCUMENTATION diff --git a/src/JavaScriptEngineSwitcher.Jurassic/JavaScriptEngineSwitcher.Jurassic.csproj b/src/JavaScriptEngineSwitcher.Jurassic/JavaScriptEngineSwitcher.Jurassic.csproj index 75d8302c..d2bf3a2b 100644 --- a/src/JavaScriptEngineSwitcher.Jurassic/JavaScriptEngineSwitcher.Jurassic.csproj +++ b/src/JavaScriptEngineSwitcher.Jurassic/JavaScriptEngineSwitcher.Jurassic.csproj @@ -2,11 +2,12 @@ JS Engine Switcher: Jurassic - 3.21.0 + 3.29.0 net40-client;net45;netstandard2.0 Library true $(NoWarn);CS1591 + false true @@ -16,29 +17,21 @@ - JavaScriptEngineSwitcher.Jurassic contains adapter `JurassicJsEngine` (wrapper for the Jurassic JavaScript Engine (http://github.com/paulbartrum/jurassic) version of September 20, 2022). - $(PackageCommonTags);Jurassic + https://raw.githubusercontent.com/Taritsyn/JavaScriptEngineSwitcher/master/Icons/JavaScriptEngineSwitcher_Jurassic_Logo128x128.png ../../Icons/JavaScriptEngineSwitcher_Jurassic_Logo128x128.png - Improved a conversion of results to a host types. + JavaScriptEngineSwitcher.Jurassic contains a `JurassicJsEngine` adapter (wrapper for the Jurassic). + $(PackageCommonTags);Jurassic + Jurassic was updated to version of February 4, 2025. - + - - jurassic-license.txt - true - false - - - - readme.txt - true - + \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.Jurassic/JurassicJsEngine.cs b/src/JavaScriptEngineSwitcher.Jurassic/JurassicJsEngine.cs index c1a4dee4..57d9976b 100644 --- a/src/JavaScriptEngineSwitcher.Jurassic/JurassicJsEngine.cs +++ b/src/JavaScriptEngineSwitcher.Jurassic/JurassicJsEngine.cs @@ -45,7 +45,7 @@ public sealed class JurassicJsEngine : JsEngineBase /// /// Version of original JS engine /// - private const string EngineVersion = "Sep 20, 2022"; + private const string EngineVersion = "Feb 4, 2025"; /// /// Jurassic JS engine diff --git a/src/JavaScriptEngineSwitcher.Jurassic/PACKAGE-DESCRIPTION.md b/src/JavaScriptEngineSwitcher.Jurassic/PACKAGE-DESCRIPTION.md new file mode 100644 index 00000000..ad182c32 --- /dev/null +++ b/src/JavaScriptEngineSwitcher.Jurassic/PACKAGE-DESCRIPTION.md @@ -0,0 +1 @@ +JavaScriptEngineSwitcher.Jurassic contains a `JurassicJsEngine` adapter (wrapper for the [Jurassic](http://github.com/paulbartrum/jurassic) version of February 4, 2025). \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.Jurassic/readme.txt b/src/JavaScriptEngineSwitcher.Jurassic/readme.txt index 0ca30535..88a9730b 100644 --- a/src/JavaScriptEngineSwitcher.Jurassic/readme.txt +++ b/src/JavaScriptEngineSwitcher.Jurassic/readme.txt @@ -1,24 +1,24 @@  -------------------------------------------------------------------------------- - README file for JS Engine Switcher: Jurassic v3.21.0 + README file for JS Engine Switcher: Jurassic v3.29.0 -------------------------------------------------------------------------------- - Copyright (c) 2013-2023 Andrey Taritsyn - http://www.taritsyn.ru + Copyright (c) 2013-2025 Andrey Taritsyn - http://www.taritsyn.ru =========== DESCRIPTION =========== - JavaScriptEngineSwitcher.Jurassic contains adapter `JurassicJsEngine` (wrapper - for the Jurassic JavaScript Engine (http://github.com/paulbartrum/jurassic) - version of September 20, 2022). + JavaScriptEngineSwitcher.Jurassic contains a `JurassicJsEngine` adapter (wrapper + for the Jurassic (http://github.com/paulbartrum/jurassic) version of + February 4, 2025). ============= RELEASE NOTES ============= - Improved a conversion of results to a host types. + Jurassic was updated to version of February 4, 2025. ============= DOCUMENTATION diff --git a/src/JavaScriptEngineSwitcher.Msie/JavaScriptEngineSwitcher.Msie.csproj b/src/JavaScriptEngineSwitcher.Msie/JavaScriptEngineSwitcher.Msie.csproj index bdb34808..bfe69608 100644 --- a/src/JavaScriptEngineSwitcher.Msie/JavaScriptEngineSwitcher.Msie.csproj +++ b/src/JavaScriptEngineSwitcher.Msie/JavaScriptEngineSwitcher.Msie.csproj @@ -2,12 +2,13 @@ JS Engine Switcher: MSIE - 3.21.1 + 3.24.1 net40-client;net45;netstandard1.3;netstandard2.0 1.6.0 Library true - $(NoWarn);CS1591 + $(NoWarn);CS1591;NETSDK1215;NU1903 + false true true @@ -18,30 +19,22 @@ - JavaScriptEngineSwitcher.Msie contains adapter `MsieJsEngine` (wrapper for the MSIE JavaScript Engine for .NET (http://github.com/Taritsyn/MsieJavaScriptEngine)). For correct working of the MSIE JavaScript Engine it is recommended to install Internet Explorer 9+ or Microsoft Edge Legacy on the machine. - $(PackageCommonTags);MSIE;IE;Chakra + https://raw.githubusercontent.com/Taritsyn/JavaScriptEngineSwitcher/master/Icons/JavaScriptEngineSwitcher_Msie_Logo128x128.png ../../Icons/JavaScriptEngineSwitcher_Msie_Logo128x128.png - MSIE JavaScript Engine was updated to version 3.2.2. + JavaScriptEngineSwitcher.Msie contains a `MsieJsEngine` adapter (wrapper for the MSIE JavaScript Engine for .NET). + $(PackageCommonTags);MSIE;IE;Chakra + MSIE JavaScript Engine was updated to version 3.2.5. - - + + - - msie-javascript-engine-license.txt - true - false - - - - readme.txt - true - + diff --git a/src/JavaScriptEngineSwitcher.Msie/PACKAGE-DESCRIPTION.md b/src/JavaScriptEngineSwitcher.Msie/PACKAGE-DESCRIPTION.md new file mode 100644 index 00000000..c0017681 --- /dev/null +++ b/src/JavaScriptEngineSwitcher.Msie/PACKAGE-DESCRIPTION.md @@ -0,0 +1,3 @@ +JavaScriptEngineSwitcher.Msie contains a `MsieJsEngine` adapter (wrapper for the [MSIE JavaScript Engine for .NET](http://github.com/Taritsyn/MsieJavaScriptEngine)). + +For correct working of the MSIE JavaScript Engine it is recommended to install Internet Explorer 9+ or Microsoft Edge Legacy on the machine. \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.Msie/Resources/Strings.Designer.cs b/src/JavaScriptEngineSwitcher.Msie/Resources/Strings.Designer.cs index 9eca28b2..50649830 100644 --- a/src/JavaScriptEngineSwitcher.Msie/Resources/Strings.Designer.cs +++ b/src/JavaScriptEngineSwitcher.Msie/Resources/Strings.Designer.cs @@ -21,7 +21,7 @@ internal class Strings private static Lazy _resourceManager = new Lazy(() => new ResourceManager( "JavaScriptEngineSwitcher.Msie.Resources.Strings", -#if NET40 +#if NET20 || NET30 || NET35 || NET40 typeof(Strings).Assembly #else typeof(Strings).GetTypeInfo().Assembly diff --git a/src/JavaScriptEngineSwitcher.Msie/readme.txt b/src/JavaScriptEngineSwitcher.Msie/readme.txt index fa37cafb..2f82f48b 100644 --- a/src/JavaScriptEngineSwitcher.Msie/readme.txt +++ b/src/JavaScriptEngineSwitcher.Msie/readme.txt @@ -1,17 +1,17 @@  -------------------------------------------------------------------------------- - README file for JS Engine Switcher: MSIE v3.21.1 + README file for JS Engine Switcher: MSIE v3.24.1 -------------------------------------------------------------------------------- - Copyright (c) 2013-2023 Andrey Taritsyn - http://www.taritsyn.ru + Copyright (c) 2013-2024 Andrey Taritsyn - http://www.taritsyn.ru =========== DESCRIPTION =========== - JavaScriptEngineSwitcher.Msie contains adapter `MsieJsEngine` (wrapper for the + JavaScriptEngineSwitcher.Msie contains a `MsieJsEngine` adapter (wrapper for the MSIE JavaScript Engine for .NET (http://github.com/Taritsyn/MsieJavaScriptEngine)). For correct working of the MSIE JavaScript Engine it is recommended to install Internet Explorer 9+ or Microsoft Edge Legacy on the machine. @@ -19,7 +19,7 @@ ============= RELEASE NOTES ============= - MSIE JavaScript Engine was updated to version 3.2.2. + MSIE JavaScript Engine was updated to version 3.2.5. ============= DOCUMENTATION diff --git a/src/JavaScriptEngineSwitcher.NiL/JavaScriptEngineSwitcher.NiL.csproj b/src/JavaScriptEngineSwitcher.NiL/JavaScriptEngineSwitcher.NiL.csproj index 818c8354..6c41ccdd 100644 --- a/src/JavaScriptEngineSwitcher.NiL/JavaScriptEngineSwitcher.NiL.csproj +++ b/src/JavaScriptEngineSwitcher.NiL/JavaScriptEngineSwitcher.NiL.csproj @@ -2,11 +2,12 @@ JS Engine Switcher: NiL - 3.21.0 - net461;net48;netcoreapp3.1;net5.0;net6.0;net7.0 + 3.30.0 + net461;net48;netcoreapp3.1;net6.0;net8.0;net9.0 Library true $(NoWarn);CS1591 + false true false @@ -17,28 +18,20 @@ - JavaScriptEngineSwitcher.NiL contains adapter `NiLJsEngine` (wrapper for the NiL JavaScript Engine (https://github.com/nilproject/NiL.JS) version 2.5.1661). - $(PackageCommonTags);NiL + https://raw.githubusercontent.com/Taritsyn/JavaScriptEngineSwitcher/master/Icons/JavaScriptEngineSwitcher_NiL_Logo128x128.png ../../Icons/JavaScriptEngineSwitcher_NiL_Logo128x128.png - NiL.JS was updated to version 2.5.1661. + JavaScriptEngineSwitcher.NiL contains a `NiLJsEngine` adapter (wrapper for the NiL.JS). + $(PackageCommonTags);NiL + NiL.JS was updated to version 2.6.1712. - + - - nil-license.txt - true - false - - - - readme.txt - true - + \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.NiL/NiLJsEngine.cs b/src/JavaScriptEngineSwitcher.NiL/NiLJsEngine.cs index 6d9fa08b..90405344 100644 --- a/src/JavaScriptEngineSwitcher.NiL/NiLJsEngine.cs +++ b/src/JavaScriptEngineSwitcher.NiL/NiLJsEngine.cs @@ -41,7 +41,7 @@ public sealed class NiLJsEngine : JsEngineBase /// /// Version of original JS engine /// - private const string EngineVersion = "2.5.1661"; + private const string EngineVersion = "2.6.1712"; /// /// Regular expression for working with the syntax error message diff --git a/src/JavaScriptEngineSwitcher.NiL/PACKAGE-DESCRIPTION.md b/src/JavaScriptEngineSwitcher.NiL/PACKAGE-DESCRIPTION.md new file mode 100644 index 00000000..23fa1c6d --- /dev/null +++ b/src/JavaScriptEngineSwitcher.NiL/PACKAGE-DESCRIPTION.md @@ -0,0 +1 @@ +JavaScriptEngineSwitcher.NiL contains a `NiLJsEngine` adapter (wrapper for the [NiL.JS](https://github.com/nilproject/NiL.JS) version 2.6.1712). \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.NiL/readme.txt b/src/JavaScriptEngineSwitcher.NiL/readme.txt index d7806c20..5e707cdc 100644 --- a/src/JavaScriptEngineSwitcher.NiL/readme.txt +++ b/src/JavaScriptEngineSwitcher.NiL/readme.txt @@ -1,23 +1,23 @@  -------------------------------------------------------------------------------- - README file for JS Engine Switcher: NiL v3.21.0 + README file for JS Engine Switcher: NiL v3.30.0 -------------------------------------------------------------------------------- - Copyright (c) 2013-2023 Andrey Taritsyn - http://www.taritsyn.ru + Copyright (c) 2013-2025 Andrey Taritsyn - http://www.taritsyn.ru =========== DESCRIPTION =========== - JavaScriptEngineSwitcher.NiL contains adapter `NiLJsEngine` (wrapper for the - NiL JavaScript Engine (https://github.com/nilproject/NiL.JS) version 2.5.1661). + JavaScriptEngineSwitcher.NiL contains a `NiLJsEngine` adapter (wrapper for the + NiL.JS (https://github.com/nilproject/NiL.JS) version 2.6.1712). ============= RELEASE NOTES ============= - NiL.JS was updated to version 2.5.1661. + NiL.JS was updated to version 2.6.1712. ============= DOCUMENTATION diff --git a/src/JavaScriptEngineSwitcher.Node/JavaScriptEngineSwitcher.Node.csproj b/src/JavaScriptEngineSwitcher.Node/JavaScriptEngineSwitcher.Node.csproj index 5418c4ea..c8d22b0a 100644 --- a/src/JavaScriptEngineSwitcher.Node/JavaScriptEngineSwitcher.Node.csproj +++ b/src/JavaScriptEngineSwitcher.Node/JavaScriptEngineSwitcher.Node.csproj @@ -2,12 +2,14 @@ JS Engine Switcher: Node - 3.21.2 + 3.24.1 net461;netstandard2.0;netcoreapp3.1;net5.0;net6.0;net7.0 Library true true - $(NoWarn);CS1591;NU5104 + true + $(NoWarn);CS1591;NU1903 + false true true false @@ -18,37 +20,21 @@ - JavaScriptEngineSwitcher.Node contains adapter `NodeJsEngine` (wrapper for the Jering.Javascript.NodeJS (https://github.com/JeringTech/Javascript.NodeJS) version 7.0.0 Beta 4). - -This package does not contain the `node.exe`. Therefore, you need to install the Node.js (https://nodejs.org) and add the `node.exe`'s directory to the `Path` environment variable (automatically done by the official installer). - $(PackageCommonTags);Node.js;Jering.Javascript.NodeJS + https://raw.githubusercontent.com/Taritsyn/JavaScriptEngineSwitcher/master/Icons/JavaScriptEngineSwitcher_Node_Logo128x128.png ../../Icons/JavaScriptEngineSwitcher_Node_Logo128x128.png - 1. Jering.Javascript.NodeJS was updated to version 7.0.0 Beta 4; -2. Added support of .NET 7. + JavaScriptEngineSwitcher.Node contains a `NodeJsEngine` adapter (wrapper for the Jering.Javascript.NodeJS). + $(PackageCommonTags);Node.js;Jering.Javascript.NodeJS - + - - jering-javascript-nodejs-license.txt - true - false - - - nodejs-license.txt - true - false - - - - readme.txt - true - + + diff --git a/src/JavaScriptEngineSwitcher.Node/PACKAGE-DESCRIPTION.md b/src/JavaScriptEngineSwitcher.Node/PACKAGE-DESCRIPTION.md new file mode 100644 index 00000000..76c940f9 --- /dev/null +++ b/src/JavaScriptEngineSwitcher.Node/PACKAGE-DESCRIPTION.md @@ -0,0 +1,4 @@ +JavaScriptEngineSwitcher.Node contains a `NodeJsEngine` adapter (wrapper for the [Jering.Javascript.NodeJS](https://github.com/JeringTech/Javascript.NodeJS) version 7.0.0). + +This package does not contain the `node.exe`. +Therefore, you need to install the [Node.js](https://nodejs.org) and add the `node.exe`'s directory to the `Path` environment variable (automatically done by the official installer). \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.Node/Resources/engine-helpers.js b/src/JavaScriptEngineSwitcher.Node/Resources/engine-helpers.js index 81e298c5..d0c10831 100644 --- a/src/JavaScriptEngineSwitcher.Node/Resources/engine-helpers.js +++ b/src/JavaScriptEngineSwitcher.Node/Resources/engine-helpers.js @@ -27,8 +27,16 @@ function getContext(engineId) { module.exports = { addContext: (callback, engineId, useBuiltinLibrary) => { - let sandboxPrototype = useBuiltinLibrary ? global : null; - let sandbox = Object.create(sandboxPrototype); + let sandbox; + if (useBuiltinLibrary) { + sandbox = Object.create(global); + if (typeof sandbox['require'] === 'undefined') { + sandbox['require'] = require; + } + } + else { + sandbox = Object.create(null); + } let context = vm.createContext(sandbox); contexts.set(engineId, context); diff --git a/src/JavaScriptEngineSwitcher.Node/readme.txt b/src/JavaScriptEngineSwitcher.Node/readme.txt index abe68a07..4f89b068 100644 --- a/src/JavaScriptEngineSwitcher.Node/readme.txt +++ b/src/JavaScriptEngineSwitcher.Node/readme.txt @@ -1,30 +1,24 @@  -------------------------------------------------------------------------------- - README file for JS Engine Switcher: Node v3.21.2 + README file for JS Engine Switcher: Node v3.24.1 -------------------------------------------------------------------------------- - Copyright (c) 2013-2023 Andrey Taritsyn - http://www.taritsyn.ru + Copyright (c) 2013-2024 Andrey Taritsyn - http://www.taritsyn.ru =========== DESCRIPTION =========== - JavaScriptEngineSwitcher.Node contains adapter `NodeJsEngine` (wrapper for the + JavaScriptEngineSwitcher.Node contains a `NodeJsEngine` adapter (wrapper for the Jering.Javascript.NodeJS (https://github.com/JeringTech/Javascript.NodeJS) - version 7.0.0 Beta 4). + version 7.0.0). This package does not contain the `node.exe`. Therefore, you need to install the Node.js (https://nodejs.org) and add the `node.exe`'s directory to the `Path` environment variable (automatically done by the official installer). - ============= - RELEASE NOTES - ============= - 1. Jering.Javascript.NodeJS was updated to version 7.0.0 Beta 4; - 2. Added support of .NET 7. - ============= DOCUMENTATION ============= diff --git a/src/JavaScriptEngineSwitcher.V8.Native.linux-x64/JavaScriptEngineSwitcher.V8.Native.linux-x64.csproj b/src/JavaScriptEngineSwitcher.V8.Native.linux-x64/JavaScriptEngineSwitcher.V8.Native.linux-x64.csproj index 0c4b0e62..e761c1b1 100644 --- a/src/JavaScriptEngineSwitcher.V8.Native.linux-x64/JavaScriptEngineSwitcher.V8.Native.linux-x64.csproj +++ b/src/JavaScriptEngineSwitcher.V8.Native.linux-x64/JavaScriptEngineSwitcher.V8.Native.linux-x64.csproj @@ -2,7 +2,7 @@ JS Engine Switcher: V8 for Linux (x64) - 3.21.3 + 3.29.0 netstandard2.0 @@ -11,10 +11,11 @@ - This package is deprecated. Instead, it is recommended to use a 'Microsoft.ClearScript.V8.Native.linux-x64' package. - $(PackageCommonTags);V8;ClearScript;Linux;x64 + https://raw.githubusercontent.com/Taritsyn/JavaScriptEngineSwitcher/master/Icons/JavaScriptEngineSwitcher_V8_Logo128x128.png ../../Icons/JavaScriptEngineSwitcher_V8_Logo128x128.png - Microsoft ClearScript.V8 was updated to version 7.4.2 (support of V8 version 11.4.183.17). + This package is deprecated. Instead, it is recommended to use a Microsoft.ClearScript.V8.Native.linux-x64 package. + $(PackageCommonTags);V8;ClearScript;Linux;x64 + Microsoft ClearScript.V8 was updated to version 7.5 (support of the V8 version 13.3.415.23). \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.V8.Native.linux-x64/JavaScriptEngineSwitcher.V8.Native.linux-x64.nuspec b/src/JavaScriptEngineSwitcher.V8.Native.linux-x64/JavaScriptEngineSwitcher.V8.Native.linux-x64.nuspec index bb1f5ec0..bf4bfdc0 100644 --- a/src/JavaScriptEngineSwitcher.V8.Native.linux-x64/JavaScriptEngineSwitcher.V8.Native.linux-x64.nuspec +++ b/src/JavaScriptEngineSwitcher.V8.Native.linux-x64/JavaScriptEngineSwitcher.V8.Native.linux-x64.nuspec @@ -1,15 +1,14 @@  - + $CommonMetadataElements$ - + $CommonFileElements$ - - - + + \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.V8.Native.linux-x64/PACKAGE-DESCRIPTION.md b/src/JavaScriptEngineSwitcher.V8.Native.linux-x64/PACKAGE-DESCRIPTION.md new file mode 100644 index 00000000..3bb23eb4 --- /dev/null +++ b/src/JavaScriptEngineSwitcher.V8.Native.linux-x64/PACKAGE-DESCRIPTION.md @@ -0,0 +1,2 @@ +This package is deprecated. +Instead, it is recommended to use a [Microsoft.ClearScript.V8.Native.linux-x64](https://www.nuget.org/packages/Microsoft.ClearScript.V8.Native.linux-x64) package. \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.V8.Native.linux-x64/readme.txt b/src/JavaScriptEngineSwitcher.V8.Native.linux-x64/readme.txt index d563c1fe..9859dd74 100644 --- a/src/JavaScriptEngineSwitcher.V8.Native.linux-x64/readme.txt +++ b/src/JavaScriptEngineSwitcher.V8.Native.linux-x64/readme.txt @@ -1,24 +1,24 @@  -------------------------------------------------------------------------------- - README file for JS Engine Switcher: V8 for Linux x64 v3.21.3 + README file for JS Engine Switcher: V8 for Linux x64 v3.29.0 -------------------------------------------------------------------------------- - Copyright (c) 2013-2023 Andrey Taritsyn - http://www.taritsyn.ru + Copyright (c) 2013-2025 Andrey Taritsyn - http://www.taritsyn.ru =========== DESCRIPTION =========== This package is deprecated. Instead, it is recommended to use a - 'Microsoft.ClearScript.V8.Native.linux-x64' package. + Microsoft.ClearScript.V8.Native.linux-x64 package. ============= RELEASE NOTES ============= - Microsoft ClearScript.V8 was updated to version 7.4.2 (support of V8 version - 11.4.183.17). + Microsoft ClearScript.V8 was updated to version 7.5 (support of the V8 + version 13.3.415.23). ============= DOCUMENTATION diff --git a/src/JavaScriptEngineSwitcher.V8.Native.osx-x64/JavaScriptEngineSwitcher.V8.Native.osx-x64.csproj b/src/JavaScriptEngineSwitcher.V8.Native.osx-x64/JavaScriptEngineSwitcher.V8.Native.osx-x64.csproj index 052bbee5..060da60d 100644 --- a/src/JavaScriptEngineSwitcher.V8.Native.osx-x64/JavaScriptEngineSwitcher.V8.Native.osx-x64.csproj +++ b/src/JavaScriptEngineSwitcher.V8.Native.osx-x64/JavaScriptEngineSwitcher.V8.Native.osx-x64.csproj @@ -2,7 +2,7 @@ JS Engine Switcher: V8 for OS X (x64) - 3.21.3 + 3.29.0 netstandard2.0 @@ -11,10 +11,11 @@ - This package is deprecated. Instead, it is recommended to use a 'Microsoft.ClearScript.V8.Native.osx-x64' package. - $(PackageCommonTags);V8;ClearScript;macOS;OSX;x64 + https://raw.githubusercontent.com/Taritsyn/JavaScriptEngineSwitcher/master/Icons/JavaScriptEngineSwitcher_V8_Logo128x128.png ../../Icons/JavaScriptEngineSwitcher_V8_Logo128x128.png - Microsoft ClearScript.V8 was updated to version 7.4.2 (support of V8 version 11.4.183.17). + This package is deprecated. Instead, it is recommended to use a Microsoft.ClearScript.V8.Native.osx-x64 package. + $(PackageCommonTags);V8;ClearScript;macOS;OSX;x64 + Microsoft ClearScript.V8 was updated to version 7.5 (support of the V8 version 13.3.415.23). \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.V8.Native.osx-x64/JavaScriptEngineSwitcher.V8.Native.osx-x64.nuspec b/src/JavaScriptEngineSwitcher.V8.Native.osx-x64/JavaScriptEngineSwitcher.V8.Native.osx-x64.nuspec index 6769e9f2..10bede4f 100644 --- a/src/JavaScriptEngineSwitcher.V8.Native.osx-x64/JavaScriptEngineSwitcher.V8.Native.osx-x64.nuspec +++ b/src/JavaScriptEngineSwitcher.V8.Native.osx-x64/JavaScriptEngineSwitcher.V8.Native.osx-x64.nuspec @@ -1,15 +1,14 @@  - + $CommonMetadataElements$ - + $CommonFileElements$ - - - + + \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.V8.Native.osx-x64/PACKAGE-DESCRIPTION.md b/src/JavaScriptEngineSwitcher.V8.Native.osx-x64/PACKAGE-DESCRIPTION.md new file mode 100644 index 00000000..2455eca2 --- /dev/null +++ b/src/JavaScriptEngineSwitcher.V8.Native.osx-x64/PACKAGE-DESCRIPTION.md @@ -0,0 +1,2 @@ +This package is deprecated. +Instead, it is recommended to use a [Microsoft.ClearScript.V8.Native.osx-x64](https://www.nuget.org/packages/Microsoft.ClearScript.V8.Native.osx-x64) package. \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.V8.Native.osx-x64/readme.txt b/src/JavaScriptEngineSwitcher.V8.Native.osx-x64/readme.txt index 4b033f0d..da4e5d5a 100644 --- a/src/JavaScriptEngineSwitcher.V8.Native.osx-x64/readme.txt +++ b/src/JavaScriptEngineSwitcher.V8.Native.osx-x64/readme.txt @@ -1,24 +1,24 @@  -------------------------------------------------------------------------------- - README file for JS Engine Switcher: V8 for OS X x64 v3.21.3 + README file for JS Engine Switcher: V8 for OS X x64 v3.29.0 -------------------------------------------------------------------------------- - Copyright (c) 2013-2023 Andrey Taritsyn - http://www.taritsyn.ru + Copyright (c) 2013-2025 Andrey Taritsyn - http://www.taritsyn.ru =========== DESCRIPTION =========== This package is deprecated. Instead, it is recommended to use a - 'Microsoft.ClearScript.V8.Native.osx-x64' package. + Microsoft.ClearScript.V8.Native.osx-x64 package. ============= RELEASE NOTES ============= - Microsoft ClearScript.V8 was updated to version 7.4.2 (support of V8 version - 11.4.183.17). + Microsoft ClearScript.V8 was updated to version 7.5 (support of the V8 + version 13.3.415.23). ============= DOCUMENTATION diff --git a/src/JavaScriptEngineSwitcher.V8.Native.win-x64/JavaScriptEngineSwitcher.V8.Native.win-x64.csproj b/src/JavaScriptEngineSwitcher.V8.Native.win-x64/JavaScriptEngineSwitcher.V8.Native.win-x64.csproj index fc226d79..848e4af8 100644 --- a/src/JavaScriptEngineSwitcher.V8.Native.win-x64/JavaScriptEngineSwitcher.V8.Native.win-x64.csproj +++ b/src/JavaScriptEngineSwitcher.V8.Native.win-x64/JavaScriptEngineSwitcher.V8.Native.win-x64.csproj @@ -2,7 +2,7 @@ JS Engine Switcher: V8 for Windows (x64) - 3.21.3 + 3.29.0 netstandard2.0 @@ -11,10 +11,11 @@ - This package is deprecated. Instead, it is recommended to use a 'Microsoft.ClearScript.V8.Native.win-x64' package. - $(PackageCommonTags);V8;ClearScript;Windows;x64 + https://raw.githubusercontent.com/Taritsyn/JavaScriptEngineSwitcher/master/Icons/JavaScriptEngineSwitcher_V8_Logo128x128.png ../../Icons/JavaScriptEngineSwitcher_V8_Logo128x128.png - Microsoft ClearScript.V8 was updated to version 7.4.2 (support of V8 version 11.4.183.17). + This package is deprecated. Instead, it is recommended to use a Microsoft.ClearScript.V8.Native.win-x64 package. + $(PackageCommonTags);V8;ClearScript;Windows;x64 + Microsoft ClearScript.V8 was updated to version 7.5 (support of the V8 version 13.3.415.23). \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.V8.Native.win-x64/JavaScriptEngineSwitcher.V8.Native.win-x64.nuspec b/src/JavaScriptEngineSwitcher.V8.Native.win-x64/JavaScriptEngineSwitcher.V8.Native.win-x64.nuspec index b3922d5a..7b52ae54 100644 --- a/src/JavaScriptEngineSwitcher.V8.Native.win-x64/JavaScriptEngineSwitcher.V8.Native.win-x64.nuspec +++ b/src/JavaScriptEngineSwitcher.V8.Native.win-x64/JavaScriptEngineSwitcher.V8.Native.win-x64.nuspec @@ -1,15 +1,14 @@  - + $CommonMetadataElements$ - + $CommonFileElements$ - - - + + \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.V8.Native.win-x64/PACKAGE-DESCRIPTION.md b/src/JavaScriptEngineSwitcher.V8.Native.win-x64/PACKAGE-DESCRIPTION.md new file mode 100644 index 00000000..2efc6700 --- /dev/null +++ b/src/JavaScriptEngineSwitcher.V8.Native.win-x64/PACKAGE-DESCRIPTION.md @@ -0,0 +1,2 @@ +This package is deprecated. +Instead, it is recommended to use a [Microsoft.ClearScript.V8.Native.win-x64](https://www.nuget.org/packages/Microsoft.ClearScript.V8.Native.win-x64) package. \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.V8.Native.win-x64/readme.txt b/src/JavaScriptEngineSwitcher.V8.Native.win-x64/readme.txt index 97b6f4db..408c9a2c 100644 --- a/src/JavaScriptEngineSwitcher.V8.Native.win-x64/readme.txt +++ b/src/JavaScriptEngineSwitcher.V8.Native.win-x64/readme.txt @@ -1,24 +1,24 @@  -------------------------------------------------------------------------------- - README file for JS Engine Switcher: V8 for Windows x64 v3.21.3 + README file for JS Engine Switcher: V8 for Windows x64 v3.29.0 -------------------------------------------------------------------------------- - Copyright (c) 2013-2023 Andrey Taritsyn - http://www.taritsyn.ru + Copyright (c) 2013-2025 Andrey Taritsyn - http://www.taritsyn.ru =========== DESCRIPTION =========== This package is deprecated. Instead, it is recommended to use a - 'Microsoft.ClearScript.V8.Native.win-x64' package. + Microsoft.ClearScript.V8.Native.win-x64 package. ============= RELEASE NOTES ============= - Microsoft ClearScript.V8 was updated to version 7.4.2 (support of V8 version - 11.4.183.17). + Microsoft ClearScript.V8 was updated to version 7.5 (support of the V8 + version 13.3.415.23). ============= DOCUMENTATION diff --git a/src/JavaScriptEngineSwitcher.V8.Native.win-x86/JavaScriptEngineSwitcher.V8.Native.win-x86.csproj b/src/JavaScriptEngineSwitcher.V8.Native.win-x86/JavaScriptEngineSwitcher.V8.Native.win-x86.csproj index 552ddee3..d4261f95 100644 --- a/src/JavaScriptEngineSwitcher.V8.Native.win-x86/JavaScriptEngineSwitcher.V8.Native.win-x86.csproj +++ b/src/JavaScriptEngineSwitcher.V8.Native.win-x86/JavaScriptEngineSwitcher.V8.Native.win-x86.csproj @@ -2,7 +2,7 @@ JS Engine Switcher: V8 for Windows (x86) - 3.21.3 + 3.29.0 netstandard2.0 @@ -11,10 +11,11 @@ - This package is deprecated. Instead, it is recommended to use a 'Microsoft.ClearScript.V8.Native.win-x86' package. - $(PackageCommonTags);V8;ClearScript;Windows;x86 + https://raw.githubusercontent.com/Taritsyn/JavaScriptEngineSwitcher/master/Icons/JavaScriptEngineSwitcher_V8_Logo128x128.png ../../Icons/JavaScriptEngineSwitcher_V8_Logo128x128.png - Microsoft ClearScript.V8 was updated to version 7.4.2 (support of V8 version 11.4.183.17). + This package is deprecated. Instead, it is recommended to use a Microsoft.ClearScript.V8.Native.win-x86 package. + $(PackageCommonTags);V8;ClearScript;Windows;x86 + Microsoft ClearScript.V8 was updated to version 7.5 (support of the V8 version 13.3.415.23). \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.V8.Native.win-x86/JavaScriptEngineSwitcher.V8.Native.win-x86.nuspec b/src/JavaScriptEngineSwitcher.V8.Native.win-x86/JavaScriptEngineSwitcher.V8.Native.win-x86.nuspec index c45945e9..4c5670eb 100644 --- a/src/JavaScriptEngineSwitcher.V8.Native.win-x86/JavaScriptEngineSwitcher.V8.Native.win-x86.nuspec +++ b/src/JavaScriptEngineSwitcher.V8.Native.win-x86/JavaScriptEngineSwitcher.V8.Native.win-x86.nuspec @@ -1,15 +1,14 @@  - + $CommonMetadataElements$ - + $CommonFileElements$ - - - + + \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.V8.Native.win-x86/PACKAGE-DESCRIPTION.md b/src/JavaScriptEngineSwitcher.V8.Native.win-x86/PACKAGE-DESCRIPTION.md new file mode 100644 index 00000000..44bc9064 --- /dev/null +++ b/src/JavaScriptEngineSwitcher.V8.Native.win-x86/PACKAGE-DESCRIPTION.md @@ -0,0 +1,2 @@ +This package is deprecated. +Instead, it is recommended to use a [Microsoft.ClearScript.V8.Native.win-x86](https://www.nuget.org/packages/Microsoft.ClearScript.V8.Native.win-x86) package. \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.V8.Native.win-x86/readme.txt b/src/JavaScriptEngineSwitcher.V8.Native.win-x86/readme.txt index 22ff6ea0..d874dc4a 100644 --- a/src/JavaScriptEngineSwitcher.V8.Native.win-x86/readme.txt +++ b/src/JavaScriptEngineSwitcher.V8.Native.win-x86/readme.txt @@ -1,24 +1,24 @@  -------------------------------------------------------------------------------- - README file for JS Engine Switcher: V8 for Windows x86 v3.21.3 + README file for JS Engine Switcher: V8 for Windows x86 v3.29.0 -------------------------------------------------------------------------------- - Copyright (c) 2013-2023 Andrey Taritsyn - http://www.taritsyn.ru + Copyright (c) 2013-2025 Andrey Taritsyn - http://www.taritsyn.ru =========== DESCRIPTION =========== This package is deprecated. Instead, it is recommended to use a - 'Microsoft.ClearScript.V8.Native.win-x86' package. + Microsoft.ClearScript.V8.Native.win-x86 package. ============= RELEASE NOTES ============= - Microsoft ClearScript.V8 was updated to version 7.4.2 (support of V8 version - 11.4.183.17). + Microsoft ClearScript.V8 was updated to version 7.5 (support of the V8 + version 13.3.415.23). ============= DOCUMENTATION diff --git a/src/JavaScriptEngineSwitcher.V8/JavaScriptEngineSwitcher.V8.csproj b/src/JavaScriptEngineSwitcher.V8/JavaScriptEngineSwitcher.V8.csproj index 17720166..3ccf3374 100644 --- a/src/JavaScriptEngineSwitcher.V8/JavaScriptEngineSwitcher.V8.csproj +++ b/src/JavaScriptEngineSwitcher.V8/JavaScriptEngineSwitcher.V8.csproj @@ -2,11 +2,12 @@ JS Engine Switcher: V8 - 3.21.3 - net45;net471;netstandard2.1;netcoreapp3.1;net5.0 + 3.29.1 + net462;net471;netstandard2.1;netcoreapp3.1;net5.0 Library true - $(NoWarn);CS1591 + $(NoWarn);CS1591;NU1903 + false true true false @@ -17,54 +18,25 @@ - JavaScriptEngineSwitcher.V8 contains adapter `V8JsEngine` (wrapper for the Microsoft ClearScript.V8 (http://github.com/Microsoft/ClearScript) version 7.4.2). - -This package does not contain the native ClearScript.V8 assemblies. Therefore, you need to choose and install the most appropriate package(s) for your platform. The following packages are available: - - * Microsoft.ClearScript.V8.Native.win-x86 - * Microsoft.ClearScript.V8.Native.win-x64 - * Microsoft.ClearScript.V8.Native.win-arm64 - * Microsoft.ClearScript.V8.Native.linux-x64 - * Microsoft.ClearScript.V8.Native.linux-arm - * Microsoft.ClearScript.V8.Native.linux-arm64 - * Microsoft.ClearScript.V8.Native.osx-x64 - * Microsoft.ClearScript.V8.Native.osx-arm64 - $(PackageCommonTags);V8;ClearScript + https://raw.githubusercontent.com/Taritsyn/JavaScriptEngineSwitcher/master/Icons/JavaScriptEngineSwitcher_V8_Logo128x128.png ../../Icons/JavaScriptEngineSwitcher_V8_Logo128x128.png - Microsoft ClearScript.V8 was updated to version 7.4.2. + JavaScriptEngineSwitcher.V8 contains a `V8JsEngine` adapter (wrapper for the Microsoft ClearScript.V8). + $(PackageCommonTags);V8;ClearScript + Performed a migration to a modern API for pre-compilation of scripts. - + - - - + + - - advanced-string-builder-license.txt - true - false - - - clearscript-license.txt - true - false - - - v8-license.txt - true - false - - - - readme.txt - true - + + diff --git a/src/JavaScriptEngineSwitcher.V8/PACKAGE-DESCRIPTION.md b/src/JavaScriptEngineSwitcher.V8/PACKAGE-DESCRIPTION.md new file mode 100644 index 00000000..5c20ea92 --- /dev/null +++ b/src/JavaScriptEngineSwitcher.V8/PACKAGE-DESCRIPTION.md @@ -0,0 +1,14 @@ +JavaScriptEngineSwitcher.V8 contains a `V8JsEngine` adapter (wrapper for the [Microsoft ClearScript.V8](http://github.com/Microsoft/ClearScript) version 7.5). + +This package does not contain the native ClearScript.V8 assemblies. +Therefore, you need to choose and install the most appropriate package(s) for your platform. +The following packages are available: + + * [Microsoft.ClearScript.V8.Native.win-x86](https://www.nuget.org/packages/Microsoft.ClearScript.V8.Native.win-x86) + * [Microsoft.ClearScript.V8.Native.win-x64](https://www.nuget.org/packages/Microsoft.ClearScript.V8.Native.win-x64) + * [Microsoft.ClearScript.V8.Native.win-arm64](https://www.nuget.org/packages/Microsoft.ClearScript.V8.Native.win-arm64) + * [Microsoft.ClearScript.V8.Native.linux-x64](https://www.nuget.org/packages/Microsoft.ClearScript.V8.Native.linux-x64) + * [Microsoft.ClearScript.V8.Native.linux-arm](https://www.nuget.org/packages/Microsoft.ClearScript.V8.Native.linux-arm) + * [Microsoft.ClearScript.V8.Native.linux-arm64](https://www.nuget.org/packages/Microsoft.ClearScript.V8.Native.linux-arm64) + * [Microsoft.ClearScript.V8.Native.osx-x64](https://www.nuget.org/packages/Microsoft.ClearScript.V8.Native.osx-x64) + * [Microsoft.ClearScript.V8.Native.osx-arm64](https://www.nuget.org/packages/Microsoft.ClearScript.V8.Native.osx-arm64) \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.V8/Resources/Strings.Designer.cs b/src/JavaScriptEngineSwitcher.V8/Resources/Strings.Designer.cs index 4efb1f2f..f4759a72 100644 --- a/src/JavaScriptEngineSwitcher.V8/Resources/Strings.Designer.cs +++ b/src/JavaScriptEngineSwitcher.V8/Resources/Strings.Designer.cs @@ -21,7 +21,7 @@ internal class Strings private static Lazy _resourceManager = new Lazy(() => new ResourceManager( "JavaScriptEngineSwitcher.V8.Resources.Strings", -#if NET40 +#if NET20 || NET30 || NET35 || NET40 typeof(Strings).Assembly #else typeof(Strings).GetTypeInfo().Assembly diff --git a/src/JavaScriptEngineSwitcher.V8/V8JsEngine.cs b/src/JavaScriptEngineSwitcher.V8/V8JsEngine.cs index bb2bb233..6b5f74db 100644 --- a/src/JavaScriptEngineSwitcher.V8/V8JsEngine.cs +++ b/src/JavaScriptEngineSwitcher.V8/V8JsEngine.cs @@ -4,6 +4,9 @@ using System.Text.RegularExpressions; using OriginalCacheKind = Microsoft.ClearScript.V8.V8CacheKind; +using OriginalCacheResult = Microsoft.ClearScript.V8.V8CacheResult; +using OriginalDocumentFlags = Microsoft.ClearScript.DocumentFlags; +using OriginalDocumentInfo = Microsoft.ClearScript.DocumentInfo; using OriginalEngine = Microsoft.ClearScript.V8.V8ScriptEngine; using OriginalEngineFlags = Microsoft.ClearScript.V8.V8ScriptEngineFlags; using OriginalException = Microsoft.ClearScript.ScriptEngineException; @@ -47,7 +50,7 @@ public sealed class V8JsEngine : JsEngineBase /// /// Version of original JS engine /// - private const string EngineVersion = "11.4.183.17"; + private const string EngineVersion = "13.3.415.23"; /// /// V8 JS engine @@ -107,6 +110,10 @@ public V8JsEngine(V8Settings settings) }; OriginalEngineFlags flags = OriginalEngineFlags.None; + if (v8Settings.AddPerformanceObject) + { + flags |= OriginalEngineFlags.AddPerformanceObject; + } if (v8Settings.AwaitDebuggerAndPauseOnStart) { flags |= OriginalEngineFlags.AwaitDebuggerAndPauseOnStart; @@ -123,6 +130,10 @@ public V8JsEngine(V8Settings settings) { flags |= OriginalEngineFlags.DisableGlobalMembers; } + if (v8Settings.SetTimerResolution) + { + flags |= OriginalEngineFlags.SetTimerResolution; + } int debugPort = v8Settings.DebugPort; @@ -356,12 +367,13 @@ protected override IPrecompiledScript InnerPrecompile(string code) protected override IPrecompiledScript InnerPrecompile(string code, string documentName) { + var documentInfo = new OriginalDocumentInfo(documentName); var cacheKind = OriginalCacheKind.Code; byte[] cachedBytes; try { - using (OriginalScript generalScript = _jsEngine.Compile(documentName, code, cacheKind, + using (OriginalScript generalScript = _jsEngine.Compile(documentInfo, code, cacheKind, out cachedBytes)) { } } @@ -370,7 +382,7 @@ protected override IPrecompiledScript InnerPrecompile(string code, string docume throw WrapScriptEngineException(e); } - return new V8PrecompiledScript(code, cacheKind, cachedBytes, documentName); + return new V8PrecompiledScript(code, cacheKind, cachedBytes, documentInfo); } protected override object InnerEvaluate(string expression) @@ -380,11 +392,15 @@ protected override object InnerEvaluate(string expression) protected override object InnerEvaluate(string expression, string documentName) { + var documentInfo = new OriginalDocumentInfo(documentName) + { + Flags = OriginalDocumentFlags.None + }; object result; try { - result = _jsEngine.Evaluate(documentName, false, expression); + result = _jsEngine.Evaluate(documentInfo, expression); } catch (OriginalException e) { @@ -419,9 +435,14 @@ protected override void InnerExecute(string code) protected override void InnerExecute(string code, string documentName) { + var documentInfo = new OriginalDocumentInfo(documentName) + { + Flags = OriginalDocumentFlags.None + }; + try { - _jsEngine.Execute(documentName, false, code); + _jsEngine.Execute(documentInfo, code); } catch (OriginalException e) { @@ -445,15 +466,15 @@ protected override void InnerExecute(IPrecompiledScript precompiledScript) ); } - bool cacheAccepted; + byte[] cachedBytes = v8PrecompiledScript.CachedBytes; try { - using (OriginalScript script = _jsEngine.Compile(v8PrecompiledScript.DocumentName, - v8PrecompiledScript.Code, v8PrecompiledScript.CacheKind, v8PrecompiledScript.CachedBytes, - out cacheAccepted)) + using (OriginalScript script = _jsEngine.Compile(v8PrecompiledScript.DocumentInfo, + v8PrecompiledScript.Code, v8PrecompiledScript.CacheKind, ref cachedBytes, + out var cacheResult)) { - if (!cacheAccepted) + if (cacheResult != OriginalCacheResult.Accepted && cacheResult != OriginalCacheResult.Verified) { throw new WrapperUsageException(Strings.Usage_PrecompiledScriptNotAccepted, Name, Version); } diff --git a/src/JavaScriptEngineSwitcher.V8/V8PrecompiledScript.cs b/src/JavaScriptEngineSwitcher.V8/V8PrecompiledScript.cs index f89f2eea..16464dd5 100644 --- a/src/JavaScriptEngineSwitcher.V8/V8PrecompiledScript.cs +++ b/src/JavaScriptEngineSwitcher.V8/V8PrecompiledScript.cs @@ -1,4 +1,5 @@ using OriginalCacheKind = Microsoft.ClearScript.V8.V8CacheKind; +using OriginalDocumentInfo = Microsoft.ClearScript.DocumentInfo; using JavaScriptEngineSwitcher.Core; @@ -37,9 +38,9 @@ public byte[] CachedBytes } /// - /// Gets a document name + /// Gets a meta-information for the document /// - public string DocumentName + public OriginalDocumentInfo DocumentInfo { get; private set; @@ -52,14 +53,14 @@ public string DocumentName /// The source code of the script /// The kind of cache data to be generated /// Cached data for accelerated recompilation - /// Document name + /// Meta-information for the document public V8PrecompiledScript(string code, OriginalCacheKind cacheKind, byte[] cachedBytes, - string documentName) + OriginalDocumentInfo documentInfo) { Code = code; CacheKind = cacheKind; CachedBytes = cachedBytes; - DocumentName = documentName; + DocumentInfo = documentInfo; } diff --git a/src/JavaScriptEngineSwitcher.V8/V8Settings.cs b/src/JavaScriptEngineSwitcher.V8/V8Settings.cs index c1bb79aa..7d2810f1 100644 --- a/src/JavaScriptEngineSwitcher.V8/V8Settings.cs +++ b/src/JavaScriptEngineSwitcher.V8/V8Settings.cs @@ -7,6 +7,20 @@ namespace JavaScriptEngineSwitcher.V8 /// public sealed class V8Settings { + /// + /// Gets or sets a flag for whether to add the + /// Performance + /// object to the script engine's global namespace + /// + /// + /// This object provides a set of low-level native facilities for performance-sensitive scripts. + /// + public bool AddPerformanceObject + { + get; + set; + } + /// /// Gets or sets a flag for whether to allow the usage of reflection API in the script code /// @@ -217,12 +231,29 @@ public UIntPtr MaxStackUsage set; } + /// + /// Gets or sets a flag for whether to set native timers to the highest available resolution + /// while the current script engine's instance is active + /// + /// + /// This property is ignored if value of the property + /// is false. It is only a hint and may be ignored on some systems. On platforms that + /// support it, this property can degrade overall system performance or power efficiency, so + /// caution is recommended. + /// + public bool SetTimerResolution + { + get; + set; + } + /// /// Constructs an instance of the V8 settings /// public V8Settings() { + AddPerformanceObject = false; AllowReflection = false; AwaitDebuggerAndPauseOnStart = false; DebugPort = 9222; @@ -237,6 +268,7 @@ public V8Settings() MaxNewSpaceSize = 0; MaxOldSpaceSize = 0; MaxStackUsage = UIntPtr.Zero; + SetTimerResolution = false; } } } \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.V8/readme.txt b/src/JavaScriptEngineSwitcher.V8/readme.txt index 6bbfa851..8e5be144 100644 --- a/src/JavaScriptEngineSwitcher.V8/readme.txt +++ b/src/JavaScriptEngineSwitcher.V8/readme.txt @@ -1,19 +1,19 @@  -------------------------------------------------------------------------------- - README file for JS Engine Switcher: V8 v3.21.3 + README file for JS Engine Switcher: V8 v3.29.1 -------------------------------------------------------------------------------- - Copyright (c) 2013-2023 Andrey Taritsyn - http://www.taritsyn.ru + Copyright (c) 2013-2025 Andrey Taritsyn - http://www.taritsyn.ru =========== DESCRIPTION =========== - JavaScriptEngineSwitcher.V8 contains adapter `V8JsEngine` (wrapper for the + JavaScriptEngineSwitcher.V8 contains a `V8JsEngine` adapter (wrapper for the Microsoft ClearScript.V8 (http://github.com/Microsoft/ClearScript) version - 7.4.2). + 7.5). This package does not contain the native ClearScript.V8 assemblies. Therefore, you need to choose and install the most appropriate package(s) for @@ -31,7 +31,7 @@ ============= RELEASE NOTES ============= - Microsoft ClearScript.V8 was updated to version 7.4.2. + Performed a migration to a modern API for pre-compilation of scripts. ============= DOCUMENTATION diff --git a/src/JavaScriptEngineSwitcher.Vroom/JavaScriptEngineSwitcher.Vroom.csproj b/src/JavaScriptEngineSwitcher.Vroom/JavaScriptEngineSwitcher.Vroom.csproj index 5df1761f..8f6a4403 100644 --- a/src/JavaScriptEngineSwitcher.Vroom/JavaScriptEngineSwitcher.Vroom.csproj +++ b/src/JavaScriptEngineSwitcher.Vroom/JavaScriptEngineSwitcher.Vroom.csproj @@ -2,12 +2,13 @@ JS Engine Switcher: Vroom - 3.21.0 + 3.24.1 net40-client;net45;net471;netstandard1.6;netstandard2.0 1.6.0 Library true - $(NoWarn);CS1591 + $(NoWarn);CS1591;NETSDK1215;NU1903 + false true true @@ -18,23 +19,21 @@ - JavaScriptEngineSwitcher.Vroom contains adapter `VroomJsEngine` (wrapper for the VroomJs (http://github.com/pauldotknopf/vroomjs-core) version 1.2.3 with support of V8 version 3.17.16.2). - -For correct working of the VroomJs on Windows require the Visual C++ Redistributable for Visual Studio 2012 and Microsoft Visual C++ 2015 Redistributable. - $(PackageCommonTags);VroomJs;V8 + https://raw.githubusercontent.com/Taritsyn/JavaScriptEngineSwitcher/master/Icons/JavaScriptEngineSwitcher_Vroom_Logo128x128.png ../../Icons/JavaScriptEngineSwitcher_Vroom_Logo128x128.png + JavaScriptEngineSwitcher.Vroom contains a `VroomJsEngine` adapter (wrapper for the VroomJs). + $(PackageCommonTags);VroomJs;V8 - - + - + @@ -42,26 +41,8 @@ For correct working of the VroomJs on Windows require the Visual C++ Redistribut - - advanced-string-builder-license.txt - true - false - - - vroomjs-core-license.txt - true - false - - - v8-license.txt - true - false - - - - readme.txt - true - + + diff --git a/src/JavaScriptEngineSwitcher.Vroom/PACKAGE-DESCRIPTION.md b/src/JavaScriptEngineSwitcher.Vroom/PACKAGE-DESCRIPTION.md new file mode 100644 index 00000000..a27c35de --- /dev/null +++ b/src/JavaScriptEngineSwitcher.Vroom/PACKAGE-DESCRIPTION.md @@ -0,0 +1,3 @@ +JavaScriptEngineSwitcher.Vroom contains a `VroomJsEngine` adapter (wrapper for the [VroomJs](http://github.com/pauldotknopf/vroomjs-core) version 1.2.3 with support of V8 version 3.17.16.2). + +For correct working of the VroomJs on Windows require the [Visual C++ Redistributable for Visual Studio 2012](https://www.microsoft.com/en-us/download/details.aspx?id=30679) and [Microsoft Visual C++ 2015 Redistributable](https://www.microsoft.com/en-us/download/details.aspx?id=53840). \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.Vroom/Resources/Strings.Designer.cs b/src/JavaScriptEngineSwitcher.Vroom/Resources/Strings.Designer.cs index d180feea..59e44bb5 100644 --- a/src/JavaScriptEngineSwitcher.Vroom/Resources/Strings.Designer.cs +++ b/src/JavaScriptEngineSwitcher.Vroom/Resources/Strings.Designer.cs @@ -21,7 +21,7 @@ internal class Strings private static Lazy _resourceManager = new Lazy(() => new ResourceManager( "JavaScriptEngineSwitcher.Vroom.Resources.Strings", -#if NET40 +#if NET20 || NET30 || NET35 || NET40 typeof(Strings).Assembly #else typeof(Strings).GetTypeInfo().Assembly diff --git a/src/JavaScriptEngineSwitcher.Vroom/readme.txt b/src/JavaScriptEngineSwitcher.Vroom/readme.txt index 54c8a455..b37c965c 100644 --- a/src/JavaScriptEngineSwitcher.Vroom/readme.txt +++ b/src/JavaScriptEngineSwitcher.Vroom/readme.txt @@ -1,17 +1,17 @@  -------------------------------------------------------------------------------- - README file for JS Engine Switcher: Vroom v3.21.0 + README file for JS Engine Switcher: Vroom v3.24.1 -------------------------------------------------------------------------------- - Copyright (c) 2013-2023 Andrey Taritsyn - http://www.taritsyn.ru + Copyright (c) 2013-2024 Andrey Taritsyn - http://www.taritsyn.ru =========== DESCRIPTION =========== - JavaScriptEngineSwitcher.Vroom contains adapter `VroomJsEngine` (wrapper for the + JavaScriptEngineSwitcher.Vroom contains a `VroomJsEngine` adapter (wrapper for the VroomJs (http://github.com/pauldotknopf/vroomjs-core) version 1.2.3 with support of V8 version 3.17.16.2). diff --git a/src/JavaScriptEngineSwitcher.Yantra/JavaScriptEngineSwitcher.Yantra.csproj b/src/JavaScriptEngineSwitcher.Yantra/JavaScriptEngineSwitcher.Yantra.csproj index cdd66d37..2453325e 100644 --- a/src/JavaScriptEngineSwitcher.Yantra/JavaScriptEngineSwitcher.Yantra.csproj +++ b/src/JavaScriptEngineSwitcher.Yantra/JavaScriptEngineSwitcher.Yantra.csproj @@ -2,11 +2,12 @@ JS Engine Switcher: Yantra - 3.21.3 + 3.30.2 netstandard2.0;netstandard2.1 Library true $(NoWarn);CS1591 + false true @@ -14,29 +15,21 @@ - JavaScriptEngineSwitcher.Yantra contains adapter `YantraJsEngine` (wrapper for the Yantra JavaScript Engine (https://yantrajs.com) version 1.2.179). - $(PackageCommonTags);Yantra;YantraJS + https://raw.githubusercontent.com/Taritsyn/JavaScriptEngineSwitcher/master/Icons/JavaScriptEngineSwitcher_Yantra_Logo128x128.png ../../Icons/JavaScriptEngineSwitcher_Yantra_Logo128x128.png - YantraJS was updated to version 1.2.179. + JavaScriptEngineSwitcher.Yantra contains a `YantraJsEngine` adapter (wrapper for the YantraJS). + $(PackageCommonTags);Yantra;YantraJS + YantraJS was updated to version 1.2.293. - + - - yantra-license.txt - true - false - - - - readme.txt - true - + \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.Yantra/PACKAGE-DESCRIPTION.md b/src/JavaScriptEngineSwitcher.Yantra/PACKAGE-DESCRIPTION.md new file mode 100644 index 00000000..74bb8b43 --- /dev/null +++ b/src/JavaScriptEngineSwitcher.Yantra/PACKAGE-DESCRIPTION.md @@ -0,0 +1 @@ +JavaScriptEngineSwitcher.Yantra contains a `YantraJsEngine` adapter (wrapper for the [YantraJS](https://github.com/yantrajs/yantra) version 1.2.293). \ No newline at end of file diff --git a/src/JavaScriptEngineSwitcher.Yantra/YantraJsEngine.cs b/src/JavaScriptEngineSwitcher.Yantra/YantraJsEngine.cs index 78cc56d6..8b812b65 100644 --- a/src/JavaScriptEngineSwitcher.Yantra/YantraJsEngine.cs +++ b/src/JavaScriptEngineSwitcher.Yantra/YantraJsEngine.cs @@ -12,6 +12,7 @@ using OriginalClrType = YantraJS.Core.Clr.ClrType; using OriginalContext = YantraJS.Core.JSContext; using OriginalDate = YantraJS.Core.JSDate; +using OriginalError = YantraJS.Core.JSError; using OriginalException = YantraJS.Core.JSException; using OriginalFunction = YantraJS.Core.JSFunction; using OriginalJsonObject = YantraJS.Core.JSJSON; @@ -21,6 +22,7 @@ using JavaScriptEngineSwitcher.Core; using JavaScriptEngineSwitcher.Core.Constants; +using JavaScriptEngineSwitcher.Core.Extensions; using JavaScriptEngineSwitcher.Core.Helpers; using JavaScriptEngineSwitcher.Core.Utilities; @@ -47,7 +49,7 @@ public sealed class YantraJsEngine : JsEngineBase /// /// Version of original JS engine /// - private const string EngineVersion = "1.2.179"; + private const string EngineVersion = "1.2.293"; /// /// Regular expression for working with the error message @@ -305,11 +307,11 @@ private WrapperException WrapJsException(OriginalException originalException) int columnNumber = 0; ErrorLocationItem[] callStackItems = null; - OriginalValue errorValue = originalException.Error; + var errorValue = originalException.Error as OriginalError; if (errorValue != null) { - message = errorValue.ToString(); - Match messageMatch = _errorMessageRegex.Match(message); + string messageWithType = errorValue.ToString(); + Match messageMatch = _errorMessageRegex.Match(messageWithType); if (messageMatch.Success) { @@ -322,7 +324,12 @@ private WrapperException WrapJsException(OriginalException originalException) int.Parse(messageGroups["columnNumber"].Value) : 0; } - string rawCallStack = errorValue["stack"].AsStringOrDefault(); + string messageWithCallStack = type == JsErrorType.Syntax ? + originalException.JSStackTrace.AsStringOrDefault() + : + errorValue.Stack ?? errorValue["stack"].AsStringOrDefault() + ; + string rawCallStack = GetRawCallStack(message, messageWithType, messageWithCallStack); callStackItems = YantraJsErrorHelpers.ParseErrorLocation(rawCallStack); callStackItems = YantraJsErrorHelpers.FilterErrorLocationItems(callStackItems); @@ -381,6 +388,17 @@ private WrapperException WrapJsException(OriginalException originalException) return wrapperException; } + private static string GetRawCallStack(string message, string messageWithType, string messageWithCallStack) + { + string baseMessage = messageWithCallStack.StartsWith(messageWithType) ? messageWithType : message; + string rawCallStack = messageWithCallStack + .TrimStart(baseMessage) + .TrimStart(new char[] { '\n', '\r' }) + ; + + return rawCallStack; + } + private void OnConsoleWrite(OriginalContext context, string type, in OriginalArguments args) { int argCount = args.Length; diff --git a/src/JavaScriptEngineSwitcher.Yantra/readme.txt b/src/JavaScriptEngineSwitcher.Yantra/readme.txt index 78a96855..78ad2ea3 100644 --- a/src/JavaScriptEngineSwitcher.Yantra/readme.txt +++ b/src/JavaScriptEngineSwitcher.Yantra/readme.txt @@ -1,23 +1,23 @@  -------------------------------------------------------------------------------- - README file for JS Engine Switcher: Yantra v3.21.3 + README file for JS Engine Switcher: Yantra v3.30.2 -------------------------------------------------------------------------------- - Copyright (c) 2013-2023 Andrey Taritsyn - http://www.taritsyn.ru + Copyright (c) 2013-2025 Andrey Taritsyn - http://www.taritsyn.ru =========== DESCRIPTION =========== - JavaScriptEngineSwitcher.Yantra contains adapter `YantraJsEngine` (wrapper for the - Yantra JavaScript Engine (https://yantrajs.com) version 1.2.179). + JavaScriptEngineSwitcher.Yantra contains a `YantraJsEngine` adapter (wrapper for the + YantraJS (https://github.com/yantrajs/yantra) version 1.2.293). ============= RELEASE NOTES ============= - YantraJS was updated to version 1.2.179. + YantraJS was updated to version 1.2.293. ============= DOCUMENTATION diff --git a/test/JavaScriptEngineSwitcher.Benchmarks/HostObjectsEmbeddingBenchmark.cs b/test/JavaScriptEngineSwitcher.Benchmarks/HostObjectsEmbeddingBenchmark.cs index 0c0bf796..bac0c053 100644 --- a/test/JavaScriptEngineSwitcher.Benchmarks/HostObjectsEmbeddingBenchmark.cs +++ b/test/JavaScriptEngineSwitcher.Benchmarks/HostObjectsEmbeddingBenchmark.cs @@ -10,10 +10,8 @@ using JavaScriptEngineSwitcher.Jint; using JavaScriptEngineSwitcher.Jurassic; using JavaScriptEngineSwitcher.Msie; -#if NET461 || NETCOREAPP3_1_OR_GREATER using JavaScriptEngineSwitcher.NiL; using JavaScriptEngineSwitcher.V8; -#endif using JavaScriptEngineSwitcher.Benchmarks.Interop.ObjectsEmbedding; @@ -120,7 +118,7 @@ public void Jurassic() Func createJsEngine = () => new JurassicJsEngine(); EmbedAndUseHostObjects(createJsEngine); } -#if NET461 +#if NET462 [Benchmark] public void MsieClassic() @@ -161,7 +159,6 @@ public void MsieChakraEdgeJsRt() }); EmbedAndUseHostObjects(createJsEngine); } -#if NET461 || NETCOREAPP3_1_OR_GREATER [Benchmark] public void NiL() @@ -180,6 +177,5 @@ public void V8(bool disableDynamicBinding) ); EmbedAndUseHostObjects(createJsEngine); } -#endif } } \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Benchmarks/HostTypesEmbeddingBenchmark.cs b/test/JavaScriptEngineSwitcher.Benchmarks/HostTypesEmbeddingBenchmark.cs index d0f89005..1793ae43 100644 --- a/test/JavaScriptEngineSwitcher.Benchmarks/HostTypesEmbeddingBenchmark.cs +++ b/test/JavaScriptEngineSwitcher.Benchmarks/HostTypesEmbeddingBenchmark.cs @@ -10,10 +10,8 @@ using JavaScriptEngineSwitcher.Jint; using JavaScriptEngineSwitcher.Jurassic; using JavaScriptEngineSwitcher.Msie; -#if NET461 || NETCOREAPP3_1_OR_GREATER using JavaScriptEngineSwitcher.NiL; using JavaScriptEngineSwitcher.V8; -#endif using JavaScriptEngineSwitcher.Benchmarks.Interop.TypesEmbedding; @@ -100,7 +98,7 @@ public void Jurassic() Func createJsEngine = () => new JurassicJsEngine(); EmbedAndUseHostTypes(createJsEngine); } -#if NET461 +#if NET462 [Benchmark] public void MsieClassic() @@ -141,7 +139,6 @@ public void MsieChakraEdgeJsRt() }); EmbedAndUseHostTypes(createJsEngine); } -#if NET461 || NETCOREAPP3_1_OR_GREATER [Benchmark] public void NiL() @@ -160,6 +157,5 @@ public void V8(bool disableDynamicBinding) ); EmbedAndUseHostTypes(createJsEngine); } -#endif } } \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Benchmarks/JavaScriptEngineSwitcher.Benchmarks.csproj b/test/JavaScriptEngineSwitcher.Benchmarks/JavaScriptEngineSwitcher.Benchmarks.csproj index bb159b60..b78e72c9 100644 --- a/test/JavaScriptEngineSwitcher.Benchmarks/JavaScriptEngineSwitcher.Benchmarks.csproj +++ b/test/JavaScriptEngineSwitcher.Benchmarks/JavaScriptEngineSwitcher.Benchmarks.csproj @@ -2,10 +2,12 @@ JS Engine Switcher: Benchmarks - 3.21.3 - net461;netcoreapp3.1;net5.0;net6.0;net7.0 + 3.30.2 + net462;netcoreapp3.1;net5.0;net6.0;net7.0;net8.0;net9.0;net10.0 Exe + AnyCPU true + true true false false @@ -14,6 +16,7 @@ + @@ -35,15 +38,7 @@ - - - - - - - - - + diff --git a/test/JavaScriptEngineSwitcher.Benchmarks/JsExecutionHeavyBenchmark.cs b/test/JavaScriptEngineSwitcher.Benchmarks/JsExecutionHeavyBenchmark.cs index b3740d7b..a3225779 100644 --- a/test/JavaScriptEngineSwitcher.Benchmarks/JsExecutionHeavyBenchmark.cs +++ b/test/JavaScriptEngineSwitcher.Benchmarks/JsExecutionHeavyBenchmark.cs @@ -10,17 +10,11 @@ using JavaScriptEngineSwitcher.Jint; using JavaScriptEngineSwitcher.Jurassic; using JavaScriptEngineSwitcher.Msie; -#if NET461 || NETCOREAPP3_1_OR_GREATER using JavaScriptEngineSwitcher.NiL; -#endif using JavaScriptEngineSwitcher.Node; -#if NET461 || NETCOREAPP3_1_OR_GREATER using JavaScriptEngineSwitcher.V8; -#endif using JavaScriptEngineSwitcher.Vroom; -#if NET461 || NETCOREAPP3_1_OR_GREATER using JavaScriptEngineSwitcher.Yantra; -#endif namespace JavaScriptEngineSwitcher.Benchmarks { @@ -182,7 +176,7 @@ public void Jurassic(bool withPrecompilation) Func createJsEngine = () => new JurassicJsEngine(); RenderTemplates(createJsEngine, withPrecompilation); } -#if NET461 +#if NET462 [Benchmark] public void MsieClassic() @@ -228,7 +222,6 @@ public void MsieChakraEdgeJsRt(bool withPrecompilation) }); RenderTemplates(createJsEngine, withPrecompilation); } -#if NET461 || NETCOREAPP3_1_OR_GREATER [Benchmark] public void NiL() @@ -236,7 +229,6 @@ public void NiL() Func createJsEngine = () => new NiLJsEngine(); RenderTemplates(createJsEngine, false); } -#endif [Benchmark] public void Node() @@ -244,7 +236,6 @@ public void Node() Func createJsEngine = () => new NodeJsEngine(); RenderTemplates(createJsEngine, false); } -#if NET461 || NETCOREAPP3_1_OR_GREATER [Benchmark] [Arguments(false)] @@ -254,7 +245,6 @@ public void V8(bool withPrecompilation) Func createJsEngine = () => new V8JsEngine(); RenderTemplates(createJsEngine, withPrecompilation); } -#endif [Benchmark] public void Vroom() @@ -262,7 +252,6 @@ public void Vroom() Func createJsEngine = () => new VroomJsEngine(); RenderTemplates(createJsEngine, false); } -#if NET461 || NETCOREAPP3_1_OR_GREATER [Benchmark] public void Yantra() @@ -270,7 +259,6 @@ public void Yantra() Func createJsEngine = () => new YantraJsEngine(); RenderTemplates(createJsEngine, false); } -#endif #region Internal types diff --git a/test/JavaScriptEngineSwitcher.Benchmarks/JsExecutionLightBenchmark.cs b/test/JavaScriptEngineSwitcher.Benchmarks/JsExecutionLightBenchmark.cs index f6c691dd..d352072a 100644 --- a/test/JavaScriptEngineSwitcher.Benchmarks/JsExecutionLightBenchmark.cs +++ b/test/JavaScriptEngineSwitcher.Benchmarks/JsExecutionLightBenchmark.cs @@ -10,17 +10,11 @@ using JavaScriptEngineSwitcher.Jint; using JavaScriptEngineSwitcher.Jurassic; using JavaScriptEngineSwitcher.Msie; -#if NET461 || NETCOREAPP3_1_OR_GREATER using JavaScriptEngineSwitcher.NiL; -#endif using JavaScriptEngineSwitcher.Node; -#if NET461 || NETCOREAPP3_1_OR_GREATER using JavaScriptEngineSwitcher.V8; -#endif using JavaScriptEngineSwitcher.Vroom; -#if NET461 || NETCOREAPP3_1_OR_GREATER using JavaScriptEngineSwitcher.Yantra; -#endif namespace JavaScriptEngineSwitcher.Benchmarks { @@ -217,7 +211,7 @@ public void Jurassic(bool withPrecompilation) Func createJsEngine = () => new JurassicJsEngine(); TransliterateStrings(createJsEngine, withPrecompilation); } -#if NET461 +#if NET462 [Benchmark] public void MsieClassic() @@ -262,7 +256,6 @@ public void MsieChakraEdgeJsRt(bool withPrecompilation) }); TransliterateStrings(createJsEngine, withPrecompilation); } -#if NET461 || NETCOREAPP3_1_OR_GREATER [Benchmark] public void NiL() @@ -270,7 +263,6 @@ public void NiL() Func createJsEngine = () => new NiLJsEngine(); TransliterateStrings(createJsEngine, false); } -#endif [Benchmark] public void Node() @@ -278,7 +270,6 @@ public void Node() Func createJsEngine = () => new NodeJsEngine(); TransliterateStrings(createJsEngine, false); } -#if NET461 || NETCOREAPP3_1_OR_GREATER [Benchmark] [Arguments(false)] @@ -288,7 +279,6 @@ public void V8(bool withPrecompilation) Func createJsEngine = () => new V8JsEngine(); TransliterateStrings(createJsEngine, withPrecompilation); } -#endif [Benchmark] public void Vroom() @@ -296,7 +286,6 @@ public void Vroom() Func createJsEngine = () => new VroomJsEngine(); TransliterateStrings(createJsEngine, false); } -#if NET461 || NETCOREAPP3_1_OR_GREATER [Benchmark] public void Yantra() @@ -304,6 +293,5 @@ public void Yantra() Func createJsEngine = () => new YantraJsEngine(); TransliterateStrings(createJsEngine, false); } -#endif } } \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/Es5TestsBase.cs b/test/JavaScriptEngineSwitcher.Tests/Es5TestsBase.cs index affe97f7..bf1106be 100644 --- a/test/JavaScriptEngineSwitcher.Tests/Es5TestsBase.cs +++ b/test/JavaScriptEngineSwitcher.Tests/Es5TestsBase.cs @@ -353,13 +353,14 @@ public virtual void SupportsDateNowMethod() { // Arrange const string input = "Date.now();"; - DateTime targetOutput = DateTime.Now.ToUniversalTime(); + DateTime targetOutput; // Act DateTime output; using (var jsEngine = CreateJsEngine()) { + targetOutput = DateTime.Now.ToUniversalTime(); output = new DateTime(1970, 01, 01).AddMilliseconds(jsEngine.Evaluate(input)); } diff --git a/test/JavaScriptEngineSwitcher.Tests/Interop/LoginFailedException.cs b/test/JavaScriptEngineSwitcher.Tests/Interop/LoginFailedException.cs index 453bffd2..a55ff7ba 100644 --- a/test/JavaScriptEngineSwitcher.Tests/Interop/LoginFailedException.cs +++ b/test/JavaScriptEngineSwitcher.Tests/Interop/LoginFailedException.cs @@ -26,6 +26,9 @@ public LoginFailedException(string message, Exception innerException) : base(message, innerException) { } +#if NET8_0_OR_GREATER + [Obsolete(DiagnosticId = "SYSLIB0051")] +#endif protected LoginFailedException(SerializationInfo info, StreamingContext context) : base(info, context) { @@ -36,6 +39,9 @@ protected LoginFailedException(SerializationInfo info, StreamingContext context) } +#if NET8_0_OR_GREATER + [Obsolete(DiagnosticId = "SYSLIB0051")] +#endif public override void GetObjectData(SerializationInfo info, StreamingContext context) { if (info == null) diff --git a/test/JavaScriptEngineSwitcher.Tests/JavaScriptEngineSwitcher.Tests.csproj b/test/JavaScriptEngineSwitcher.Tests/JavaScriptEngineSwitcher.Tests.csproj index 4033fb3c..3cc5b571 100644 --- a/test/JavaScriptEngineSwitcher.Tests/JavaScriptEngineSwitcher.Tests.csproj +++ b/test/JavaScriptEngineSwitcher.Tests/JavaScriptEngineSwitcher.Tests.csproj @@ -2,80 +2,58 @@ JS Engine Switcher: Tests - 3.21.3 - net452;net471;netcoreapp2.1;netcoreapp3.1;net5.0;net6.0;net7.0 + 3.30.2 + net462;net471;netcoreapp3.1;net5.0;net6.0;net7.0;net8.0;net9.0;net10.0 Library latest true + true true + false + true false - false - + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - + + - - - + + - - - - - - + - - - - - - - - - - - @@ -83,16 +61,6 @@ - - - - - - - - - - diff --git a/test/JavaScriptEngineSwitcher.Tests/Jint/CommonTests.cs b/test/JavaScriptEngineSwitcher.Tests/Jint/CommonTests.cs index 4c95ac1e..b16e9260 100644 --- a/test/JavaScriptEngineSwitcher.Tests/Jint/CommonTests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/Jint/CommonTests.cs @@ -1,5 +1,4 @@ -#if !NET452 -using System; +using System; using Xunit; @@ -48,7 +47,7 @@ public void MappingCompilationErrorDuringEvaluationOfExpression() // Assert Assert.NotNull(exception); Assert.Equal("Compilation error", exception.Category); - Assert.Equal("Unexpected token @", exception.Description); + Assert.Equal("Invalid or unexpected token", exception.Description); Assert.Equal("SyntaxError", exception.Type); Assert.Equal("variables.js", exception.DocumentName); Assert.Equal(3, exception.LineNumber); @@ -127,7 +126,7 @@ public void MappingCompilationErrorDuringExecutionOfCode() // Assert Assert.NotNull(exception); Assert.Equal("Compilation error", exception.Category); - Assert.Equal("Unexpected token )", exception.Description); + Assert.Equal("Unexpected token ')'", exception.Description); Assert.Equal("SyntaxError", exception.Type); Assert.Equal("factorial.js", exception.DocumentName); Assert.Equal(10, exception.LineNumber); @@ -251,7 +250,7 @@ public void MappingRuntimeErrorDuringArraySizeExceeded() } [Fact] - public void MappingRuntimeErrorDuringMaxJsonParseDepthReached() + public void MappingCompilationErrorDuringMaxJsonParseDepthReached() { // Arrange const string input = @"var data = '{\n' + @@ -271,7 +270,7 @@ public void MappingRuntimeErrorDuringMaxJsonParseDepthReached() JSON.parse(data);"; - JsRuntimeException exception = null; + JsCompilationException exception = null; // Act using (var jsEngine = new JintJsEngine( @@ -285,7 +284,7 @@ public void MappingRuntimeErrorDuringMaxJsonParseDepthReached() { jsEngine.Execute(input, "menu.js"); } - catch (JsRuntimeException e) + catch (JsCompilationException e) { exception = e; } @@ -293,18 +292,13 @@ public void MappingRuntimeErrorDuringMaxJsonParseDepthReached() // Assert Assert.NotNull(exception); - Assert.Equal("Runtime error", exception.Category); + Assert.Equal("Compilation error", exception.Category); Assert.Equal("Max. depth level of JSON reached at position 82", exception.Description); Assert.Equal("SyntaxError", exception.Type); Assert.Equal("menu.js", exception.DocumentName); Assert.Equal(16, exception.LineNumber); Assert.Equal(1, exception.ColumnNumber); Assert.Empty(exception.SourceFragment); - Assert.Equal( - " at Global code (parse menu.js:16:12)" + Environment.NewLine + - " at Global code (menu.js:16:1)", - exception.CallStack - ); } [Fact] @@ -500,7 +494,7 @@ public void GenerationOfCompilationErrorMessage() const string input = @"var arr = []; var obj = {}; var foo = 'Browser's bar';"; - string targetOutput = "SyntaxError: Unexpected identifier" + Environment.NewLine + + string targetOutput = "SyntaxError: Unexpected identifier 's'" + Environment.NewLine + " at variables.js:3:20" ; @@ -569,5 +563,4 @@ public void GenerationOfRuntimeErrorMessage() #endregion } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/Jint/Es2015Tests.cs b/test/JavaScriptEngineSwitcher.Tests/Jint/Es2015Tests.cs index 34bb4612..89acb932 100644 --- a/test/JavaScriptEngineSwitcher.Tests/Jint/Es2015Tests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/Jint/Es2015Tests.cs @@ -1,5 +1,4 @@ -#if !NET452 -namespace JavaScriptEngineSwitcher.Tests.Jint +namespace JavaScriptEngineSwitcher.Tests.Jint { public class Es2015Tests : Es2015TestsBase { @@ -8,5 +7,4 @@ protected override string EngineName get { return "JintJsEngine"; } } } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/Jint/Es5Tests.cs b/test/JavaScriptEngineSwitcher.Tests/Jint/Es5Tests.cs index c3b552bc..350699ff 100644 --- a/test/JavaScriptEngineSwitcher.Tests/Jint/Es5Tests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/Jint/Es5Tests.cs @@ -1,5 +1,4 @@ -#if !NET452 -using Xunit; +using Xunit; namespace JavaScriptEngineSwitcher.Tests.Jint { @@ -10,5 +9,4 @@ protected override string EngineName get { return "JintJsEngine"; } } } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/Jint/EvalTests.cs b/test/JavaScriptEngineSwitcher.Tests/Jint/EvalTests.cs index f9958e6f..e8868575 100644 --- a/test/JavaScriptEngineSwitcher.Tests/Jint/EvalTests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/Jint/EvalTests.cs @@ -1,5 +1,4 @@ -#if !NET452 -using Xunit; +using Xunit; using JavaScriptEngineSwitcher.Core; using JavaScriptEngineSwitcher.Jint; @@ -63,5 +62,4 @@ int TestDisableEvalSetting(bool disableEval) Assert.Equal("String compilation has been disabled in engine options", exception.Description); } } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/Jint/InteropTests.cs b/test/JavaScriptEngineSwitcher.Tests/Jint/InteropTests.cs index e5456fb5..3e39ebb2 100644 --- a/test/JavaScriptEngineSwitcher.Tests/Jint/InteropTests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/Jint/InteropTests.cs @@ -1,5 +1,4 @@ -#if !NET452 -using System; +using System; using System.IO; using System.Reflection; @@ -189,7 +188,7 @@ public void MappingCompilationErrorDuringRecursiveEvaluationOfFiles() // Assert Assert.NotNull(exception); Assert.Equal("Compilation error", exception.Category); - Assert.Equal("Unexpected token ,", exception.Description); + Assert.Equal("Unexpected token ','", exception.Description); Assert.Equal("SyntaxError", exception.Type); Assert.Equal("math.js", exception.DocumentName); Assert.Equal(25, exception.LineNumber); @@ -312,11 +311,11 @@ public void MappingCompilationErrorDuringRecursiveExecutionOfFiles() // Assert Assert.NotNull(exception); Assert.Equal("Compilation error", exception.Category); - Assert.Equal("Unexpected number", exception.Description); + Assert.Equal("Invalid or unexpected token", exception.Description); Assert.Equal("SyntaxError", exception.Type); Assert.Equal("second-file.js", exception.DocumentName); Assert.Equal(1, exception.LineNumber); - Assert.Equal(8, exception.ColumnNumber); + Assert.Equal(6, exception.ColumnNumber); Assert.Empty(exception.SourceFragment); } @@ -426,7 +425,7 @@ string TestAllowReflectionSetting(bool allowReflection) // Act and Assert Assert.Null(TestAllowReflectionSetting(true)); -#if NET471 +#if NETFRAMEWORK Assert.Null(TestAllowReflectionSetting(false)); #else Assert.Equal("undefined", TestAllowReflectionSetting(false)); @@ -450,7 +449,7 @@ string TestAllowReflectionSetting(bool allowReflection) // Act and Assert Assert.Equal(typeof(LoginFailedException).FullName, TestAllowReflectionSetting(true)); -#if NET471 +#if NETFRAMEWORK Assert.Equal(typeof(LoginFailedException).FullName, TestAllowReflectionSetting(false)); #else @@ -512,5 +511,4 @@ string TestAllowReflectionSetting(bool allowReflection) #endregion } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/Jint/MultithreadingTests.cs b/test/JavaScriptEngineSwitcher.Tests/Jint/MultithreadingTests.cs index a801ba7d..5c6fb452 100644 --- a/test/JavaScriptEngineSwitcher.Tests/Jint/MultithreadingTests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/Jint/MultithreadingTests.cs @@ -1,5 +1,4 @@ -#if !NET452 -namespace JavaScriptEngineSwitcher.Tests.Jint +namespace JavaScriptEngineSwitcher.Tests.Jint { public class MultithreadingTests : MultithreadingTestsBase { @@ -8,5 +7,4 @@ protected override string EngineName get { return "JintJsEngine"; } } } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/Jint/PrecompilationTests.cs b/test/JavaScriptEngineSwitcher.Tests/Jint/PrecompilationTests.cs index 38c4926f..0e5a512e 100644 --- a/test/JavaScriptEngineSwitcher.Tests/Jint/PrecompilationTests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/Jint/PrecompilationTests.cs @@ -1,5 +1,4 @@ -#if !NET452 -using System; +using System; using Xunit; @@ -56,11 +55,11 @@ function s4() { Assert.Null(precompiledScript); Assert.NotNull(exception); Assert.Equal("Compilation error", exception.Category); - Assert.Equal("Unexpected token }", exception.Description); + Assert.Equal("Unexpected token ';'", exception.Description); Assert.Equal("SyntaxError", exception.Type); Assert.Equal("guid.js", exception.DocumentName); - Assert.Equal(7, exception.LineNumber); - Assert.Equal(2, exception.ColumnNumber); + Assert.Equal(6, exception.LineNumber); + Assert.Equal(4, exception.ColumnNumber); Assert.Empty(exception.SourceFragment); } @@ -135,7 +134,7 @@ public void GenerationOfCompilationErrorMessage() return result; }"; - string targetOutput = "SyntaxError: Unexpected token }" + Environment.NewLine + + string targetOutput = "SyntaxError: Unexpected token '}'" + Environment.NewLine + " at make-id.js:12:1" ; @@ -207,5 +206,4 @@ public void GenerationOfRuntimeErrorMessage() #endregion } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/JsEngineSwitcherInitializer.cs b/test/JavaScriptEngineSwitcher.Tests/JsEngineSwitcherInitializer.cs index 14a5ce95..12a61590 100644 --- a/test/JavaScriptEngineSwitcher.Tests/JsEngineSwitcherInitializer.cs +++ b/test/JavaScriptEngineSwitcher.Tests/JsEngineSwitcherInitializer.cs @@ -5,22 +5,14 @@ using JavaScriptEngineSwitcher.ChakraCore; using JavaScriptEngineSwitcher.Core; using JavaScriptEngineSwitcher.Core.Utilities; -#if !NET452 using JavaScriptEngineSwitcher.Jint; -#endif using JavaScriptEngineSwitcher.Jurassic; using JavaScriptEngineSwitcher.Msie; -#if NET471 || NETCOREAPP3_1_OR_GREATER using JavaScriptEngineSwitcher.NiL; using JavaScriptEngineSwitcher.Node; -#endif -#if NETFRAMEWORK || NETCOREAPP3_1_OR_GREATER using JavaScriptEngineSwitcher.V8; -#endif using JavaScriptEngineSwitcher.Vroom; -#if NET471 || NETCOREAPP3_1_OR_GREATER using JavaScriptEngineSwitcher.Yantra; -#endif namespace JavaScriptEngineSwitcher.Tests { @@ -39,25 +31,17 @@ public static void Initialize() #endif JsEngineSwitcher.Current.EngineFactories .AddChakraCore() -#if !NET452 .AddJint() -#endif .AddJurassic() .AddMsie(new MsieSettings { EngineMode = JsEngineMode.ChakraIeJsRt }) -#if NET471 || NETCOREAPP3_1_OR_GREATER .AddNiL() .AddNode() -#endif -#if NETFRAMEWORK || NETCOREAPP3_1_OR_GREATER .AddV8() -#endif .AddVroom() -#if NET471 || NETCOREAPP3_1_OR_GREATER .AddYantra() -#endif ; } } diff --git a/test/JavaScriptEngineSwitcher.Tests/NiL/CommonTests.cs b/test/JavaScriptEngineSwitcher.Tests/NiL/CommonTests.cs index a7900480..58ddd8b2 100644 --- a/test/JavaScriptEngineSwitcher.Tests/NiL/CommonTests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/NiL/CommonTests.cs @@ -1,5 +1,4 @@ -#if NET471 || NETCOREAPP3_1_OR_GREATER -using System; +using System; using Xunit; @@ -263,5 +262,4 @@ public void GenerationOfRuntimeErrorMessage() #endregion } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/NiL/Es5Tests.cs b/test/JavaScriptEngineSwitcher.Tests/NiL/Es5Tests.cs index 4ff5f07b..d83a291b 100644 --- a/test/JavaScriptEngineSwitcher.Tests/NiL/Es5Tests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/NiL/Es5Tests.cs @@ -1,5 +1,4 @@ -#if NET471 || NETCOREAPP3_1_OR_GREATER -namespace JavaScriptEngineSwitcher.Tests.NiL +namespace JavaScriptEngineSwitcher.Tests.NiL { public class Es5Tests : Es5TestsBase { @@ -8,5 +7,4 @@ protected override string EngineName get { return "NiLJsEngine"; } } } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/NiL/EvalTests.cs b/test/JavaScriptEngineSwitcher.Tests/NiL/EvalTests.cs index 424fc11d..1eab545c 100644 --- a/test/JavaScriptEngineSwitcher.Tests/NiL/EvalTests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/NiL/EvalTests.cs @@ -1,5 +1,4 @@ -#if NET471 || NETCOREAPP3_1_OR_GREATER -namespace JavaScriptEngineSwitcher.Tests.NiL +namespace JavaScriptEngineSwitcher.Tests.NiL { public class EvalTests : EvalTestsBase { @@ -8,5 +7,4 @@ protected override string EngineName get { return "NiLJsEngine"; } } } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/NiL/InteropTests.cs b/test/JavaScriptEngineSwitcher.Tests/NiL/InteropTests.cs index 979edf2a..304db66e 100644 --- a/test/JavaScriptEngineSwitcher.Tests/NiL/InteropTests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/NiL/InteropTests.cs @@ -1,5 +1,4 @@ -#if NET471 || NETCOREAPP3_1_OR_GREATER -using System; +using System; using Xunit; @@ -175,5 +174,4 @@ public override void EmbeddingOfBuiltinReferenceTypeWithMethods() #endregion } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/NiL/MultithreadingTests.cs b/test/JavaScriptEngineSwitcher.Tests/NiL/MultithreadingTests.cs index 861c0750..d926a2f2 100644 --- a/test/JavaScriptEngineSwitcher.Tests/NiL/MultithreadingTests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/NiL/MultithreadingTests.cs @@ -1,5 +1,4 @@ -#if NET471 || NETCOREAPP3_1_OR_GREATER -namespace JavaScriptEngineSwitcher.Tests.NiL +namespace JavaScriptEngineSwitcher.Tests.NiL { public class MultithreadingTests : MultithreadingTestsBase { @@ -8,5 +7,4 @@ protected override string EngineName get { return "NiLJsEngine"; } } } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/NiL/PrecompilationTests.cs b/test/JavaScriptEngineSwitcher.Tests/NiL/PrecompilationTests.cs index 1db51262..72953641 100644 --- a/test/JavaScriptEngineSwitcher.Tests/NiL/PrecompilationTests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/NiL/PrecompilationTests.cs @@ -1,5 +1,4 @@ -#if NET471 || NETCOREAPP3_1_OR_GREATER -namespace JavaScriptEngineSwitcher.Tests.NiL +namespace JavaScriptEngineSwitcher.Tests.NiL { public class PrecompilationTests : PrecompilationTestsBase { @@ -8,5 +7,4 @@ protected override string EngineName get { return "NiLJsEngine"; } } } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/Node/BuiltInLibraryTests.cs b/test/JavaScriptEngineSwitcher.Tests/Node/BuiltInLibraryTests.cs index 398d239c..e1c86e18 100644 --- a/test/JavaScriptEngineSwitcher.Tests/Node/BuiltInLibraryTests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/Node/BuiltInLibraryTests.cs @@ -1,5 +1,4 @@ -#if NET471 || NETCOREAPP3_1_OR_GREATER -using Xunit; +using Xunit; using JavaScriptEngineSwitcher.Node; @@ -61,5 +60,4 @@ public void ReadingOfFile() Assert.Equal(targetOutput, output); } } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/Node/CommonTests.cs b/test/JavaScriptEngineSwitcher.Tests/Node/CommonTests.cs index 6249a510..472234cf 100644 --- a/test/JavaScriptEngineSwitcher.Tests/Node/CommonTests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/Node/CommonTests.cs @@ -1,5 +1,4 @@ -#if NET471 || NETCOREAPP3_1_OR_GREATER -using System; +using System; using Xunit; @@ -354,7 +353,7 @@ public void GenerationOfCompilationErrorMessage() const string input = @"var arr = []; var obj = {}; var foo = 'Browser's bar';"; - string targetOutput = "SyntaxError: Unexpected identifier" + Environment.NewLine + + string targetOutput = "SyntaxError: Unexpected identifier 's'" + Environment.NewLine + " at variables.js:3:20 -> var foo = 'Browser's bar';" ; @@ -423,5 +422,4 @@ public void GenerationOfRuntimeErrorMessage() #endregion } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/Node/Es2015Tests.cs b/test/JavaScriptEngineSwitcher.Tests/Node/Es2015Tests.cs index dcdc8a46..0e2a7d18 100644 --- a/test/JavaScriptEngineSwitcher.Tests/Node/Es2015Tests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/Node/Es2015Tests.cs @@ -1,5 +1,4 @@ -#if NET471 || NETCOREAPP3_1_OR_GREATER -namespace JavaScriptEngineSwitcher.Tests.Node +namespace JavaScriptEngineSwitcher.Tests.Node { public class Es2015Tests : Es2015TestsBase { @@ -8,5 +7,4 @@ protected override string EngineName get { return "NodeJsEngine"; } } } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/Node/Es5Tests.cs b/test/JavaScriptEngineSwitcher.Tests/Node/Es5Tests.cs index 3f962bee..7e49ac74 100644 --- a/test/JavaScriptEngineSwitcher.Tests/Node/Es5Tests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/Node/Es5Tests.cs @@ -1,5 +1,4 @@ -#if NET471 || NETCOREAPP3_1_OR_GREATER -namespace JavaScriptEngineSwitcher.Tests.Node +namespace JavaScriptEngineSwitcher.Tests.Node { public class Es5Tests : Es5TestsBase { @@ -16,5 +15,4 @@ public override void SupportsObjectCreateMethod() #endregion } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/Node/EvalTests.cs b/test/JavaScriptEngineSwitcher.Tests/Node/EvalTests.cs index c4c0604d..645e2662 100644 --- a/test/JavaScriptEngineSwitcher.Tests/Node/EvalTests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/Node/EvalTests.cs @@ -1,5 +1,4 @@ -#if NET471 || NETCOREAPP3_1_OR_GREATER -namespace JavaScriptEngineSwitcher.Tests.Node +namespace JavaScriptEngineSwitcher.Tests.Node { public class EvalTests : EvalTestsBase { @@ -8,5 +7,4 @@ protected override string EngineName get { return "NodeJsEngine"; } } } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/Node/MultithreadingTests.cs b/test/JavaScriptEngineSwitcher.Tests/Node/MultithreadingTests.cs index 398c7371..5ed8c5ae 100644 --- a/test/JavaScriptEngineSwitcher.Tests/Node/MultithreadingTests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/Node/MultithreadingTests.cs @@ -1,5 +1,4 @@ -#if NET471 || NETCOREAPP3_1_OR_GREATER -namespace JavaScriptEngineSwitcher.Tests.Node +namespace JavaScriptEngineSwitcher.Tests.Node { public class MultithreadingTests : MultithreadingTestsBase { @@ -8,5 +7,4 @@ protected override string EngineName get { return "NodeJsEngine"; } } } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/Node/PrecompilationTests.cs b/test/JavaScriptEngineSwitcher.Tests/Node/PrecompilationTests.cs index bde14db6..43f974d9 100644 --- a/test/JavaScriptEngineSwitcher.Tests/Node/PrecompilationTests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/Node/PrecompilationTests.cs @@ -1,5 +1,4 @@ -#if NET471 || NETCOREAPP3_1_OR_GREATER -namespace JavaScriptEngineSwitcher.Tests.Node +namespace JavaScriptEngineSwitcher.Tests.Node { public class PrecompilationTests : PrecompilationTestsBase { @@ -8,5 +7,4 @@ protected override string EngineName get { return "NodeJsEngine"; } } } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/Node/SecurityTests.cs b/test/JavaScriptEngineSwitcher.Tests/Node/SecurityTests.cs index 0d31297e..bdc3212e 100644 --- a/test/JavaScriptEngineSwitcher.Tests/Node/SecurityTests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/Node/SecurityTests.cs @@ -1,5 +1,4 @@ -#if NET471 || NETCOREAPP3_1_OR_GREATER -using Xunit; +using Xunit; namespace JavaScriptEngineSwitcher.Tests.Node { @@ -38,5 +37,4 @@ public void AccessingToProcess() Assert.True(output2); } } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/V8/CommonTests.cs b/test/JavaScriptEngineSwitcher.Tests/V8/CommonTests.cs index 75e88a90..e1453c02 100644 --- a/test/JavaScriptEngineSwitcher.Tests/V8/CommonTests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/V8/CommonTests.cs @@ -1,5 +1,4 @@ -#if NETFRAMEWORK || NETCOREAPP3_1_OR_GREATER -using System; +using System; using Xunit; @@ -298,5 +297,4 @@ public void GenerationOfRuntimeErrorMessage() #endregion } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/V8/Es2015Tests.cs b/test/JavaScriptEngineSwitcher.Tests/V8/Es2015Tests.cs index 963502c5..60d188a4 100644 --- a/test/JavaScriptEngineSwitcher.Tests/V8/Es2015Tests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/V8/Es2015Tests.cs @@ -1,5 +1,4 @@ -#if NETFRAMEWORK || NETCOREAPP3_1_OR_GREATER -namespace JavaScriptEngineSwitcher.Tests.V8 +namespace JavaScriptEngineSwitcher.Tests.V8 { public class Es2015Tests : Es2015TestsBase { @@ -8,5 +7,4 @@ protected override string EngineName get { return "V8JsEngine"; } } } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/V8/Es5Tests.cs b/test/JavaScriptEngineSwitcher.Tests/V8/Es5Tests.cs index 2ee82555..81264d18 100644 --- a/test/JavaScriptEngineSwitcher.Tests/V8/Es5Tests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/V8/Es5Tests.cs @@ -1,5 +1,4 @@ -#if NETFRAMEWORK || NETCOREAPP3_1_OR_GREATER -namespace JavaScriptEngineSwitcher.Tests.V8 +namespace JavaScriptEngineSwitcher.Tests.V8 { public class Es5Tests : Es5TestsBase { @@ -8,5 +7,4 @@ protected override string EngineName get { return "V8JsEngine"; } } } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/V8/EvalTests.cs b/test/JavaScriptEngineSwitcher.Tests/V8/EvalTests.cs index 06fdd958..74e5de39 100644 --- a/test/JavaScriptEngineSwitcher.Tests/V8/EvalTests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/V8/EvalTests.cs @@ -1,5 +1,4 @@ -#if NETFRAMEWORK || NETCOREAPP3_1_OR_GREATER -namespace JavaScriptEngineSwitcher.Tests.V8 +namespace JavaScriptEngineSwitcher.Tests.V8 { public class EvalTests : EvalTestsBase { @@ -8,5 +7,4 @@ protected override string EngineName get { return "V8JsEngine"; } } } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/V8/InteropTests.cs b/test/JavaScriptEngineSwitcher.Tests/V8/InteropTests.cs index 0f3f3a72..ded468d7 100644 --- a/test/JavaScriptEngineSwitcher.Tests/V8/InteropTests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/V8/InteropTests.cs @@ -1,5 +1,4 @@ -#if NETFRAMEWORK || NETCOREAPP3_1_OR_GREATER -using System; +using System; using System.Reflection; using Xunit; @@ -231,5 +230,4 @@ string TestAllowReflectionSetting(bool allowReflection) #endregion } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/V8/IntlTests.cs b/test/JavaScriptEngineSwitcher.Tests/V8/IntlTests.cs index a533dde2..68812190 100644 --- a/test/JavaScriptEngineSwitcher.Tests/V8/IntlTests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/V8/IntlTests.cs @@ -1,5 +1,4 @@ -#if NETFRAMEWORK || NETCOREAPP3_1_OR_GREATER -namespace JavaScriptEngineSwitcher.Tests.V8 +namespace JavaScriptEngineSwitcher.Tests.V8 { public class IntlTests : IntlTestsBase { @@ -8,5 +7,4 @@ protected override string EngineName get { return "V8JsEngine"; } } } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/V8/MultithreadingTests.cs b/test/JavaScriptEngineSwitcher.Tests/V8/MultithreadingTests.cs index 5af57790..9661c84b 100644 --- a/test/JavaScriptEngineSwitcher.Tests/V8/MultithreadingTests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/V8/MultithreadingTests.cs @@ -1,5 +1,4 @@ -#if NETFRAMEWORK || NETCOREAPP3_1_OR_GREATER -namespace JavaScriptEngineSwitcher.Tests.V8 +namespace JavaScriptEngineSwitcher.Tests.V8 { public class MultithreadingTests : MultithreadingTestsBase { @@ -8,5 +7,4 @@ protected override string EngineName get { return "V8JsEngine"; } } } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/V8/PrecompilationTests.cs b/test/JavaScriptEngineSwitcher.Tests/V8/PrecompilationTests.cs index ed2c55de..fb3f7152 100644 --- a/test/JavaScriptEngineSwitcher.Tests/V8/PrecompilationTests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/V8/PrecompilationTests.cs @@ -1,5 +1,4 @@ -#if NETFRAMEWORK || NETCOREAPP3_1_OR_GREATER -using System; +using System; using Xunit; @@ -208,5 +207,4 @@ public void GenerationOfRuntimeErrorMessage() #endregion } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/Yantra/CommonTests.cs b/test/JavaScriptEngineSwitcher.Tests/Yantra/CommonTests.cs index 0d60f6da..077244f9 100644 --- a/test/JavaScriptEngineSwitcher.Tests/Yantra/CommonTests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/Yantra/CommonTests.cs @@ -1,5 +1,4 @@ -#if NET471 || NETCOREAPP3_1_OR_GREATER -using System; +using System; using Xunit; @@ -181,6 +180,45 @@ public void MappingRuntimeErrorDuringExecutionOfCode() ); } + [Fact] + public void MappingRuntimeErrorDuringStackOverflow() + { + // Arrange + const string input = @"var i = 0; + +function recursive() { + i++; + recursive(); +} + +recursive();"; + + JsRuntimeException exception = null; + + // Act + using (var jsEngine = CreateJsEngine()) + { + try + { + jsEngine.Execute(input, "recursive.js"); + } + catch (JsRuntimeException e) + { + exception = e; + } + } + + // Assert + Assert.NotNull(exception); + Assert.Equal("Runtime error", exception.Category); + Assert.Equal("Maximum call stack size exceeded", exception.Description); + Assert.Equal("RangeError", exception.Type); + Assert.Equal("recursive.js", exception.DocumentName); + Assert.Equal(5, exception.LineNumber); + Assert.Equal(1, exception.ColumnNumber); + Assert.Empty(exception.SourceFragment); + } + #endregion #region Generation of error messages @@ -261,5 +299,4 @@ public void GenerationOfRuntimeErrorMessage() #endregion } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/Yantra/ConsoleTests.cs b/test/JavaScriptEngineSwitcher.Tests/Yantra/ConsoleTests.cs index 00a13848..0a6ccdd7 100644 --- a/test/JavaScriptEngineSwitcher.Tests/Yantra/ConsoleTests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/Yantra/ConsoleTests.cs @@ -1,5 +1,4 @@ -#if NET471 || NETCOREAPP3_1_OR_GREATER -using System; +using System; using System.Globalization; using System.Text; @@ -235,5 +234,4 @@ public void Dispose() #endregion } } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/Yantra/Es2015Tests.cs b/test/JavaScriptEngineSwitcher.Tests/Yantra/Es2015Tests.cs index e563ec3f..9b70b4da 100644 --- a/test/JavaScriptEngineSwitcher.Tests/Yantra/Es2015Tests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/Yantra/Es2015Tests.cs @@ -1,4 +1,5 @@ -#if NET471 || NETCOREAPP3_1_OR_GREATER +using Xunit; + namespace JavaScriptEngineSwitcher.Tests.Yantra { public class Es2015Tests : Es2015TestsBase @@ -7,6 +8,14 @@ protected override string EngineName { get { return "YantraJsEngine"; } } + + + #region Promises + + [Fact] + public override void SupportsPromises() + { } + + #endregion } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/Yantra/Es5Tests.cs b/test/JavaScriptEngineSwitcher.Tests/Yantra/Es5Tests.cs index 2728de7e..da0fea34 100644 --- a/test/JavaScriptEngineSwitcher.Tests/Yantra/Es5Tests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/Yantra/Es5Tests.cs @@ -1,7 +1,4 @@ -#if NET471 || NETCOREAPP3_1_OR_GREATER -using Xunit; - -namespace JavaScriptEngineSwitcher.Tests.Yantra +namespace JavaScriptEngineSwitcher.Tests.Yantra { public class Es5Tests : Es5TestsBase { @@ -10,5 +7,4 @@ protected override string EngineName get { return "YantraJsEngine"; } } } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/Yantra/EvalTests.cs b/test/JavaScriptEngineSwitcher.Tests/Yantra/EvalTests.cs index ab446ed2..3a34bbe0 100644 --- a/test/JavaScriptEngineSwitcher.Tests/Yantra/EvalTests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/Yantra/EvalTests.cs @@ -1,5 +1,4 @@ -#if NET471 || NETCOREAPP3_1_OR_GREATER -namespace JavaScriptEngineSwitcher.Tests.Yantra +namespace JavaScriptEngineSwitcher.Tests.Yantra { public class EvalTests : EvalTestsBase { @@ -8,5 +7,4 @@ protected override string EngineName get { return "YantraJsEngine"; } } } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/Yantra/InteropTests.cs b/test/JavaScriptEngineSwitcher.Tests/Yantra/InteropTests.cs index b48602e3..7a2ad049 100644 --- a/test/JavaScriptEngineSwitcher.Tests/Yantra/InteropTests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/Yantra/InteropTests.cs @@ -1,5 +1,4 @@ -#if NET471 || NETCOREAPP3_1_OR_GREATER -using System; +using System; using System.IO; using Xunit; @@ -109,14 +108,42 @@ public override void EmbeddingOfInstanceOfBuiltinValueTypeWithProperties() public override void EmbeddingOfInstanceOfCustomValueTypeWithProperties() { } + [Fact] + public override void EmbeddingOfInstanceOfCustomReferenceTypeWithProperties() + { + // Arrange + var person = new Person("Vanya", "Ivanov"); + const string updateCode = @"person.LastName = person.LastName.substr(0, 5) + 'ff'; +person.Patronymic = '';"; + + const string input1 = "person.FirstName"; + const string targetOutput1 = "Vanya"; + + const string input2 = "person.LastName"; + const string targetOutput2 = "Ivanoff"; + + // Act + string output1; + string output2; + + using (var jsEngine = CreateJsEngine()) + { + jsEngine.EmbedHostObject("person", person); + jsEngine.Execute(updateCode); + + output1 = jsEngine.Evaluate(input1); + output2 = jsEngine.Evaluate(input2); + } + + // Assert + Assert.Equal(targetOutput1, output1); + Assert.Equal(targetOutput2, output2); + } + #endregion #region Objects with methods - [Fact] - public override void EmbeddingOfInstanceOfBuiltinValueTypeWithMethods() - { } - [Fact] public override void EmbeddingOfInstanceOfCustomValueTypeAndCallingOfItsGetTypeMethod() { @@ -466,20 +493,8 @@ public override void EmbeddingOfCustomReferenceTypeWithField() #endregion - #region Types with properties - - [Fact] - public override void EmbeddingOfBuiltinValueTypeWithProperty() - { } - - #endregion - #region Types with methods - [Fact] - public override void EmbeddingOfBuiltinValueTypeWithMethod() - { } - [Fact] public override void EmbeddingOfBuiltinReferenceTypeWithMethods() { @@ -516,5 +531,4 @@ public override void EmbeddingOfTypeAndCallingOfItsGetTypeMethod() #endregion } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/Yantra/MultithreadingTests.cs b/test/JavaScriptEngineSwitcher.Tests/Yantra/MultithreadingTests.cs index fba6f938..3cbf2a6b 100644 --- a/test/JavaScriptEngineSwitcher.Tests/Yantra/MultithreadingTests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/Yantra/MultithreadingTests.cs @@ -1,5 +1,4 @@ -#if NET471 || NETCOREAPP3_1_OR_GREATER -namespace JavaScriptEngineSwitcher.Tests.Yantra +namespace JavaScriptEngineSwitcher.Tests.Yantra { public class MultithreadingTests : MultithreadingTestsBase { @@ -8,5 +7,4 @@ protected override string EngineName get { return "YantraJsEngine"; } } } -} -#endif \ No newline at end of file +} \ No newline at end of file diff --git a/test/JavaScriptEngineSwitcher.Tests/Yantra/PrecompilationTests.cs b/test/JavaScriptEngineSwitcher.Tests/Yantra/PrecompilationTests.cs index 6baeeaed..86713d2e 100644 --- a/test/JavaScriptEngineSwitcher.Tests/Yantra/PrecompilationTests.cs +++ b/test/JavaScriptEngineSwitcher.Tests/Yantra/PrecompilationTests.cs @@ -1,5 +1,4 @@ -#if NET471 || NETCOREAPP3_1_OR_GREATER -namespace JavaScriptEngineSwitcher.Tests.Yantra +namespace JavaScriptEngineSwitcher.Tests.Yantra { public class PrecompilationTests : PrecompilationTestsBase { @@ -8,5 +7,4 @@ protected override string EngineName get { return "YantraJsEngine"; } } } -} -#endif \ No newline at end of file +} \ No newline at end of file