Releases: highcharts/node-export-server
V4.0.2
V4.0.1
V4.0
Upgrade Notes
In most cases, v4 should serve as a drop-in replacement for v2 and v3. However, due to changes in the browser backend, various tweaks related to process handling (e.g., worker counts, and so on) may now have different effects than before.
Significant changes have been made to the API for using the server as a Node.js module. While a compatibility layer has been created to address this, it is recommended to transition to the new API described below. It is worth noting that the compatibility layer may be deprecated at some point in the future.
An important note is that the Export Server now requires Node.js v18.12.0 or a higher version.
Additionally, with the v3 release, we transitioned from HTTP to HTTPS for export.highcharts.com, so all requests sent to our public server now must use the HTTPS protocol.
Changelog
Breaking Changes:
- Reordered the
error
andinfo
arguments in the callback of thestartExport
function. - Renamed the environment variables for a better representation of their roles (refer to all envs in the README's
Environment Variables
section). - Renamed the
HIGHCHARTS_MODULES
environment variable toHIGHCHARTS_MODULE_SCRIPTS
. - Renamed the
HIGHCHARTS_INDICATORS
environment variables toHIGHCHARTS_INDICATOR_SCRIPTS
. - Renamed the
POOL_LISTEN_TO_PROCESS_EXITS
environment variable toOTHER_LISTEN_TO_PROCESS_EXITS
. - Renamed the
customCode
section of the options config to thecustomLogic
in order to avoid confusion with the existingcustomCode
property within. - Renamed the
scripts
property in thehighcharts
section of the options config to thecustomScripts
. - Renamed the
initPool
function toinitExport
in the main module. - Renamed the
init
function toinitPool
in the pool module.
New Features:
- Implemented debug mode, including new environment variables, a config section, 'console' event listener, and npm script for debugging the headful Puppeteer browser.
- Added the
HIGHCHARTS_CACHE_PATH
option available through.env
to set a custom directory for the fetched files. - Added a moving average indicator for the exporting success rate ratio.
Enhancements:
- Improved server-related error handling by introducing new centralized error middlewares.
- Improved overall error handling by adding a main try-catch block to correctly capture and log errors occurring throughout the code.
- Introduced two new types of custom errors:
ExportError
for functionality-related errors andHttpError
for server-related errors. - Introduced a new error logging mechanism with stack tracing using new function called
logWithStack
. - Expanded some error logs with request IDs.
- Set headless mode to 'shell' for better performance, utilizing an older yet more efficient headless instance.
- Set the
defaultViewport
to null and optimized code to triggersetViewport
only once, reducing performance impact during export. - Removed unnecessary initial page on browser launch using
waitForInitialPage
and the--no-startup-window
Chrome flag. - Revised Chromium flags sent to the browser, now located in the args array within the config file.
- Optimized code by reducing evaluate function calls to enhance performance and minimize jumping between NodeJS and browser processes.
- Optimized and moved chart creation initialization scripts from the HTML template to a separate module named
highcharts.js
. - Optimized the
clearPage
function to ensure content cleaning is only performed once, during resource release. - Introduced the
hardResetPage
option for resetting the page's content (including Highcharts scripts) each time the page is released to the pool (defaulting tofalse
). - Introduced the
browserShellMode
option for controlling the mode in which the browser runs (new or old,shell
mode). - Optimized creating and acquiring pages from the pool.
- Optimized adding and releasing additional JS and CSS resources.
- Made corrections for gracefully shutting down resources, including running servers, ongoing intervals, browser instance, created pages, and workers pool.
- Updated
createImage
andcreatePDF
functions with faster execution options includingoptimizeForSpeed
andquality
. - Set
waitUntil
to 'domcontentloaded' forsetContent
andgoto
functions to improve performance. - Replaced browser's deprecated
isConnected()
with theconnected
property. - Added information on all available pool resources.
- Numerous minor improvements for performance and stability.
- Moved the
listenToProcessExits
from thepool
to theother
section of the options. - Replaced the temporary benchmark module with a simpler server benchmark for evaluating export time.
- Removed unnecessary separate
body-parser
package (already implemented in Express v4.16+). - Added parsing of envs based on
zod
package. - Added unit tests for certain parts of the code.
- Added the
shutdownCleanUp
function for resource release (ending intervals, closing servers, destroying the pool and browser) on shutdown. It will be called in the process exit handlers. - Added new environment variables (
HIGHCHARTS_ADMIN_TOKEN
,SERVER_BENCHMARKING
, andOTHER_NODE_ENV
) to the.env.sample
file, along with their descriptions in the README. - Added a new section to the server configuration options,
proxy
, along with corresponding environment variables. - Added several new functions to the
highcharts-export-server
module, includinginitPool
,logWithStack
,setLogLevel
,enableFileLogging
,manualConfig
,printLogo
, andprintUsage
. - Added a new
initLogging
function where thesetLogLevel
andenableFileLogging
logic are consolidated into one place. - Added a new utility function,
isObjectEmpty
. - Added a new logging level (
5
) for benchmarking logs. - Added legacy names of options to the
defaultConfig
andmapToNewConfig
function in order to support the old, PhantomJS-based structure of options. - Added a new process event handler for the
SIGHUP
signal. - Added
mapChart
andganttChart
constructors in the exporting UI (#503). - Added the series-on-point module (#532).
- Updates were made to the
config.js
file. - Updated the
killPool
function. - The
uncaughtException
handler now kills the pool, browser, and terminates the process with exit code 1, when enabled. - The browser instance should be correctly closed now when an error occurs during pool creation.
- Corrected error handling and response sending in the
/change_hc_version.js
route. - Corrected the
handleResources
function. - Corrected samples, test scenarios, and test runners.
- Bumped versions of most packages, with an updating deprecated
Puppeteer
fromv21.1.1
to latest. - Added missing Highcharts modules to stay up-to-date with the latest updates.
- Added missing JSDoc descriptions.
- Revamped all log messages, error messages, prompt messages, and info for improved clarity of information.
- README has been revised and corrected by incorporating additional information, improving descriptions, adding missing details, including new API information, and expanding with new sections such as
Debugging
,Available Endpoints
,Examples
, and aNote about Deprecated Options
. - Updated Wiki pages with a new
Samples
section.
Fixes:
- Fixed
multer
related error: 'Field value too long'. - Fixed the SSL handshake error (#307).
- Fixed missing background color transparency (#492).
- Fixed missing
foreignObject
elements issue. - Fixed type compatibility issues in the
pairArgumentValue
function, arising from CLI string arguments. - Fixed the 'httpsProxyAgent is not a constructor' issue with the
https-proxy-agent
module. - Fixed the issue of being unable to run both HTTP and HTTPS servers simultaneously.
- Fixed the issue with the
multiselect
type of values in prompt functionality triggered by the--createConfig
option. - Fixed the error handling in the
postWork
function which resulted in doubled errors. - Fixed the deprecated description of the pool from the
generic-pool
totarn
notation, triggered by thegetPoolInfo
andgetPoolInfoJSON
functions. - Fixed the issue of not gracefully terminating the process when an error occurs and a pool or browser already exists.
- Fixed the 'Could not clear the content of the page... - Target closed' error.
- Made minor corrections to ESLint and Prettier configuration.
- Other minor stability, linting and text corrections have been implemented.
2.0.16
Changelog
- Added support for bullet charts
- Added support for Gantt charts
- Added configuration option for chart generation timeout (
--timeoutThreshold
) - Gracefull failing of 404 map collections now working properly
- Increased max configuration size from 5MB to 50MB
- Updated express version
- Updated docs
2.0.15
- Added queueSize option to initPool to set the request overfow queue size
- Added option to supply cdnURL to build script (#133)
- Added ; between included scripts. Fixes map collections (#128)
- Added --skipKey and --skipToken CLI options to configure the rate limiter
- Added --queueSize switch to the CLI options to set the overflow queue size
- Fixed issue with silent installs and default values