Javascript Reporting Server
FEATURES
pdf, excel, docx, html, csv
Various output formats can be produced just from the html and javascript
open source, cross-platform
Templating engines for powerful dynamic layouts, custom javasript hooks for data fetching, full support for the latest css and javascript
html designer
jsreport includes web based designer, just connect with a modern browser and you're ready to design reports
complete set of extensions
scheduling, templates versioning, import export and backup, sub reports, users management
API
Use simple REST API, CLI or SDKs to render a report from everywhere
highlights of updates
general updates
- chrome was not updated this time because some compatibility issues, we are still using Chrome 79
- docx recipe improvements for charts, table and white space handling
- extensions were updated to be compatible with new version of jsreport-studio
- all extensions dependencies were updated to ensure that we don't use vulnerable packages, so npm audit now reports 0 vulnerabilities in most cases
core
- fix issue when parsing/serializing empty buffers in scripts/template execution
cli
- update the jsreport client to make infinite body size the default for remote requests
docx
- don't break execution when chart has no xml style, color files defined
- charts should preserve colors and number format defined in the series
- add support for chartEx charts (waterfall, treemap, sunburst, funnel, stockChart, clusteredColumn, scatterChart, bubbleChart)
- add support for vertical table
- add support for dynamic table creation (both rows and columns can be created based on data)
- fix support for xml:space="preserve" when concatenating tags
- remove lines that just contain handlebars block tags
express
- use 50mb as default limit for the input request
fs-store
- ignore .git folder and expose reload
- use state from files (instead from memory) during compaction
import-export
- fix issue when importing zip with a lot of nested levels
licensing
- fix validation when server is down
- mask license key written to the startup log
pdf-utils
- expose api to remove page from pdf
- improve the groups and items values serialization
- add option "removeHiddenMarks" to prevent the remove of the marks that we create during group/item serialization
- add basic support for the digital signature form field
reports
- add option "options.reports.public" to support exposing the report content in unauthenticated/public url
scheduling
- add options "cleanScheduleHistoryInterval", "maxHistoryPerSchedule" for scheduling history clean up
studio
- update React to v16 and remove usage of deprecated apis
Assets5
highlights of updates
general updates
- chrome was not updated this time because some compatibility issues, we are still using Chrome 79
- extensions were updated to annotate entity type properties that references other entities
- better support for operations that are related to references between entities
- folder copy and clone support
- import merge now uses a better strategy to resolve conflicts, pairing entities by path and regenerating and fixing references of duplicated
_id
,shortid
fields when needed - all extensions dependencies were updated to ensure that we don't use vulnerable packages, so npm audit now reports 0 vulnerabilities in most cases
assets
- use core function for resolving paths of entities
authorization
- fixed user permission inheritance for custom users
child-templates
- use core function for resolving paths of entities
cli
- fix
jsreport --help
output on windows
docx
- fixed docxImage for remote images without "image/" prefix in content type
- fixed links to bookmarks
- fixed support for nested lists
express
- marked get odata calls to allow permissions asserts for admin users in scheduling/version-control
import-export
- import logic now pairs entities by path
- resolving conflicts on shortid- > regeneration of shortids and fix references
pdf-utils
- fix exe compilation support
reports
- fix async report not getting sample data populated
scheduling
- fixed permission handling for none admin users
scripts
- marking jsreport-proxy find calls to allow strict access permissions to admins in scheduling/version control
studio
- folders copy support
- folders clone support
tags
- display tags on folders
templates
- use core function for resolving paths of entities
version-control
- fixed strict access for admins only
- don't use script callback for resolving entity paths
Assets5
bjrmatos released this
highlights of updates
general updates
- chrome was not updated this time because some compatibility issues, we are still using Chrome 79
- async helpers are now supported in template engines
- the authorization for http api (ODATA) was improved to prevent access for some entity sets that were not expected to be visible, editable for other users other than the admin user
- all extensions dependencies were updated to ensure that we don't use vulnerable packages, so npm audit now reports 0 vulnerabilities in most cases
assets
- handle entity tree drop of native files in the studio and insert it as assets
- fix asset name as path resolution when a folder in path does not exists
authorization
- fix showing permissions UI for entity sets that don't allow permissions
child-templates
- fix template name as path resolution when a folder in path does not exists
chrome-pdf
- add logs for page script errors and page http resource requests (long logs are trimmed)
cli
- update jsreport nodejs client to fix isssue with sites with https and self signed certificates
docx
- add
docxChart
helper - fix page break not replacing text correctly in some case
- fix endnotes, footnotes generation and serialization, node insertion between documents handling
- improvements when generating content inside loop
- nested table support
fs-store
- better error handling during compaction
import-export
- handle entity tree drop of zip files in the studio to call the import dialog
- filter not exportable entity sets when listing entities for export and when importing
licensing
- fix error handling when doing license validation request
pdf-utils
- integrate
pdf-password
,pdf-meta
andpdf-sign
as part of pdf-utils - remove hidden marks from pdf
- add support for generating interactive pdf forms elements (
pdfFormField
helper)
reports
- add report status and error information to UI
- improve logs
- don't store two blobs for single async render
- fix report open when
appPath
option is used - fix blobs getting removed when user tries to delete a report he does not have permissions to delete
resources
- fix multiple language resources and defaultLanguage
scheduling
- improve schedule updates validation
- fix schedule report open when
appPath
option is used
scripts
- refactor how the jsreport proxy register handlers of methods
studio
- fix double save
- fix bug that produces duplicated entity error when doing save all action
- fix bug with close tab
templates
- fix template name as path resolution when a folder in path does not exists
version-control
- use document store transactions for version control operations
- execute version control operations in script
- add checks to prevent executing version control operations multiple times
- throw error when trying to insert commit with no changes
- fix the download of big files
Assets5
bjrmatos released this
highlights of updates
authentication
- fix a bug in the user locks for multiple failed password attemps
Assets5
bjrmatos released this
highlights of updates
cli
- fix config generated in init, repair commands (¡°renderTimeout¡± -> ¡°reportTimeout¡±)
- no default encryption options for init, repair
- configure now does not ask for
encryption.secret
, now it asks forextensions.authentication.cookieSession.secret
when auth is enabled
authentication
- don¡¯t share the
extensions.authentication.cookieSession.secret
withencryption.secretKey
Assets5
bjrmatos released this
highlights of updates
general updates
- the default chrome that comes with jsreport and the chrome versions installed in docker use Chrome 79
- exe binaries are now compiled against node 12 which bring performance improvements
- the document stores now support transactions, which ensures consistence/atomicity on store operations when used
- we now support a single rendering timeout option
reportTimeout
, which is designed to deprecate more granular timeout options. we also support the single timeout per request configurationreq.options.timeout
but this need to be explicitly be enabled usingenableRequestReportTimeout
- granular timeout options are deprecated and now emit a warning when used. they continue to work but will be removed in future release (
templatingEngines.timeout
,extensions.scripts.timeout
,chrome.timeout
, etc) - a new
reporter.encryption
API was added, it is designed for extensions to be able to crypt/decrypt sensitive values in general way. those encrypted values (like passwords) can now be stored safely in the store - all extensions dependencies were updated to ensure that we don't use vulnerable packages, so npm audit now reports 0 vulnerabilities in most cases
core
- rename of some API for entities serialization
collection.convertBase64ToBufferInEntity
->collection.serializeProperties
,collection.convertBufferToBase64InEntity
->collection.deserializeProperties
- fix internal json schema for date fields
- fix some issues with sandbox
req.data
is now initialized as per of request object creation- fix memory leak with reaper
- fix the concat child request logs to parent request also for failed renders
- new store transactions api
- fix some security issues related to entity name, reserved name validation
authentication
extensions.authentication.cookieSession.secret
is no longer required ifencryption.secretKey
is set in config/api/extensions
,/odata/settings
routes are no longer public (they need http authentication now)- add blocks when doing too much login attempts per user (includes http api Basic auth)
authorization
- fix adding admin user to permissions when creating entity
- fix issue about permissions propagation when inherit permissions from parent folders
browser-client
- use
options.scriptLinkRootPath
consistently, and throw error when we are not able to get the server url
chrome-pdf
- avoid logging header/footer content
- support puppeteer 2.0 in the peer dep
- don't run scripts for headers/footers content
cli
- fixed locking of parallel keepAlive starts
- fixed issues with keepAlive crashing and no meaningful error was shown
- concurrent support for kill command
- configure command now creates config with
encryption.secretKey
and single timeoutreportTimeout
data
- allow loading sample data if parent request data was empty and without any data ref
debug
- failed render debug logs should have correct order for parent/child requests logs
docx
- performance optimizations
- forms support
- docxImage support for new properties: width, height, usePlaceholderSize
- fix parsing files that do not contain xml
- fix generating links, endnotes, footnotes recursively in lists and tables
- safe execution using scripts manager
- add docxPageBreak helper
express
- add
extensions.express.responseHeaders
config to allow setting general response headers
fs-store
- fix duplicate store results when sorting by a date field
- don¡¯t store the folder.shortid in config.json (this allow to move the entities manually in the file system without editing files)
html-to-xlsx
- remove the "insertToXlsxTemplate" option, we now check for the existence of base xlsx based options if they are set we assume that you want the insertion to xlsx template
- support streaming generation
- improvements for the generation of large documents
- add helper
htmlToXlsxEachRows
that stores generated rows into files to allow streaming processing - add support for new html engine cheerio-page-eval (it does not come with it installed by default)
- better calculate cell widths for chrome html engine
- add support for adding xlsx template as asset
import-export
- the import now uses store transactions to ensure consistence/atomicity by default
- add check "Continue on fail" that enables the import to continue on errors (which reproduces the same behavior than older versions)
pdf-utils
- avoid duplicating fonts when merging, dramatic decrease of the final pdf size
- always add pdf utils helpers even without utils operations set or if the recipe is not pdf
- the span element created by
pdfCreatePagesGroup
,pdfAddPageItem
helper now also have a class name for easy styling
pptx
- pptxTable support
- safe execution in scripts manager
reports
- fix render requests called from a custom scripts doesn't apply reports extension
- fix some issues when blob was created without name
sample-template
- use merge whole document in the orders sample
scheduling
- new config option
misfireTreshold
to don¡¯t run misfired schedules
scripts
- allow to cancel request from script with custom status code
studio
- handle renaming entity modal enter keypress
- fix ugly entity tree uncollapsing when loading
- fix validation for reserved names
studio-theme-dark
- don't break when studio extension is disabled
xlsx
- fix addImage to work with open xml drawing already exists as an array
- introduce asset-based ref to the template while keeping compatibility with original xlsxTemplate entity
Assets5
bjrmatos released this
highlights of updates
general updates
- fix require of external modules in the exe
- all extensions dependencies were updated to ensure that we don't use vulnerable packages, so npm audit now reports 0 vulnerabilities in most cases
- more improvements, fixes to the studio theming
core
- fix issue with http-server workers on recycle
authorization
- optimization: don't propagate same permissions
docx
- fix http Content-type response header when rendering
html-to-xlsx
- fix http Content-type response header when rendering
pptx
- fix http Content-type response header when rendering
xlsx
- fix http Content-type response header when rendering
pdf-utils
- fix ignore legacy parseBuffers call, it causes max memory error after executing proxy pdf utils operation that returns big buffer
- fix for rendering outlines in child templates
scheduling
- don't rethrow error from loading schedules
scripts
- remove legacy "parseBuffers" function, script-manager already handles serialization/parsing of data
studio
- create theme variables for scrollbar resizer
- theming: add styles for textarea
- preserve undock state after
Studio.reset
- re-calculate editor layout on window resize
- fix long paths display in EntityRefSelect component
- add a way to disable theming in preview (we disable preview theming for html recipe)
Assets5
bjrmatos released this
highlights of updates
general updates
- added general rendering cycle control, to prevent renders to go into infinite loop when a template renders itself
- support for white-labeling and theming in studio - logo and colors of studio can be customized now and new themes can be created
- added a dark theme to studio
- new exe, with performance improvements and optimizations.
- extensions has been updated to support studio theming
- extensions has been updated to support new exe compilation
- extensions can now register cli commands
- all extensions dependencies were updated to ensure that we don't use vulnerable packages, so npm audit now reports 0 vulnerabilities in most cases
- the default chrome that comes with jsreport and the chrome versions installed in docker build now match (Chrome 76)
- added new recipe static-pdf
- added docx, pptx recipes but with one time warning that the extensions are in beta phase
core
- engines now can receive options
templatingEngines.inputRequestLimit
have no limits, so internal process communication is not blocked when rendering large reports and using http-server strategy. theextensions.express.inputRequestLimit
is still validated normally when processing renders from http- fix duplicate validation for stores than don¡¯t support filtering with regexp
- fix for
moment
usage inside scripts
assets
- added p12 files as binary types for the assets editor
- add custom editor for office asset
browser-client
- update
browser-client-dist
to1.3.0
(renderAsync exposes res.xhr to allow reaching response headers)
chrome-pdf
- add support for generating PDF from URL using
template.chrome.url
- move puppeteer to peer dep
cli
- add tempDirectory as global option arg for compatibitlity with jsreport.exe
- add API to register commands from extensions
- add route to handle delegate of render with keep alive
debug
- sanitize header vals
express
- make api/ping public route
- expose headers to cors
fs-store
- don't preview studio when root data files like settings or reports are modified
- add compactionEnabled config
- support fs sync enum
- remove sync message should include just id to avoid big messages
- fix refreshing big entities in sync
- call external reload based on the lock interval
handlebars
- fix child template paremeters not working with handlebars
- move handlebars to peer dep
html-to-xlsx
- use
jsreport-office
for xlsx preview
import-export
- add import, export command to cli
jsrender
- remove support for older version, to not conflict with new options passed to engines
- update jsrender to latest
1.0.4
licensing
- fix applying license from license-key.txt file
pdf-utils
- fix PDF Document Information Dictionary needs to be an indirect reference
- fix helpers when it's an object
- run pdf-utils script with no limit
sample-template
- replace xlsx sample with html-to-xlsx sample
studio
- add API to customize About modal
- fix serving extensions js
- add option to customize logo
extensions.studio.theme.logo.path
- add option to customize color vars
extensions.studio.theme.variables
- add support for registering themes to the studio
- add option to change editor and studio theme
extensions.studio.theme.name
,extensions.studio.theme.editorThemeName
- add option to load custom css to the studio
extensions.studio.theme.customCss.path
- fix collapsing preview not refresh editor layout
- add API to make editor component for entity configurable with resolvers
- make studio browser title configurable with string template
studio-theme-dark
- adds a dark theme to the studio
templates
- add general rendering cycle control validation
xlsx
- use
jsreport-office
to preview xlsx
Assets5
highlights of updates
general updates
- we now log each extension's version at the startup
- the Ace based editor of studio was replaced by Monaco, and all extensions were updated to support it
- all extensions dependencies were updated to ensure that we don't use vulnerable packages, so npm audit now reports 0 vulnerabilities in most cases
- update to Chrome 76.0.3803.0
core
- fix bug in script manager that was preventing call the scripts's callback multiple times in parallel
- fix not getting last log
Rendering request x finished
in request debug logs - fix parse
templatingEngines.forkOptions.execArgv
as array - fix Odata XML generation for
_id
fields - fix some errors about concurrent update validation
- fix some errors with folders (when moving and resolving)
assets
- the default allowedFiles pattern when allowLocalFilesAccess is enabled should be
**/*.*
- improved error message when asset not found
authentication
- fix don't generate hash for string that is already hashed
- fix don't getting focus on first field on NewUser modal
authorization
- fix bug when readPermissions is eq null
browser-client
- expose server error in reject
child-templates
- add
parallelLimit
option to better control processing of child templates
chrome-pdf
- chrome¡¯s
printBackground
option should default to true when no specified (server side default)
cli
- show real error message when MODULE_NOT_FOUND error happens during start
fs-store
- fix some compaction and persistent operations issues
- increase compactionInterval to 15s
handlebars
- update handlebars to fix security issue
html-to-xlsx
- fix special case with rowspan/colspan layout
- allow text wrap if overflow is "auto"
import-export
- importing does not refresh the page
- add import/export context menu actions
- add full import mode
pdf-utils
- fix some issues with hidden span elements that were failing when some css was present in page
- add ui to disable pdf utils operation
- improve error message when pdfCreatePagesGroup, pdfAddPageItem is called with undefined
- add pdfUtils methods to jsreport-proxy (
pdfUtils.parse
,pdfUtils.prepend
,pdfUtils.append
,pdfUtils.merge
,pdfUtils.outlines
)
reports
- use
options.reportName
for file name and allow customize blobName
sample-template
- add modal to create samples
scheduling
fix generating tasks after enabling a scheduling that has been disabled for some time
fix cloning schedule not getting values in chrome picker
scripts
- add API to extend jsreport-proxy methods
jsreport.scripts.addProxyMethods
studio
- fix some ui issues with concurrent update validation
- validate duplicated entity name when creating entity in studio
- add "Run and undock preview" to toolbar
- use monaco editor for the editor
- add UI to display information about extensions
- improved keyboard shortcuts on mac
Assets5
bjrmatos released this
highlights of updates
general updates
- all extensions were updated to not expose all options by default to the
/api/extensions
route, this prevents leaking some sensitive information to the browser. extensions now need to explicitly define what options they need to expose to the http api. - all extensions were updated to fix an issue with usage of deep merge object library. in some cases they were using a library that was not merging arrays correctly. (new version of
node.extend.without.arrays
) - all extensions which uses the studio and handle references to other entities now use the new
EntityRefSelect
, which it is a control designed for entities references with folders supports - all extensions dependencies were updated to ensure that we don't use vulnerable packages, so npm audit now reports 0 vulnerabilities in most cases
- update to Chrome 73.0.3679.0
core
- expose Request factory in jsreport instance
- fix some condition in validation of reserved names of folders
- fix validation of duplicated name and reserved name for folder when using upsert operations
- add validation of duplicated human readable key prop (in most entities is the
shortid
field) - add fields (
_id
,shortid
,creationDate
,modificationDate
) to entity types by default - show real error when
require
fails inside the sandbox of script - improve error message of timeout of scripts
assets
- add more strict validation for
allowAssetsLinkedToFiles
(validation is done now also on server)
authentication
- disable autocomplete for password fields in authentication forms. this prevents getting warnings in some security audit tools
chrome-pdf
- extension now also exposes a new recipe
chrome-image
, which generates
image from html
express
- fix some logic to allow configuring secure cookies
req.context.http
data is now generated for any route, not just when rendering/api/extensions
no longer returns all extensions options, now it needs that each extension define which properties should be exposed- omit password field of
/api/settings
route
html-to-xlsx
- add new implementation that adds supports for different features (
font-family
,border-color
, cell data types, formula, cell formats, conversion js trigger, insert table output into xlsx template)
import-export
- fix show errors when importing zip
- add option
import into folder
, which allows importing all the entities o zip inside a target directory
pdf-utils
- support generating table of contents (TOC)
- fix some issues when parsing group, items text across different OS
scheduling
- clean pending task when the schedule gets disabled
- running jobs should not update modificationDate of schedules
scripts
- catch sync errors when trying to use jsreport-proxy document store
studio
- fix some problems that was preventing having full folders support
- add entity fuzzy finder (entity navigation modal) (ctrl + p)
- save request logs outside of render request lifecycle and save it in intervals
- fix error when template with header is deleted
- add validation for concurrent save of entities
tags
- update entity tree toolbar buttons to be inside menu
version-control
- fix for folder support: persist folders changes first
xlsx
- properly order legacyDrawingHF