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 LibrariesUso
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 unenvexport 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ódulo | Descrição |
---|---|
crypto | Funcionalidade criptográfica completa, incluindo hashing, criptografia e geração de UUID. |
events | Manipulação de eventos através de events/events.js . |
http | Funcionalidade de cliente HTTP via stream-http . |
module | Compatibilidade básica com o sistema de módulos (funcionalidade limitada). |
stream | Implementações de fluxo via stream-browserify . |
string_decoder | Utilitários para decodificação de strings. |
url | Análise e formatação de URLs. |
util | Funções utilitárias. |
timers | Funções de temporização via timers-browserify . |
vm | Funcionalidade de máquina virtual via vm-browserify . |
zlib | Funcionalidade 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 hashconst hash = createHash('sha256')hash.update('some data')console.log(hash.digest('hex'))
// Gerar um UUIDconst 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 arquivoconst content = readFileSync('/path/to/file.txt', 'utf8')// Escrever em um arquivowriteFileSync('/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órioconst files = readdirSync('/path/to/dir')
// Criar um diretóriomkdirSync('/path/to/new-dir')
Informações sobre arquivos
import { statSync, existsSync } from '@azion/unenv-preset/polyfills/node/fs'
// Checar se um arquivo existeif (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 descritorconst fd = openSync('/path/to/file.txt', 'r')
// Ler do descritor de arquivoconst buffer = Buffer.alloc(1024)readSync(fd, buffer, 0, 1024, 0)
// Fechar descritor de arquivocloseSync(fd)
Polyfills globais
O preset também fornece polyfills para variáveis e objetos globais do Node.js:
Objeto Global | Descrição |
---|---|
__dirname | Nome do diretório atual. |
__filename | Nome do arquivo atual. |
process | Informações e variáveis de ambiente do processo. |
performance | Funcionalidade de medição de desempenho. |
navigator | Objeto 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 globaisexport 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âmetro | Descrição | Valores |
---|---|---|
file | Objeto contendo o conteúdo do arquivo em base64. | — |
returnBuffer | Define o tipo de retorno (padrão: true ). | true → Retorna um Buffer, false → Retorna uma string. |
Retorno:
Tipo de Retorno | Descrição |
---|---|
Buffer | string | O conteúdo decodificado do arquivo. |
Exemplo:
const fileBuffer = getFileContent(file) // retorna Bufferconst fileString = getFileContent(file, false) // retorna string
closeSync
Fecha um descritor de arquivo de forma síncrona.
Parâmetros:
Parâmetro | Descrição |
---|---|
fd | O descritor do arquivo a ser fechado. |
Exemplo:
closeSync(fd)
openSync
Abre um arquivo de forma síncrona.
Parâmetros:
Parâmetro | Descrição |
---|---|
path | Caminho do arquivo. |
flags | Modo de abertura (ex: ‘r’, ‘w’). |
mode | (Opcional) Permissões do arquivo. |
Retorno:
Tipo de Retorno | Descrição |
---|---|
number | O 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âmetro | Descrição |
---|---|
path | O caminho do arquivo ou diretório. |
options | (Opcional) Opções para a chamada de estatísticas. |
Retorno:
Retorno | Descrição |
---|---|
fs.Stats | O 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âmetro | Descrição |
---|---|
path | O caminho do arquivo. |
options | (Opcional) Opções para a leitura do arquivo. |
Retorno:
Retorno | Descrição |
---|---|
string | Buffer | O 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âmetro | Descrição |
---|---|
path | O caminho do diretório. |
options | (Opcional) Opções para leitura do diretório. |
Retorno:
Retorno | Descrição |
---|---|
string[] | Um array com os nomes dos arquivos no diretório. |
Exemplo:
const files = readdirSync('/path/to/dir')
Contribuidores