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.jsdovssh-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
| verbo | responde |
|---|---|
vssh.app.ola() | sim, em até 5 s |
vssh.app.identidade() | sim, em até 5 s |
vssh.app.capacidades() | sim, em até 5 s |
vssh.app.titulo(titulo) | não |
vssh.app.lembrarRota(rota) | não |
vssh.app.relatarErro(mensagem, pilha, fonte, linha, coluna, tipo) | não |
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".
| argumento | tipo | opcional | no fio |
|---|---|---|---|
titulo | string | não | title |
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".
| argumento | tipo | opcional | no fio |
|---|---|---|---|
rota | string | não | rota |
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".
| argumento | tipo | opcional | no fio |
|---|---|---|---|
mensagem | string | não | message |
pilha | string | sim | stack |
fonte | string | sim | source |
linha | number | sim | line |
coluna | number | sim | column |
tipo | 'erro' | 'rejeicao' | 'relatado' | sim | kind |
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.
| campo | tipo | opcional | no fio |
|---|---|---|---|
tokens | Record<string, string> | não | tokens |
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.
| campo | tipo | opcional | no fio |
|---|---|---|---|
caminho | string | sim | path |
url | string | sim | url |
tipo | 'arquivo' | 'pasta' | 'url' | sim | tipo |
rota | string | sim | rota |
item | string | sim | item |
Num hiperlink: chega.
No fio: type: "open-context".