JavaScript SDK

Preview
npm-пакет @fastpic/sdk перебуває в Preview. Контракт API нижче стабільний, але пакет поки недоступний для публічного встановлення. Приклади коду демонструють запланований інтерфейс.

Встановлення

Після публікації пакету:

terminal
npm install @fastpic/sdk
# or
yarn add @fastpic/sdk

Ініціалізація

Створіть singleton-екземпляр FastPic із вашим API-ключем. Переіспользуйте його по всьому застосунку.

fastpic-client.ts
import { FastPic } from '@fastpic/sdk'
 
export const fp = new FastPic({
apiKey: process.env.FP_KEY!
})

fp.images.*

Дзеркало методів REST API. Ті самі параметри, ті самі формати відповідей.

images.ts
// upload
const image = await fp.images.upload(file, { name: 'product.jpg' })
 
// list with pagination
const { items, total } = await fp.images.list({ page: 1, limit: 30 })
 
// retrieve / delete
const one = await fp.images.retrieve(image.publicId)
await fp.images.delete(image.publicId)

fp.url(publicId)

Генеруйте URL трансформацій за допомогою fluent-будівника. Ледачий: нічого не виконується на сервері до виклику stringify.

thumb.ts
const src = fp.url(publicId)
.resize(800, 600)
.format('webp')
.quality(85)
.fit('cover')
.toString()
// → "https://media.fastpic.pro/{publicId}?w=800&h=600&fmt=webp&q=85&fit=cover"

Обробка помилок

Усі викинуті помилки — екземпляри FastPicError з полями code, statusCode, requestId та оригінальним повідомленням. Використовуйте switch по полю code для розгалуження логіки.

catch.ts
try {
await fp.images.upload(file)
} catch (e) {
if (e instanceof FastPicError && e.code === 'rate_limit_exceeded') {
console.warn('backoff: ', e.requestId)
}
}

TypeScript-типи

Типи входять до складу пакету. Окремий @types/fastpic не потрібен.