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();생성자 옵션
| 필드 | 타입 | 설명 |
|---|---|---|
apiKey | string | 필수. Hwip 설정의 API 키 |
baseUrl | string? | API 기본 URL (기본값: https://api.hwip.app/v1) |
timeout | number? | 요청 타임아웃(밀리초, 기본값 30000) |
Notify 페이로드
| 필드 | 타입 | 설명 |
|---|---|---|
title | string? | 푸시 제목 |
body | string? | 푸시 본문 |
url | string? | 함께 보낼 URL |
type | 'note' | 'link' | 'file' | 'hook'? | 푸시 타입 (기본값: hook) |
priority | 'low' | 'normal' | 'high' | 'urgent'? | 우선순위 (기본값: normal) |
targetDeviceId | string? | 특정 기기로 전송 |
봉인
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 확인 */ }
}