[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-75397":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":23,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":36,"readmeContent":37,"aiSummary":38,"trendingCount":16,"starSnapshotCount":16,"syncStatus":39,"lastSyncTime":40,"discoverSource":41},75397,"files-sdk","haydenbleasel\u002Ffiles-sdk","haydenbleasel","A unified storage SDK for object and blob backends. One small, honest API. Web-standards I\u002FO.","https:\u002F\u002Ffiles-sdk.dev\u002F",null,"TypeScript",1230,36,4,1,0,15,24,728,45,17.7,"MIT License",false,"main",[26,27,28,29,30,31,32,33,34,35],"agents","blob","cloudflare","files","google","minio","r2","s3","storage","vercel","2026-06-12 02:03:33","# Files SDK\n\nA unified storage SDK for object and blob backends. One small, honest API. Web-standards I\u002FO. An escape hatch when you need the native client.\n\n## Install\n\n```sh\nnpm install files-sdk\n```\n\nEach provider's native SDK is an **optional peer dependency** — install only the ones you actually use, alongside `files-sdk` itself. A few examples:\n\n```sh\n# S3 (and any S3-compatible: R2, MinIO, DigitalOcean Spaces, Backblaze B2, Wasabi, …)\nnpm install files-sdk @aws-sdk\u002Fclient-s3 @aws-sdk\u002Fs3-presigned-post @aws-sdk\u002Fs3-request-presigner\n\n# Google Cloud Storage\nnpm install files-sdk @google-cloud\u002Fstorage google-auth-library\n\n# Azure Blob Storage\nnpm install files-sdk @azure\u002Fstorage-blob @azure\u002Fidentity\n\n# Vercel Blob\nnpm install files-sdk @vercel\u002Fblob\n```\n\nSee [files-sdk.dev](https:\u002F\u002Ffiles-sdk.dev) for the per-adapter install command. If you import an adapter without its peer installed, Node will throw `ERR_MODULE_NOT_FOUND` naming the missing package.\n\n## Quick start\n\n```ts\nimport { Files } from \"files-sdk\";\nimport { s3 } from \"files-sdk\u002Fs3\";\n\nconst files = new Files({\n  adapter: s3({ bucket: \"uploads\" }),\n});\n\nawait files.upload(\"avatars\u002Fabc.png\", file, { contentType: \"image\u002Fpng\" });\nconst got = await files.download(\"avatars\u002Fabc.png\");\nconst exists = await files.exists(\"avatars\u002Fabc.png\");\n```\n\nSwap the adapter import (`files-sdk\u002Fr2`, `files-sdk\u002Fgcs`, `files-sdk\u002Fazure`, …) and the rest of your code stays the same.\n\n## File handles\n\nUse `files.file(key)` when your application code works with the same object repeatedly:\n\n```ts\nconst avatar = files.file(\"avatars\u002Fabc.png\");\n\nawait avatar.upload(file, { contentType: \"image\u002Fpng\" });\n\nif (await avatar.exists()) {\n  const meta = await avatar.head();\n  const url = await avatar.url({ expiresIn: 300 });\n}\n\nawait avatar.delete();\n```\n\nFile handles are a thin layer over the same adapter methods, so adapters do not need to implement anything extra.\n\n## What you get\n\n- **One API across providers** — `upload`, `download`, `head`, `exists`, `delete`, `copy`, `list`, `url`, `signedUploadUrl`, plus `file(key)` for a key-scoped handle. The shape is the same on S3, GCS, Azure, Vercel Blob, the local filesystem, and consumer providers like Dropbox. `exists` returns `false` only when the provider reports `NotFound`; auth, permission, and transport failures still throw.\n- **Web-standard I\u002FO** — bodies are `Blob`, `File`, `ReadableStream`, `Uint8Array`, `ArrayBuffer`, or `string`. No provider-specific types leak into your code.\n- **Escape hatch** — every adapter exposes its native client at `files.raw`, so provider-specific features are one property access away.\n- **Tree-shakeable** — each adapter is a separate entry point. You only bundle what you import.\n\n## Adapters\n\nA growing catalog covering S3 and S3-compatible stores, the major cloud blob platforms, edge\u002Fserverless blob services, the local filesystem, and consumer file providers. See [files-sdk.dev](https:\u002F\u002Ffiles-sdk.dev) for the current list and per-adapter setup.\n\n## AI tools\n\nA growing set of subpaths wrap a configured `Files` instance as ready-made tools for popular AI SDKs — currently the [Vercel AI SDK](https:\u002F\u002Fai-sdk.dev) (`files-sdk\u002Fai-sdk`), OpenAI's [Responses API](https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fapi-reference\u002Fresponses) and [Agents SDK](https:\u002F\u002Fopenai.github.io\u002Fopenai-agents-js\u002F) (`files-sdk\u002Fopenai`), and Anthropic's [Claude Agent SDK](https:\u002F\u002Fdocs.claude.com\u002Fen\u002Fapi\u002Fagent-sdk\u002Foverview) (`files-sdk\u002Fclaude`). All share the same file operations and approval-gating defaults, so models can browse, read, and (optionally) mutate your bucket through the same unified surface as your application code. See [files-sdk.dev](https:\u002F\u002Ffiles-sdk.dev) for the current list and per-SDK setup.\n\n## License\n\nMIT\n","Files SDK 是一个统一的对象和块存储后端的SDK，提供简洁一致的API接口，并遵循Web标准I\u002FO。其核心功能包括跨多个云存储提供商（如S3、Google Cloud Storage、Azure Blob Storage等）的一致性操作，支持上传、下载、存在检查等基本文件管理功能，同时允许通过`files.raw`直接访问底层客户端以使用特定于提供商的功能。适用于需要在不同云存储服务间切换或同时使用多种存储解决方案的应用场景，帮助开发者简化代码维护工作，提高开发效率。此外，该SDK设计为可树摇优化，仅需打包实际使用的适配器，有助于减少最终构建体积。",2,"2026-06-11 03:52:39","CREATED_QUERY"]