Types
Tipos da Azion Lib no pacote @aziontech/types para handlers de function, a requisição e seus metadados e o contexto do handler.
O pacote @aziontech/types é a biblioteca da Azion Lib de tipos TypeScript para código que roda no Azion Runtime. Ele declara os formatos de handler de uma function, a requisição com seus metadados e o contexto que um handler recebe. O pacote contém apenas tipos: seu módulo JavaScript não exporta nada e não faz nenhuma chamada de API, por isso você importa cada nome com import type.
Instale o pacote:
Os exemplos em TypeScript desta página importam seus tipos com import type. O exemplo de metadados roda no Node.js, e os exemplos de handler rodam dentro de uma function servida localmente com o azion dev.
AzionRuntimeRequestMetadata
O objeto de metadados que AzionRuntimeRequest carrega em metadata. A interface declara 26 chaves, todas do tipo string e obrigatórias, mais uma assinatura de índice de string que tipa qualquer outra chave.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
geoip_asn | string | Sim | Número do sistema autônomo. |
geoip_city | string | Sim | Código da cidade. |
geoip_city_continent_code | string | Sim | Código do continente da cidade. |
geoip_city_country_code | string | Sim | Código do país da cidade. |
geoip_city_country_name | string | Sim | Nome do país da cidade. |
geoip_continent_code | string | Sim | Código do continente. |
geoip_country_code | string | Sim | Código do país. |
geoip_country_name | string | Sim | Nome do país. |
geoip_region | string | Sim | Código da região. |
geoip_region_name | string | Sim | Nome da região. |
remote_addr | string | Sim | Endereço IP do cliente. |
remote_port | string | Sim | Porta TCP do cliente. |
remote_user | string | Sim | Usuário informado na URL. |
server_protocol | string | Sim | Protocolo da requisição. |
server_fingerprint | string | Sim | Fingerprint TLS do servidor. |
server_fingerprint_ja4h | string | Sim | Fingerprint JA4H do servidor. |
ssl_cipher | string | Sim | Cifra TLS da sessão. |
ssl_protocol | string | Sim | Protocolo TLS da sessão. |
client_fingerprint | string | Sim | Fingerprint do cliente. |
client_id | string | Sim | Identificador da conta Azion dona do workload. |
configuration_id | string | Sim | Identificador do workload que recebeu a requisição. |
edge_connector_id | string | Sim | — |
function_id | string | Sim | Identificador da function que roda para a requisição. |
http_ssl_ja4 | string | Sim | Fingerprint TLS JA4 da requisição. |
request_id | string | Sim | ID único da requisição. |
solution_id | string | Sim | Identificador interno da solução que trata a requisição. |
[key: string] | string | Não | Qualquer outra chave do objeto. |
Um objeto literal tipado como AzionRuntimeRequestMetadata precisa carregar as 26 chaves, ou o tsc para com o erro TS2740 e nomeia as que faltam. Para tipar um objeto que contém parte das chaves, envolva a interface em Partial.
Este exemplo monta um objeto de metadados com 16 das chaves:
Saída:
AzionRuntimeRequest
A requisição que um handler de módulo recebe: o Request padrão com uma propriedade metadata.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
metadata | AzionRuntimeRequestMetadata | Sim | Os metadados da requisição. |
AzionRuntimeModule
O export padrão de uma function no formato de módulo: um objeto com um handler fetch, um handler firewall ou ambos. O formato de módulo é o formato de handler que Handlers recomenda.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
fetch | (request: AzionRuntimeRequest, env?: null, ctx?: AzionRuntimeCtx) => Promise<Response> | Não | O handler que o Azion Runtime chama para uma requisição. |
firewall | (request: AzionRuntimeRequest, env?: null, ctx?: AzionRuntimeCtx) => Promise<Response> | Não | O handler de firewall, como o tipo o declara. |
Esta function verifica seu export padrão contra o tipo com satisfies e responde com a cidade do cliente:
Com a function servida localmente com azion dev, em que a requisição não carrega metadados, uma requisição retorna:
A function registra no log:
AzionRuntimeCtx
O contexto que AzionRuntimeModule declara como terceiro argumento dos dois handlers.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
waitUntil | (promise: Promise<unknown>) => void | Sim | Estende a execução até que promise seja resolvida ou rejeitada. |
args | Record<string, unknown> | Não | Os args da function instance. |
AzionFetchEvent
O evento que um listener registrado com addEventListener para o tipo fetch recebe. Ele estende o Event padrão.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
request | Request & { metadata: AzionRuntimeRequestMetadata } | Sim | A requisição, com seus metadados. |
waitUntil | (promise: Promise<unknown>) => void | Sim | Declarado pelo tipo. |
respondWith | (response: Response | Promise<Response>) => void | Sim | Define a resposta que a function envia ao cliente. |
Em uma function JavaScript, um comentário JSDoc aplica o tipo ao evento. Este listener responde com a cidade do cliente:
Com a function servida localmente com azion dev, o listener retorna a mesma resposta do exemplo de AzionRuntimeModule e registra no log as mesmas três linhas:
FetchEventListener
O tipo de um listener para o evento fetch.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
event | AzionFetchEvent | Sim | O evento fetch. |
args | Record<string, unknown> | Não | Os args que o listener recebe. |
AzionFirewallEvent
O tipo de evento que o pacote declara para um listener de firewall. Ele estende AzionFetchEvent com três métodos.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
deny | () => void | Sim | Declarado pelo tipo. |
drop | () => void | Sim | Declarado pelo tipo. |
continue | () => void | Sim | Declarado pelo tipo. |
request, waitUntil, respondWith | como em AzionFetchEvent | Sim | Herdados de AzionFetchEvent. |
AzionRuntimeFirewallCtx
O tipo de contexto que o pacote declara para módulos de firewall. Ele estende AzionRuntimeCtx com três métodos. AzionRuntimeModule tipa o ctx do seu handler firewall como AzionRuntimeCtx, não como este tipo.
| Propriedade | Tipo | Obrigatório | Descrição |
|---|---|---|---|
deny | () => void | Sim | Declarado pelo tipo. |
continue | () => void | Sim | Declarado pelo tipo. |
drop | () => void | Sim | Declarado pelo tipo. |
waitUntil | (promise: Promise<unknown>) => void | Sim | Herdado de AzionRuntimeCtx. |
args | Record<string, unknown> | Não | Herdado de AzionRuntimeCtx. |
FirewallEventListener
O tipo de um listener para o evento de firewall.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
event | AzionFirewallEvent | Sim | O evento de firewall. |
args | Record<string, unknown> | Não | Os args que o listener recebe. |
Namespace Azion
O pacote também exporta o namespace Azion, que declara os namespaces Azion.Storage e Azion.Sql. Para as APIs do runtime que esses nomes descrevem, consulte Object Storage API e SQL Database API.