# Definições do Flow, ficheiro config e pastas

> As definições do Flow (nome, catálogos de componentes e modelos, ambiente, cópia de segurança, tokens), as linhas do ficheiro config, o ambiente dos fluxos e as pastas para extensões e componentes locais.

Framework: flow
Product: Flow (flow@11.1)
Language: pt
Content-SHA256: 3efaec3739920663792135cf63242ea655fc8b687161d42d57fa2bc618a135e4
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

## O ficheiro `config`

O ficheiro `config` na raiz do Flow contém as opções da aplicação. As que importam:

| Linha | Significado |
|---|---|
| `name` | o nome mostrado pela aplicação (pode ser alterado nas definições) |
| `$api : /fapi/` | o endereço da API JSON |
| `flowstream_worker : fork` | cada FlowStream corre no seu próprio processo |
| `$proxytimeout : 120` | segundos que um fluxo pode demorar a responder a um pedido HTTP |
| `cookie`, `cookie_secret` | gerados no primeiro arranque e guardados em `databases/config.json` |

Outras opções são lidas quando existem: `directory` (a pasta dos fluxos; a predefinida é `flowstream/` junto da aplicação), `flowstream_memory` (um limite de memória predefinido para os fluxos novos), `flowstream_sandbox` e `flowstream_asfiles` (são passados a cada fluxo), `components` e `templates` (os primeiros valores dos catálogos) e `backup`.

## Definições na aplicação

O superadministrador abre as definições e encontra:

- **name** da instalação;
- **components** e **components2**: o endereço do catálogo de componentes (um ficheiro `db.json`, por predefinição `https://cdn.totaljs.com/flowstream/webcomponents/db.json`) e um segundo catálogo opcional, para poder oferecer os seus próprios componentes junto dos oficiais;
- **templates**: o catálogo de modelos de fluxos (por predefinição `https://cdn.totaljs.com/flowstream/templates/db.json`);
- **env**: `dev`, `test` ou `prod`. Os fluxos leem-no e alterá-lo reinicia-os todos, um a um;
- **backup**: cada gravação dos fluxos renomeia o `database.json` anterior para um ficheiro com a data e o minuto, `database_yyyyMMddHHmm.bk`;
- **token**: o token aleatório para `/private/` (veja [a API](/en/flow/manage-flowstreams-with-the-api/));
- **darkmode** e **notify**;
- **op_reqtoken** e **op_restoken**: os tokens de um [OpenPlatform](/en/openplatform/how-an-app-connects/); quando ambos estão definidos, as pessoas iniciam sessão com esse OpenPlatform.

Os plugins podem acrescentar as suas próprias definições ao mesmo formulário. O repositório inclui um, *Bookmarks*, uma lista de componentes guardados que as pessoas com a permissão `bookmarks` podem usar.

## Variáveis

Cada fluxo tem as suas próprias **variáveis** e existe um conjunto de **variáveis globais**, ambos editados no editor ou com `Variables|read` e `Variables|save`. Um componente lê-as para não pôr endereços e chaves no design, e uma alteração chega logo aos fluxos em execução.

## Componentes locais: `--components--`

A pasta `--components--` do repositório contém alguns componentes que viajam com a aplicação: `checkfreespace`, `checklog`, `checkpg`, `checkurl`, `console` e `print`. O catálogo oficial é muito maior, veja [o repositório de componentes](/en/flow/the-components-repository/).

## Extensões

Uma extensão acrescenta algo ao editor de cada fluxo. Copie um ficheiro `.html` para a pasta `extensions/` (o repositório documenta-o em `--extensions--/` com um exemplo `test.html`) e o Flow carrega-o para cada fluxo: a parte entre `<script total>` e `</script>` corre com o fluxo e o resto do ficheiro é acrescentado ao editor.

## O ambiente de um fluxo

No arranque de cada fluxo, o Flow dá-lhe a pasta onde guarda os seus ficheiros (`directory`), as variáveis globais, o `env` da instalação, o seu limite de memória e o carregador de extensões (`extensions.js`). Um fluxo que falha é reiniciado pelo Flow, e as suas estatísticas (mensagens, pendentes, erros, memória e id do processo) são devolvidas por `Streams`.
