Kritiserer Bun-oppdatering: «Ingen god idé!»

Bun får innebygget Amazon S3-støtte, men mange utviklere mener leverandørspesifikke API-er ikke hører hjemme i et JavaScript-kjøremiljø.

Bun har fått innebygget støtte for Amazon S3. 📸: Kurt Lekanger
Bun har fått innebygget støtte for Amazon S3. 📸: Kurt Lekanger Vis mer

Bun har fra og med versjon 1.1.43 som kom nå i januar fått innebygget støtte for Amazon S3 Object Storage. Og i versjon 1.2 som kommer om ikke lenge skal det populære JavaScript-kjøremiljøet også få en innebygget PostgreSQL-klient.

Innebygget støtte for ting mange ofte bruker høres kanskje forlokkende ut, men Buns valg om å inkludere leverandørspesifikke API-er som S3 blir nå kritisert av flere, skriver DevClass.

Nyheten om S3-støtte først ble delt av Bun før jul, og da uttrykte utviklere bekymring for eventuelle konsekvenser om leverandørene skulle endre sine API-er:

Forsvarer avgjørelsen

Bun-sjef Jarred Sumner gikk imidlertid ut og forsvarte avgjørelsen:

– Hvilke "breaking changes"? S3 er mer enn 15 år gammelt. Det er nok gamle S3-klienter og S3-kompatible API-er at "breaking changes" er i praksis umulig å levere, skrev Sumner på X, som et svar på meldingen over.

Til dette svarer én at S3 legger til ny funksjonalitet hele tiden, og at det å oppgradere for å bruke ny funksjonalitet i S3 ikke bør ha noe å gjøre med hvilken versjon av hvilket kjøremiljø man bruker.

Sumner svarer at Bun ikke vil være en "early adopter" for ny funksjonalitet.

– Men det er ingenting som hindrer deg fra å bruke et tredjepartsbibliotek i slike situasjoner, sier Sumner.

Her er et eksempel fra dokumentasjonen på hvordan Bun-brukere nå kan bruke S3 direkte uten å trenge noen tredjepartsbiblioteker:

import { s3, write, S3Client } from "bun";

// Bun.s3 reads environment variables for credentials
// file() returns a lazy reference to a file on S3
const metadata = s3.file("123.json");

// Download from S3 as JSON
const data = await metadata.json();

// Upload to S3
await write(metadata, JSON.stringify({ name: "John", age: 30 }));

// Presign a URL (synchronous - no network request needed)
const url = metadata.presign({
  acl: "public-read",
  expiresIn: 60 * 60 * 24, // 1 day
});

// Delete the file
await metadata.delete();

PostgreSQL rett rundt hjørnet

Bun har allerede innebygget støtte for Sqlite for lokale databaser, men som nevnt skal også PostgreSQL (Bun.sql) komme innebygget snart.

Da kan du importere PostgreSQL-klienten slik:

import { sql } from "bun";
import { expect } from "bun:test";

const result = await sql`select 1 as x`;
expect(result).toEqual([{ x: 1 }]);

– I løpet av det siste året har ett av mine sideprosjekter vært en rask, innebygget PostgreSQL-klient for Bun, og den er nesten ferdig, skriver Jarred Sumner i lanseringsbloggposten for versojn 1.1.43.

Bun.sql kommer i versjon 1.2, som skal være bare noen dager unna, og kan prøves ut i canary-versjonen av Bun.