jotai-sync
Jotaiの2つのatomを同期する
同期した新しいatomを返す
使用例
code:ts
import { atom, useAtom } from 'jotai';
import { syncAtoms, ok, ng } from '@mrsekut/jotai-sync';
// 定義した2つのatom
const _valueAtom = atom<number>(0);
const _fieldAtom = atom<string>('');
// 同期させるatomを作成
_valueAtom,
_fieldAtom,
v => ok(v.toString()), // value → field
field => { // field → value
const n = parseInt(field, 10);
return isNaN(n) ? ng("Invalid number") : ok(n);
},
);
2つのatom_valueAtomと_fieldAtomを同期したいとする
_valueAtomは内部で使い回すもので、
_fieldAtomは
両者をsyncAtomsに与えると、新しくvalueAtomとfieldAtomが返ってくる
これらは、片方が更新されると、もう片方も更新される
同期したい場合は、これら2つを参照するようにすれば良い
もし、同期せずに片方のみの更新をしたい場合は、元のAtom(_)を参照すれば良い
異なる構造の値を同期することになるので、相互に変換する処理が必要
syncAtomsの第3,4引数で指定する
第3引数は、第1引数→第2引数向きの変換
第4引数は、第2引数→第1引数向きの変換
それぞれ、返り値はResult型にする
ok(), ng()のutility関数を使うと便利
READMEまたはモジュールドキュメントに例がある
すべてのエントリーポイントにモジュールドキュメントがある
パッケージのすべてのエントリーポイントには、そのモジュールに定義されている内容を要約するモジュールドキュメントがあるべきです。
ほとんどのシンボルにドキュメントがある
パッケージのシンボルの少なくとも80%にはシンボルドキュメントがあるべきです。現在、0%のシンボルにドキュメントが存在します。
説明がある
少なくとも1つのランタイムが互換性ありとしてマークされている
少なくとも2つのランタイムが互換性ありとしてマークされている
出自がある
パッケージは検証可能なCI/CDワークフローから公開されており、公開の透明性ログエントリがあるべきです。
todos
formatting
test
ci
docs
github
mainにpushすると自動でpublish
versionが更新されていなければ公開はしない
ただ、jotai-syncを使ってもボイラープレートが少しできちゃうので、それを簡素化するutilityがあってもいいかも