Referência

vssh.app

Página gerada da tabela da ponte (api/abi.json) pelo canal de publicação do sistema. Uma mudança se faz na fonte, vssh-client/js/app/abi.js do vssh-sso.

Quem o app é e em que ambiente ele está: as capacidades do shell, os verbos disponíveis, o título que a janela mostra e a rota que a sessão restaura.

Verbos

ola

vssh.app.ola()

O aperto de mão com que o SDK confirma que está numa janela do ambiente, antes de assumir os links, o window.open e o menu de contexto da página. O SDK o manda sozinho ao carregar; a resposta vem da origem do shell, e é dela que ele passa a conferir as mensagens. Traz também os tokens de destaque do ambiente.

Responde: uma promessa, com prazo de 5 s (ritmo rapido, a resposta não depende de uma pessoa). Num hiperlink: vale. No fio: type: "vssh-ola".

Sem argumentos.

identidade

vssh.app.identidade()

O bilhete com que uma plataforma aberta como hiperlink reconhece a pessoa: { bilhete, expira }, um JWT RS256 de 60 s que o portal assina para a origem da plataforma. O backend dela o confere pela chave em /.well-known/jwks.json do portal (typ vssh-bilhete+jwt, aud na origem dela, o jti guardado até o exp) e abre a sessão própria. Antes de emitir, o portal confere a política da aplicação da plataforma no Authentik. Só a janela de um hiperlink recebe o bilhete; um vssh-app roda na estação, como a pessoa.

Responde: uma promessa, com prazo de 5 s (ritmo rapido, a resposta não depende de uma pessoa). Num hiperlink: vale. No fio: type: "identity".

Sem argumentos.

capacidades

vssh.app.capacidades()

O ambiente em que o app está: o nome do host, o que ele sabe fazer, a versão do shell e a lista de verbos e eventos desta tabela. Com a lista, o app decide sozinho se o shell em que caiu tem o que ele precisa.

Responde: uma promessa, com prazo de 5 s (ritmo rapido, a resposta não depende de uma pessoa). Num hiperlink: vale. No fio: type: "capabilities".

Sem argumentos.

titulo

vssh.app.titulo(titulo)

O título que a janela mostra na barra de título, na barra de tarefas e no Alt+Tab. O app o reporta sempre que o dele muda; o shell corta em 200 caracteres.

Não responde: um disparo, sem retorno. Num hiperlink: vale. No fio: type: "title".

argumentotipoopcionalno fio
titulostringnãotitle

lembrarRota

vssh.app.lembrarRota(rota)

Onde o app está, para a sessão o reabrir no mesmo lugar: um caminho dentro do app, que o ambiente cola na URL quando restaura a janela. Uma rota que sai do app (um esquema, um caminho absoluto, um ..) é recusada no console, sem resposta.

Não responde: um disparo, sem retorno. Num hiperlink: vale. No fio: type: "rota".

argumentotipoopcionalno fio
rotastringnãorota

relatarErro

vssh.app.relatarErro(mensagem, pilha, fonte, linha, coluna, tipo)

Um erro do app, para o log do ambiente, onde quem mantém o sistema o lê ao lado do que aconteceu no portal. O SDK chama este verbo sozinho a cada exceção sem tratamento e a cada promessa rejeitada sem catch dentro do app; o app o chama com tipo: 'relatado' para um erro que ele mesmo tratou e quer registrar. O shell carimba o id do app, corta a mensagem em 1000 caracteres e a pilha em 8000, tira a query da fonte, e manda o mesmo erro uma vez a cada dez minutos.

Não responde: um disparo, sem retorno. Num hiperlink: vale. No fio: type: "error-report".

argumentotipoopcionalno fio
mensagemstringnãomessage
pilhastringsimstack
fontestringsimsource
linhanumbersimline
colunanumbersimcolumn
tipo'erro' | 'rejeicao' | 'relatado'simkind

Eventos

aparencia

vssh.app.ao('aparencia', cb)

Os tokens de destaque do ambiente, quando a pessoa troca a cor. Chega a quem não alcança o documento do shell, que é a página de outra origem.

campotipoopcionalno fio
tokensRecord<string, string>nãotokens

Num hiperlink: chega. No fio: type: "appearance".

abertura

vssh.app.ao('abertura', cb)

O contexto com que o app foi aberto ("abrir aqui", "abrir com", um item da jump list). Chega depois do load, e de novo quando uma ação alcança uma janela que já está aberta. item é o id do item de contributes.contextMenu que a pessoa clicou, e é por ele que um app com mais de um item no mesmo arquivo sabe qual foi. Com tipo: 'arquivo', o arquivo chega já concedido ao app, como se a pessoa o tivesse escolhido no seletor: o app lê e grava nele pelos verbos de arquivos. Uma pasta não é concedida.

campotipoopcionalno fio
caminhostringsimpath
urlstringsimurl
tipo'arquivo' | 'pasta' | 'url'simtipo
rotastringsimrota
itemstringsimitem

Num hiperlink: chega. No fio: type: "open-context".