All Versions
17
Latest Version
Avg Release Cycle
60 days
Latest Release
1580 days ago
Changelog History
Page 1
Changelog History
Page 1
-
v3.4.5 Changes
July 10, 2020Fixes :
- ๐ fixed: a problem with persistent images
-
v3.4.4 Changes
July 07, 2020News :
- โ added: schema options
$.successful(function(response) {})
- โ added:
options.reconnectserver {Boolean}
toWEBSOCKETCLIENT
- โ added:
req.snapshot(callback(err, request_body))
- โ added: a new command
CMD('reload_preferences')
- โ added: a new FILESTORAGE mechanism based on
UID
- โ added:
sql
extension toU.getContentType()
- โ added:
F.stats.performance.usage
which contains percentual usage of the thread
โก๏ธ Updates :
- โก๏ธ updated:
SchemaOptions
method$.response([index/operation_name])
, e.g.$.response('workflow.NAME')
- โก๏ธ updated: snapshot
startscript.js.json
contains tabs instead of spaces - โก๏ธ updated:
DatabaseBuilder.rule(rule, [param])
, supports string declaration of filter function - โก๏ธ updated:
URL
validation
๐ Fixes :
- ๐ fixed: cleaning of NoSQL embedded databases
- ๐ fixed:
String.parseCSV()
, now supports multiline strings - ๐ fixed: a bug when closing of websocket
- ๐ fixed:
DatabaseBuilder.search()
method - ๐ fixed:
Error
inCLONE()
method - ๐ fixed:
schema.inherit()
by addingschema.middleware()
andschema.verify()
- ๐ fixed: parsing messages in WebSocket
- ๐ fixed: a problem in some commands pre-render in the view compiler
- ๐ fixed: parsing of query strings
- โ added: schema options
-
v3.4.3 Changes
May 11, 2020News :
- โ added:
HASH(value, [type])
for creating hash like in jComponent - โ added:
SchemaOptions.repo
as alias toSchemaInstance.model.$$repository
- โ added: a new type
CONVERT syntax
toschema.define()
(more in docs) - โ added:
SchemaEntity.verify(name, function($), [cache])
for async verification of values - โ added:
TEMP
variable as a new global variable (it's cleaned every 7 minutes) - added:
CONF.allow_persistent_images: true
which allows to reuse resized images in temp directory - โ added:
req.filecache(callback)
as alias forF.exists()
- โ added: own QueryParser
- โ added:
RESTBuilderInstance.convert('name:String,age:Number')
method - โ added:
RESTBuilder.upgrade(fn(restbuilder))
for upgrading ofRESTBuilder
- โ added:
RESTBuilder
parses Total.js Errors in responses as Error - โ added:
String.prototype.env()
replaces all values in the form[key]
forCONF.key
- โ added: WebSocket supports a new type - raw
buffer
- โ added:
Number.fixed(decimals)
โก๏ธ Updates :
- โก๏ธ updated:
websocket.send2(message, comparer, replacer, [params])
by addingparams
argument for comparer function - โก๏ธ updated:
Websocket.encodedecode
can enable/disable easily encoding of messages - โก๏ธ updated: bundling skips all bundles with
-bk.bundle
in filename - โก๏ธ updated: bundle filenames are displayed in console
- โก๏ธ updated:
UPDATE()
method by addingnoarchive
argument - โก๏ธ updated:
TEST()
method supports[subdomain]
keyword andMETHOD url
in URL address - โก๏ธ updated:
MODIFY([filename], fn)
by addingfilename
argument - โก๏ธ updated: background of schedulers by @fgnm
- โก๏ธ updated:
U.download()
by addingparam
argument - โก๏ธ updated:
U.request()
by addingparam
argument - โก๏ธ updated:
schema.cl(name, [value])
method by addingvalue
argument for replacing of existing code-list - โก๏ธ updated: Tangular version to
v4.0.0
๐ Improvements :
- ๐ improved:
filename
in modificators (now filenames contain relative paths) - ๐ improved: performance of
U.request()
(around +10%) - ๐ improved: performance of
U.download()
(around +10%) - ๐ improved: performance of
RESTBuilder
- ๐ improved: CSS minifier by compressing single hex color from e.g.
#000000
to#000
๐ Fixes :
- ๐ fixed: localization in
totaljs
executable script - ๐ fixed: phone validation
- ๐ fixed:
DOWNLOAD()
- ๐ fixed:
Number.VAT()
by Tomas Novak - ๐ fixed: debugging mode in Node.js v14
- fixed:
allow_compile_html
in static files - ๐ fixed:
ROUTE()
method, there was a problem with spacesGET /*
- ๐ fixed:
ACTION()
with json output - ๐ fixed: controller in
$ACTION()
with usedget
andquery
actions - ๐ fixed:
PATCH
method in$ACTION()
- ๐ fixed:
schema.allow()
inPATCH
method - ๐ fixed: image resizing in debug-mode
- โ added:
-
v3.4.2
May 11, 2020 -
v3.4.1 Changes
March 11, 2020News :
- โ added:
SchemaOptions.parent
returns a parent model - โ added: Tangular template engine (experimental)
- โ added:
String.makeid()
for creating of unique identifier from string - โ added: a new property called
message.ua
toFLOWSTREAM()
โก๏ธ Updates :
- โก๏ธ updated:
HttpFile.fs()
by addingid
argument for updating of existing file - updated: default value for
allow_ssc_validation
totrue
๐ Fixes :
- ๐ fixed:
String.parseDate(format)
with defined format - ๐ fixed: inheriting of controllers between schemas
- ๐ fixed:
MailMessage.attachments()
- ๐ fixed: calling of
F.snapshotstats
in cache recycle - ๐ fixed:
controller.success()
- ๐ fixed: removing of unused files when a bundle is extracting
- ๐ fixed: a processor function in
F.backup()
๐ Improvements :
- ๐ improved:
Date.format()
- ๐ improved: Total.js translate (supports ErrorBuilder and DBMS)
- โ added:
-
v3.4.0 Changes
February 11, 2020News :
- โ added:
date.setTimeZone(timezone)
- โ added: `NOSQL('~absolute_path.nosql')' loads external NoSQL embedded database
- โ added: `TABLE('~absolute_path.nosql')' loads external Table
- โ added:
(generate)
subtype into theconfig
files - โ added:
String.isBase64()
- โ added: new schema type
Base64
- โ added: SchemaEntity supports
schema.addWorkflowExtension(name, fn($, [data]))
- โ added: SchemaEntity supports
schema.addTransformExtension(name, fn($, [data]))
- โ added: SchemaEntity supports
schema.addOperationExtension(name, fn($, [data]))
- โ added: SchemaEntity supports
schema.addHookExtension(name, fn($, [data]))
- โ added: SchemaEntity supports
schema.setSaveExtension(fn($, [data]))
- โ added: SchemaEntity supports
schema.setReadExtension(fn($, [data]))
- โ added: SchemaEntity supports
schema.setQueryExtension(fn($, [data]))
- โ added: SchemaEntity supports
schema.setRemoveExtension(fn($, [data]))
- โ added: SchemaEntity supports
schema.setInsertExtension(fn($, [data]))
- โ added: SchemaEntity supports
schema.setUpdateExtension(fn($, [data]))
- โ added: SchemaEntity supports
schema.setPatchExtension(fn($, [data]))
- โ added: SchemaOptions supports
$.extend([data])
for evaluating of all extensions for the current operation - โ added:
WebSocket.keys
property (it contains all keys with connections) - โ added:
threads
directory for server-less functionality - โ added: a global variable called
THREAD
with a name of current thread - โ added:
require('total.js').http(..., { thread: 'thread_name' })
evaluates only specified thread - โ added:
require('total.js').cluster.http(..., { thread: 'thread_name' })
evaluates only specified thread in cluster - added: framework creates a file with app stats in the form
your_init_script_name.js.json
- added: a new config key
allow_stats_snapshot
- โ added: view engine
@{import()}
supports auto-merging JS or CSS files:@{import('default.js + ui.js')}
- โ added:
exports.options
delegate to component inFLOWSTREAM
- โ added:
DatabaseBuilder.autofill()
from DBMS - โ added:
HttpFile.extension
property - โ added:
HttpFile.size
property alias toHttpFile.length
- โ added: auto-session cleaner of unused sessions
- added:
allow_sessions_unused
config key for cleaning of unused sessions - โ added: missing
PATH.schemas
,PATH.operations
andPATH.tasks
- โ added: a new method
PATH.updates
- added: easy updating of applications via
UPDATE(versions, [callback], [pause_server_message])
- โ added: NOSQL counter
.reset([type], [id], [date], [callback])
method- - โ added:
session.listlive(callback)
returns all live items in session - โ added:
controller.ua
returns parsed User-Agent - โ added:
$.ua
returns parsed User-Agent in Schemas, Operations, TaskBuilder,MIDDLEWARE()
andAUTH()
- โ added: support for
.mjs
extensions - โ added: a simple support for DDOS protection
allow_reqlimit : Number
(max. concurent requests by IP just-in-time) - โ added: unit-testing supports colors, added by @dacrhu
- โ added:
String.encryptUID()
as alias forU.encryptUID()
- โ added:
String.decryptUID()
as alias forU.decryptUID()
โก๏ธ Updates :
- โก๏ธ updated:
WEBSOCKET()
supports+
,-
and๐
as authorization flags - โก๏ธ updated:
LOAD()
supportsservice
type - updated: cluster watches
restart
orrestart_NAME_of_THREAD
files for restarting of existing threads - โก๏ธ updated: cluster supports
auto
mode - โก๏ธ updated: cluster supports watcher in
debug
mode - updated:
*.filefs()
,*.filenosql()
,*.imagefs()
,*.imagenosql()
by addingcheckmeta
argument - updated:
$.done([user_instance])
method inAUTH()
, added a new argument calleduser_instance
(optional) - โก๏ธ updated: GZIP is enabled only for JSON bodies which have more than 4096 bytes
- ๐ updated:
.env
parser supports parsing of.env-debug
or.env-release
files according to the mode - โก๏ธ updated: list of user-agents in
String.parseUA()
๐ Fixes :
- ๐ fixed:
ON('error404')
when the route doens't exist - ๐ fixed:
filter
in Schemaworkflows
,transformations
andoperations
- ๐ fixed:
NOSQL()
joins with absolute paths - ๐ fixed:
TABLE()
joins with absolute paths - ๐ fixed:
(random)
subtype inconfig
files - ๐ fixed:
(response)
phrase inROUTE()
for multipleOPERATIONS
- ๐ fixed: a response in
ROUTE()
with mulitple operations if the result contained some error - ๐ fixed: a security bug with a path traversal vulnerability
- ๐ fixed:
debug
watcher forthemes
- ๐ fixed:
generators
in schemas with a new declaration - ๐ fixed: a problem with handling files in 404 action
- ๐ fixed:
startup
directory in bundles - ๐ fixed:
schema.inherit()
didn't copyrequired
fields. - ๐ fixed:
SUCCESS()
serialization withSUCCESS()
argument - ๐ fixed: a critial bug with
UID()
generator - ๐ fixed: clearing of DNS cache
๐ Improvements :
- ๐ improved:
LOGMAIL()
mail format - ๐ improved: starting logs in console output (added IPv4 local address)
- ๐ improved: performance with JSON serialization in
controller.success()
andcontroller.done()
- โ added:
-
v3.3.2 Changes
November 12, 2019Fixes :
- ๐ fixed: default time zone (
utc
is default time zone)
- ๐ fixed: default time zone (
-
v3.3.1 Changes
November 07, 2019News :
- โ added:
RESTBuilder.callback()
which performs.exec()
automatically - โ added:
FLOWSTREAM()
๐ Fixes :
- ๐ fixed:
AUDIT()
method - ๐ fixed: error handling in
controller.invalid()
- ๐ fixed:
req.authorize()
- ๐ fixed: CSS auto-vendor-prefixes, fixed
opacity
with!important
- ๐ fixed:
CONVERT()
a problem with arrays
- โ added:
-
v3.3.0 Changes
September 30, 2019๐ News
- โ added:
NEWTASK(name, declaration)
for creating preddefinedTaskBuilder
- โ added:
TASK(name, taskname, callback, [controller/SchemaOptions/OperationOptions/ErrorBuilder])
for executing preddefinedTaskBuilder
- โ added: a new config key
directory_tasks
forTaskBuilder
- โ added: a global alias
MODIFY()
forF.modify()
- โ added: a global alias
VIEWCOMPILE()
forF.view_compile()
- โ added:
mail.type = 'html'
can behtml
(default) orplain
- โ added:
$.headers
into theSchemaOptions
,OperationOptions
andTaskBuilder
- โ added:
String.parseCSV([delimiter])
returnsObject Array
- โ added:
String.parseUA([structured])
a simple user-agent parser - โ added:
req.useragent([structured])
returns parsed User-Agent - โ added: a new config key
default_crypto
it can rewrite Total.js crypto mechanism (default:undefined
) - added: a new config key
default_crypto_iv
it's an initialization vector (default: generated fromsecret
) or it can contain a customhex
value - ๐ท added: a new config key
allow_workers_silent
can enable/disable silent workers (default:false
) - โ added: a new config sub-type called
random
, example:secret_key (random) : 10
and10
means a length of value - โ added: a new command
clear_dnscache
for clearing DNS cache - โ added: commands
INSTALL('command', 'command_name', function)
for registering commands andCMD(name, [a], [b], [c], [d])
for executing commands - โ added:
ENCRYPTREQ(req, val, [key], [strict])
to encrypt value according to the request meta data - โ added:
DECRYPTREQ(req, val, [key])
to decrypt value according to the request meta data - โ added:
controller.nocache()
- โ added:
controller.nocontent()
- โ added:
REPO
as a global variable - โ added:
FUNC
as a global variable - โ added:
MAIN
as a global variable - โ added:
DEF
as a global variable for defining of behaviour for some operations (alternative toF
) - โ added:
PREF.set(name, [value])
(read+write) orPREF.propname
(only read) for reading/writing a persistent preferences - โ added:
F.onPrefSave = function(obj)
to write preferences - โ added:
F.onPrefLoad = function(next(obj))
to read preferences - โ added:
RESTBuilder.url(url)
which returns a new instance ofRESTBuilder
for chaining - โ added:
restbuilder.keepalive()
enables a keepalive forRESTBuilder
instance - โ added:
SESSION()
management, more in docs - โ added:
controller.sessionid
with ID ofSESSION()
- โ added:
AUTH()
supports a new auth declaration with$
asAuthOptions
likeSchemaOptions
orOperationOptions
- โ added:
AuthOptions
to prototypes - โ added:
ErrorBuilder.length
property (alias for `instance.items.length) - โ added: Schemas
prepare
supportsreq
argument - โ added:
DEF.currencies.eur = function(val) {}
registers a currency formatter - โ added:
DEF.helpers
registers a new view engine helper (F.helpers
is alias for for this object) - โ added:
DEF.validators
is alias for forF.validators
- โ added: usage of currency formatter
Number.currency(currency)
- โ added: new schema type
Number2
with default value isnull
, not zero0
- โ added:
@{json2(model, elementID, key1, key2, key3)}
can serialize data with keys defined into the<script type="application/json">
- โ added: schemas supports
PATCH
and.setPatch()
, only specified field are processed - โ added:
SchemaOptions
supports$.keys
forPATCH
method - โ added:
schema.cl(name)
("cl" means codelist) returns{Array}
a list of values from defined enum/keyvalue - โ added:
schema.props()
returns{Object}
meta info about all defined properties - โ added:
SchemaOptions
,OperationOptions
andTaskOptions
supports$.req
and$.res
properties - โ added:
AUDIT(name, $, [type], message)
a method for audit logs - added: obsolete message to older declaration of middleware, schemas and operations
- added:
U.diffarr(prop, arr_A, arr_B)
for comparing of two arrays - added:
DIFFARR(prop, arr_A, arr_B)
is a global alias forU.diffarr()
- โ added:
global.REQUIRE()
for local modules within app directory - โ added:
global.isWORKER
variable which containstrue
(when the process is executed as a worker) orfalse
- โ added:
ACTION(url, [data], callback)
can evaluate a route without request creation - โ added:
ROUTE('๐ METHOD URL')
, it means that ๐ addsauthorized
flag - โ added:
ROUTE('+METHOD URL')
, it means that++
or+
addsauthorized
flag - โ added:
ROUTE('-METHOD URL')
, it means that--
or-
addsauthorized
flag - โ added:
SchemaOptions
,OperationOptions
,TaskOptions
supports filtered query arguments via$.filter
- โ added:
controller.done([value])
- โ added:
SITEMAP()
as alias toF.sitemap()
- โ added: config key
allow_localize
enables a localization for allHTML
files - โ added:
controller.breadcrumb
returns all sitemap items - โ added:
PAUSESERVER(name, pause)
pauses web server (alias forF.wait()
) - added:
PROXY(endpoint, hostname, [copypath], [before_fn(uri,req,res)], [after_fn(res)])
makes a direct proxy from webserver - โ added:
schema.middleware(function($, next))
for creating simple middlewares for Schema operations - โ added:
FILE404(fn(req, res))
performs a simple fallback for non-existing files - โ added:
$PATCH(schema, model, [options], callback, [controller])
method - โ added:
.env
parser toprocess.env
- โ added:
String.parseENV()
for parsing.env
syntax - โ added:
$.noop()
for custom responses - โ added:
$ACTION(schemaroute, [model], callback, [controller])
evaluates schema - โ added:
process.send('total:restart')
performs a restart of app when the app is in debug mode - โ added:
NOSQLREADER(filename)
for reading different files of NoSQL embedded databases - โ added:
TABLEREADER(filename)
for reading different files of Table embedded databases - โ added:
Mail.use()
an alias forF.useSMTP()
- โ added:
F.onAudit(name, data)
delegate for handling audit logs - โ added: Components support a new features called
Parts
, more in docs
โก๏ธ Updates
- โก๏ธ updated:
$.invalid()
without arguments can return a functionfunction(err)
- โก๏ธ updated: Mail
unsubscribe
appends new header which enablesunsubscribe
in e.g. iOS - โก๏ธ updated:
MODIFY
, handler contains a new argumentcontroller
- โก๏ธ updated:
headers
argument incontroller.proxy
supportsflags: []
for REQEUST method - โก๏ธ updated:
.filefs()
and.filenosql()
supportsdownload
withtrue
or with(name, type) => 'new_name'
(filename
will be read from NoSQL binary file) - โก๏ธ updated:
$.done(arg)
argument@arg
can beboolean
(response will be as a value) or object/primitive value (arg
will be as a value) - โก๏ธ updated:
String.arg(obj, [encode], [def])
addedencode
(true
,json
,html
) anddef
arguments - โก๏ธ updated:
AUTH(req, res, flags, next)
andnext
function can handlecallback(err, user)
- โก๏ธ updated:
REQUEST()
supportskeepalive
flag - โก๏ธ updated:
bundles
mechanism supports merging files--filename
betweenbundles
files - โก๏ธ updated:
String.hash(true)
returns unsigned int - updated:
CONF:default_image_converter
supportsmagick
for new version of ImageMagick - updated:
CONF.default_image_consumption
can contain ZERO value which means disabled optimialization of CPU/memory consumption - updated:
CONF.default_image_consumption
has changed a default value to0
- โก๏ธ updated:
U.parseXML(str, [replace])
andString.parseXML([replace])
contains a new argument calledreplace
- โก๏ธ updated:
LOAD()
added a callback function - โก๏ธ updated: components support
encoding="utf8"
attribute for<file
tag (default:base64
) - โก๏ธ updated:
EventEmitter2
supports a new argumentobj
, example:U.EventEmitter2(obj)
or supports.extend
method:U.EventEmitter2.extend(proto)
- โก๏ธ updated:
UID()
generates new types ofUID
with 100% backward compatibility - โก๏ธ updated:
FILESTORAGE()
now it works in cluster mode
๐ Fixes
- ๐ fixed: schemas validation
- ๐ fixed: error handling in dynamic schemas
- ๐ fixed: CSS variables
- ๐ fixed: CSS variables with additional
!important
clause - ๐ fixed:
controller.proxy()
with Gzip/Deflate compression - ๐ fixed: HTTP status code with
204
inREQUEST()
- ๐ fixed:
cookies
inWEBSOCKETCLIENT
- ๐ fixed:
REQUEST()
withjson
flag and withnull
and''
value - ๐ fixed: rendering components in
layout
- ๐ fixed: resources, there was a bug with reading of value from
default.resource
- ๐ fixed: too many open files in
res.image()
- ๐ fixed: too many open files in
res.filefs()
- ๐ fixed: Schema
Boolean
parser - ๐ fixed: renamed
F.stats.request.path
toF.stats.request.patch
- ๐ fixed: SMTP sender (a problem with auth mechanism with some mail servers)
- ๐ fixed: filter in
F.backup()
- ๐ fixed: paths for stored directories in
F.backup()
- ๐ fixed: uploading files
- ๐ fixed:
U.getExtension()
by @molda
๐ Improvements
- ๐ improved Schemas and error handling
- ๐ improved
res.filefs()
method for nonexistent files
Others
- renamed:
*.routeScript
to*.public_js
- ๐
renamed:
*.routeStyle
to*.public_css
- renamed:
*.routeFont
to*.public_font
- renamed:
*.routeVideo
to*.public_video
- renamed:
*.routeImage
to*.public_image
- renamed:
*.routeDownload
to*.public_download
- โ
renamed:
*.routeStatic
to*.public
- ๐ renamed:
controller.viewCompile()
tocontroller.view_compile()
- ๐ renamed: event
cache-set
tocache_set
: - renamed: event
controller-render-meta
tocontroller_render_meta
- ๐ renamed: event
request-end
torequest_end
- ๐ renamed: event
websocket-begin
towebsocket_begin
- ๐ renamed: event
websocket-end
towebsocket_end
- ๐ renamed: event
request-begin
torequest_begin
- ๐ renamed: event
upload-begin
toupload_begin
- ๐ renamed: event
upload-end
toupload_end
- ๐ renamed: event
cache-expire
tocache_expired
- โ removed: backward compatibility with older version of Node.js < 10
- โ removed:
F.hash()
, alternativeString.prototype.hash()
- โ removed:
controller.hash()
, alternativeString.prototype.hash()
- โ added:
-
v3.2.0 Changes
February 13, 2019News :
- โ added:
WORKER()
alias toF.worker()
- โ added:
WORKER2()
alias toF.worker2()
- โ added:
F.cluster.https()
- โ added:
TaskBuilder.done2([send_value])
returnsfunction
with wrapped.done()
- โ added:
TaskBuilder.success2([send_value])
returnsfunction
with wrapped.success()
- โ added:
TaskBuilder.next2(name)
returnsfunction
with wrapped.next()
- โ added: new
RESTBuilder
aliases.DELETE()
,.PUT()
,.POST()
,.PATCH() and
.GET()` - โ added:
schema.before(key, (value, model, index) => value)
is a simple and new alternative toschema.setPrepare()
- โ added:
SchemaInstance.$parent
returns a parent schema (if the schema is nested schema) - โ added:
SchemaOptions.redirect(url)
can perform a redirect from the schema - โ added:
OperationOptions.redirect(url)
can perform a redirect from the operation - โ added:
.ics
extension as acceptable file for the web server
โก๏ธ Updates :
- โก๏ธ updated:
F.worker2()
returns entirestdout
buffer in thecallback(err, buffer)
- โก๏ธ updated:
$options()
by addingdisabled
key - โก๏ธ updated:
String.ROOT()
by adding a support for jComponentAJAX()
calls - โก๏ธ updated:
RESTBuilder.method(method, [data])
addeddata
argument - โก๏ธ updated:
String.parseDate([format])
addedformat
argument - โก๏ธ updated: SMTP settings contain
heloid
asheloidentifier
(manually can be definedHELO
orEHLO
command) - โก๏ธ updated: SMTP hostname is computed from email if SMTP is not specified
๐ Fixes :
- ๐ fixed: critical bug with security + improved security
- ๐ fixed: system routing
- ๐ fixed: NoSQL sorting, solved a strange problem
- ๐ fixed:
U.request()
withGET
method by @khaledkhalil94 (it doesn't send JSON data ifdata
is null/undefined) - ๐ fixed:
F.wait()
in WebSocket - ๐ fixed:
String.capitalize(true)
- ๐ fixed:
REQUEST()
uploading of additional multipart/form-data (removed encoding) - ๐ fixed: view engine conditions defined in
<script>
- ๐ fixed: auto-redirects in
U.download()
- ๐ fixed: image streams resizing
- ๐ fixed:
@{'%config_key'}
a problem with rendering a value with'
- โ added: