All Versions
17
Latest Version
Avg Release Cycle
60 days
Latest Release
1409 days ago
Changelog History
Page 2
Changelog History
Page 2
-
v3.1.0 Changes
December 07, 2018NEWS :
- ➕ 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
- ➕ added: CSS variables support default values
-
v3.0.0 Changes
August 01, 2018News :
- ➕ added: (IMPORTANT) bundles
- ➕ added: (IMPORTANT) Total.js components can have async delegate
- ➕ added: (IMPORTANT) Total.js components support nested public files encoded in base64
- ➕ added: (IMPORTANT) NoSQL worker
- ➕ added: (IMPORTANT) NoSQL embedded storage for smaller big data / IoT
- ➕ added:
debugging
supports live reloading - ➕ added: new schema operations:
schema.setInsert()
andschema.setUpdate()
- ➕ added:
RESTBuilder.patch([data])
- ➕ added:
RESTBuilder.type(new-content-type)
- ➕ added:
CONVERT(obj, schema)
for quick converting values like Schema (more in docs.) - ➕ added:
Capitalize2
schema type which converts only the first char - ➕ added:
MailMessage.high()
setshigh
priority of the email messsage - ➕ added:
MailMessage.low()
setslow
priority of the email messsage - ➕ added:
MailMessage.confidential()
setsSensitivity
header withconfidential
value - ➕ added:
MailMessage.attachmentnosql(db, id, [name])
sends a file from NoSQL embedded database - ➕ added:
MailMessage.attachmentfs(storage_name, id, [name])
sends a file from FileStorage - ➕ added:
SchemaBuilderEntity.$stop()
stops the async list - ➕ added:
SchemaOptions.stop()
alias to$.model.$stop()
- ➕ added:
SchemaOptions.next()
alias to$.model.$next()
- ➕ added:
SchemaOptions.output()
alias to$.model.$output()
- ➕ added:
SchemaOptions.clean()
alias to$.model.$clean()
- ➕ added:
SchemaOptions.response()
alias to$.model.$response([index])
- ➕ added:
SchemaOptions.$async(callback, [index])
alias to$.model.$async()
- ➕ added:
SchemaOptions.$get([options], [callback])
alias to$.model.$get()
- ➕ added:
SchemaOptions.$insert([options], [callback])
alias to$.model.$insert()
- ➕ added:
SchemaOptions.$query([options], [callback])
alias to$.model.$query()
- ➕ added:
SchemaOptions.$remove([options], [callback])
alias to$.model.$remove()
- ➕ added:
SchemaOptions.$save([options], [callback])
alias to$.model.$save()
- ➕ added:
SchemaOptions.$update([options], [callback])
alias to$.model.$update()
- ➕ added:
SchemaOptions.$workflow(name, [options], [callback])
alias to$.model.$workflow()
- ➕ added:
SchemaOptions.$transform(name, [options], [callback])
alias to$.model.$transform()
- ➕ added:
SchemaOptions.$operation(name, [options], [callback])
alias to$.model.$operation()
- ➕ added:
SchemaOptions.$hook(name, [options], [callback])
alias to$.model.$hook()
- ➕ added:
SchemaOptions.stop()
alias to$.model.$stop()
- ➕ added: a new route flag type
&group
something likeroles
but groups aren't evaluated - ➕ added:
route.groups
with defined groups - ➕ added: NoSQL
database.listing([view])
which generates a listing response - ➕ added:
DatabaseBuilder.insert(fn(doc))
can modify a document afterupdate
ormodify
hasinsert
mode - ➕ added:
DatabaseBuilder.query(code)
can contain a raw JS condition in the form e.g.doc.age > 18 && doc.age < 33
- ➕ added:
DatabaseBuilder.regexp(name, regexp)
RegExp search in strings - ➕ added:
DatabaseBuilder.fulltext(name, regexp, [weight])
full text search in strings, more info in docs. - ➕ added:
DatabaseBuilder.hour(name, [compare], value)
creates a condition for hours - ➕ added:
DatabaseBuilder.minute(name, [compare], value)
creates a condition for minutes - ➕ added:
Database.find2()
performs faster and reverse reading of documents (from end to begin of the file) - ➕ added:
Database.stream(fn, [repository], [callback(err, repository, count)])
for streaming documents - ➕ added:
Database.lock(callback(next))
locks all internal DB operations - ➕ added:
Database.ready(callback)
executes a callback when DB is ready to use (only for special cases if you use indexes) - ➕ added: new directory
schemas
with a new configuration item `directory-schemas' - ➕ added: new directory
operations
with a new configuration item `directory-operations' - ➕ added:
String.crc32([unsigned])
- ➕ added:
U.hash('crc32')
andU.hash('crc32unsigned')
- ➕ added: config
nosql-worker' for enabling worker for NoSQL embedded database (default:
false`) - ➕ added: config
nosql-inmemory' can contain name of databases e.g. (
users, products`) or String Array - ➕ added: config
nosql-cleaner
for cleaning databases from removed documents (default:1440
=== 24 hours) - ➕ added: config
nosql-logger
(defaulttrue
) enables simple logs when re-indexing and cleaning - ➕ added: config
security.txt
for auto-generating security.txt content (more in docs) - ➕ added: config
default-proxy
for default web proxy server - ➕ added: config
allow-cache-cluster
(defaulttrue
) allow/disallow cache synchronization - ➕ added:
GUID()
a global alias forU.GUID()
- ➕ added:
VIEW()
a global alias forF.view()
- ➕ added:
SchemaBuilderEntity.$response([index])
returns a specific response from an operation inasync
queue - ➕ added:
$SAVE(schema, model, [options], [callback], [controller])
performsschema.save()
- ➕ added:
$INSERT(schema, model, [options], [callback], [controller])
performsschema.insert()
- ➕ added:
$UPDATE(schema, model, [options], [callback], [controller])
performsschema.update()
- ➕ added:
$REMOVE(schema, [options], [callback], [controller])
performsschema.remove()
- ➕ added:
U.streamer2()
same functionality asU.streamer()
but it returnsBuffer
instead ofString
- ➕ added:
Number.round([precision])
- ➕ added:
UID([type])
supports custom types, e.g.UID('users')
orUID('orders')
- ➕ added:
REQUEST()
global method, it's alias toU.request()
- ➕ added:
NOW
global property, it's alias toF.datetime
- ➕ added:
DatabaseBuilder.promise()
- ➕ added:
RESTBuilder.promise()
- ➕ added:
RESTBuilder.plain()
it returns a raw string from the response body - ➕ added:
versions
file supportsauto
value for generating auto-checksum of files - ➕ added:
F.load()
supportstest
- ➕ added: NoSQL binary supports
custom
small data attributes - ➕ added: CSS and JS supports a simple View Engine markup (config + resources + F.global)
- ➕ added:
controller.split
alias tocontroller.req.split
- ➕ added: nicer error response messages
- ➕ added:
RESTBuilder.proxy(proxy)
for HTTP proxy - ➕ added:
U.request()
supports a new flagproxy
, for exampleproxy 127.0.0.1:8080
- ➕ added: NoSQL database a new event
change
, more in docs - 0️⃣ added:
schema.define()(DEFAULT_VALUE)
addedDEFAULT_VALUE
- ➕ added:
TESTUSER([user])
for faking ofF.onAuthorize
delegate, targeted for unit-testing only - ➕ added:
G
as a global alias forF.global
- ➕ added:
ERROR([name])
is an improvedF.error()
without arguments - ➕ added: a simple support for
.heic
and.heif
image format - ➕ added:
controller.sitemap_url2()
- ➕ added:
controller.sitemap_name2()
- ➕ added:
@{sitemap_url2()}
- ➕ added:
@{sitemap_name2()}
- ➕ added:
F.syshash
contains a simple MD5 hash with OS info - ➕ added:
SchemaEntity.clear()
for removing all current definition - ➕ added: new view engine markup
@{#}
for simulating of root URL - ➕ added: new view engine command
@{root}
for getting sub-root path - ➕ added:
String.ROOT()
for replacing@{#}
markup in strings - ➕ added:
U.decryptUID(value, key)
for encrypting number/string values - ➕ added:
U.encryptUID(value, key)
for decrypting of number/string values - ➕ added:
F.config['secret-uid']
as a hidden secret for encrypting/decrypting values - ➕ added:
F.dir(path)
for changing of root directory - ➕ added:
NOSQL()/TABLE().memory(count, [size])
for memory consumption, more in docs - ➕ added:
HttpFile.fs(storage_name, [custom], [callback])
saves a file into the FileStorage - ➕ added:
HttpFile.nosql(db_name, [custom], [callback])
saves a file into the FileStorage - ➕ added:
res.filefs(storage_name, id, [download], [headers], [callback])
returns file from FileStorage - ➕ added:
res.filenosql(db_name, id, [download], [headers], [callback])
returns file from NoSQL binary - added:
res.imagefs(storage_name, id, image_make_fn, [headers], [callback])
returns file from FileStorage - added:
res.imagenosql(db_name, id, image_make_fn, [headers], [callback])
returns file from NoSQL binary - ➕ added: new stats
F.stats.performance
contains count ofrequest
andfile
per minute - ➕ added: new method
controller.operation(name, value, [callback], [options])
for evaluating of operation
⚡️ Updates :
- ⚡️ updated: (IMPORTANT) NoSQL binary divides files to independent directories for 1000 files per directory
- ⚡️ updated:
GROUP()
by adding a new argumenturl_prefix
- ⚡️ updated:
NEWSCHEMA()
supportsNEWSCHEMA('group/name')
- ⚡️ updated:
ROUTE()
, extended syntax for schemas, for example:Schema --> @name
(more in docs.) - ⚡️ updated:
ROUTE()
supports a new HTTP method definitionROUTE('GET /api/users/')
,ROUTE('POST /api/users/')
, etc. - ⚡️ updated:
ROUTE()
supports a schema definition directly in the URLROUTE('GET /api/users/ *User --> @save')
, etc. - ⚡️ updated:
tpm
supports a new command calledbundle
, for example:tpm bundle cms
- ⚡️ updated:
F.restore()
filter can return a new filename (for files only) - ⚡️ updated:
@{import('livereload')}
or@{import('livereload wss://mywebsite.com')}
supportslivereload
value and it's rendered indebug
mode only - ⚡️ updated: information after the framework is started
- ⚡️ updated:
schema.define('name', null)
removes a schema field - ⚡️ updated: Chunker supports
compression
, defaulttrue
- ⚡️ updated: Chunker supports
autoremove
processed files ineach()
orread()
method, defaulttrue
- ⚡️ updated:
String.parseConfig(def, [onError])
can handle errors better - ⚡️ updated:
middleware
, now Total.js supports new declarationF.middleware(function($) {})
- ⚡️ updated:
F.wait()
HTML template - ⚡️ updated: JavaScript compressor, now optimizes multiple
var
declarations - ⚡️ updated:
CORS()
without arguments for all routes, methods and origins - ⚡️ updated:
CORS()
tries to join multiple same preferences to one - ⚡️ updated:
CORS(path)
without additional arguments allows all HTTP methods - ⚡️ updated:
U.keywords()
for Chinese/Japan characters - ⚡️ updated:
@{import()}
by addingmanifest
value linked to/manifest.json
- ⚡️ updated:
F.use()
supportsfunction
instead ofmiddleware
name - ⚡️ updated: improved crypto algorithm
- ⚡️ updated: decreased a maximum count of keys to
33
from69
when the query string is parsing - ⚡️ updated: extended
schema.required(name, (model, workflow) => workflow.update)
, more in docs. - ⚡️ updated:
$MAKE(schema, model, [filter/workflows], ...)
supportsworkflows
(array or object) instead of filter forschema.required()
- ⚡️ updated:
OPERATION()
by addingcontroller
🛠 Fixes :
- 🛠 fixed: mail attachments
- 🛠 fixed: mail
message.manually()
- 🛠 fixed: WebSocket comparing of
origin
header - 🛠 fixed: uninstalling CORS routes
- 🛠 fixed: cache for
favicon
- 🛠 fixed:
Date.extend()
- 🛠 fixed:
String.isJSON()
validator - 🛠 fixed:
String.parseDate()
now it parses date to UTC correctly - 🛠 fixed:
Date.format()
now it formats a date as UTC correctly - 🛠 fixed: HTML compressor with
\r\n
(Windows line endings) - 🛠 fixed: schema validation
- 🛠 fixed:
U.atob()
- 🛠 fixed:
U.btoa()
- 🛠 fixed: schema field can be changed dynamically
- 🛠 fixed:
String.arg()
- 🛠 fixed:
controller.href()
with Array values - 🛠 fixed:
U.get()
a problem with path with-
- 🛠 fixed:
U.set()
a problem with path with-
- 🛠 fixed:
F.path.mkdir()
in Windows and Linux
🔄 Changes :
- replaced: config
disable-clear-temporary-directory
toallow-clear-temp : true|false
- replaced: config
disable-strict-server-certificate-validation
toallow-ssc-validation : true|false
- 0️⃣ replaced: config
default-websocket-request-length
todefault-websocket-maxlength
- 0️⃣ replaced: config
default-request-length
todefault-request-maxlength
- 0️⃣ replaced: config
default-maximum-file-descriptors
todefault-maxopenfiles
- replaced:
controller.proxy()
functionality (the name remains) viacontroller.proxy2()
functionality
✂ Removed :
- ✂ removed:
F.responseFile()
- ✂ removed:
F.responsePipe()
- ✂ removed:
F.responseImage()
- ✂ removed:
F.responseImageWithoutCache()
- ✂ removed:
F.responseStream()
- ✂ removed:
F.responseBinary()
- ✂ removed:
F.responseContent()
- ✂ removed:
F.responseRedirect()
- ✂ removed:
F.response400()
- ✂ removed:
F.response401()
- ✂ removed:
F.response404()
- ✂ removed:
F.response408()
- ✂ removed:
F.response431()
- ✂ removed:
F.response500()
- ✂ removed:
F.response501()
- ✂ removed:
F.responseStatic()
- ✂ removed:
F.setModified()
- ✂ removed:
F.notModified()
- ✂ removed:
F.responseCode()
- ✂ removed:
F.noCache()
- ✂ removed:
controller.$modified()
- ✂ removed:
controller.$etag()
👌 Improvements :
- 👌 improved:
debug
mode timing with improved consumption - 👌 improved: performance (+20%) NoSQL embedded database
- 👌 improved: reading performance (+5%) in
U.streamer()
- 👌 improved: CSS compressor
- 👌 improved: CORS processing
- 👌 improved: internal encryption/decryption mechanism
-
v2.9.4 Changes
February 24, 2018Fixes :
- 🛠 fixed: mail attachments
- 🛠 fixed: comparing
origin
header in WebSocket - 🛠 fixed: unit-testing
-
v2.9.3 Changes
February 05, 2018News :
- ➕ added:
String.arg(obj)
for a simple templatingHello {variable}!
- ➕ added: new event
ON('@controllername', function() {})
-> is executed if the controller is evaluated
⚡️ Updates :
- ⚡️ updated: RESTBuilder default headers are lower-case
- ⚡️ updated:
content-disposition
header by addingutf-8
according to RFC 5987
🛠 Fixes :
- 🛠 fixed: a missing property
controller.params
in WebSocket controller - 🛠 fixed:
$ASYNC()
execution in some cases - 🛠 fixed:
SCRIPT()
code with comments - 🛠 fixed: a callback reference in
OPERATION()
- 🛠 fixed: cache after route is removed
- 🛠 fixed:
409
system route - 🛠 fixed: requests with
range
header and bad values - 🛠 fixed:
clearSchedule()
- 🛠 fixed:
Date.extend()
problem with months - 🛠 fixed: NoSQL counter reading stats
- ➕ added:
-
v2.9.2 Changes
January 18, 2018News :
- ➕ added:
controller.html(body, [headers])
- ➕ added:
F.cluster.master(name, [data])
- for child processes, this method emits an event in master process - ➕ added:
F.cluster.on(name, callback(data))
- master event listener - ➕ added:
LOGMAIL()
global alias forF.logmail()
- ➕ added:
MAIL()
global alias forF.mail()
- ➕ added: own implementation of
onFinished
- ➕ added:
RESTBuilder.cookies(obj)
can set cookies as raw object - ➕ added:
RESTBuilder.cook([true/false])
enables persistent cookies - ➕ added:
SchemaOptions.params
which returns dynamic params from the controller's action - ➕ added:
SchemaOptions.done([arg])
as a callback (contains wrapped SUCCESS()) - ➕ added:
SchemaOptions.DB()
which returnsDB(this.error)
instance (for SQL Agent) - ➕ added:
OperationOptions.done([arg])
as a callback (contains wrapped SUCCESS()) - ➕ added:
OperationOptions.DB()
which returnsDB(this.error)
instance (for SQL Agent) - ➕ added: static method
Image.measure(type, buffer)
for measuring width/height of image - ➕ added:
EACHOPERATION(function(name) {})
for obtaining all registered operations - ➕ added:
controller.params
which returns dynamic params from the action
⚡️ Updates :
- 🚀 updated:
F.load()
, now supportsstring
fordebug
orrelease
mode - ⚡️ updated:
F.cluster.request()
can be executed from master process - ⚡️ updated:
Image.miniature()
change a default filter fromBox
toHamming
- ⚡️ updated:
U.request()
supports a new flagcookies
which enables a parsing cookies from response
🛠 Fixes :
- 🛠 fixed: schema validation (problem with Arrays)
- 🛠 fixed: determines
x-forwarded-proto
- 🛠 fixed: nested schema validation
- 🛠 fixed: themes static routing
- 🛠 fixed: NoSQL reader
- 🛠 fixed: NoSQL counter (sorting while reading stats)
- 🛠 fixed: loading dependencies
- 🛠 fixed: uninstalling middleware
- 🛠 fixed: reading/updating sitemap in controller
Removal :
- ✂ removed: max. sort
string
length - ✂ removed:
auto
appending.css
and.js
extension in view engine - ✂ removed: experimental
defer
feature
👌 Improvements :
- 👌 improved: GZIP compression
- 👌 improved: code
- ➕ added:
-
v2.9.1 Changes
November 26, 2017News :
- ➕ added:
controller.throw409()
,req.throw409()
- ➕ added: new view aliases:
@{R.something}
forrepository
,@{M.something}
formodel
and@{G.something}
forglobal
⚡️ Updates :
- updated:
ErrorBuilder.push()
supports.push(name, status_code)
or.push(name, error, status_code)
🛠 Fixes :
- 🛠 fixed: sitemap language auto-setting
- 🛠 fixed: NoSQL:
builder.paginate()
a problem with zero limit (default limit will bemaxlimit
) - 🛠 fixed: NoSQL number filtering
- 🛠 fixed: localization of ErrorBuilder in controllers
- ➕ added:
-
v2.9.0 Changes
November 16, 2017News :
- ➕ added:
WebSocketClient
- ➕ added:
$ASYNC(schema, callback, [index], [controlller])
alias toSchemaBuilderEntity.$async()
- ➕ added:
ArrayBuffer.prototype.toBuffer()
- ➕ added:
AUTH(fn)
is an alias toF.onAuthorize = fn
- ➕ added:
controller.success()
alias tocontroller.json(SUCCESS(value))
- ➕ added:
CORS()
alias toF.cors()
- ➕ added:
DatabaseBuilder.paginate(page, limit)
- ➕ added:
F.config['allow-compile']
can disable the whole compilation of static files - ➕ added:
F.config['default-dependency-timeout']
it's a timeout for module dependencies - ➕ added:
F.path.rmdir(directory/directories, callback)
- ➕ added:
F.path.unlink(file/files, callback)
- ➕ added:
LOCALIZE()
a new global alias toF.localize()
- ➕ added:
MAP()
a new global alias toF.map()
- ➕ added:
MERGE()
a new global alias toF.merge()
- ➕ added:
MIDDLEWARE()
a new global alias toF.middleware()
- ➕ added:
NOSQL('users').backups([filter(doc)], callback(err, response))
returns all backups - ➕ added:
SchemaOptions.invalid(name, [value], [path], [index])
alias to$.errors.push() + callback()
- ➕ added:
SchemaOptions.success()
alias tocallback(SUCCESS(value))
- ➕ added:
controller.sitemapid
contains a sitemap identificator - ➕ added:
controller.sitemap_add(parent, name, url)
appends a new item into the sitemap per request - ➕ added:
@{sitemap_add(parent, name, url)}
appends a new item into the sitemap per request - ➕ added:
SchemaEntity.required('fieldname', boolean/function(model))
which can disable/enable validation for this field
⚡️ Updates :
- ⚡️ updated:
sitemap
routing can contain an additional path, e.g.#sitemapid/path/
- ⚡️ updated:
F.localize()
supports sitemap routing - ⚡️ updated:
F.merge()
supports sitemap routing - ⚡️ updated:
F.map()
supports sitemap routing - ⚡️ updated:
F.http(mode, [options], [middleware(listen)])
added a new argumentmiddleware
- ⚡️ updated:
debug.js
now reads directories according to the config (author: @luoage) - ⚡️ updated: config parser supports
config
sub-type - ⚡️ updated:
controller.$exec()
-->callback
is by defaultcontroller.callback()
- ⚡️ updated:
F.localize()
has enabledcompression
by default - ⚡️ updated: HTTP server is listening after the framework is completely loaded
- ⚡️ updated: (IMPORTANT) HTTP cache in dynamic content and static files
- ⚡️ updated:
F.prototypes()
by addingOperationOptions
- ⚡️ updated: ErrorHandling in schemas (supports inline validation and advanced conditions)
- ⚡️ updated:
F.noCache()
is obsolete - 📇 renamed:
allow-handle-static-files
toallow-static-files
🛠 Fixes :
- 🛠 fixed: (IMPORTANT)
DatabaseBuilder.in()
- 🛠 fixed: (IMPORTANT)
U.ls2()
- 🛠 fixed: (IMPORTANT)
WebSocket
implementation (author: @JozefGula) - 🛠 fixed:
ArrayBuffer
in webosocket - 🛠 fixed:
F.path.mkdir()
on Windows (author: @molda) - 🛠 fixed:
F.restore()
on Windows (author: @molda) - 🛠 fixed:
F.rmdir
removes all files and directories - 🛠 fixed:
JSON
type in Total.js schemas - 🛠 fixed:
MODEL()
,MODULE()
,INCLUDE()
now are direct aliases - 🛠 fixed: a check for maximum length of request data
- 🛠 fixed: Date formatting with
a
value - 🛠 fixed: empty localization in view engine e.g.
@()
- 🛠 fixed: external static routing in view engine on Windows
- 🛠 fixed: NoSQL filtering with
or
- 🛠 fixed: NoSQL multiple updates
- 🛠 fixed: NoSQL sorting of boolean values in larger dataset
- 🛠 fixed: responding on
range
header - 🛠 fixed: unit testing (author: @ckpiggy)
- 🛠 fixed:
schema.setPrefix()
in nested schemas - 🛠 fixed: sitemap localization
- 🛠 fixed: CORS custom headers
- 🛠 fixed: NoSQL date filtering
👌 Improvements :
- 👌 improved: performance and security
- ➕ added: