## 懸念
最大の懸念は **今、ファイルで開始時刻を管理し、切り替わりのタイミングでFileIOを行って制御している** こと。これは[[Obsidian Sync]]などの複数端末同期対策。
なぜ問題かというと
- 毎秒更新処理を実行すると、常にFileIOが発生する
- ボトルネックにはならないと思うが無駄な負荷が...
## TODO
ミニマム対応で攻めたい。
- [x] 準備運動
- [x] [[📝none-lsでprettierdを設定したときesbuild.config.mjsで保存後にフォーマットが効かない]]
- [x] カレンダーの表示崩れをなおす
- [x] 30秒に1回の定期実行処理を起動時に割り当て
- [x] まずは5秒おきにconsole.logを出す
- [x] 停止用のハンドラーを作成
- [x] `timer.json`から計測開始時刻を取得し、現在時刻との差分を表示
- [x] 計測開始時刻がない場合はスルー (非計測中)
- [x] フッターに表示
- [x] アイコンに統一感を持たせる
- [x] 表示をHHmmssではなく日本語の時分表示にする
- [x] 実行を30秒おきに
- [x] 計測開始と計測終了時は更新する
- [x] オプションの追加
- [x] 時刻表示のON/OFF
## パッケージ最新化
```console
Minor Update New backwards-compatible features.
◯ obsidian devDep 1.1.1 ❯ 1.4.11 https://obsidian.md
◯ tslib devDep 2.4.0 ❯ 2.6.2 https://www.typescriptlang.org/
Major Update Potentially breaking API changes. Use caution.
◉ @event-calendar/core devDep 0.15.3 ❯ 2.6.1 https://vkurko.github.io/calendar/
◉ @event-calendar/day-grid devDep 0.15.3 ❯ 2.6.1 https://vkurko.github.io/calendar/
◉ @tsconfig/svelte devDep 3.0.0 ❯ 5.0.2 https://github.com/tsconfig/bases#readme
◉ @types/node devDep 16.18.82 ❯ 20.11.19 https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node
◉ @typescript-eslint/eslint-plugin devDep 5.29.0 ❯ 7.0.1 https://github.com/typescript-eslint/typescript-eslint#readme
◉ @typescript-eslint/parser devDep 5.29.0 ❯ 7.0.1 https://github.com/typescript-eslint/typescript-eslint#readme
◉ husky devDep 8.0.3 ❯ 9.0.11 https://github.com/typicode/husky#readme
◉ prettier devDep 2.8.8 ❯ 3.2.5 https://prettier.io
◉ prettier-plugin-svelte devDep 2.10.1 ❯ 3.2.1 https://github.com/sveltejs/prettier-plugin-svelte#readme
◉ svelte devDep 3.59.2 ❯ 4.2.11 https://svelte.dev
◉ typescript devDep 4.9.5 ❯ 5.3.3 https://www.typescriptlang.org/
Non-Semver Versions less than 1.0.0, caution.
◉ owlelia 0.47.2 ❯ 0.48.0 https://github.com/tadashi-aikawa/owlelia#readme
◉ esbuild devDep 0.14.47 ❯ 0.20.1 https://github.com/evanw/esbuild#readme
❯◉ esbuild-svelte devDep 0.7.4 ❯ 0.8.0 https://github.com/EMH333/esbuild-svelte#readme
```
### エラー
```error
✘ [ERROR] Invalid option in build() call: "watch"
/home/tadashi-aikawa/git/github.com/tadashi-aikawa/silhouette/node_modules/esbuild/lib/main.js:256:12:
256 │ throw new Error(`Invalid option ${where}: ${quote(key)}`);
╵ ^
```
以下の件と同じっぽい。
> [[📝Obsidianプラグイン開発プロジェクトのesbuildを0.15から0.20にアップグレードしたらビルド時にInvalid optionエラーになる]]
他にも[[Babelを使ってTypeScript対応 (Jest)|Babelを使ってTypeScript対応]]していたので、[[esbuildを使ってTypeScript対応 (Jest)|esbuildを使ってTypeScript対応]]するようにした。