All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Update puzzle-warden version for node20 compatibility
- Resolved server crash issue triggered by an exception in the fragment's content method.
- Route handlers have been modified to utilize centralized error middleware by forwarding exceptions using a next() call when 'useExpressErrorForwarding' flag is set. With this change, custom error middleware can be used to handle exceptions in a centralized manner.
- A fragment's name included in a page's URL will not cause the URL to be modified (just like js client logic).
- Improvements on the fragment preview mode by adding
puzzle-fragment
andfragment-partial
attributes.
- supra-http package is updated form 1.3.3 to 1.8.2, to resolve char encoding problem.
- Sentry configuration has been removed. (socket.io-client package removed)
- Default behavior for fragments changed as shouldWait enabled. (Unstable
chunked
attribute can be used to force previous behavior) - Improvements on the fragment
if
attribute
- Template dependencies recognition and structure refactor.
- Improvements on the fragment
if
attribute
- Removed ON_FRAGMENT_RENDER config due to unused and performance issues. After this changes, puzzle-lib will be imported end of the body and do not block the main thread. Please be careful ON_FRAGMENT_RENDER is not used in gateway configs when update PuzzleJs to this version.
- Added Intersection Observer options to manage Intersection Observer settings by any page.
- Added more info to the reject body of get asset method (asset manager).
- Added a config for loading css assets of fragments asynchronously.
- Added execute type property for dependencies to inject as async or sync and after that all css assets will be loaded async to eliminate rendering blocking.
- Added load method property for js dependencies to inject js file to head on render start
- Fix for css injection for client async fragments
- Css assets of client async fragments will be downloaded asynchronously. Also, the styles of the client async fragment with the critical-css property will be in the source code.
- main and partial placeholders seperated for client-async mode, now placeholder payload can be string or an object
- Implemented on demand client async feature.Fragments can be loaded externally according to user action.
- Fix for redirectionEnabled attribute to allow ssr redirection.
- Check for redirectionEnabled attribute to allow secondary fragments redirect.
- Update puzzle/lib version
- RequestConfiguration header host is deleted because it caused some unintentional behaviours.
- CheerioStatic type is changed to any
- Injecting same resources multiple times problem fixed
- Template class refactoring
- Resource injector class created
- Import typo fixed and unused variable removed
- Ignored files removed
- Versioning problem fixed when injecting assets and dependencies
- ForceVersion support added for gatewayBff fragment render system
- Fixed wrong module import
- Added min different hash amount to recompile gateway configuration.
- Gateway fragment returns passive versions too.
- Fixes precompile style versions
- Multiple Http Cookies in Header
- Conditional Page Rendering
- Fixed version matcher bug for inline CSS assets
- Configuration loop fixed and it improves boot up time drastically.
- Warden updated.
originalpath
header fixed for fragments- Flushing Gzip compressed chunks fixed
originalurl
key added to fragment
- Experimental support for Warden
- Passive fragment compilers. Test cookies are working for both preview and stream mode. Assets and dependencies are now connected to test cookie too
- Upgraded packages to latest versions
- Added support for post pattern
GLOBAL_REQUEST_TIMEOUT
is now miliseconds and using inter http timeout.helmet
is now optional with envUSE_HELMET
.morgan
is now optional with envUSE_MORGAN
.- Errors are not going to stdout by default. Use config
ENABLE_CONSOLE_ERROR
.
- Fragment versions are now removed.
- Fixed
fragmentModelScript
missing semicolon added for each script closing
gateway
header added for target content requests which is gateway hostname, so that strangler pattern with reverse proxy can be applicable easily.
corsMaxAge
added to configuration, if it is provided it will set Access-Control-Max-Age header with given value on options request.
- Added support for https for http/1.
- ipv4 support added. Nodejs Docs Docs
- 400 responses will be warning level
- 500 responses will be error level
- All exceptions will be printed on console when there is no
DISABLE_CONSOLE_ERROR
config.
- dnscache wrapper with 2000 ms ttl.
- Failed fragment conntent requests are now logging fragment name and url
- Fragment get requests should use query from
req.query
to include changes onreq.query
object.
originalurl
key added to fragment
originalurl
key added to headers for api requests
<puzzle-script>
can be used to inline scripts without any parse error
- Css files are now concataned and injected into head
- Removed cdn support from dynamic files
- Fixed duplicate compiling when booting up.
- Storage module for debugging application cache into PuzzleLib
- Fragment loaded for static and waited fragments
- Analytics added into PuzzleLib
- Assets are being loaded in parallel
- Temporary cdn support for dynamic files
- correlation-id header reflection on logs
- x-agentname header reflection on logs
- Changed Request as default http client because node-fetch was not able to scale under stress test.
- data for static fragments
- Gateway redirections are working for preview modes
- Supported BROTLI for assets
- Fixed waited fragment page models
- Changed how assets are being loaded.
- PuzzleLib and event system
- Fixed closing empty tags automatically. Added config for selfClosing tag names.
- Added route cache for fragment renders. use
routeCache
property with seconds in render options. (Output cache works before all other middlewares).
- Customized template compilation error
- Changed dynamic style naming to /static/{templateName}.min.css?v={hash}
- Fixed dynamic style not found problem when using multiple instances of PuzzleJs storefront.
- Added query string for disabling compression for performance testing.
- Added cache-control header to dynamic css assets.
- Custom injectables(configurator) are can be used for any property type except
object
.
- Exposed container outside.
- Added h2, spdy, http1 support with fallbacks.
- Added original url to header to requests for fragment contents
- corsDomains added to gateway configuration.
- Assets can be injected using link for independent assets.
- Assets can be injected with async, defer tags.
executeType
property of asset.
- Added support check for connection api (Thanks to Safari)
- Added debug information for variables
- Changed Logger into injectable class
- Fixed configurator type checking for array urls
- Gateway Fragment url can be array.
- Storefront Page url can be array.
- TemplateClass now has method for converting string to data attribute with base64
this.toDataAttribute(str)
.
- Fixed all potentatial regular expression replacement mistakes
$model
property in data for dynamic page variables.
- Fixed json body parsing
- Debug mode added.
- Added gulp to project dependencies, public folder is now being moved into dist
- Analytics module added.
- Info module added.
- Fragments module added.
- DEBUG_INFORMATION as env or debug query enables debug information
- PATCH, PUT, DELETE methods added as enum to be able to use for endpoints.