@bagelink/sdk

中文文档
1.20.64发布于 2026/11/07MITTypeScriptESM + CJS近 30 天下载 1.8万

Bagel core sdk packages

原始使用文档
文档目录9 节
  1. Features
  2. Installation
  3. Quick Start
  4. 1. Generate SDK
  5. 2. Initialize
  6. 3. Use
  7. Configuration
  8. State Management
  9. Type Assignment

@bagelink/sdk

OpenAPI-based TypeScript SDK generator with Vue 3 composables.

Features

  • 🚀 Generate type-safe SDKs from OpenAPI specifications
  • 🎯 Enhanced responses - array + metadata in one object
  • 🔐 Built-in authentication support
  • 🎨 FastAPI/Pydantic error parsing
  • 📡 SSE/Stream support with type safety
  • ⚡ Request state management composables
  • 🔧 Flexible configuration with interceptors

Installation

pnpm add @bagelink/sdk

Quick Start

1. Generate SDK

# From OpenAPI spec
VITE_BAGEL_BASE_URL=https://api.example.com bun run bin/index.ts .bagelink

2. Initialize

import { createApi } from './.bagelink/api'

createApi({
  baseURL: '/api',
  withCredentials: true
})

3. Use

import { useApi } from './.bagelink/api'

const api = useApi()
const users = await api.users.get()

// Array operations
for (const user of users) {
  console.log(user.name)
}

// Metadata
console.log(users.totalCount, users.page)

// Raw access
console.log(users.$raw.headers)

Configuration

createApi({
  baseURL: '/api',
  withCredentials: true,
  auth: {
    getToken: () => localStorage.getItem('token'),
    onUnauthorized: () => router.push('/login')
  },
  onError: (error) => {
    console.error(error.message)
    if (error.fields) {
      // Handle validation errors
    }
  },
  interceptors: {
    request: (config) => {
      // Modify request
      return config
    }
  }
})

State Management

import { useApiRequest } from './.bagelink/api'

const { loading, error, data, execute } = useApiRequest(
  () => api.users.get()
)

Type Assignment

For assigning single objects to plain types:

import { unwrap } from './.bagelink/api'

const agent = ref<AgentResponse | null>(null)
agent.value = unwrap(await api.agents.getByAgentId({ agentId }))

Arrays work without unwrap():

const agents = ref<AgentResponse[]>([])
agents.value = await api.agents.get()  // Works fine

版本与发布记录

@bagelink/sdk 共发布 1,261 个版本,首次发布于 2023/11/21;过去 12 个月发布了 566 个版本。

版本发布日期距今
1.20.64latest2026/11/071 天前
1.20.582026/11/062 天前
1.20.562026/11/062 天前
1.20.542026/11/062 天前
1.20.522026/11/052 天前
1.20.502026/11/052 天前

关于 @bagelink/sdk 的常见问题

@bagelink/sdk 是什么?

Bagel core sdk packages

如何安装 @bagelink/sdk?

在项目目录运行 npm install @bagelink/sdk,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:vue(^3.3.0)、type-fest(^4)、@typescript-eslint/typescript-estree(^8.33.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。它还提供命令行工具 bagelink,可以用 npx bagelink 直接运行。

@bagelink/sdk 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@bagelink/sdk 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@bagelink/sdk 可以商用吗?

@bagelink/sdk 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@bagelink/sdk 的下载量有多少?

根据 npm 官方下载统计,@bagelink/sdk 在 2026/10/08 – 2026/11/06 这 30 天内被下载 17,948 次,日均约 598 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@bagelink/sdk 还在维护吗?

最新版本 1.20.64 发布于 2026/11/07(1 天前);至今共发布 1261 个版本,其中过去 12 个月发布了 566 个;首次发布于 2023/11/21。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。