Preset unenv da Azion

Este preset fornece polyfills para APIs comuns do Node.js, garantindo compatibilidade ao executar código no ambiente do Edge Runtime da Azion. Os seguintes módulos são preenchidos:

Saiba mais sobre as Azion Libraries

Uso

O preset pode ser usado com o unenv para fornecer compatibilidade entre Node.js e o Edge Runtime da Azion:

import { preset } from '@azion/unenv-preset'
// Use with unenv
export default {
preset: preset
}

Features

Polyfills de Node.js

Este preset fornece polyfills para APIs comuns do Node.js, garantindo compatibilidade ao executar código no ambiente do Edge Runtime da Azion. Os seguintes módulos são suportados:

MóduloDescrição
cryptoFuncionalidade criptográfica completa, incluindo hashing, criptografia e geração de UUID.
eventsManipulação de eventos através de events/events.js.
httpFuncionalidade de cliente HTTP via stream-http.
moduleCompatibilidade básica com o sistema de módulos (funcionalidade limitada).
streamImplementações de fluxo via stream-browserify.
string_decoderUtilitários para decodificação de strings.
urlAnálise e formatação de URLs.
utilFunções utilitárias.
timersFunções de temporização via timers-browserify.
vmFuncionalidade de máquina virtual via vm-browserify.
zlibFuncionalidade de compressão via browserify-zlib.

Exemplo:

Este exemplo utiliza o polyfill do módulo crypto:

import { createHash, randomUUID } from '@azion/unenv-preset/polyfills/node/crypto'
// Criar um hash
const hash = createHash('sha256')
hash.update('some data')
console.log(hash.digest('hex'))
// Gerar um UUID
const uuid = randomUUID()

Polyfills para o sistema de arquivos

O preset inclui polyfills abrangentes para o sistema de arquivos, espelhando a funcionalidade do módulo fs do Node.js. Estes polyfills funcionam com um sistema de arquivos em memória ao rodar no Edge Runtime.

Operações básicas com arquivos

import { readFileSync, writeFileSync } from '@azion/unenv-preset/polyfills/node/fs'
// Ler um arquivo
const content = readFileSync('/path/to/file.txt', 'utf8')
// Escrever em um arquivo
writeFileSync('/path/to/new-file.txt', 'Hello World', 'utf8')

Operações com diretórios

import { readdirSync, mkdirSync } from '@azion/unenv-preset/polyfills/node/fs'
// Listar conteúdos de um diretório
const files = readdirSync('/path/to/dir')
// Criar um diretório
mkdirSync('/path/to/new-dir')

Informações sobre arquivos

import { statSync, existsSync } from '@azion/unenv-preset/polyfills/node/fs'
// Checar se um arquivo existe
if (existsSync('/path/to/file.txt')) {
// Obter estatísticas do arquivo
const stats = statSync('/path/to/file.txt')
console.log(`File size: ${stats.size}`)
console.log(`Is directory: ${stats.isDirectory()}`)
console.log(`Is file: ${stats.isFile()}`)
}

Manipulação de descritores de arquivos

import { openSync, closeSync, readSync } from '@azion/unenv-preset/polyfills/node/fs'
// Abrir arquivo e obter descritor
const fd = openSync('/path/to/file.txt', 'r')
// Ler do descritor de arquivo
const buffer = Buffer.alloc(1024)
readSync(fd, buffer, 0, 1024, 0)
// Fechar descritor de arquivo
closeSync(fd)

Polyfills globais

O preset também fornece polyfills para variáveis e objetos globais do Node.js:

Objeto GlobalDescrição
__dirnameNome do diretório atual.
__filenameNome do arquivo atual.
processInformações e variáveis de ambiente do processo.
performanceFuncionalidade de medição de desempenho.
navigatorObjeto compatível com navegador.

O preset também injeta automaticamente esses globais através da configuração do unenv:

import { preset } from '@azion/unenv-preset'
// Configuração do preset para injetar globais
export default {
inject: {
__dirname: preset.inject.__dirname,
__filename: preset.inject.__filename,
process: preset.inject.process,
performance: preset.inject.performance,
navigator: preset.inject.navigator
}
}

Referência da API

getFileContent

Decodifica o conteúdo de um arquivo e retorna um Buffer ou string.

Parâmetros:

ParâmetroDescriçãoValores
fileObjeto contendo o conteúdo do arquivo em base64.
returnBufferDefine o tipo de retorno (padrão: true).true → Retorna um Buffer, false → Retorna uma string.

Retorno:

Tipo de RetornoDescrição
Buffer | stringO conteúdo decodificado do arquivo.

Exemplo:

const fileBuffer = getFileContent(file) // retorna Buffer
const fileString = getFileContent(file, false) // retorna string

closeSync

Fecha um descritor de arquivo de forma síncrona.

Parâmetros:

ParâmetroDescrição
fdO descritor do arquivo a ser fechado.

Exemplo:

closeSync(fd)

openSync

Abre um arquivo de forma síncrona.

Parâmetros:

ParâmetroDescrição
pathCaminho do arquivo.
flagsModo de abertura (ex: ‘r’, ‘w’).
mode(Opcional) Permissões do arquivo.

Retorno:

Tipo de RetornoDescrição
numberO descritor do arquivo.

Exemplo:

const fd = openSync('/path/to/file.txt', 'r')

statSync

Recupera sincronamente as estatísticas (fs.Stats) do caminho especificado.

Parâmetros:

ParâmetroDescrição
pathO caminho do arquivo ou diretório.
options(Opcional) Opções para a chamada de estatísticas.

Retorno:

RetornoDescrição
fs.StatsO objeto de estatísticas do arquivo ou diretório.

Exemplo:

const stats = statSync('/path/to/file.txt')

readFileSync

Lê de forma síncrona o conteúdo completo de um arquivo.

Parâmetros:

ParâmetroDescrição
pathO caminho do arquivo.
options(Opcional) Opções para a leitura do arquivo.

Retorno:

RetornoDescrição
string | BufferO conteúdo do arquivo.

Exemplo:

const content = readFileSync('/path/to/file.txt', 'utf8')

readdirSync

Lê de forma síncrona o conteúdo de um diretório.

Parâmetros:

ParâmetroDescrição
pathO caminho do diretório.
options(Opcional) Opções para leitura do diretório.

Retorno:

RetornoDescrição
string[]Um array com os nomes dos arquivos no diretório.

Exemplo:

const files = readdirSync('/path/to/dir')

Contribuidores