ub-server #

Added #

5.19.1 2021-02-23 #
  • loginFailed event for Session object emitted with second parameter - userName. This allows to log a userName who is fails to log-in into uba_audit.targetUser.
  • startServer() function (available in shell script) accept withWait parameter. If true, program continue execution after shell script ends until got an STP (Ctrl+C) signal. This allows to start a multi-thread server with some threads listen for some queue (redis for example)
  • under Linux blocking syscalls (socket, fs) inside threads are unblocked on SIGQUIT, SIGTSTP, SIGINT, SIGTERM signals. This allows to stop multi-thread server with some threads waiting for blocking operation ends. Added only for a server, started from shell script using startServer() (for compatibility reasons)
  • "redis" section added to ubConfig

Changed #

5.19.1 2021-02-23 #
  • compiler optimization level sets to -O3 (better code generation)
  • maximum allowed thread pool size increased to 128 (from 64)
5.19.0 2021-02-02 #
  • BREAKING JS endpoints, added by App.registerEndpoint and native endpoints, added by a server (stat, auth, ubql, logout and metrics) now executed using App.launchEndpoint JS implementation. This allows to use the same req and resp objects for both endpoint types, and a one step forward to pure JS ubql implementation. These changes require @unitybase/ub@5.19 package.

  • BREAKING IncomingMessages.read() function can be called only once. This allows to free memory allocated in native code for HTTP response ASAP. Should not affect a projects sources.

  • libicu library used for Unicode string comparison in native code instead of cwstring FPC module

Deprecated #

5.19.1 2021-02-23 #

Removed #

5.19.1 2021-02-23 #

Fixed #

5.19.2 2021-02-25 #
  • Fixed #34: SQl builder will add a filter by mi_deleteDate for sub-queries what based on entities with safeDelete: true in case there is no condition by mi_deleteDate yet. BREAKING - .misc({__allowSelectSafeDeleted: true}) do not work for sub-queries, so after this patch developer can't create a sub-query what skips safe deletion.
5.19.1 2021-02-23 #
  • rpm package dependency: libicu version sets to >=50 (instead of >= 60) - this allows to install on CentOS7
5.19.0 2021-02-02 #
  • fixed possible exception during server shutdown on Windows platform
  • deb package correctly adds unitybase user to a www-data group (if such a group exists). This fix usermod: group '%{ub_user}' does not exist warning during deb package setup.
  • fix a possible bypass of session signature timestamp increasing check in case Negotiate authentication is enabled
  • under Linux all instances of http.request now shares the same DNS, TLS and TCP connections cache across all threads. This significantly improves the performance of queries to external HTTP(S) resources, especially for HTTPS for all environment and under Docker where local DNS resolver cache is broken.
  • fix unexpected MessageBox on Widows in case SQLIte3 engine is outdated - server throws in this case

@unitybase/adminui-vue #

Added #

5.19.4 2021-02-25 #
  • USelectEntity will force selecting of new record added by user using "Add new" action. Also added prop skipAutoComplete to disable this functionality for some selected field.
  • Form.js: added titleTooltip param. By default equal to title. Used to display a tab tooltip.
  • Form.mountTab added the ability to change the tooltip of current tab in the UNavbar using the provided with $formServices function setTooltip.
  • UTableEntity now supports a new property hideActions. It allows to hide an action from all the possible places at once: toolbar, context menu, toolbar dropdown, it also disables keyboard shortcuts for the actions. Before the change, to disable an action for entity table, it required something like:
   <!-- Disallow copy -->
   <template #contextMenuCopy>
     <div/>
   </template>
   <template #toolbarDropdownCopy>
     <div/>
   </template>

And still, it won't affect keyboard actions. Now it is much easier to disable actions with the new property. It supports the following actions: addNew, copy, newVersion, showVersions, edit, delete, audit, summary, export, link, viewMode How, it is possible to control multiple actions with one property and be sure actions will be hidden in all the places:

     <u-table-entity
       :hide-actions="['copy', 'export']"
       ...
     >
       ....
     </u-table-entity>
   </div>
5.19.2 2021-02-08 #
  • Form.mountModal will provide isModal: true to the child components, child components can inject it as parentIsModal
  • UFormContainer will inject isModal as parentIsModal
  • UFile (FileRenderer) component support preview (pre-listen) of audio content
  • ALS mixin support for UAutoField and autoforms. Can be used in custom forms as such
const alsMixin = require('@adminui-vue/components/controls/mixins/alsMixin')
...
mixins: ['alsMixin']
  • SET_ALS_INFO mutation added to processing vuex module. In case als mixin assigned to the entity processing.load adds information about als into alsInfo object in vuex state.

Changed #

5.19.4 2021-02-25 #
  • org_unit-fm: 'parentID' field is readonly instead of disabled, that allows to open parent form [UBDF-13217]
  • UTable: In a table view mode the position of a sorting window popup has moved from a button on the toolbar to a sorted column header.
5.19.2 2021-02-08 #
  • USelectEntity - actions EditItem and AddNewItem use parent modal state (parentIsModal) to show item form. If parent is inside a modal dialog - form shows as modal, else - in the new tab.
    This behavior can be disabled by adding appConfig.uiSettings.adminUI.forceModalsForEditForms: true to ubConfig

Fixed #

5.19.4 2021-02-25 #
  • UNavbar: display of html-content inside the tab tooltip
  • UNavbar: support for ext-based form tooltip that was created with BasePanel
  • UAutoField: in case readonly property sets to true - convert it to disable, because 'el-checkbox'/'el-switch' doesn't have readonly prop
  • processing + UToolbar - "Save and Close" must close ONLY if save was successful
5.19.3 2021-02-10 #
  • UTableEntity attributes with Document data type did not work correctly, if attribute was not the root, for example, for attribute like linkedDocID.docImage, it caused JS error, if user try to download it. Now for such attributes, repository MUST include the ID field of the record with document, for the previous example, it MUST include linkedDocID attribute. This is done instead of additional (and failed!) request to server for the ID value.
5.19.2 2021-02-08 #
  • UFile ignore charset part in BLOB content type while calculates an icon for file. After this fix correct icons are displayed for txt, html, js, html and so on.
5.19.1 2021-02-03 #
  • UMasterDetailView: fixed Entity with code "[object Object]" does not exists or not accessible in case repository property is Object (ubql). For example as in ubm_enum shortcut definition.
  • UMasterDetailView: fixed Entity with code "" does not exist or not accessible in case entityName is passed into attributes. For example as in uba_audit shortcut definition.
5.19.0 2021-02-02 #
  • Error Cannot read property 'showAllItem' of undefined on clicking to Ext filter arrows up/down.
  • UFormRow: Fixed styles for labelPosition="right" - colon sing after label is removed; added padding between control and label

@unitybase/base #

Fixed #

5.19.0 2021-02-02 #
  • prevent unnecessary call to IncomingMessage.read() for responses with JSON content type (reduce memory usage)

@unitybase/blob-stores #

Added #

5.19.3 2021-02-10 #
  • in case UB is behind nginx getDocument endpoint for fileSystemBlobStores adds x-query-params header what contains URL parameters. This allows to extend a proxy config with rules what depends on URL parameters.

    See example what uses this feature to add an image resize (thumbnails) in reverse proxy tutorial

Changed #

5.19.0 2021-02-02 #
  • setDocument endpoint will use req.writeToFile if request body not in base64 instead of reading body into JS memory and when write it using fs.writeFileSync. This prevents double memory allocation.
  • BREAKING BlobStoreCustom.saveContentToTempStore method signature changed. content parameter can be either ArrayBuffer or THTTPRequest. Support for content: THTTPRequest MUST be added to descendants.
  • use new property req.parsedParameters instead of queryString.parse(req.parameters)

Fixed #

5.19.2 2021-02-08 #
  • setDocument endpoint return valid file size for dirty document, based on fs.statSync() result

@unitybase/cdn #

Added #

5.19.4 2021-02-25 #
  • new attribute cdn_organization.countryID

@unitybase/cs-shared #

Fixed #

5.5.18 2021-02-03 #
  • fix typo in UBDomain.prototype.get error message in case entity does not exist

@unitybase/adminui-pub #

Changed #

5.19.4 2021-02-25 #
  • showAuditTrail select data by parentEntityInfo_id or entityinfo_id attributes instead of parentEntityInfo_id. Auditing on child records will now appear in the base entity audit form and the parent entity audit form.
5.19.2 2021-02-08 #
  • UBBaseComboBox - actions EditItem and AddNewItem use parent modal state (this.up('basepanel').isModal) to show item form. If parent is inside a modal dialog - form shows as modal, else - in the new tab. This behavior can be disabled by adding appConfig.uiSettings.adminUI.forceModalsForEditForms: true to ubConfig.

@unitybase/openid-connect #

Changed #

5.19.0 2021-02-02 #
  • use new method req.getHeader('origin') to get a Origin header value
  • use new property req.parsedParameters instead of queryString.parse(req.parameters)

@unitybase/ub #

Added #

5.19.2 2021-02-08 #
  • new syntax sugar methods insert, insertAsObject, update and updateAsObject are added to TubDataStore. Methods semantic are the same as for Connection. See TubDataStore documentation for details. Example:
 const STORE = UB.DataStore('uba_role')
 // return ID (generated, since ID not passed in the execParamms)
 // 3000000000201
 const testRoleID = STORE.insert({
   fieldList: ['ID'],
   execParams: {
     name: 'testRole1',
     allowedAppMethods: 'runList'
   }
 })
5.19.0 2021-02-02 #
  • THTTPRequest extended by helper functions:
    • req.getHeader(name) -> string|undefined
    • req.getHeaderNames() -> array<string>
    • req.getHeaders() -> Object
  • THTTPRequest extended by parsedParameters getter. Result is cached, so second call is faster than first
// for parameters 'foo=bar&baz=qux&baz=quux&corge' return
req.parsedParameters // { foo: 'bar', baz: ['qux', 'quux'], corge: '' }

We recommend using this getter instead of querystring.parse(req.parameters) to prevent multiple call to parameter parsing from different methods (require UB server >= 5.19.0).

  • THTTPRequest.writeToFile can accept second parameter encoding - 'bin' (default) or base64. For basse64 request body will be converted from base64 into binary before write to file

Changed #

5.19.0 2021-02-02 #
  • BREAKING JS endpoints, added by App.registerEndpoint and native endpoints, added by a server (stat, auth, ubql, logout and metrics) now executed using App.launchEndpoint JS implementation.

This allows to use the same req and resp objects for both endpoint types, and a one step forward to pure JS ubql implementation. These changes require UB server >= 5.19.0.

@unitybase/uba #

Changed #

5.19.1 2021-02-03 #
  • for UB@5.19.1 loginFailed event logs into uba_audit.actionUser name of user who tries to log-in. Before this changes anonymous is written there. For UB@5.19.0 anonymous is written as before this patch.
5.19.0 2021-02-02 #
  • use new property req.parsedParameters instead of queryString.parse(req.parameters)

@unitybase/ubcli #

Added #

5.19.4 2021-02-25 #
  • ubcli execSql command accept -v parameter for a verbose mode. In the verbose mode each executed SQL statement will be logged into console
  • ubcli migrate command accept -v parameter for a verbose mode and -p parameter for progress. Both a passed to execSql, this allows output all executed SQL statement into a console (SQL statement logging)

@unitybase/only-office #

Changed #

5.19.0 2021-02-02 #
  • use new property req.parsedParameters instead of queryString.parse(req.parameters)