Files SDK
Files SDK è un unified storage SDK con un’unica API per backends object/blob come S3, R2, GCS, Azure e altro, con input web e adapter.
Che cos'è Files SDK?
Files SDK è un unified storage SDK che espone un'unica API coerente per interagire con backend di object e blob storage. L'obiettivo è consentirti di chiamare le stesse operazioni di alto livello — come upload, download, list, delete e helper correlati — utilizzando diversi provider dietro le quinte.
Funziona instradando le richieste attraverso un adapter specifico per provider. Questo mantiene stabili le parti condivise dei flussi di storage, mentre le differenze tra provider (come comportamenti relativi agli URL o determinati casi limite) vengono gestite all'interno dell'adapter senza modificare i punti di chiamata.
Funzionalità principali
- Classe Files unica per tutti i provider: Usa un'unica superficie API per le operazioni di storage comuni (upload, download, list, delete, head, exists, copy e helper per gli URL), invece di scrivere codice specifico per ogni backend.
- Selezione del provider basata su adapter al momento della costruzione: L'adapter viene fissato quando istanzi
new Files({ adapter: ... }), evitando pattern di "scelta del provider per chiamata" che appesantirebbero l'utilizzo. - Supporto per input web-standard: Accetta
File,Blob,ReadableStream,ArrayBufferestringcome input per gli upload. - Esegue ovunque sia disponibile
fetch: Progettato per funzionare in ambienti come Node, Bun, Workers e Vercel (come indicato nella pagina) per un comportamento runtime coerente. - Escape hatch del provider tramite
files.raw: Quando hai bisogno di funzionalità specifiche del provider, puoi accedere al client nativo attraverso una proprietà (files.raw), tipizzata per adapter. - Gestione degli errori normalizzata: Gli errori vengono esposti come un unico tipo
FilesErrorcon un codice normalizzato tra i provider, con l'errore originale del provider allegato come causa.
Come usare Files SDK
- Installa l'SDK (e solo gli adapter che intendi usare come peer dependencies):
npm install files-sdk
- Importa
Filese un adapter del provider, quindi crea un'istanzaFilescon l'adapter configurato per il tuo bucket/region (ad esempio S3). - Chiama i metodi condivisi sull'istanza, come:
files.upload(key, input)files.download(key)files.head(key)files.list({ prefix })files.delete(key)
- Usa
files.rawse hai bisogno di accedere a funzionalità specifiche del provider non coperte dalla superficie API comune.
Un esempio minimo dalla pagina:
import { Files } from "files-sdk";
import { s3 } from "files-sdk/s3";
const files = new Files({
adapter: s3({ bucket: "uploads", region: "us-east-1" }),
});
await files.upload("hello.txt", "world");
const file = await files.download("hello.txt");
const meta = await files.head("hello.txt");
const items = await files.list();
await files.delete("hello.txt");
Casi d'uso
- Costruire uno strato di storage che possa cambiare provider: Inizia con un backend (ad esempio S3-compatible storage) e later migra a un altro adapter senza riscrivere la logica di upload/download/list/delete della tua applicazione.
- Gestire input file browser-like in modo coerente nel codice backend: Usa i tipi di input supportati dall'SDK (
File,Blob,ReadableStream,ArrayBuffer,string) quando il tuo server riceve oggetti file web-standard. - Organizzare upload per prefix e gestire i cicli di vita degli oggetti a livello di app: Usa
list({ prefix })edelete(key)patterns per implementare collezioni gestite dall'app o "folder" su object storage. - Integrare con ambienti basati sulla disponibilità di
fetch: Deploya codice su Node, Bun, Workers o Vercel mentre usi le stesse API calls e inputs. - Usare errori normalizzati per retry/handling coerenti: Cattura
FilesErrorcon un codice normalizzato,检查
Alternative
- SDK di storage specifici per provider (es. client nativi S3/GCS/Azure): Offrono una copertura completa per ogni provider, ma richiedono generalmente percorsi di codice diversi per ciascun backend e una gestione separata delle attività comuni.
- Livelli di astrazione per object storage senza input web-standard: Alcune astrazioni forniscono un’interfaccia unificata, ma potrebbero non supportare lo stesso set di tipi di input web-native o le assunzioni runtime orientate a
fetch. - Librerie server-side per l’upload di file con opzione backend di storage: Utili quando l’obiettivo principale è la gestione degli upload, ma potrebbero non esporre lo stesso set di operazioni standardizzate (head/exists/copy/url helpers) e l’accesso escape-hatch al client nativo.
- Integrazione HTTP diretta agli endpoint object/Blob: Se hai bisogno del massimo controllo, chiamare direttamente le API HTTP dei provider evita l’astrazione, ma sposta la gestione di listing, signing, normalizzazione degli errori e differenze tra provider nella tua applicazione.
Alternative
open-codex-computer-use
open-codex-computer-use è un servizio open-source “Computer Use” in wrapper MCP per far eseguire azioni GUI agli agenti su macOS, Linux e Windows.
Lasso
Lasso è un PIM AI-first per team ecommerce: arricchisce attributi e descrizioni, gestisce dati fornitori e consente monitoraggio competitor via app o API.
Codex Plugins
Usa Codex Plugins per combinare skill, integrazioni app e server MCP in workflow riutilizzabili: estendi Codex per lavorare con Gmail, Google Drive e Slack.
Struere
Struere è un sistema operativo AI-native che sostituisce i workflow su spreadsheet con software strutturato: dashboard, alert e automazioni.
Ably Chat
Ably Chat è un’API e SDK per chat realtime: crea applicazioni personalizzate con reazioni, presenza e modifica/eliminazione dei messaggi.
garden-md
Trasforma trascrizioni e note riunioni in una wiki aziendale strutturata e navigabile con file Markdown locali e vista HTML, con sync da sorgenti supportate.