🖼️

GyazoのNodeJSライブラリーをTypescriptで作った話

2024/12/12に公開

Gyazoのnodejs用のclientライブラリーgyazo-api-ts を作って、OSSで公開しました。

https://gyazo.com

https://www.npmjs.com/package/gyazo-api-ts

人生で初めて、個人のnpmパッケージを公開したのですが、思ったより簡単でした。

きっかけ

個人で自分用のraycastの拡張アプリを作っていて、そこでgyazoに画像をアップロードする必要があり、npmパッケージを探した結果、 gyazo-api がありましたが、かなり古くて型情報がなかったのと、依存パッケージが古かったので、新しくTSのパッケージがほしいと思ったのがきっかけでした。

API設計

基本的に Gyazo API に書かれている内容を簡単に呼び出せるようにしてくれる、ごく単純なライブラリーです。

https://gyazo.com/api/docs

なので、元々あった node-api をフォークして型だけつけようと思いましたが、結局かなり改修してしまいました。

ただ、基本的にやっていることは一緒です。

例外を投げないようにする

個人的にsupabaseのjs clientが結構すきで、そのAPI通りにsuccessとerrorを返すようにしました、おそらくsupabaseはgoっぽい書き方をしている気もします。

import { Gyazo } from 'gyazo-api-ts';

const gyazo = new Gyazo('your-access-token');
const { success, error} = await gyazo.get('image-id');

if(error) {
  console.error(error);
} else {
  console.log(success);
}

その他の開発周り

  • Test
    • vitestを使ってみました。
  • ESlint
    • flat config を使ってみました。
  • tsup
    • TSライブラリーのビルドを簡単にしてくれるライブラリーみたいです。

最後に

今はAuthを含まない画像操作系のラッパーだけです、今後もし必要になったら、Gyazoはoauth対応しているので、認証・認可機能を追加しようと思っています。

PRとIssueお待ちしております。

Helpfeel Tech Blog

Discussion