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:
sqlextension toU.getContentType() - added:
F.stats.performance.usagewhich contains percentual usage of the thread
Updates:
- updated:
SchemaOptionsmethod$.response([index/operation_name]), e.g.$.response('workflow.NAME') - updated: snapshot
startscript.js.jsoncontains tabs instead of spaces - updated:
DatabaseBuilder.rule(rule, [param]), supports string declaration of filter function - updated:
URLvalidation
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:
ErrorinCLONE()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.repoas alias toSchemaInstance.model.$$repository - added: a new type
CONVERT syntaxtoschema.define()(more in docs) - added:
SchemaEntity.verify(name, function($), [cache])for async verification of values - added:
TEMPvariable as a new global variable (it's cleaned every 7 minutes) - added:
CONF.allow_persistent_images: truewhich 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:
RESTBuilderparses 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 addingparamsargument for comparer function - updated:
Websocket.encodedecodecan enable/disable easily encoding of messages - updated: bundling skips all bundles with
-bk.bundlein filename - updated: bundle filenames are displayed in console
- updated:
UPDATE()method by addingnoarchiveargument - updated:
TEST()method supports[subdomain]keyword andMETHOD urlin URL address - updated:
MODIFY([filename], fn)by addingfilenameargument - updated: background of schedulers by @fgnm
- updated:
U.download()by addingparamargument - updated:
U.request()by addingparamargument - updated:
schema.cl(name, [value])method by addingvalueargument for replacing of existing code-list - updated: Tangular version to
v4.0.0
Improvements:
- improved:
filenamein 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.
#000000to#000
Fixes:
- fixed: localization in
totaljsexecutable script - fixed: phone validation
- fixed:
DOWNLOAD() - fixed:
Number.VAT()by Tomas Novak - fixed: debugging mode in Node.js v14
- fixed:
allow_compile_htmlin static files - fixed:
ROUTE()method, there was a problem with spacesGET /* - fixed:
ACTION()with json output - fixed: controller in
$ACTION()with usedgetandqueryactions - fixed:
PATCHmethod in$ACTION() - fixed:
schema.allow()inPATCHmethod - fixed: image resizing in debug-mode
v3.4.1
News:
- added:
SchemaOptions.parentreturns a parent model - added: Tangular template engine (experimental)
- added:
String.makeid()for creating of unique identifier from string - added: a new property called
message.uatoFLOWSTREAM()
Updates:
- updated:
HttpFile.fs()by addingidargument for updating of existing file - updated: default value for
allow_ssc_validationtotrue
Fixes:
- fixed:
String.parseDate(format)with defined format - fixed: inheriting of controllers between schemas
- fixed:
MailMessage.attachments() - fixed: calling of
F.snapshotstatsin 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 theconfigfiles - 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.keysproperty (it contains all keys with connections) - added:
threadsdirectory for server-less functionality - added: a global variable called
THREADwith 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.optionsdelegate to component inFLOWSTREAM - added:
DatabaseBuilder.autofill()from DBMS - added:
HttpFile.extensionproperty - added:
HttpFile.sizeproperty alias toHttpFile.length - added: auto-session cleaner of unused sessions
- added:
allow_sessions_unusedconfig key for cleaning of unused sessions - added: missing
PATH.schemas,PATH.operationsandPATH.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.uareturns parsed User-Agent - added:
$.uareturns parsed User-Agent in Schemas, Operations, TaskBuilder,MIDDLEWARE()andAUTH() - added: support for
.mjsextensions - 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()supportsservicetype - updated: cluster watches
restartorrestart_NAME_of_THREADfiles for restarting of existing threads - updated: cluster supports
automode - updated: cluster supports watcher in
debugmode - updated:
*.filefs(),*.filenosql(),*.imagefs(),*.imagenosql()by addingcheckmetaargument - 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:
.envparser supports parsing of.env-debugor.env-releasefiles according to the mode - updated: list of user-agents in
String.parseUA()
Fixes:
- fixed:
ON('error404')when the route doens't exist - fixed:
filterin Schemaworkflows,transformationsandoperations - fixed:
NOSQL()joins with absolute paths - fixed:
TABLE()joins with absolute paths - fixed:
(random)subtype inconfigfiles - 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:
debugwatcher forthemes - fixed:
generatorsin schemas with a new declaration - fixed: a problem with handling files in 404 action
- fixed:
startupdirectory in bundles - fixed:
schema.inherit()didn't copyrequiredfields. - 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 (
utcis 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
opacitywith!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_tasksforTaskBuilder - added: a global alias
MODIFY()forF.modify() - added: a global alias
VIEWCOMPILE()forF.view_compile() - added:
mail.type = 'html'can behtml(default) orplain - added:
$.headersinto theSchemaOptions,OperationOptionsandTaskBuilder - 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_cryptoit can rewrite Total.js crypto mechanism (default:undefined) - added: a new config key
default_crypto_ivit's an initialization vector (default: generated fromsecret) or it can contain a customhexvalue - added: a new config key
allow_workers_silentcan enable/disable silent workers (default:false) - added: a new config sub-type called
random, example:secret_key (random) : 10and10means a length of value - added: a new command
clear_dnscachefor 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:
REPOas a global variable - added:
FUNCas a global variable - added:
MAINas a global variable - added:
DEFas 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 ofRESTBuilderfor chaining - added:
restbuilder.keepalive()enables a keepalive forRESTBuilderinstance - added:
SESSION()management, more in docs - added:
controller.sessionidwith ID ofSESSION() - added:
AUTH()supports a new auth declaration with$asAuthOptionslikeSchemaOptionsorOperationOptions - added:
AuthOptionsto prototypes - added:
ErrorBuilder.lengthproperty (alias for `instance.items.length) - added: Schemas
preparesupportsreqargument - added:
DEF.currencies.eur = function(val) {}registers a currency formatter - added:
DEF.helpersregisters a new view engine helper (F.helpersis alias for for this object) - added:
DEF.validatorsis alias for forF.validators - added: usage of currency formatter
Number.currency(currency) - added: new schema type
Number2with 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
PATCHand.setPatch(), only specified field are processed - added:
SchemaOptionssupports$.keysforPATCHmethod - 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,OperationOptionsandTaskOptionssupports$.reqand$.resproperties - 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.isWORKERvariable 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 🔒 addsauthorizedflag - added:
ROUTE('+METHOD URL'), it means that++or+addsauthorizedflag - added:
ROUTE('-METHOD URL'), it means that--or-addsauthorizedflag - added:
SchemaOptions,OperationOptions,TaskOptionssupports filtered query arguments via$.filter - added:
controller.done([value]) - added:
SITEMAP()as alias toF.sitemap() - added: config key
allow_localizeenables a localization for allHTMLfiles - added:
controller.breadcrumbreturns 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:
.envparser toprocess.env - added:
String.parseENV()for parsing.envsyntax - 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
unsubscribeappends new header which enablesunsubscribein e.g. iOS - updated:
MODIFY, handler contains a new argumentcontroller - updated:
headersargument incontroller.proxysupportsflags: []for REQEUST method - updated:
.filefs()and.filenosql()supportsdownloadwithtrueor with(name, type) => 'new_name'(filenamewill be read from NoSQL binary file) - updated:
$.done(arg)argument@argcan beboolean(response will be as a value) or object/primitive value (argwill be as a value) - updated:
String.arg(obj, [encode], [def])addedencode(true,json,html) anddefarguments - updated:
AUTH(req, res, flags, next)andnextfunction can handlecallback(err, user) - updated:
REQUEST()supportskeepaliveflag - updated:
bundlesmechanism supports merging files--filenamebetweenbundlesfiles - updated:
String.hash(true)returns unsigned int - updated:
CONF:default_image_convertersupportsmagickfor new version of ImageMagick - updated:
CONF.default_image_consumptioncan contain ZERO value which means disabled optimialization of CPU/memory consumption - updated:
CONF.default_image_consumptionhas 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<filetag (default:base64) - updated:
EventEmitter2supports a new argumentobj, example:U.EventEmitter2(obj)or supports.extendmethod:U.EventEmitter2.extend(proto) - updated:
UID()generates new types ofUIDwith 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
!importantclause - fixed:
controller.proxy()with Gzip/Deflate compression - fixed: HTTP status code with
204inREQUEST() - fixed:
cookiesinWEBSOCKETCLIENT - fixed:
REQUEST()withjsonflag and withnulland''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
Booleanparser - fixed: renamed
F.stats.request.pathtoF.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:
*.routeScriptto*.public_js - renamed:
*.routeStyleto*.public_css - renamed:
*.routeFontto*.public_font - renamed:
*.routeVideoto*.public_video - renamed:
*.routeImageto*.public_image - renamed:
*.routeDownloadto*.public_download - renamed:
*.routeStaticto*.public - renamed:
controller.viewCompile()tocontroller.view_compile() - renamed: event
cache-settocache_set: - renamed: event
controller-render-metatocontroller_render_meta - renamed: event
request-endtorequest_end - renamed: event
websocket-begintowebsocket_begin - renamed: event
websocket-endtowebsocket_end - renamed: event
request-begintorequest_begin - renamed: event
upload-begintoupload_begin - renamed: event
upload-endtoupload_end - renamed: event
cache-expiretocache_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])returnsfunctionwith wrapped.done() - added:
TaskBuilder.success2([send_value])returnsfunctionwith wrapped.success() - added:
TaskBuilder.next2(name)returnsfunctionwith wrapped.next() - added: new
RESTBuilderaliases.DELETE(),.PUT(),.POST(),.PATCH() and.GET()` - added:
schema.before(key, (value, model, index) => value)is a simple and new alternative toschema.setPrepare() - added:
SchemaInstance.$parentreturns 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:
.icsextension as acceptable file for the web server
Updates:
- updated:
F.worker2()returns entirestdoutbuffer in thecallback(err, buffer) - updated:
$options()by addingdisabledkey - updated:
String.ROOT()by adding a support for jComponentAJAX()calls - updated:
RESTBuilder.method(method, [data])addeddataargument - updated:
String.parseDate([format])addedformatargument - updated: SMTP settings contain
heloidasheloidentifier(manually can be definedHELOorEHLOcommand) - 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()withGETmethod by @khaledkhalil94 (it doesn't send JSON data ifdatais 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:
bundlessupports merging files between bundle and project, project file must start with e.g.--name.js - added:
.bundlesignoresupport with similiar functionality like.gitignore - added: support for
SameSitecookie 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
!fieldas 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.comwhich allows originators forCORS()method - added: a new config item
default-request-maxkeys : 33for restricting query max. keys - added: a new config item
logger : falsewhich enables logging for Middleware, Schemas and Operations - added: a new config item
bundling : shallowwhich enables shallow bundling (ifbundle.jsonexists then the bundles won't be extracted) - added:
SchemaOptionsandOperationOptionssupports$.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-bkwon't be processed - added: A new builder called
TaskBuilderfor creating custom tasks in Schemas or Operations - added:
WebSocket.send2(message, [comparer(client, message)], [replacer])a new method for better sending frames - addde:
PATHas a global alias forF.path
UPDATES:
- updated:
debugmode creates astart_name_script.pidinstead ofdebug.pid - updated:
NEWOPERATION()supportsrepeat,stopandbinderrorarguments (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 returnArrayof all WebSocketClient - updated: startup info by adding user name
- updated:
LOCALIZE()nowurlarg 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:
versionsandautofeature with enabledF.wait() - fixed:
versionsandautofeature 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
\ttabs - fixed:
controller.autoclear() - fixed:
controller.proxy() - fixed:
repeatmode inSCHEDULE() - fixed:
--inspectargument for Workers by Tema Smirnov - fixed: TLS in SMTP mail sender
- fixed: applying of versions
- fixed: unit-tests reads only
javascriptfiles - 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