Releases: totaljs/framework
Releases · totaljs/framework
v3.4.5
v3.4.4
News:
- 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
v3.4.3
News:
- 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
v3.4.1
News:
- 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)
v3.4.0
News:
- 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()
v3.3.2
Fixes:
- fixed: default time zone (
utc
is default time zone)
v3.3.1
News:
- 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
v3.3.0
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()
, alte...
v3.2.0
News:
- 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'
v3.1.0
NEWS:
- added: CSS variables support default values
border-radius: $radius || 10px
- added: NoSQL storage
.find(beg, end, [threads])
+.count(beg, end, [threads])
+ '.scalar(beg, end, type, field, [threads])' with multiple thread support - added:
U.reader()
- added:
bundles
supports merging files between bundle and project, project file must start with e.g.--name.js
- added:
.bundlesignore
support with similiar functionality like.gitignore
- added: support for
SameSite
cookie attribute - added:
RUN()
for executing multiple Total.js operations - added: a new global alias
CONF
(it's a reference to config) forF.config
- added: a new global alias
FUNC
(it's a reference to functions) forF.functions
- added:
DatabaseBuilder.arg(key, value)
for adding an dynamic argument - added: NOSQL/TABLE modify supports
!field
as boolean toggle - added: NOSQL/TABLE modify supports a new type
$age: 'js_code'
with some JS code - added: NOSQL/TABLE update supports a new type
'js_code'
with some JS code - added: a new config item
default-restbuilder-timeout : 10000
- added: a new config item
default-cors : https://www.totaljs.com, https://www.componentator.com
which allows originators forCORS()
method - added: a new config item
default-request-maxkeys : 33
for restricting query max. keys - added: a new config item
logger : false
which enables logging for Middleware, Schemas and Operations - added: a new config item
bundling : shallow
which enables shallow bundling (ifbundle.json
exists then the bundles won't be extracted) - added:
SchemaOptions
andOperationOptions
supports$.cancel()
method - added:
CACHE(name, [value], [expire], [persistent])
alias forF.cache.get2()
andF.cache.set()
orF.cache.set2()
- added: encryption of config values
- added:
F.refresh()
for refreshing of internal cache - added:
DatabaseBuilder.each(fn)
for browsing of evaluated records - added: Bundles can be downloaded from URL addresses
- added:
ONCE()
alias toF.once()
- added:
image.define(value)
performsconvert -define 'value'
- added: Total.js JS files (+ packages) tarted with
.
(dot) or ended with-bk
won't be processed - added: A new builder called
TaskBuilder
for creating custom tasks in Schemas or Operations - added:
WebSocket.send2(message, [comparer(client, message)], [replacer])
a new method for better sending frames - addde:
PATH
as a global alias forF.path
UPDATES:
- updated:
debug
mode creates astart_name_script.pid
instead ofdebug.pid
- updated:
NEWOPERATION()
supportsrepeat
,stop
andbinderror
arguments (more in docs) - updated: routing, now it supports operations in the form
ROUTE('.. * --> @save_operation @load_operation (response)')
- updated:
ROUTE()
supports multiple HTTP method declarationROUTE('GET,POST,PUT /something/', action)
- updated:
ROUTE()
supports dynamic schemas - updated:
REQUEST()
can return binary data if the content-type is nottext/*
orapplication/*
- updated: NoSQL joins support array values
- updated:
ROUTING(id:|search, [flags])
method - updated:
F.path.mkdir(path, [cache])
can cache a current satte (default: false) - updated:
controller.all()
can returnArray
of all WebSocketClient - updated: startup info by adding user name
- updated:
LOCALIZE()
nowurl
arg can be a function which replacesF.onLocale
FIXES:
- fixed: a critical bug with storing uploaded files via
httpfile.fs()
orhttpfile.nosql()
- fixed: a critical bug with JavaScript minificator
- fixed: a critical bug with NoSQL counter and freezing app
- fixed: a critical bug with rendering of multiple async components
- fixed: a critical bug with GZIP compression (sometimes appeared in Safari)
- fixed:
nosql.update()
andnosql.modify()
methods if the first argument is a function - fixed:
F.wait()
in the test mode - fixed:
LOCALIZE()
for nested directories - fixed: sending of error handling when WebSocketClient is starting (for example:
unauthorized
) - fixed:
versions
andauto
feature with enabledF.wait()
- fixed:
versions
andauto
feature with direct link to file - fixed:
LOAD('release')
a release mode - fixed:
SchemaInstance.$clean()
for nested schemas - fixed: extracting
bundles
(added/flow/
and/dashboard/
) - fixed: subdomain routing for
localhost
- fixed: service for database cleaner
- fixed: rendering group of components
- fixed: RESTBuilder - JSON request without param sends an empty object
- fixed:
$MAKE()
withcallback
- fixed:
String.slug()
for UTF - Chinese/Japan/Arabic/etc. chars - fixed: async rendering of
components
- fixed: RESTBuilder cache works only if the response status is
200
- fixed: compressing CSS with
\t
tabs - fixed:
controller.autoclear()
- fixed:
controller.proxy()
- fixed:
repeat
mode inSCHEDULE()
- fixed:
--inspect
argument for Workers by Tema Smirnov - fixed: TLS in SMTP mail sender
- fixed: applying of versions
- fixed: unit-tests reads only
javascript
files - fixed:
controller.invalid()
a problem with ErrorBuilder as a argument
REMOVED:
- removed:
F.config.debug
- removed:
controller.isDebug
IMPROVEMENTS:
- improved: NoSQL reader
- improved:
UID()
-> now it changes a random hash each minute - improved: CORS
- improved: rendering of components