Hwip Docs
CLI & SDK

SDK

HwipHook 클라이언트로 직접 짠 코드에서 푸시를 보낸다.

HwipHook은 @hwip/cli의 프로그래밍 인터페이스다. 네이티브 fetch를 쓰고 런타임 의존성이 없다.

import { HwipHook } from '@hwip/cli';

const hook = new HwipHook({ apiKey: 'ak_...' });

// 알림
const result = await hook.notify({
  title: 'Build Complete',
  body: 'Deploy succeeded',
  url: 'https://example.com/deploy/123',
  priority: 'high',
});
console.log(result.pushId); // 'push_01JXY...'

// 목록
const list = await hook.list({ limit: 5 });
console.log(list.pushes);

// 해제
await hook.dismiss('push_01JXY...');
await hook.dismissAll();

생성자 옵션

필드타입설명
apiKeystring필수. Hwip 설정의 API 키
baseUrlstring?API 기본 URL (기본값: https://api.hwip.app/v1)
timeoutnumber?요청 타임아웃(밀리초, 기본값 30000)

Notify 페이로드

필드타입설명
titlestring?푸시 제목
bodystring?푸시 본문
urlstring?함께 보낼 URL
type'note' | 'link' | 'file' | 'hook'?푸시 타입 (기본값: hook)
priority'low' | 'normal' | 'high' | 'urgent'?우선순위 (기본값: normal)
targetDeviceIdstring?특정 기기로 전송

봉인

notify는 CLI와 같은 방식으로 보내기 전에 이 머신에서 푸시를 봉인한다(암호화 참고). 평문 대체 경로는 없다. 봉인한 채 보낼 수 없으면 HwipError를 던진다:

code의미
NO_APP_DEVICE계정에 로그인한 앱이 없어 푸시를 읽을 곳이 없다
E2E_REQUIRED앱은 로그인돼 있지만 이번 전송을 봉인하지 못했다(기기 목록·키를 불러오지 못함, 키를 가진 기기 없음)

에러 처리

import { HwipHook, AuthenticationError, QuotaExceededError, HwipError } from '@hwip/cli';

try {
  await hook.notify({ title: 'Hello' });
} catch (err) {
  if (err instanceof AuthenticationError) { /* 잘못된 API 키 */ }
  if (err instanceof QuotaExceededError) { /* 한도 도달 */ }
  if (err instanceof HwipError) { /* 그 밖의 API 에러. err.code 확인 */ }
}

이 페이지에서