This project uses semantic versioning.
7.0.0 - Sep 16, 2023
- Breaking Changes:
- Replaced the deprecated package
Microsoft.AspNetCore.Hosting.AbstractionswithMicrosoft.Extensions.Hosting.Abstractions. (#173).
- Replaced the deprecated package
7.0.0-beta.5 - Jul 28, 2023
- Changed server scripts from CommonJS to EcmaScript modules. This should improve the reliability of
.mjsfile invocations. (#173).
7.0.0-beta.4 - Apr 18, 2023
- Handle process outputs correctly. (#166).
7.0.0-beta.3 - Feb 14, 2023
- Added
HttpResponseMessageas a possible invocation result. (#157). - Added a
responseActionparameter to the Javascript callback. This action can be used to modify an invocation's HTTP response before it is sent from Node.js to the .Net process. (#157).
7.0.0-beta.2 - Jan 19, 2023
NodeJSProcess.Disposenow waits for Node.js process to exit. AddedNodeJSProcess.DisposeAsync(net5.0 and later only) which waits for the exit asynchronously. (#155).
7.0.0-beta.1 - Aug 26, 2022
- Breaking Changes:
7.0.0-beta.0 - Aug 25, 2022
- Breaking:
OutOfProcessNodeJSService.OnConnectionEstablishedMessageReceivednow takes aSystem.Text.RegularExpressions.Matchargument instead of astring. (#146)
- Fixed handshake with Node.js not completing when external systems interfere with Node.js's stdout stream. (#146)
6.3.1 - May 10, 2022
- Fixed infinite retries issue that occurs when
OutOfProcessNodeJSServiceOptions.NumProcessRetries> 0 andOutOfProcessNodeJSServiceOptions.NumProcessRetries=== 0. (#135)
6.3.0 - Dec 27, 2021
- Added net6.0 target. (#128)
- Now supports HTTP2.0 for net6.0 and beyond. (#128)
6.2.0 - Nov 26, 2021
- Added
OutOfProcessNodeJSServiceOptions.EnableProcessRetriesForJavascriptErrorsoption. Enables users to choose whether process retries occur for invocations that fail due to Javascript errors. (#124).
6.1.0 - Nov 4, 2021
- Added
INodeJSService.MoveToNewProcessmethod. (#122).
6.0.1 - May 24, 2021
- Fixed
InvocationExceptionmessage. (#110).
6.0.0 - May 19, 2021
All additions and changes can be found here: #108
- Added
HttpNodeJSServiceOptions.Versionoption. Allows for selecting of HTTP version. - Added source generators for
StaticNodeJSService,HttpNodeJSPoolService, and API documentation.
- Bumped dependencies.
- Major Breaking Changes:
- Enabled nullable reference types.
- Renamed
newCacheIdentifierparameter inINodeJSService,StaticNodeJSServiceandHttpNodeJSPoolServicemethods tocacheIdentifier.
- Minor Breaking Changes:
- Renamed
newCacheIdentifierparameter inOutOfProcessNodeJSServicemethods tocacheIdentifier. - Removed obsolete
OutOfProcessNodeJSServiceconstructor. - Renamed
InvocationRequest.NewCacheIdentifiertoCacheIdentifier. - Added
httpNodeJSServiceOptionsAccessorparameter toHttpNodeJSService. - Removed redundant
senderparameter fromMessageReceivedEventHandler.
- Renamed
6.0.0-beta.3 - Mar 31, 2021
- Added
NodeJSProcessOptions.ExecutablePathoption. (#106).
6.0.0-beta.2 - Feb 24, 2021
- Added
OutOfProcessNodeJSServiceOptions.NumProcessRetriesoption. Allows for retrying of invocations in new processes. (#101).
HttpNodeJSServicenow logs endpoint on connect. Logged atinformationlevel. (#101).- Breaking: Renamed
OutOfProcessNodeJSServiceOptions.WatchGracefulShutdowntoGracefulProcessShutdown. Option now affects process shutdowns on-file-change and when retrying invocations. (#101).
6.0.0-beta.1 - Feb 22, 2021
- Fixed Http/2 for .Net 5.0. (#100).
6.0.0-beta.0 - Feb 10, 2021
- Added NetCoreApp3.0 as a target.
- Library uses HTTP/2 to communicate with Node.js when using NetCoreApp3.0 binaries. (#97).
- Breaking: Simplified the surface area of
IHttpClientService. Users can use DI to register a custom implementation of this service to customize theirHttpClient.
5.4.4 - Jan 18, 2021
- Fixed Node.js console window popping up. (#93).
5.4.3 - Aug 18, 2020
- Fixed incompatibilities with newer node versions. (#90).
5.4.2 - Jun 25, 2020
- Disabled unecessary Node.js HTTP timeouts, added logging for timeouts. (#85).
5.4.1 - Jun 23, 2020
- Fixed capturing of final output from Node.js. (#84).
5.4.0 - Mar 9, 2020
5.3.2 - Feb 22, 2020
HttpNodeJSServiceno longer disposesStreams before returning them. (#73).
5.3.1 - Feb 12, 2020
ConfigureNodeJSProcessOptionsno longer overwrites user specifiedNodeJSProcessOptionsoptions. (#71).
5.3.0 - Dec 10, 2019
- Jering.Javascript.NodeJS.dll is now strong named. (#65).
HttpNodeJSPoolServiceround robin logic is now lock free. (#63).
5.2.1 - Dec 6, 2019
- Improved HTTP connection stability and error logging. (#61).
5.2.0 - Dec 4, 2019
- Expanded API. (#57). Added
INodeJSServicemembers for invocations without return values and atomic/simplified caching-invoking:Task InvokeFromFileAsync(string modulePath, string exportName = null, object[] args = null, CancellationToken cancellationToken = default);Task InvokeFromStringAsync(string moduleString, string newCacheIdentifier = null, string exportName = null, object[] args = null, CancellationToken cancellationToken = default);Task<T> InvokeFromStringAsync<T>(Func<string> moduleFactory, string cacheIdentifier, string exportName = null, object[] args = null, CancellationToken cancellationToken = default);Task InvokeFromStringAsync(Func<string> moduleFactory, string cacheIdentifier, string exportName = null, object[] args = null, CancellationToken cancellationToken = default);Task InvokeFromStreamAsync(Stream moduleStream, string newCacheIdentifier = null, string exportName = null, object[] args = null, CancellationToken cancellationToken = default);Task<T> InvokeFromStreamAsync<T>(Func<Stream> moduleFactory, string cacheIdentifier, string exportName = null, object[] args = null, CancellationToken cancellationToken = default);Task InvokeFromStreamAsync(Func<Stream> moduleFactory, string cacheIdentifier, string exportName = null, object[] args = null, CancellationToken cancellationToken = default);Task<bool> TryInvokeFromCacheAsync(string moduleCacheIdentifier, string exportName = null, object[] args = null, CancellationToken cancellationToken = default);
5.1.1 - Nov 29, 2019
- Fixed requiring of modules from modules in string/stream form. (#59)
5.1.0 - Nov 28, 2019
- Added out-of-the-box concurrency. (#52)
5.0.0 - Nov 25, 2019
- Breaking: We've replaced
IJsonService.Deserialize<T>andIJsonService.SerializewithIJsonService.DeserializeAsync<T>andIJsonService.SerializeAsync<T>respectively. This change only matters if you're using a custom implementation ofIJsonService. (#53) - Switched from
Newtonsoft.JsontoSystem.Text.Jsonfor performance gains. (#53)
4.4.1 - Nov 25, 2019
- Fixed index out of bounds exception thrown when a Javascript log message contains an empty line. (#55)
4.4.0 - Nov 19, 2019
4.3.0 - Nov 16, 2019
- Fixed
TypeError [ERR_INVALID_ARG_TYPE]: The �path� argument must be of type stringerror when using newer NodeJS versions. (6cd3b3f)
- Bumped several dependencies. (f9e0dfc)
4.2.2 - Apr 10, 2019
- Bumped several dependencies. (3a97203)
4.1.2 - Jan 27, 2019
- Simplified NuGet package description. (219a45c)
- Fixed a
StaticNodeJSServicemulti-threading bug. (028173c)
4.1.1 - Jan 19, 2019
- Bumped
Newtonsoft.Jsonto12.0.1.
- Fixed NuGet package's
PackageLicenseUrlmetadata.
4.1.0 - Dec 3, 2018
- Added
StaticNodeJSService.DisposeServiceProvider.
StaticNodeJSService.Invoke*methods are now thread-safe.
4.0.4 - Nov 30, 2018
- Changed project URL (used by NuGet.org) from
jering.tech/utilities/javascript.nodejstojering.tech/utilities/jering.javascript.nodejsfor consistency with other Jering projects.
4.0.3 - Nov 29, 2018
- Fixed nuget package's
PackageProjectUrl.
4.0.2 - Nov 28, 2018
- Fixed missing exception XML comments in
INodeJSService.
4.0.1 - Nov 27, 2018
- Fixed retrying of invocation requests with stream module sources. Stream positions are now reset before retries.
4.0.0 - Nov 22, 2018
- Added
INodeJSProcessinterface. A wrapper for NodeJSProcessinstances.
- Breaking:
INodeJSProcessFactory.Createnow returns anINodeJSProcessinstead of aProcess. - Increased default
OutOfProcessNodeJSServiceOptions.TimeoutMSfrom 10000ms to 60000ms. - Overhauled logic for multi-threading. Added in depth tests for most multi-threaded use cases.
3.4.0 - Nov 17, 2018
- Added automatic retries. Retries are configurable using the property
NumRetriesofOutOfProcessNodeJSServiceOptions. Its default value is 1, so by default, every javascript invocation that fails is retried once.
- Fixed some thread safety issues in
OutOfProcessNodeJSServiceOptions.
3.3.0 - Nov 16, 2018
- Added
StaticNodeJSServicewhich exposes a static API alternative to the existing dependency injection based API.
InvocationExceptionis now serializable.
- Added the SourceLink Github package required for source-linked symbols.
3.2.1 - Nov 14, 2018
- Source-linked symbols now included in Nuget package.
- Now targets Netstandard2.0 and Net461. Removed Netstandard1.3 target.
3.2.0 - Oct 10, 2018
- Added Nuget package title and improved description.
3.1.0 - Aug 9, 2018
- Reduced memory consumption.
3.0.0 - Aug 6, 2018
- Renamed project to
Jering.Javascript.NodeJSfor consistency with otherJeringpackages. Using statements must be updated to reference types from the namespaceJering.Javascript.NodeJSinstead ofJering.JavascriptUtils.NodeJS.
2.0.0 - Aug 4, 2018
- Logging is now optional (previously, console logging was enabled by default). To make logging optional,
the default
INodeJSServiceimplementation,HttpNodeJSService, now takes anMicrosoft.Extensions.Logging.ILoggerFactoryinstead of anMicrosoft.Extensions.Logging.ILoggeras a constructor argument. - Added .NET Standard 1.3 as a target framework.
1.0.1 - Aug 1, 2018
- Added some minor null checks in
InvocationContent.
1.0.0 - Jul 28, 2018
- Reduced default invocation/NodeJS initialization timeout.
- Improved comments for intellisense.
0.1.0 - Jul 24, 2018
Initial release.