KO
베타 번역

@core / storage

1.0.1 ▾
인증됨MIT
GitHub

S3 호환 버킷(R2, S3, MinIO)과 로컬 디스크 파일 저장, 서명된 직접 업로드

코드파일 11개컨텍스트약 697토큰검사 통과

.genpmignore 적용 후 주입될 정확한 트리입니다. 고정 대상:

src/lib/storage/storage.ts읽기 전용 · 5b6a9cc
// Proveedor configurado por variables de entorno: `getStorage()` en toda la app; `setStorage()` en tests.
import { backendStorage, diskBackend, memoryBackend } from './memory.ts';
import type { StorageProvider } from './provider.ts';
import { s3Storage } from './s3.ts';

function need(env: Record<string, string | undefined>, name: string): string {
  const v = env[name];
  if (!v) throw new Error(`${name} is not set (see .env.example)`);
  return v;
}

export function storageFromEnv(env: Record<string, string | undefined> = process.env): StorageProvider {
  const req = (name: string) => need(env, name);
  const driver = env.STORAGE_DRIVER ?? 's3';
  if (driver === 's3')
    return s3Storage({
      endpoint: req('STORAGE_ENDPOINT'),
      bucket: req('STORAGE_BUCKET'),
      region: env.STORAGE_REGION,
      accessKeyId: req('STORAGE_ACCESS_KEY_ID'),
      secretAccessKey: req('STORAGE_SECRET_ACCESS_KEY'),
      publicUrl: env.STORAGE_PUBLIC_URL,
    });
  if (driver !== 'local' && driver !== 'memory') throw new Error(`unknown STORAGE_DRIVER: ${driver}`);
  const local = { secret: req('STORAGE_SECRET'), baseUrl: req('STORAGE_PUBLIC_URL') };
  if (driver === 'local') return backendStorage('local', diskBackend(env.STORAGE_LOCAL_DIR ?? '.storage'), local);
  return backendStorage('memory', memoryBackend(), local);
}

let current: StorageProvider | null = null;

export function getStorage(): StorageProvider {
  current ??= storageFromEnv();
  return current;
}

export function setStorage(s: StorageProvider): void {
  current = s;
}

@core/storage 신고

패키지를 신고하려면 GitHub로 로그인하세요.