Breaking Changes:
- Removed
xlink:hreffrom incoming SVGs in preperation for an upcoming Puppeteer update that will remove this option. - Changed the upload file size limit to 3MB, and exposed settings for configuring it (
SERVER_MAX_UPLOAD_SIZE/--maxUploadSize/maxUploadSize). The rational behind this change is that in testing that seems like the most balanced limit along with other default values for pool sizing, timeouts and such to avoid attempting to process requests that would likely end up timing out due to its size.
Fixes:
- Fixed an issue where clip size for PDFs would on rare occation be invalid, causing the export to fail.
- Fixed an issue where the chart constructor was sometimes incorrectly set, causing the export to fail.
- Fixed an issue that would sometimes cause a crash due to fail due to
Accept-Rangesheaders. - Fixed the warning message when the the default
resources.jsonfile is not found. - Fixed the problem with the lack of the
instrvalue, when theoptionsis set instead. - Added referrers to CDN cache fetches on first startup/install.
- Wrapped the
clearPageResourcesfunction in a try-catch to handle potential page resources errors. - Secured against errors caused by
dev-toolsprotocol data size limitations. - Corrected the
Node.js Moduleexample in the README.
New Features:
- Added proxy authentication (#631).
- Made the temporary Puppeteer directory (
PUPPETEER_TEMP_DIR) (till now,'./tmp') configurable by the user (#567).
Hotfix:
- Fixed missing 'msg' and 'public' bundle in 4.0.1 on NPM.
Fixes:
- Made chart userOptions available within
customCodeas variableoptions(#551).
Hotfix:
- Fixed missing 'dist' bundle in 4.0.0 on NPM.
Breaking Changes:
- Reordered the
errorandinfoarguments in the callback of thestartExportfunction. - Renamed the environment variables for a better representation of their roles (refer to all envs in the README's
Environment Variablessection). - Renamed the
HIGHCHARTS_MODULESenvironment variable toHIGHCHARTS_MODULE_SCRIPTS. - Renamed the
HIGHCHARTS_INDICATORSenvironment variables toHIGHCHARTS_INDICATOR_SCRIPTS. - Renamed the
POOL_LISTEN_TO_PROCESS_EXITSenvironment variable toOTHER_LISTEN_TO_PROCESS_EXITS. - Renamed the
customCodesection of the options config to thecustomLogicin order to avoid confusion with the existingcustomCodeproperty within. - Renamed the
scriptsproperty in thehighchartssection of the options config to thecustomScripts. - Renamed the
initPoolfunction toinitExportin the main module. - Renamed the
initfunction toinitPoolin 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_PATHoption available through.envto 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:
ExportErrorfor functionality-related errors andHttpErrorfor 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
defaultViewportto null and optimized code to triggersetViewportonly once, reducing performance impact during export. - Removed unnecessary initial page on browser launch using
waitForInitialPageand the--no-startup-windowChrome 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
clearPagefunction to ensure content cleaning is only performed once, during resource release. - Introduced the
hardResetPageoption for resetting the page's content (including Highcharts scripts) each time the page is released to the pool (defaulting tofalse). - Introduced the
browserShellModeoption for controlling the mode in which the browser runs (new or old,shellmode). - 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
createImageandcreatePDFfunctions with faster execution options includingoptimizeForSpeedandquality. - Set
waitUntilto 'domcontentloaded' forsetContentandgotofunctions to improve performance. - Replaced browser's deprecated
isConnected()with theconnectedproperty. - Added information on all available pool resources.
- Numerous minor improvements for performance and stability.
- Moved the
listenToProcessExitsfrom thepoolto theothersection of the options. - Replaced the temporary benchmark module with a simpler server benchmark for evaluating export time.
- Removed unnecessary separate
body-parserpackage (already implemented in Express v4.16+). - Added parsing of envs based on
zodpackage. - Added unit tests for certain parts of the code.
- Added the
shutdownCleanUpfunction 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.samplefile, 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-servermodule, includinginitPool,logWithStack,setLogLevel,enableFileLogging,manualConfig,printLogo, andprintUsage. - Added a new
initLoggingfunction where thesetLogLevelandenableFileLogginglogic 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
defaultConfigandmapToNewConfigfunction in order to support the old, PhantomJS-based structure of options. - Added a new process event handler for the
SIGHUPsignal. - Added
mapChartandganttChartconstructors in the exporting UI (#503). - Added the series-on-point module (#532).
- Updates were made to the
config.jsfile. - Updated the
killPoolfunction. - The
uncaughtExceptionhandler 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.jsroute. - Corrected the
handleResourcesfunction. - Corrected samples, test scenarios, and test runners.
- Bumped versions of most packages, with an updating deprecated
Puppeteerfromv21.1.1to 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
Samplessection.
Fixes:
- Fixed
multerrelated error: 'Field value too long'. - Fixed the SSL handshake error (#307).
- Fixed missing background color transparency (#492).
- Fixed missing
foreignObjectelements issue. - Fixed type compatibility issues in the
pairArgumentValuefunction, arising from CLI string arguments. - Fixed the 'httpsProxyAgent is not a constructor' issue with the
https-proxy-agentmodule. - Fixed the issue of being unable to run both HTTP and HTTPS servers simultaneously.
- Fixed the issue with the
multiselecttype of values in prompt functionality triggered by the--createConfigoption. - Fixed the error handling in the
postWorkfunction which resulted in doubled errors. - Fixed the deprecated description of the pool from the
generic-pooltotarnnotation, triggered by thegetPoolInfoandgetPoolInfoJSONfunctions. - 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.
- Version number is now correct in splash and
/healthwhen running as a node module. - Fixed an issue with setting
minWorkersandmaxWorkersas CLI arguments. - Fixed issues with page resets between exports causing exceptions.
- Fixed an issue with width settings causing bad exports if set to a percentage or a
pxsuffixed width. - Fixed an issue with SVG exports in the UI.
- Fixed an issue with SVG base 64 exports.
- Fixed several bugs with the worker pool.
- Changed name of the
initialWorkersoption to theminWorkers. - Fixed hanging the server on start when initial resources (pages) couldn't be created.
- Fixed clearing page after the export.
- Removed the
queueSizeoption, which doesn't have an equivalent intarnresource pool. - Removed the
timeoutThresholdoption and added theidleTimeoutoption in its place. - Removed the
reaperoptions, as tarn doesn't allow to enable/disable idle resources checking. - Added
createTimeoutanddestroyTimeoutoptions for the resource pool. - Added the
reaperIntervaloption to set the interval for checking idle resources to destroy. - Added the
createRetryIntervaloption to set how long to idle after failed resource creation before trying again. - Added the
rasterizationTimeoutoption for setting the wait time for an image to be created. - Updated the
.env.samplefile with new environment variables corresponding to above options. - Updated the README file.
- Other small fixes.
- Fixed an issue with transparent backgrounds in PNG exports (#463).
- Fixed an issue with missing
filenameproperty (#20370).
- Fixed and issue with reading
resources.jsonduring exports.
- Fixed an issue with height and width for CSS (#419).
- Fixed
globalOptions(#434). - Other smaller fixes.
- Changed the priority of loading options to: config -> custom JSON -> envs -> CLI.
- Corrected the The unhandledRejection error, message: Protocol error: Connection closed. Most likely the page has been closed, an error related to closing the browser earlier than closing each of an active page.
- Refactored the way options are set (the setOptions function).
- Corrected straight inject with JS functions in chart's options (e.g. formatter), when the allowCodeExecution is set to true.
- Organized code into two separate functions (singleExport and batchExport).
- Corrected reseting global options for Highcharts between each export.
- Corrections for the linter.
- Samples and tests corrections.
- Added sample for the loadConfig option.
- Updated README.
- Other small fixes.
- Added missing shebang in
cli.js.
Fixes and enhancements:
- Replaced PhantomJS with Puppeteer.
- Updated the config handling system to optionally load JSON files, and improved environment var loading.
- Rewrote the HC caching system: it's now easier to include custom modules/dependency lists in your own deployments.
- The install step no longer requires interaction when installing.
- Replaced the custom worker pool system with
tarn. - Error messages are now sent back to the client instead of being displayed in rasterized output.
- Updated NPM dependencies, removed deprecated and uneccessary dependencies.
- Lots of smaller bugfixes and tweaks.
- Transitioned our public server (export.highcharts.com) from HTTP to HTTPS.
New features:
- Added
/healthroute to server to display basic server information. - Added a UI served on
/to perform exports from JSON configurations in browser.
This version is not backwards compatible out of the box!
Breaking changes:
- Log destinations must now exist before starting file logging
- When running in server mode, the following options are now disabled by default:
callbackresourcescustomCode
Disabled options can be enabled by adding the --allowCodeExecution flag when
starting the server. Using this flag is not recommended, and should not be
done unless the server is sandboxed and not reachable on the public internet.
Changelog:
- Added the
--allowCodeExecutionflag which is now required to be set when exporting pure JavaScript, using additional external resources, or using callback when running in server mode. - Removed the
mkdirpdependency. - SVG exporting will now block JavaScript entirely.
- Added the
navigationLockedflag to the Phantom page, which blocks e.g.<iframe>and page redirects.
- Fixed compatibility with
mkdirp >=v1.0.
- Added polyfill for
DOMParserto accommodate Highcharts 9.0. - Updated some dependencies.
- Fixed UUID and mkdirp versions in package.json.
- Added
vennmodule to build script.
- Added
coloraxismodule to build script.
- Fixed issue with optional scripts when using env variables to accept prompts.
- Fixed issue with optional dependencies when installing headless.
- Fixed pathing issue with NPM build when installing globally.
- Added support for fetching sources through
npmfor automated builds. To use, setHIGHCHARTS_CDNtonpm. - Added support for
paretocharts. - Fixed issue with script concatination causing exporting errors when including certain modules.
- Added HIGHCHARTS_CDN variable support for build process.
- Added support for 7.1 charts.
- Updated dependencies.
- 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.
- Added
queueSizeoption toinitPoolto set the request overfow queue size. - Added option to supply
cdnURLto build script (#133). - Added
;between included scripts. Fixes map collections (#128). - Added
--skipKeyand--skipTokenCLI options to configure the rate limiter. - Added
--queueSizeswitch to the CLI options to set the overflow queue size. - Fixed issue with silent installs and default values.
- Fixed issue with CDN pull failing when using Highcharts < 6.0.
- Fixed an issue that caused a comma to appear when exporting charts.
- Build.js now uses cached respones when building styled mode to speed things up.
historgram-bellcurveis now included by default.- Added optional inclusion system to build.js.
- Will now prompt for inclusion of
wordcloudandannotations.
- Will now prompt for inclusion of
- Fixed another issue with
globalOptionsin CLI/Server mode.
- Fixed issue with injecting some resources when they weren't strings (e.g.
globalOptions).
- Added build config for including moment.js support.
- Fixed
tmpdirwhen starting in server mode.
- Now including sunburst/xrange/streamgraph/tilemap when baking with a supported version.
- Added package-lock.json.
- Fixed issue potentially causing SVG exports to hang.
- Increased timeout for rendering by 1 second.
- Fixed port numbers for stress test.
- Fixed bug causing unpredictable export results if one or more exported. charts contain bundled images.
- Server will now wait for bundled images to load.
- Server now respects
hostoption. - Added promise sample/test for batch export.
- Fixed
tmpdirwhen running as server.
- Fixed Phantom cleanup: instead of reaping every 2.5s, workers are checked for timeout when other work is posted.
- Added additional error handlers to:
hhtp(s)Server,process.
- Worker busy check before restarting.
- Now checking if the client connection is still open before sending returns.
- Changed return codes for error conditions.
- Misc stability fixes.
- Fixed an issue with SVG export.
- Fixed an issue with
--batchexporting.
- Fixed an issue with
themeOptionswhen using CLI mode. - Added
listenToProcessExitsoption to pool.init(..). - Exposed
listenToProcessExitsin CLI mode. - Fixed issue with
--callbackwhen the callback was a file.
- Fixed an issue with batch exporting.
- Fixed
uuiddependency version (thanks to @tonylukasavage).
- Set minimum node version to 5.10.0.
- Fixed
phantomjs-prebuiltdependency version.