ub-server #

Added #

5.18.22 2020-11-17 #
5.18.21 2020-11-14 #
  • ub-delpoy: --nobackup command line switch added. Prevents backup of existed app/product. Useful in the CI scripts for dev environments to install over the same version.
  • /metrics endpoint - expose a various server metrics in Prometheus format. See metrics tutorial for details.
  • systemd unit: remote-fs.target if added to After= section og unitybase@.service unit. This prevent UnityBase to start before remote fs are mounted (if any).
5.18.20 2020-11-25 #
  • UBEntityAttribute.privateSettings & UBEntity.privateSettings properties. Can be defined in meta file and available in server-side domain. not available on client-side. Client-side implemented in @unitybase/cs-shared@5.5.11.
  • Windows platform: support for de-duplicated NTFS file systems. Previous versions do not see files with FILE_ATTRIBUTE_REPARSE_POINT
  • new command line switch -p - evaluate script and print result
 # print version from package.json to console
 ub -p "require('package.json').version"
 # assign version to variable in shell script
 VER=$(ub -p "require('package.json').version") && echo $VER
5.18.19 2020-11-15 #
  • set systemd service status to 'Stopping...' during service shut down. This operation can be slow because server waits for active request handler to be finished.
  • crypto: added a node-compatible functions: prng, pseudoRandomBytes, randomBytes, randomFill, randomFillSync, rng
5.18.18 2020-11-11 #
  • ub-app-new lifecycle script will list all deployed products in case -p parameter is invalid
  • ub-app-new & ub-app-upgrade for a product based apps will force linking of all static assets from product inetpub into app inetpub
5.18.17 2020-11-06 #
  • getDomainInfo: added "vendorModels" & "customerModels" fields - contains the same as in application ubConfig
  • added dbConnectionsRelease method to ub_dbConnection binding (exposed for a developer as @unitybase/base.releaseDBConnectionPool). Should be used in case controller creates a DB connection pool in Shell script and when uses startSertver(). In such case before starting a server local DB connection pool MUST be released.
  • /usr/bin/ubcli script (installed by server deb/rmp) - allow not to use npx ubcli ... - just type ubcli ... in any application folder

Changed #

5.18.22 2020-11-17 #
  • EventEmitter.defaultMaxListeners is increased to 100. This prevents ERROR (node) warning: possible EventEmitter memory leak detected in logs. For server-side typical pattern is to subscribe to the event end never unsubscribe, so the nodejs behavior of tracking leaks (someone forgot to unsubscribe) is not applicable.
5.18.21 2020-11-14 #
  • BREAKING CentOS and Ubuntu based Docker containers are published to the git-pub.intecracy.com:4567/docker/unitybase/ub-server (instead of git-pub.intecracy.com:4567/unitybase/ub-server)
  • Linux: on startup server calls a libc setlocale(LC_ALL, 'C') to force all C libraries loaded by UnityBase to use a POSIX locale by default instead of ones, specified in LC_ variables
5.18.20 2020-11-25 #
  • process.platform and process.arch now read-only and enumerable instead of read-write and non-enumerable
5.18.19 2020-11-15 #
  • speed up server startup in production mode by skip fetching of uba_els.code column during ELS initialization. For huge (> 10000) ELS sets it's give a 2x speed up (0.6 sec -> 0.3 sec)
5.18.18 2020-11-11 #
  • deb/rpm package setup will:
    • sets permission for apps/products folders to 755 and data to 750, so unitybase group members (like nginx) will have a read only permission
    • adds user nginx (if available) to group unitybase, so nginx can read a BLOB stores content and inetpub apps folders
  • BREAKING application data folder sets to /var/opt/unitybase instead of /var/lib/unitybase In case apps based on UB 5.18.17 is already deployed, use sudo mv /var/lib/unitybase /var/opt after upgrade ub-server.
5.18.17 2020-11-06 #
  • under Linux deb/rpm server setup sets owner of /opt/unitybase/products to unitybase:unitybase (instead of root:root). This allows call a lincStatic in application folder based on a product without permission violation.
  • httpServer port is added to a log file name (after host name) - this prevents possible file naming conflicts in case several apps wrote logs to the same folder (/var/log/unitybase for example).
  • BREAKING on production UB_APPDATA=/var/lib/unitybase/$UB_APP
5.18.16 2020-11-01 #
  • skip logging of empty enter/leave blocks for methods that guarantee less than 10 ns work:
    • TubStorageMixin.beforeinsert
    • TubStorageMixin.afterdelete
    • TubDataHistoryMixin.select
    • TubDataHistoryMixin.insert
    • TubDataHistoryMixin.delete
    • TubClobTruncateMixin.beforeupdate
    • TubClobTruncateMixin.beforeinsert The overall effect is ~2% of log size decrease and ~10% of log lines count decrease (verified for DocFlow product).
  • maximum number of application DB connections are limited to 20

Deprecated #

5.18.22 2020-11-17 #
5.18.21 2020-11-14 #
  • Windows: performance counters registration via ub -perf is removed; Under Windows UB specific statistics available using /stat endpoint and via HTTP_queue build-in Windows counter.
  • ubConfig: logging.performanceCounters setting key is removed - use metrics instead
5.18.20 2020-11-25 #
  • BREAKING http.setGlobalProxyConfiguration is obsolete, do nothing except output warning and should be removed from code. Use http_proxy & no_proxy environment variables.
    • under Windows no_proxy should be semicolon delimited,
    • under Linux a comma delimited, see https://curl.se/libcurl/c/CURLOPT_PROXY.html
5.18.18 2020-11-11 #
5.18.16 2020-11-01 #

Removed #

5.18.22 2020-11-17 #
5.18.18 2020-11-11 #
5.18.16 2020-11-01 #

Fixed #

5.18.22 2020-11-17 #
  • fixed EThreadError what can occur on hi-load environment in case a several thread simulatiously tries to get next 100 IDs from database sequence. Such error can cause a server to hang, so issue level is CRITICAL. Affects all RDBMS types except SQLite3 (where in-memory ID generator is used) and all versions of UB starting from 1.12.
5.18.21 2020-11-14 #
  • Installation from rpm under Docker fixed: rpm package detect systemd using pidof systemd instead of test -f "/usr/bin/systemctl". In centos:8 docker image /usr/bin/systemctl exists but systemd not used.
  • Password expiration check: prevent asking user to change an expired password (for apps with ubs_settings UBA.passwordPolicy.maxDurationDays > 0) in case authorization method uses an external password storage (LDAP, Kerberos) or do not use password at all (UBIP). In fact only Basic and UB schemas should perform password expiration check.
  • reader interface (req.read('utf-8') for example): throw an error Source is not a UTF8 encoded string in case source buffer is not a UTF8 encoded string. This slows operation a bit, but prevent possible AV inside JS engine.
5.18.20 2020-11-25 #
  • UB.UBAbort server side JS abort error now logged as ERR log level instead of EXC
  • AV for empty script evaluation fixed (ub -e without script)
5.18.19 2020-11-15 #
  • simplify Docker file for better usage of layer cache during docker build
5.18.18 2020-11-11 #
  • systemd service uses %i instead of %I as UB_APP, %I escapes -->/, so app name ora-autotest becomes ora/autotest
5.18.17 2020-11-06 #
  • in shell mode (-e, -T, -f or script.js as first parameter) console.* calls should not add a log level to stdout output. ub -T should show config as multiline string instead of one line. Problem is introduced in 5.18.16.
  • more user-friendly exception in case "connectionName" points to not existed connection
  • mute logging of ECurlHTTP exception in shell mode - it's already intercepted by JS. This prevent logging of entites like ECurlHTTP ("libcurl error 7 (Couldn't connect to server) on GET http://localhost:8081/getAppInfo" during checkServerStarted() call.
5.18.16 2020-11-01 #
  • direct SQL execution inside command line script (using createDBConnectionPool) now works in case server is started from command line script using startServer(). The only limitation is - transaction must be committed manually. If server is not started by script then connection committed on script termination automatically.
  • allow debugging a shell script using ub /path/to/file.js -debug.
  • fixed potential AV inside isEndpointAllowed method (can occur in case one of default roles are missed in the database)

@unitybase/adminui-vue #

Added #

1.13.20 2020-11-19 #
  • new optional column property filterable for column configuration of UTableEntity. To disable filtration by column sets column.filterable = false
  • UFormContainer: provides isDisabled property to child controls. This property disables child "U-controls" when its true.
  • UBaseInput, UAutoField and USelectEntity inherit isDisabled from parent
  • UForm.processing: callback errorNotification is added. Allows override a default error notification behavior.
1.13.19 2020-11-15 #
  • processing.load: added .misc({ ID: ID }) which allows to make a request with ID bypassing caching, soft deletion and history. This solves the problem with the opening of forms of records that are no longer relevant.
1.13.18 2020-11-14 #
  • UTableEntity: new prop bordered (true by default) - display a border around table and toolbar. See for example cdn_person form - with border around Contacts its looks better.

Changed #

1.13.22 2020-11-23 #
  • user menu Settings now contains a sub-menu Scanner settings what shows a scanner settings form. Ext based ubm_desktop-userSettings form (was shown on setting menu click before these changes) is removed.
1.13.20 2020-11-19 #
  • UTableEntity - prevent hangs on huge text attributes content:
    • in case columns is not specified will exclude attributes of type Text, JSON and Document from autogenerated columns list (before this fix attributes of type Text are included)
    • UTableEntity: in case attributes or Repository not specified will exclude from autogenerated Repository attributes of types Text, JSON and Document even in case defaultView for such attributes is true in metadata
1.13.18 2020-11-14 #
  • UCodeMirror - use esversion: 8 (async functions) as default for linter
1.13.17 2020-11-10 #
  • USidebar sidebar width to 0px in collapsed state and screen less than 768px (mobile)
1.13.14 2020-11-01 #
  • USelectEntity: prop readonly does not disable action edit in dropdown anymore, but disabled still does

Fixed #

1.13.23 2020-11-25 #
  • UBaseInput: fix disabled prop in case need to disable only this field and not the entire form container
  • UTableEntity <entity-name>:changed events (does not try to refresh) in case payload not contains a valid resultData with ID
  • UTableEntity: fixed disabling of sorting by clicking on a column header if the column configured as not sortable
  • UTableEntity filter - use correct translation for multiple condition - Multiple instead of Contains
1.13.22 2020-11-23 #
  • UBaseInput,UAutoField,USelectEntity: fixed missing injection in case when the control is outside the UFormContainer
  • UTableEntity: sorting now replaces the orderList rather than adding a new condition to the existing one
1.13.21 2020-11-20 #
  • UTableEntity: fixed attributes filtration for tables initialized with columns (introduced in 1.13.20)
1.13.20 2020-11-19 #
  • UFile: prevent download document in case preview-mode not sets
  • UTableEntity error on click column which has no filters
1.13.16 2020-11-08 #
  • UDialog - if Cancel button not available - sets focus to the first available button.
1.13.14 2020-11-01 #
  • store.canRefresh getter returns true for any non-new record (before this fix - for non-new and dirty). This allows calling "Refresh" action on the non-dirty forms.

@unitybase/base #

Added #

5.4.6 2020-11-15 #
  • DBConnection.selectParsedAsObject for Postgres warning added: Postgres return all field name in lower case if AS "normalName" is not specified, so better to write a query as such select ID as "ID", modelName AS "modelName" from .. instead of select ID, modelName from ..
5.4.5 2020-11-14 #
  • ServerRepository.selectAsArrayOfValues() - for Repository with ONE attribute returns a flat array of attribute values
     const usersIDs = UB.Repository('uba_user').attrs('ID').limit(100).selectAsArrayOfValues()
     // usersIDs is array of IDs [1, 2, 3, 4]
    
5.4.3 2020-11-10 #
  • argv.establishConnectionFromCmdLineAttributes: default value for -host parameter is changed to auto. if -host auto or UB_HOST=auto env variable is defined then host will be taken from application config
5.4.2 2020-11-08 #
  • DBCOnnection.selectParsedAsObject for Oracle warning added: Oracle return all field name in UPPER case if AS "normalName" is not specified, so better to write a query as such select ID, modelName AS "modelName" from .. instead of select ID, modelName from ..
5.4.0 2020-11-05 #
  • createDBConnectionPool adds connection with name DEFAULT for easy access to default DB connection
  • in case DBConnection.genID called with undefined it return ID for connection. If with entity code - for specified entity.
  • argv.establishConnectionFromCmdLineAttributes will always uses 'ROOT' auth schema if user is 'root'. Before this fix 'ROOT' schema is used if user is root AND server is started by this session.

Changed #

5.4.6 2020-11-15 #
  • ServerRepository.selectScalar() optimized to use less JS memory
5.4.1 2020-11-08 #
  • options.parseVerbose ( a command line parameters parser) will throw in case of invalid / missed parameters. This returns a 1 exit code to caller and, for example, can prevent batch script from further execution.
5.4.0 2020-11-05 #
  • createDBConnectionPool will re-use previously created pool

Fixed #

5.4.0 2020-11-05 #
  • added missing {ubRequest} type definition

@unitybase/blob-stores #

Added #

5.5.0 2020-11-15 #
  • BLOB stores: new storeSize Hourly - as Daily but with sub-folder for each hour inside a day folder

  • BLOB sores: new property LUCount - a count of Logical Units BLOB stores divided into. If > 0 then files are stored inside Logical Unit sub-folders /LU01, /LU02,.

    Write operations works with last LU folder. Each LU folder can be mounted to his own partition. In this case tempPath should point to the same partition as last LU.

5.4.17 2020-11-14 #
  • @unitybase/blob-stores/storesPerfTest.js - BLOB store performance testing endpoints implementation. See doc inside a storesPerfTest.js for usage sample.
5.4.11 2020-11-01 #
  • App.blobStores.getContentPath method - retrieve full path to a file with BLOB content (in case store is file-based)

Changed #

5.5.2 2020-11-20 #
  • mdb BLOB store: if reverseProxy is nginx then getDocument request for permanently stored items will redirect to sendFileLocationRoot/models internal location to unify retrieving of models and cmodels.

    On the production cmodels is located in then /var/opt/unitybase/.. while models - in the /opt/unitybase/... Since linkStatic links both to the inetpub/clientRequire/models, so better to get all mdb items from there.

    ubcli generateNginxCfg should be executed after upgrade to this version (ub-app-upgrade lifecycle script is doing this)

5.4.16 2020-11-12 #
  • mdb store now stores MD5

Fixed #

5.4.12 2020-11-05 #
  • MdbBlobStore do not throw an error on deletion

@unitybase/cdn #

Changed #

5.4.43 2020-11-10 #
  • cdn_profession.meta: added defaultView: false for attribute description

Removed #

5.4.43 2020-11-10 #

-cdn_profession-fm.def: better to use autoform

Fixed #

5.4.49 2020-11-23 #
  • cdn_organization - deny ANY update for organizations with government organization type (orgBusinessTypeID.isGovAuthority=true) by roles not in cdn.organization.accessAddGovByRoles list.

Before this fix updating was possible if orgBusinessTypeID is not changed. Also, was possible to change an org type from government to non-government.

5.4.39 2020-11-01 #
  • cdn_contact-fm.vue: fixed form opening without parentContext [UBDF-12453]

@unitybase/cs-shared #

Added #

5.5.11 2020-11-20 #
  • UBEntityAttribute.privateSettings & UBEntity.privateSettings properties. Can be defined in meta file and available in server-side domain. not available on client-side. Require UB server 5.18.20 and up.
5.5.9 2020-11-14 #
  • CustomRepository.selectAsArrayOfValues() - for Repository with ONE attribute returns a flat array of attribute values
5.5.8 2020-11-05 #
  • new properties UBDomain.customerModels & UBDomain.vendorModels - array of customer/vendor models names. Require UB server to be >= 5.18.17. For earlier versions returns empty arrays.

Changed #

5.5.7 2020-11-01 #
  • ClientRepository Object result will force converting Enums attributes values to String. This fix a problem when enum value is number like (1 for example) and client got a numeric response. General recommendations is to set enum values to alphanumeric string.

Fixed #

5.5.8 2020-11-05 #
  • DBConnectionConfig type definition: added missing isDefault property

@unitybase/mailer #

Added #

5.4.0 2020-11-23 #
  • notes in the README about SSL setup for Linux
  • UBMail.UBMailImap class - receive mail using IMAP protocol
  • UBMail.TubMailReceiverImap - a direct replacement for UBMail.TubMailReceiver but uses IMAP instead of POP3
  • fullSSL property added for TubMailReceiver, TubMailSender and TubMailImap. If true - setup TLS before any command to mail server. See README for OpenSSL requirements.

@unitybase/org #

Changed #

5.4.20 2020-11-25 #
  • allow log-in for user who not assigned to employee for members of Admin group (in addition to admin and root user). This fix regression introduced in @unitybase/org@5.4.0.

    The source of regression is so called "local administrators" - a regional administrator`s in a huge organizations.

5.4.13 2020-11-10 #
  • org_unit-fm, org_staffunit-fm, org_profession-fm, org_department-fm: rewritten to vue

Fixed #

5.4.20 2020-11-25 #
  • org_staffunit-fm: fixed typo in parent context of org_employeeonstaff grid
5.4.17 2020-11-19 #
  • org_staffunit-fm, org_profession-fm, org_department-fm: fixed form saving without a required caption field by adding masterFieldList [UBDF-12721]

@unitybase/adminui-pub #

Changed #

5.13.51 2020-11-14 #
  • UBCodeMirror - use esversion: 8 (async functions) as default for linter

@unitybase/ub #

Added #

5.7.8 2020-11-20 #
  • new privateSettings property for entity and attribute added to the JSON schema for entity metadata
5.7.0 2020-11-05 #
  • ub_migration & ub_version entities added
5.6.8 2020-11-01 #
  • App.blobStores.getContentPath - retrieve full path to a file with BLOB content
  • EE & DE edition: added dstu.iit.strictMode parameter. If true (default) - force server-side signature format to CADES_X_LONG (enable TSP if disabled)

Fixed #

5.7.7 2020-11-19 #
  • UB.UBAbort server side abort error now logged as ERR log level instead of EXC (as should be) for UBServer@5.18.20. For UBServer < 5.18.20 nothing changed and UB.UBAbort will be logged as EXC.

@unitybase/uba #

Added #

5.4.37 2020-11-05 #
  • Nav Shortcuts: Migrations folder with Models versions and Applied files shortcuts

@unitybase/ubcli #

Added #

5.10.0 2020-11-23 #
  • ubcli execSql: -withResult option added - if passed then expect last statement in the batch to be a statement what returns a result, exec it using runSQL and returns a result as JSON
 ubcli execSql -sql 'select * from uba_user' -withResult
 # run a statement and output colored beautified result
 ubcli execSql -sql 'select * from uba_user' -withResult -noLogo | sed -n "/--BEGIN/,/--END/p" | tail -n +2 | head -n -2 | jq -r .
5.9.8 2020-11-20 #
  • ubcli generateNginxCfg - added internal location location /{{sendFileLocationRoot}}/models mdb BLOB store redirect to it a getDocument requests. This fix problem on production deployment when cmodels is located in the /var/opt/...
5.9.5 2020-11-14 #
  • ubcli generateNginxCfg: new parameter -nginxPort - a port for nginx listen directive. If not specified then equal to httpServer.externalURL port (if specified, like http://server.com:8083, of 80/443 for short notation of externalUrl). Use this parameter in 2-proxy configurations.
5.9.3 2020-11-10 #
  • all ubcli command what accept -host parameter now automatically discovers a server URL from ubConfig if -host auto (or UB_HOST=auto env var) is not explicitly defined. This helps to use ubcli in CI script.
5.9.0 2020-11-05 #
  • ubcli execSql: new option -sql script added for execute SQL script from string. Usage sample:
ubcli execSql -sql 
###### ~5.8.0~ ~2020-11-01~
 - new `generateDDL` parameter `-c connectionName`. If passed DDL generator works only for entities for specified connection.
 - new command `ubcli execSql -c connectionName -f path/to/script.sql`.
   Exec a multi-statement SQL script in specified connection without starting a server, so can be used to apply some patches.
   Can be used as a module:
   ```javascript
   const execSql = require('@unitybase/ubcli/lib/execSql')
   execSql({
     connection: 'main',
     file: './myScript.sql',
     optimistic: true
   })
  • In case UB > 5.18.15 DDL generator will execute result script using @unitybase/ubcli/lib/execSql - split a result file into parts and directly execute SQL statements instead of using runSQL endpoint.

Changed #

5.9.4 2020-11-12 #
  • ubcli generateNgingCfg: a final message for CentOS propose to link config to /etc/nginx/conf.d instead of /etc/nginx/sites-available for Ubuntu
5.9.3 2020-11-10 #
  • ubcli execSql will log first 30 chars of statement for -sql mode instead of -sql word
5.9.2 2020-11-08 #
  • removed many unnecessary logging messages form ubcli tools output.
5.9.1 2020-11-08 #
  • ubcli createStore: minimize console output by notify only for newly created directory path
  • ubcli execSql mute per-statement exception in case it contains --@optimistic comment somewhere in text. In example below in case table1 already exists exception wil be muted. For table2 - will be raised (--@optimistic not in statement text).
--@optimistic
create table1 ....
create table2...
5.9.0 2020-11-05 #
  • linkStatic command uses realpath for a config to search for node_modules. This allows using linkStatic in product based apps, where config is sym-linked from /opt/unitybase/products.
  • generateDDL: prevent unnecessary warning for SQLite3 default constraint changing
  • generateDDL: removed unnecessary logout after generateDDL function is ends. Consider generateDDL always executed as local root (-u root)
5.8.0 2020-11-01 #
  • DDL generator result will join all object annotation (comment on) into one SQL statement - this speed up database generation a lot
  • DDL generator for Oracle moves sequence incrementation calls into annotation block, so all of them are executed as a single call

Fixed #

5.9.6 2020-11-15 #
  • ubcli migrate - prevent duplicate model insertion into ub_version for Postgres. For Postgres direct query execution using DBConnection.selectParsedAsObject without filed aliases in SQL returns field names in lower case, so select ID, modelName... returns [{id: 1, modelname: "}, ..]). The solution is to specify alias select ID ad "ID", modelName as "modelName" .... - in this case result will be as expected [{ID: 1, modelName: "}, ..]. Notes - for Oracle fields without aliases is UPPERCASE'S, so alias is mandatory for cross-db solutions.
5.9.1 2020-11-08 #
  • ubcli migrate: command line doc added
  • ubcli linkStatic: skip creation of .entryPoint.js for modules with folder entry-point For example: "main": "./src" in package.json. Such links create a file system loop. In any case they can't be required from client side by systemJS.
  • if invalid arguments is passed to the ubcli command it exits with exit code 1. This prevents a batch script from further execution in case of invalid command.
5.9.0 2020-11-05 #
  • DDL generator will skip attributes mapped to another existed attribute BEGIN\n import_users.do_import;\n END;--\n delete from aa where 1=0;'
 - `ubcli migrate` - see [Version migrations tutorial](https://unitybase.info/api/server-v5/tutorial-migrations.html)
 - `ubcli initialize` will fill `ub_version` table by versions of the models on the moment of initialization
###### ~5.8.0~ ~2020-11-01~
 - `genSuffixesIndexInitScript` fixed to generate an SQL with valid argument for `dbo.strTails`
 - DDL generator: remove warning from a console in case entity metadata is congruence with the database for connection
# [@unitybase&#x2F;ubm](https:&#x2F;&#x2F;git-pub.intecracy.com&#x2F;unitybase&#x2F;ubjs&#x2F;tree&#x2F;master&#x2F;packages&#x2F;ubm)
#### Fixed
###### ~5.4.26~ ~2020-11-12~
- fix last used scanner and supplement type for UBScan on scanner settings form
###### ~5.4.25~ ~2020-11-10~
- `ubm_desktop-scanerSettings-fm`: fixed correct settings saving and localization [UBDF-12670], [LDOC-1010],
    [LDOC-1041], [LDOC-1011], [LDOC-1015]
# [@unitybase&#x2F;ubq](https:&#x2F;&#x2F;git-pub.intecracy.com&#x2F;unitybase&#x2F;ubjs&#x2F;tree&#x2F;master&#x2F;packages&#x2F;ubq)
#### Added
###### ~5.4.18~ ~2020-11-23~
 - `mailerConfig.fullSSL` parameter added to UBQ partial config - use a TLS tunnel for SMTP. 
   Environment variable - `UB_SMTP_FULL_SSL` (false by default)
    
# [@unitybase&#x2F;ubs](https:&#x2F;&#x2F;git-pub.intecracy.com&#x2F;unitybase&#x2F;ubjs&#x2F;tree&#x2F;master&#x2F;packages&#x2F;ubs)
#### Fixed
###### ~5.4.36~ ~2020-11-19~
 - a client-side report builder `UBReport` uses a `/clientRequire` endpoint instead of `/getDocument` to obtain a report template.
   This fix 404 report template response on production deployment where models can be either inside
   app folder (`/opt/unitybase/apps/appName`) or inside appData folder (`var/opt/unitybase/apps/appName`)   
# [@unitybase&#x2F;ub-pub](https:&#x2F;&#x2F;git-pub.intecracy.com&#x2F;unitybase&#x2F;ubjs&#x2F;tree&#x2F;master&#x2F;packages&#x2F;ub-pub)
#### Added
###### ~5.5.30~ ~2020-11-14~
 - `ClientRepository.selectAsArrayOfValues()` - for Repository with ONE attribute returns a flat array of attribute values
   ```javascript
    const usersIDs = await UB.Repository('uba_user').attrs('ID').limit(100).selectAsArrayOfValues()
    // usersIDs is array of IDs [1, 2, 3, 4]