ForgeTotal.js 5
pt

Total.js 5 (backend)

Rotas, ações, esquemas, bases de dados, WebSocket, vistas e tudo o que corre no servidor.

ReceitaEtiquetas

Validar um body JSON com uma ação

Defina um esquema de entrada numa ação e deixe o Total.js rejeitar pedidos inválidos antes de o seu código correr.

routingactionsvalidation

Expor ações através de um único endpoint de API

Declare endpoints ROUTE('API ...') para que um cliente chame muitas ações com POST {schema, data} num único URL.

routingapiactions

Ler parâmetros do URL numa rota

Declare segmentos dinâmicos como {id} numa rota e leia-os de $.params.

routingparams

Apanhar muitos URL com uma rota com wildcard

Termine uma rota com * para corresponder a tudo o que está abaixo de um caminho e mantenha rotas específicas para as exceções.

routing

Tratar cada método HTTP

Declare rotas para GET, POST, PUT, PATCH e DELETE e leia o método de $.method.

routinghttp

Restringir uma rota com flags

Acrescente @flags como @json, @xml ou @upload para que uma rota só corresponda aos pedidos a que se destina.

routingflags

Ler a query string e o body do pedido

Use $.query para os parâmetros do URL e $.body para dados JSON ou de formulário num handler de rota.

routingrequest

Limitar o tamanho do payload e o timeout de uma rota

Acrescente <1kb ou <10s a uma rota para limitar o tamanho do pedido ou o tempo que o handler pode demorar.

routingsecuritylimits

Declarar parâmetros de rota tipados numa ação

Use a opção params de NEWACTION para que o Total.js valide os parâmetros do URL antes de o seu código correr.

actionsroutingvalidation

Escolher como responder

Envie JSON, HTML, texto simples, XML, redirecionamentos, respostas vazias ou dados binários a partir de um handler de rota.

routingresponse

Ler cabeçalhos e trabalhar com cookies

Leia os cabeçalhos do pedido a partir de $.headers, leia e escreva cookies com $.cookie() e defina cabeçalhos de resposta.

routingheaderscookies

Receber carregamentos de ficheiros

Aceite multipart/form-data com o flag @upload e leia os ficheiros carregados de $.files.

routinguploadfiles

Permitir pedidos entre origens com CORS

Chame CORS() para permitir que uma origem, várias origens ou todas as origens usem as suas rotas a partir de um navegador.

securitycorsrouting

Renderizar uma vista sem escrever um handler

Uma rota sem handler renderiza a vista com o nome do seu URL, ou a vista que indicar.

routingviews

Escolha o tipo de entrada certo para uma ação

Escolha tipos de entrada, parâmetros, definições de consulta e saída, incluindo conversões e valores rejeitados.

actionsvalidationtypes

Validar a query string numa ação

Declare query em NEWACTION para validar e converter os parâmetros do URL, e leia os valores limpos de $.query.

actionsvalidationquery

Filtrar a resposta de uma ação com output

Declare output para que apenas os campos indicados saiam da ação, por exemplo para nunca expor o hash de uma palavra-passe.

actionssecurity

Exigir um utilizador ou uma permissão numa ação

Use as opções user e permissions de NEWACTION para que a autorização fique junto da ação e não em cada rota.

actionsauthsecurity

Proteger rotas com AUTH

Autentique cada pedido com AUTH() e restrinja as rotas a utilizadores autenticados ou anónimos com os prefixos + e -.

authroutingsecurity

Declarar a rota dentro da ação

Ponha a rota na opção route de NEWACTION e mantenha o URL, a validação e o código no mesmo sítio.

actionsrouting

Autenticar utilizadores com a autenticação por sessão integrada

Passe um objeto de opções a AUTH() para obter cookies de sessão assinados, um armazém de sessões e logout sem escrever a infraestrutura.

authsessionssecurity

Chamar uma ação a partir do seu próprio código

Use ACTION() para executar uma ação a partir de um temporizador, de uma tarefa ou de outra ação, com o seu próprio payload, query e utilizador.

actions

Encadear várias ações numa rota

Liste várias ações depois de --> para as executar em sequência sobre o mesmo payload e indique qual responde com (response).

actionsrouting

Adicionar um middleware a uma rota

Registe um middleware com MIDDLEWARE() e associe-o às rotas com o flag #name.

middlewareroutingsecurity

Construir um chat WebSocket

Declare uma rota SOCKET, escute mensagens e difunda-as a todos os clientes ligados.

websocketrealtime

Ligar a um servidor WebSocket a partir do Node

Use WEBSOCKETCLIENT para abrir uma ligação WebSocket a partir da sua aplicação, enviar mensagens e reagir às respostas.

websocketrealtimeintegrations

Desacoplar o código com eventos

Emita e escute eventos da aplicação com EMIT(), ON(), ONCE() e OFF() para que os módulos não se chamem diretamente.

eventsarchitecture

Guardar e ler dados com a base de dados NoSQL integrada

Insira e consulte documentos com NOSQL() e exponha-os através de ações, sem instalar nenhuma base de dados.

nosqldatabaseactions

Consultar a base de dados NoSQL

Filtre, ordene, pagine e projete documentos com where, in, between, search, sort, take, skip e fields.

nosqldatabasequeries

Atualizar e remover documentos NoSQL

Altere documentos com update() e where(), apague-os com remove() e leia quantos foram afetados.

nosqldatabase

Usar a API DATA para trocar de base de dados

DATA endereça uma tabela como base/tabela, pelo que o mesmo código de consultas funciona com o NoSQL integrado e com outras bases de dados.

databasenosqlquerybuilder

Guardar valores em cache na memória

Guarde valores com CACHE.set() e uma expiração, leia-os com CACHE.get() e apague-os com remove() ou reset().

cacheperformance

Guardar pequenas definições com MEMORIZE

Mantenha em disco um objeto JSON que sobrevive a reinícios, para contadores e definições que não precisam de uma base de dados.

storagesettings

Gerar ids únicos e hashes

Crie ids com UID() e GUID(), e hashes com HASH(), e saiba qual usar em cada caso.

utilitiesidssecurity

Guardar resultados lentos em disco com FILECACHE

Use FILECACHE() para calcular um resultado uma vez e reutilizá-lo a partir de um ficheiro durante um período, mesmo após um reinício.

cacheperformancefiles

Guardar ficheiros carregados com FILESTORAGE

Guarde carregamentos num armazém de ficheiros gerido com file.fs() e devolva-os com $.filefs().

filesuploadstorage

Renderizar uma vista com um layout

Renderize uma vista HTML com um modelo, percorra dados e passe valores ao layout.

viewslayouttemplates

Usar condições e escape nas vistas

Ramifique com @{if}, @{else} e @{fi}, e escolha entre a saída com escape @{value} e HTML em bruto @{!value}.

viewstemplates

Percorrer arrays e objetos nas vistas

Repita marcação com @{foreach} para arrays e objetos e use o índice do elemento atual.

viewstemplates

Incluir vistas e recursos

Reutilize marcação com @{view()} e acrescente scripts e estilos com @{import()}.

viewstemplatesassets

Preencher secções do layout a partir de uma vista

Declare uma secção numa vista com @{section} e imprima-a no layout com @{section('name')}, e escolha outro layout por pedido.

viewslayouttemplates

Acrescentar helpers de vista e ler a config nas vistas

Registe funções em DEF.helpers para as chamar a partir das vistas e leia valores da config com @{'%key'}.

viewstemplatesconfig

Converter Markdown em HTML

Use o protótipo String.markdown() para converter texto Markdown em HTML, para conteúdo guardado por utilizadores ou em ficheiros.

contentmarkdown

Gerar texto com templates Tangular

Use Tangular.render() para preencher modelos de e-mails, documentos e mensagens com condições, ciclos e helpers.

templatescontent

Renderize templates a partir de texto, ficheiros e URLs com TEMPLATE

Use TEMPLATE() para renderizar um template Tangular que é um texto, um ficheiro da pasta de templates ou um URL, com os seus próprios helpers e um modelo por omissão.

templatescontenttangular

Compare duas listas com DIFFARR: o que adicionar, atualizar e remover

Use DIFFARR() para comparar os elementos guardados na base de dados com os de um formulário e obter os que é preciso adicionar, atualizar e remover.

utilitiesarraysforms

Query Builder: DB() e NEWDB() com seu próprio driver de banco de dados

Construa consultas com DB().find().where().sort() e deixe um driver registrado com NEWDB() executá-los, enquanto um driver registado implementa operações de banco de dados suportadas.

databasequerybuilder

Configurar a aplicação com o ficheiro config

Guarde as definições num ficheiro config e leia-as através de CONF.

configsettings

Cifrar e decifrar dados com uma chave

Transforme objetos em tokens opacos com ENCRYPT() e leia-os de volta com DECRYPT(), para ligações assinadas e tokens de curta duração.

securitycrypto

Chame serviços externos com API() e os drivers de NEWAPI()

Registe um driver para um serviço com NEWAPI() e chame-o a partir das ações com API(name, schema, data), com o mesmo estilo de callback, erro e promessa do query builder.

apiservicesintegrations

Conversa-se com modelos de idiomas com AIMODEL(), NEWAIMODel() e AIPARSER()

Construa uma solicitação de bate-papo com a AIMODEL(), deixe um motorista registrado com a NEWAIMODAL() enviá-la a um provedor e leia respostas transmitidas com a EIPARSER().

aillmintegrations

Limitar tentativas falhadas com BLOCKED

Conte tentativas por endereço IP com BLOCKED() e responda 429 quando o limite for atingido, para logins e redefinições de palavra-passe.

securityrate-limiting

Os pequenos assistentes globais: MAIN, REPO, FUNC, NOW, CLONE, COPY, QUERIFY e PROMISIFY

Use globais de aplicativos, datas, cópias profundas, linhas de perguntas e ajudantes prometidos.

globalsutilitieshelpers

Reúna erros com ErrorBuilder, registe-os com ERROR() e mantenha um rasto de auditoria com AUDIT()

Responda com vários erros de uma vez usando ErrorBuilder, a resposta SUCCESS(), como ERROR() regista as falhas e como AUDIT() acrescenta a um ficheiro de registo quem fez o quê.

errorsloggingaudit

Adie trabalho com setTimeout2() e clearTimeout2()

Use setTimeout2() para executar uma função uma só vez depois de as chamadas deixarem de chegar, substituindo o temporizador anterior com o mesmo id, e cancele-o com clearTimeout2().

timersdebounceutilities

Tokens ligados a um navegador com ENCRYPTREQ() e DECRYPTREQ()

Cifre um valor juntamente com o user agent (e opcionalmente o endereço IP) do pedido e leia-o de volta apenas a partir do mesmo cliente.

securityencryptiontokens

Faça uma cópia de uma pasta com BACKUP() e RESTORE(), e execute comandos com SHELL()

Empacote um diretório num único ficheiro e desempacote-o de novo com BACKUP() e RESTORE(), e execute um comando da shell na pasta do projeto com SHELL().

backupshellfiles

Ponha a aplicação em manutenção com PAUSESERVER()

Pause o servidor por nome para que cada pedido receba uma página 503, retome-o e saiba que sem segundo argumento a chamada alterna o estado.

maintenanceserveravailability

Regras de negócio como texto com NEWMACRO()

Compile pequenas regras escritas numa linguagem simples (IF, ELSE, AND, OR, RETURN, chamadas a helpers) numa função que executa com um modelo, para que as regras possam viver num ficheiro ou numa base de dados.

macrosrulesscripting

Servir ficheiros estáticos a partir da pasta public

Os ficheiros do diretório public são servidos automaticamente, sem precisar de uma rota.

staticfiles

Chame outro endereço com AJAX() a partir do servidor

Use AJAX() para chamar um endereço HTTP com um corpo JSON e obter a resposta já interpretada, como promessa ou com callback, e saiba o que acontece com erros e com XML.

httprequestsajax

Chamar outras APIs HTTP com RESTBuilder

Faça pedidos GET e POST a outro serviço, defina cabeçalhos e um timeout, e leia o estado e a resposta interpretada.

integrationshttprestbuilder

Liberte um stream quando termina com CLEANUP()

Use CLEANUP() para destruir um stream assim que terminou ou falhou, para que não fiquem descritores de ficheiro abertos, com um callback ou como promessa.

streamsfilescleanup

Traduzir uma vista para vários idiomas

Marque textos com @(...) nas vistas e forneça as traduções em ficheiros de recursos escolhidos por LOCALIZE().

localizationi18nviews

Executar código segundo um agendamento com CRON

Registe uma função com CRON() e uma linha cron de cinco campos, e saiba quando a verificação corre e como remover uma tarefa.

cronschedulerjobs

Executar trabalho pesado numa thread ou num processo filho

Use NEWTHREAD() para iniciar uma thread worker, enviar-lhe mensagens e ler as respostas sem bloquear o processo principal.

workerthreadperformance

Partilhe alguns threads de trabalho com NEWTHREADPOOL()

Arranque um número fixo de workers, peça emprestado um com pool.exec() quando houver trabalho, devolva-o com release() e deixe os outros trabalhos esperar por um worker livre.

workerthreadpoolperformance

Chamar outros servidores com REQUEST e guardar ficheiros com DOWNLOAD

Use REQUEST() para chamadas HTTP de baixo nível com controlo total do método, cabeçalhos, query e corpo, e DOWNLOAD() para transferir um ficheiro remoto para o disco.

httprequestdownload

Enviar um e-mail a partir de uma vista

Configure o SMTP no ficheiro config, renderize uma vista como corpo da mensagem com MAIL() e envie HTML já pronto com HTMLMAIL().

mailsmtpemail

Personalizar as páginas 404 e 401

Registe handlers ROUTE('#404') e ROUTE('#401') para substituir as páginas de erro incorporadas e dispare-os você mesmo com $.fallback().

errors404routing

Envie uma mensagem a si próprio com LOGMAIL()

Envie uma mensagem de texto simples ou JSON para um endereço sem vista, para registos e alertas, com as mesmas definições SMTP de MAIL().

mailsmtplogging

Enviar ficheiros e streams ao cliente

Sirva um ficheiro do disco com $.file(), force um nome de descarga, envie conteúdo gerado com $.stream() e responda 404 quando o ficheiro não existe.

filesdownloadstream

Reencaminhar pedidos para outro servidor

Use PROXY() para associar um prefixo de URL a um servidor de destino, escolha como o caminho é copiado e $.proxy() para reencaminhar uma única rota.

proxygatewayintegrations

Publique um servidor local através de um túnel com PROXYSERVER() e PROXYCLIENT()

Deixe um servidor Total.js com endereço público reencaminhar pedidos para um programa que só corre numa máquina privada, com um túnel WebSocket que o lado privado abre.

proxytunnelwebsocketintegrations

Proteger formulários e pedidos com tokens CSRF

Crie um token com $.csrf(), envie-o com o pedido e verifique-o num middleware para rejeitar pedidos vindos de outros sites.

securitycsrfmiddleware

Agrupar ações num schema e reutilizar definições de input

Use NEWSCHEMA() para declarar ações relacionadas sob um nome e partilhe uma definição de input entre ações com um ficheiro em jsonschemas/.

schemaactionsvalidation

Construir um pipeline de processamento com transforms

Registe vários passos sob um nome com NEWTRANSFORM() e faça passar um valor por eles, por ordem, com TRANSFORM().

transformpipeline

Trocar mensagens com o Total Messaging Service

Ative o endpoint WebSocket do TMS e deixe que clientes externos recebam mensagens publicadas, enviem mensagens à sua aplicação e chamem as suas funções.

tmspublishsubscribewebsocketmessaging

Construir um recurso REST completo com ações

Declare as ações query, read, insert, update, patch e remove sobre a base de dados NoSQL, com validação, um 404 para registos em falta e rotas que associam cada método HTTP.

actionscrudrestnosql

Configurar uma rota WebSocket com flags, autenticação e parâmetros

Escolha o tipo de mensagem com @text ou @binary, exija um utilizador autenticado com o prefixo +, verifique um token CSRF com @csrf e leia parâmetros do URL em rotas SOCKET.

websocketrealtimesecurity

Minificar e juntar CSS, JavaScript e HTML

Os ficheiros estáticos e as respostas HTML são minificados automaticamente; use MERGE() para servir vários ficheiros como um só e as definições $minify para o desativar.

performancecssjavascripthtmlminification

Redimensionar e converter imagens

Processe imagens com Image.load(), encadeie operações de tamanho, corte e formato, guarde o resultado, meça o seu tamanho e sirva miniaturas com $.image().

imagesthumbnailsgraphicsmagick

Verifique os limites do esquema numérico em vez de assumir a coerção completa

Verifique Int, SmallInt, TinyInt e Number2 com esquemas compactos nativos, incluindo valores fracionários, entradas zero e out-of-range.

validationschemanumbersboundaries

Usar os helpers incorporados de string, number, date e array

O Total.js estende String, Number, Date e Array com helpers para slugs, hashes, formatação, parsing, agrupamento e pesquisa, e oferece U.extend() e U.clone() para objetos.

utilitieshelpersstringarraydate

Eventos de auditoria de ação com uma auditoria nativa

Observe a opção de auditoria e exibir chamadas $.audit() sem entrar em contato com um serviço de logging ou escrever uma entrada sensível para um log da aplicação.

actionsauditsecurity

Executar em modo debug e em modo release

As opções de Total.run() escolhem entre o modo debug e o release; leia o modo com DEBUG e limite rotas a um modo com @debug e @release.

deploymentdebugreleaseenvironment

Testar a aplicação com o executor de testes incorporado

Escreva um test.js que inicia a aplicação, regista testes com Test.push(), verifica resultados com Test.print() e termina com um código diferente de zero quando um falha.

testingci

Use todos os cores da CPU com o modo de cluster

Comece vários processos de trabalhadores por trás de um porto com a opção de cluster do Total.run(), e saiba o que é compartilhado entre eles e o que não é.

clusterperformancedeployment

Carregue um módulo JavaScript a partir de um URL com IMPORT()

Descarregue um ficheiro com JavaScript de um endereço, guarde-o na pasta tmp, faça require e use o que exporta; a segunda chamada não o descarrega outra vez.

modulesdownloaddependencies

Construa um fluxo de componentes com Flow.load() e execute-o com exec()

Descreva um FlowStream como componentes e as ligações entre eles, carregue-o na aplicação, envie uma mensagem através dele e leia a resposta, e altere a configuração de um componente enquanto corre.

flowflowstreamcomponentsautomation

Teste um componente do Flow isoladamente com Flow.test()

Carregue um componente num fluxo só seu, envie-lhe uma mensagem a partir do código e leia o que envia para as suas saídas, sem construir o fluxo inteiro.

flowflowstreamcomponentstests

Chame um programa Python que continua a correr com PYPELINE()

Arranque um script Python a partir da aplicação, envie-lhe mensagens JSON por um socket e receba as suas respostas, com o script reiniciado se morrer.

pythonpypelineintegrationsai

Enums e limites de validação de formato string

Execute o esquema compacto positivo e negativo para enums, Color, Base64, Zip, Icon, JSON e formatos IP.

total5reference

TotalAPI e limites de serviço Componentator

Verifique o ramo de TotalAPI e Componentator local-cache reutilizado sem fazer chamadas de serviço externas.

total5reference

QueryBuilder operações, filtros e contrato de driver

Verifique as opções nativas de DB e NEWDB, os resultados quoed, os erros e as formas de filtro sem confundir um construtor com um driver de dados.

total5reference

Compilando e executando um componente nativo do servidor

Compila o componente confiável de Total.js HTML, crie um exemplo, valida mensagens, reconfigure e libera seus recursos.

total5reference

Controlador de chamadas, autorização manual e respostas condicionais

Execute jsonstring, respondendo, feito, bem sucedido, autorizado, personalizado e manuseio modificado.

total5reference

Opções de transporte de ação e publicação explícita de TMS

Testar CSRF, criptografar, compressar e publicar contra o HTTP real e TMS em vez de assumir metadados forçando comportamento.

total5reference

Invalidação de cache estático em modo de liberação com Touch

Servir e modificar um arquivo estático temporário, limpar a sua representação cache e remover as entradas cache 404.

total5reference

OPENCLIENT RPC, eventos e conexões compartilhadas

Exerce OPENCLIENT com uma fixação de protocolo local, incluindo iniciação, correlação de chamada, timout e remoção lógica-cliente.

total5reference

Carregar arquivos FlowStream e executar trabalhadores isolados

Execute o mesmo esquema de confiança FlowStream como um fio de trabalho e um processo infantil, carregue arquivos .flow e remova instâncias.

total5reference

Ação de ciclo de vida, extensão de resultado e guardas de administrador

Exerce entrada, saída, extensão, sa e su com ações válidas, inválidas e fracassadas.

total5reference

SQL real com transações nativas de QueryBuilder e SQLite

Registre um driver limitado SQLite, execute o CRUD paramétrico e verifica o compromisso, restringe a falha e retorna contra uma base de dados suportada por arquivos.

total5reference

Carregar recursos de aplicação e evitar surpresas em pacotes de tempo de execução

Execute o carregamento em um processo separado e confira a NPMINSTALL para reutilizar um pacote já disponível sem acesso à rede.

total5reference

Querer um diretório LDAP local real

Solicite uma instância OpenLDAP isolada e verifica o resultado de ligação em total5 0.0.19.

total5reference

Arquivos de aplicação como um pacote Total.js

Crie um pacote local, carregue suas definições através do carregador de startup e verifica a extração em .src.

total5reference

Limpar o seu arquivo e criar links de query

Verifique o upload padrão de limpeza, autoclear(false), explicitamente claro e substituição de query href.

total5reference