Pacote `Types` da Azion

O pacote Types fornece tipos globais TypeScript que são usados em toda a plataforma da Azion, garantindo consistência e reduzindo redundância em toda a base de código.

Saiba mais sobre as Azion Libraries

Uso

Defina metadados

A interface Metadata fornece uma maneira estruturada de representar metadados de requisições, incluindo informações de GeoIP, detalhes de endereço remoto e dados de servidor/TLS.

Exemplo em TypeScript:

import { Metadata } from 'azion/types';
const requestMetadata: Metadata = {
geoip_asn: '12345',
geoip_city: 'Sao Paulo',
geoip_city_continent_code: 'SA',
geoip_city_country_code: 'BR',
geoip_city_country_name: 'Brazil',
geoip_continent_code: 'SA',
geoip_country_code: 'BR',
geoip_country_name: 'Brazil',
geoip_region: 'SP',
geoip_region_name: 'Sao Paulo',
remote_addr: '192.0.2.1',
remote_port: '443',
remote_user: 'user',
server_protocol: 'HTTP/1.1',
ssl_cipher: 'ECDHE-RSA-AES128-GCM-SHA256',
ssl_protocol: 'TLSv1.2',
};

Trabalhe com FetchEvent

A interface FetchEvent estende a interface padrão Event para incluir propriedades de requisição e metadados, fornecendo um contexto completo para lidar com operações de fetch no ambiente da Azion.

Exemplo em TypeScript:

import { FetchEvent, Metadata } from 'azion/types';
addEventListener('fetch', (event: FetchEvent) => {
const { request } = event;
const metadata: Metadata = request.metadata;
console.log('Request URL:', request.url);
console.log('Client IP:', metadata.remote_addr);
console.log('GeoIP City:', metadata.geoip_city);
event.respondWith(fetch(request));
});

Trabalhe com FirewallEvent

A interface FirewallEvent fornece métodos adicionais específicos para eventos de firewall, permitindo ações como negar requisições, derrubar conexões ou adicionar cabeçalhos a requisições e respostas.

Exemplo em TypeScript:

import { FirewallEvent } from 'azion/types';
addEventListener('firewall', (event: FirewallEvent) => {
const { request } = event;
console.log('Request URL:', request.url);
console.log('GeoIP Country:', request.metadata.geoip_country_name);
if (request.metadata.geoip_country_code === 'CN') {
event.deny();
} else {
event.continue();
}
});

Contribuidores