Commit 2ca8965
authored
feat: TCNASDP認証の自動リフレッシュ機能 (#63)
* feat: AuthStateに"refreshing"を追加しTCNetConfigurationを拡張
認証の自動リフレッシュ機能の基盤として、AuthState型に
"refreshing"状態を追加し、TCNetConfigurationにautoReauth
(デフォルトtrue)とreauthInterval(デフォルト60000ms)を追加する。
* test: 再認証 performReauth のテストを追加 (Red)
* feat: performReauth/executeReauthを実装
resetAuthSession + sendAuthSequenceの既存フローに合流する
再認証ロジックを実装する。single-flight保証付き。
executeReauthでresetAuthSession後にstate="refreshing"を設定し、
ユーザーが再認証中を観測可能にする。
handleAuthPacketのcmd=1受理条件にrefreshingを追加する。
* feat: startAutoReauth/stopAutoReauthを実装
認証成功後に自動再認証タイマーを起動する仕組みを追加する。
autoReauth=trueかつreauthInterval>=10000の場合のみ起動する。
* feat: 公開reauth()メソッドを追加
手動で認証をリフレッシュするための公開APIを追加する。
single-flight保証付きで、進行中の再認証にはPromiseを共有する。
* feat: 初回認証成功時にautoReauthタイマーを起動
* feat: disconnect時にautoReauthタイマーを確実に停止
* docs: 認証リフレッシュ機能のドキュメントを追加
* refactor: コードレビュー指摘に基づく改善
- executeReauthのonAuthから冗長な_authState代入を削除
テスト側でhandleAuthPacketの実フローを忠実にシミュレートする
- startAutoReauthのsetIntervalにunref()を追加
disconnect忘れ時にプロセス終了をブロックしない
* fix: 並列レビュー指摘に基づく5件の修正
- T1 [Critical]: disconnectSocketsでreauthPromise進行中なら
authFailedをemitしてPromiseを確実にrejectする
- T2 [High]: executeReauthのcatchでリスナー・タイマーを
cleanupしsendAuthSequence失敗時のリークを防止する
- T3 [Medium]: executeReauth内のsetTimeoutにunref()を追加し
disconnect後のプロセス終了ブロックを防止する
- T4 [Low]: reauthInterval=10000の境界値テストを追加する
- T5 [Low]: reauthFailedイベントの引数仕様をドキュメントに追記する
* fix: executeReauthからsendAuthSequence呼び出しを削除
sendAuthSequenceはsessionToken===nullガードでresetAuthSessionを
呼び出すため、executeReauthで設定した"refreshing"状態が"none"に
上書きされていた。実機テストで以下の改善を確認:
- "refreshing"状態が正しく観測可能になった
- Bridgeのトークン再送が高速化(94s→2s)
- 全再認証が成功(修正前は1/3のみ成功)
BridgeはOptInブロードキャスト経由でトークンを再送するため、
resetAuthSessionによる状態リセットのみで再認証フローに合流できる。
* chore: 認証リフレッシュ機能のchangesetを追加
* refactor: PRレビュー指摘に基づく3件の改善
- reauth()でreauthPromiseチェックをstate チェックの前に移動し、
再認証中のpending状態でもPromiseを返せるようにする
- reauthIntervalのJSDocに10000ms下限の制約を明記する
- executeReauthでresetAuthSession()の代わりに必要な状態のみ
個別リセットしbridgeIsWindowsキャッシュを保持する
* fix: CodeRabbitレビュー2件の指摘に対応
- startAutoReauthに接続・認証状態ガードを追加
authenticatedリスナー内でdisconnect等が呼ばれた場合に
不要なタイマー起動を防止する
- executeReauthのcatchでrefreshing状態をfailedに回復
タイムアウト等の失敗後にauthenticationStateが永遠に
refreshingのまま残る問題を修正する
* refactor: CodeRabbitレビュー3件目の指摘に対応
- executeReauthのJSDocを実装に合わせて更新する
(resetAuthSession/sendAuthSequenceを呼ばない設計の説明)
- 否定系テストで意図したガード以外の前提条件を満たすよう修正
(connected/authState設定を追加し、対象ガードのみ検証)
* test: performReauthのsingle-flightテストコメントを正確に修正1 parent b6748a6 commit 2ca8965
5 files changed
Lines changed: 488 additions & 3 deletions
File tree
- .changeset
- docs/wiki
- src
- tests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
77 | 77 | | |
78 | 78 | | |
79 | 79 | | |
| 80 | + | |
80 | 81 | | |
81 | 82 | | |
82 | | - | |
| 83 | + | |
83 | 84 | | |
84 | 85 | | |
85 | 86 | | |
86 | 87 | | |
87 | 88 | | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
88 | 108 | | |
89 | 109 | | |
90 | 110 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
24 | | - | |
| 24 | + | |
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
| 13 | + | |
13 | 14 | | |
14 | 15 | | |
15 | 16 | | |
| |||
54 | 55 | | |
55 | 56 | | |
56 | 57 | | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
57 | 67 | | |
58 | 68 | | |
59 | 69 | | |
| |||
94 | 104 | | |
95 | 105 | | |
96 | 106 | | |
| 107 | + | |
| 108 | + | |
97 | 109 | | |
98 | 110 | | |
99 | 111 | | |
| |||
239 | 251 | | |
240 | 252 | | |
241 | 253 | | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
242 | 260 | | |
243 | 261 | | |
244 | 262 | | |
| |||
894 | 912 | | |
895 | 913 | | |
896 | 914 | | |
| 915 | + | |
| 916 | + | |
| 917 | + | |
| 918 | + | |
| 919 | + | |
| 920 | + | |
| 921 | + | |
| 922 | + | |
| 923 | + | |
| 924 | + | |
| 925 | + | |
| 926 | + | |
| 927 | + | |
| 928 | + | |
| 929 | + | |
| 930 | + | |
| 931 | + | |
| 932 | + | |
| 933 | + | |
| 934 | + | |
| 935 | + | |
| 936 | + | |
| 937 | + | |
| 938 | + | |
| 939 | + | |
| 940 | + | |
| 941 | + | |
| 942 | + | |
| 943 | + | |
| 944 | + | |
| 945 | + | |
| 946 | + | |
| 947 | + | |
| 948 | + | |
| 949 | + | |
| 950 | + | |
| 951 | + | |
| 952 | + | |
| 953 | + | |
| 954 | + | |
| 955 | + | |
| 956 | + | |
| 957 | + | |
| 958 | + | |
| 959 | + | |
| 960 | + | |
| 961 | + | |
| 962 | + | |
| 963 | + | |
| 964 | + | |
| 965 | + | |
| 966 | + | |
| 967 | + | |
| 968 | + | |
| 969 | + | |
| 970 | + | |
| 971 | + | |
| 972 | + | |
| 973 | + | |
| 974 | + | |
| 975 | + | |
| 976 | + | |
| 977 | + | |
| 978 | + | |
| 979 | + | |
| 980 | + | |
| 981 | + | |
| 982 | + | |
| 983 | + | |
| 984 | + | |
| 985 | + | |
| 986 | + | |
| 987 | + | |
| 988 | + | |
| 989 | + | |
| 990 | + | |
| 991 | + | |
| 992 | + | |
| 993 | + | |
| 994 | + | |
| 995 | + | |
| 996 | + | |
| 997 | + | |
| 998 | + | |
| 999 | + | |
| 1000 | + | |
| 1001 | + | |
| 1002 | + | |
| 1003 | + | |
| 1004 | + | |
| 1005 | + | |
| 1006 | + | |
| 1007 | + | |
| 1008 | + | |
| 1009 | + | |
| 1010 | + | |
| 1011 | + | |
| 1012 | + | |
| 1013 | + | |
| 1014 | + | |
| 1015 | + | |
| 1016 | + | |
| 1017 | + | |
| 1018 | + | |
| 1019 | + | |
897 | 1020 | | |
898 | 1021 | | |
899 | 1022 | | |
| |||
974 | 1097 | | |
975 | 1098 | | |
976 | 1099 | | |
977 | | - | |
| 1100 | + | |
978 | 1101 | | |
979 | 1102 | | |
980 | 1103 | | |
| |||
1006 | 1129 | | |
1007 | 1130 | | |
1008 | 1131 | | |
| 1132 | + | |
1009 | 1133 | | |
1010 | 1134 | | |
1011 | 1135 | | |
| |||
1019 | 1143 | | |
1020 | 1144 | | |
1021 | 1145 | | |
| 1146 | + | |
| 1147 | + | |
| 1148 | + | |
| 1149 | + | |
| 1150 | + | |
| 1151 | + | |
| 1152 | + | |
| 1153 | + | |
| 1154 | + | |
| 1155 | + | |
| 1156 | + | |
| 1157 | + | |
| 1158 | + | |
| 1159 | + | |
| 1160 | + | |
| 1161 | + | |
| 1162 | + | |
| 1163 | + | |
| 1164 | + | |
| 1165 | + | |
| 1166 | + | |
| 1167 | + | |
1022 | 1168 | | |
1023 | 1169 | | |
1024 | 1170 | | |
| |||
0 commit comments