@sayue_ltr/fleq 1.49.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/CHANGELOG.md +898 -0
  2. package/LICENSE +21 -0
  3. package/README.md +535 -0
  4. package/assets/icons/.gitkeep +0 -0
  5. package/assets/sounds/.gitkeep +0 -0
  6. package/assets/sounds/cancel.mp3 +0 -0
  7. package/assets/sounds/critical.mp3 +0 -0
  8. package/assets/sounds/info.mp3 +0 -0
  9. package/assets/sounds/normal.mp3 +0 -0
  10. package/assets/sounds/warning.mp3 +0 -0
  11. package/dist/config.js +638 -0
  12. package/dist/dmdata/connection-manager.js +2 -0
  13. package/dist/dmdata/endpoint-selector.js +185 -0
  14. package/dist/dmdata/multi-connection-manager.js +158 -0
  15. package/dist/dmdata/rest-client.js +281 -0
  16. package/dist/dmdata/telegram-parser.js +704 -0
  17. package/dist/dmdata/volcano-parser.js +647 -0
  18. package/dist/dmdata/ws-client.js +336 -0
  19. package/dist/engine/cli/cli-init.js +266 -0
  20. package/dist/engine/cli/cli-run.js +121 -0
  21. package/dist/engine/cli/cli.js +121 -0
  22. package/dist/engine/eew/eew-logger.js +355 -0
  23. package/dist/engine/eew/eew-tracker.js +229 -0
  24. package/dist/engine/messages/message-router.js +261 -0
  25. package/dist/engine/messages/tsunami-state.js +96 -0
  26. package/dist/engine/messages/volcano-state.js +131 -0
  27. package/dist/engine/messages/volcano-vfvo53-aggregator.js +173 -0
  28. package/dist/engine/monitor/monitor.js +118 -0
  29. package/dist/engine/monitor/repl-coordinator.js +63 -0
  30. package/dist/engine/monitor/shutdown.js +114 -0
  31. package/dist/engine/notification/node-notifier-loader.js +19 -0
  32. package/dist/engine/notification/notifier.js +338 -0
  33. package/dist/engine/notification/sound-player.js +230 -0
  34. package/dist/engine/notification/volcano-presentation.js +166 -0
  35. package/dist/engine/startup/config-resolver.js +139 -0
  36. package/dist/engine/startup/tsunami-initializer.js +91 -0
  37. package/dist/engine/startup/update-checker.js +229 -0
  38. package/dist/engine/startup/volcano-initializer.js +89 -0
  39. package/dist/index.js +24 -0
  40. package/dist/logger.js +95 -0
  41. package/dist/types.js +61 -0
  42. package/dist/ui/earthquake-formatter.js +871 -0
  43. package/dist/ui/eew-formatter.js +335 -0
  44. package/dist/ui/formatter.js +689 -0
  45. package/dist/ui/repl.js +2059 -0
  46. package/dist/ui/test-samples.js +880 -0
  47. package/dist/ui/theme.js +516 -0
  48. package/dist/ui/volcano-formatter.js +667 -0
  49. package/dist/ui/waiting-tips.js +227 -0
  50. package/dist/utils/intensity.js +13 -0
  51. package/dist/utils/secrets.js +14 -0
  52. package/package.json +69 -0
@@ -0,0 +1,227 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WAITING_TIPS = void 0;
4
+ exports.WAITING_TIPS = [
5
+ // ── コマンド基本 ──
6
+ "Tip: help で利用可能なコマンド一覧を表示できます。",
7
+ "Tip: mode compact にすると長時間監視でもログが追いやすくなります。",
8
+ "Tip: status で接続状態や再接続試行回数を確認できます。",
9
+ "Tip: history 20 で直近20件の地震履歴を確認できます。",
10
+ "Tip: tablewidth 80 のように表示幅を環境に合わせて調整できます。",
11
+ "Tip: infotext full でお知らせ電文を全文表示に切り替えできます。",
12
+ "Tip: mute 30m で通知を30分だけ一時停止できます。",
13
+ "Tip: mute off で通知ミュートを解除できます。",
14
+ "Tip: notify でカテゴリ別通知のON/OFF状態を確認できます。",
15
+ "Tip: notify all:off で全カテゴリ通知を一括で停止できます。",
16
+ "Tip: notify eew on のようにカテゴリ個別に通知設定を変更できます。",
17
+ "Tip: contract で現在契約中の区分を確認できます。",
18
+ "Tip: socket で現在開いているソケット一覧を確認できます。",
19
+ "Tip: retry は切断中に手動で再接続を試す時に使えます。",
20
+ "Tip: config で現在の永続設定を確認できます。",
21
+ "Tip: fleq config set waitTipIntervalMin 10 でヒント間隔を10分に変更できます。",
22
+ "Tip: colors で震度や長周期地震動階級の色分け一覧を確認できます。",
23
+ "Tip: clear でターミナルの画面をクリアできます。",
24
+ "Tip: quit または exit でモニタリングを終了できます。",
25
+ "Tip: history だけを入力すると、デフォルトの10件分の地震履歴が表示されます。",
26
+ "Tip: mode normal にすると詳細情報も含めたフル表示に戻せます。",
27
+ // ── コマンド応用 ──
28
+ "Tip: help notify や help mute で、そのコマンドだけの詳しい使い方を確認できます。",
29
+ "Tip: ? status のように ? は help の別名として使えます。",
30
+ "Tip: tablewidth だけを入力すると、今の表示幅を確認できます。",
31
+ "Tip: mode だけを入力すると、現在の表示モードを確認できます。",
32
+ "Tip: infotext short で、お知らせ電文を省略表示に戻せます。",
33
+ "Tip: tipinterval だけで現在のヒント間隔を確認でき、tipinterval 0 で待機中Tipを止められます。",
34
+ "Tip: mute だけを入力すると、いまミュート中かどうかと残り時間を確認できます。",
35
+ "Tip: mute 90s のように、秒単位の短いミュートも使えます。",
36
+ "Tip: notify eew のように on / off を省略すると、そのカテゴリをトグルできます。",
37
+ "Tip: notify all:on は、通知設定を一気に立て直したい時に便利です。",
38
+ "Tip: history 1 なら最新1件だけ、history 100 なら上限までまとめて確認できます。",
39
+ "Tip: status と socket を見比べると、手元の接続状態と dmdata 側のソケット状況を切り分けやすいです。",
40
+ "Tip: fleq config set tableWidth 120 のようにすると、次回起動からの表示幅をあらかじめ設定できます。",
41
+ "Tip: fleq config set displayMode compact にすると、起動時からcompactモードになります。",
42
+ "Tip: fleq config keys で設定可能なキー一覧を確認できます。",
43
+ "Tip: fleq config path で設定ファイルの保存場所を確認できます。",
44
+ "Tip: fleq config unset <key> で個別の設定を初期値に戻せます。",
45
+ "Tip: fleq init で初期設定ウィザードを再実行できます。APIキーや通知設定をやり直したい時に便利です。",
46
+ "Tip: fleq --test で過去の電文を使ったテストモードで起動できます。動作確認に便利です。",
47
+ "Tip: notify tsunami off にすると、津波情報の通知だけを停止できます。カテゴリ別に細かく制御できます。",
48
+ "Tip: mute 2h のように時間単位でも指定できます。就寝前など長時間のミュートに便利です。",
49
+ // ── 防災知識 ──
50
+ "Tip: 緊急地震速報を見聞きしたら、まず身の安全を確保するのが基本です。",
51
+ "Tip: 緊急地震速報の報知音を覚えておくと、画面を読む前に動き出しやすくなります。",
52
+ "Tip: 家具の固定は、在宅中のけがを減らす大事な備えです。",
53
+ "Tip: 寝る場所の近くに背の高い家具を置かないだけでも、夜間の地震対策になります。",
54
+ "Tip: ハザードマップでは海沿いだけでなく川沿いも確認しておくと安心です。海から離れていても津波が川をさかのぼることがあります。",
55
+ "Tip: 津波避難場所は1か所だけでなく、さらに高い代替場所まで考えておくと迷いにくいです。",
56
+ "Tip: 避難経路は地図で見るだけでなく、実際に歩いて確かめておくと本番で動きやすいです。",
57
+ "Tip: 家族とは、連絡手段と集合場所を平時に決めておくと災害時に役立ちます。",
58
+ "Tip: 飲料水は1人1日およそ3Lが目安です。食品は最低3日分、できれば1週間分あると安心です。",
59
+ "Tip: 備蓄は、普段食べるものを買い足しながら回すローリングストックだと続けやすいです。",
60
+ "Tip: 津波警報や注意報、または海辺で強い揺れや長くゆっくりした揺れを感じたら、より高い安全な場所へ避難しましょう。",
61
+ "Tip: 津波フラッグを見かけた時も避難開始の合図です。解除されるまで海岸へ戻らないことが大切です。",
62
+ "Tip: 災害用伝言ダイヤル(171)は毎月1日・15日に体験利用できます。使い方を事前に確認しておくと安心です。",
63
+ "Tip: スマートフォンの充電は日頃からこまめにしておくと、突然の災害時に情報収集手段を確保しやすくなります。",
64
+ "Tip: ベッドの近くに底の厚い靴やスリッパを置くと、割れたガラスの上でも動きやすくなります。",
65
+ "Tip: 窓ガラスに飛散防止フィルムを貼っておくと、破片によるけがを減らせます。",
66
+ "Tip: 玄関や廊下に大きな物を置きすぎないことが大切です。避難路がふさがると逃げ遅れにつながります。",
67
+ "Tip: 非常持ち出し袋と在宅避難用の備蓄は分けて考えると実用的です。持ち出し用は軽さ、在宅用は量が重要です。",
68
+ "Tip: 携帯トイレは水や食料と同じくらい重要な備蓄品です。断水時はトイレ不足が生活の質と衛生に直結します。",
69
+ "Tip: 常備薬は少し余裕をもって管理し、お薬手帳の写しも用意しておくと再受診時に役立ちます。",
70
+ "Tip: 眼鏡の予備、補聴器の電池、入れ歯ケースなど、個人に直結する物は備蓄で見落とされがちです。",
71
+ "Tip: 笛や防犯ブザーは小さくても有効です。閉じ込められたとき、声より少ない力で居場所を伝えられます。",
72
+ "Tip: ヘッドライトは懐中電灯より両手が使えるので、夜間避難や片付けで便利です。",
73
+ "Tip: カセットコンロと予備ボンベがあると、停電やガス停止でも温かい食事を確保しやすくなります。",
74
+ "Tip: 現金は小銭も含めて少し持っておくと安心です。停電や通信障害で電子決済が使えないことがあります。",
75
+ "Tip: 感震ブレーカーは通電火災の対策として有効です。地震後の電気復旧時の出火リスクを下げます。",
76
+ "Tip: 浴槽やポリタンクに生活用水を確保しておくと、断水時のトイレや清掃に役立ちます。",
77
+ "Tip: 高層階に住むほど、エレベーター停止を想定した多めの備蓄が重要です。水やトイレ用品の運搬が難しくなります。",
78
+ "Tip: ペットがいる家庭は、フード・薬・ケージ・迷子札を平時からまとめておくと対応しやすくなります。",
79
+ "Tip: 乳幼児や高齢者がいる家庭では、紙おむつ・介護用品・離乳食など専用の備蓄も忘れずに。",
80
+ "Tip: 職場や学校にも帰宅困難を想定して靴・水・軽食を少量置いておくと安心です。",
81
+ "Tip: 強い揺れの後はブロック塀や自販機、古い外壁の近くを避けましょう。余震で倒れることがあります。",
82
+ "Tip: 地震後に雨が降ると、土砂災害の危険が高まります。揺れの後は雨の情報にも注意が必要です。",
83
+ "Tip: 地震保険は火災保険だけでは補償されない地震・津波被害への備えになります。",
84
+ "Tip: 災害用伝言板(web171)はインターネット経由で安否を確認できるサービスです。電話がつながりにくい時に有用です。",
85
+ "Tip: エレベーターに乗っている時に揺れを感じたら、最寄り階のボタンをすべて押して停止した階で降りましょう。",
86
+ "Tip: 自宅の耐震診断を受けることで、建物の弱点を把握し補強の優先度を判断できます。",
87
+ "Tip: 車の中にいる時に大きな揺れを感じたら、ハザードランプを点けて道路脇に停車し、エンジンを切って揺れが収まるのを待ちましょう。",
88
+ "Tip: 地震の揺れが収まったら、ガスの元栓を閉め、火の始末をすることが火災防止の基本です。",
89
+ "Tip: 避難時はブレーカーを落としてから出ると、通電火災のリスクを減らせます。",
90
+ // ── ツールの仕組み ──
91
+ "Tip: FlEq は既定で telegram.earthquake、eew.forecast、eew.warning、telegram.volcano を受け、電文種別ごとに地震・津波・南海トラフ・火山などへ振り分けています。",
92
+ "Tip: notify の eew カテゴリは、EEW予報とEEW警報の両方をまとめて扱います。",
93
+ "Tip: 切断時の再接続は 1秒、2秒、4秒… と待ち時間を伸ばす指数バックオフで、少しランダム幅も入ります。",
94
+ "Tip: サーバーから ping を受けるたびに pong を返して、接続の生存確認をしています。",
95
+ "Tip: 約90秒間 ping か data が来ないと、ハートビート切れとしてソケットを閉じて再接続に入ります。",
96
+ "Tip: XML 以外の電文は本文を無理にパースせず、ヘッダ情報だけを表示します。",
97
+ "Tip: 同じ EventID・同じ報番号の EEW は、重複報としてスキップされます。",
98
+ "Tip: EEW は EventID ごとに追跡され、最終報や取消報が来るとイベントのログを閉じます。",
99
+ "Tip: 震度の色分けはカラーユニバーサルデザインを意識した配色です。色が見づらい環境向けのラベル表示も併用しています。",
100
+ "Tip: 待機中Tipは、接続中で入力が空、しかも直近10秒ほど新着がない時だけ出ます。",
101
+ "Tip: 接続中のプロンプトには、最終受信からの経過時間 (または現在時刻) と次のpingまでの残り秒数が表示されます。",
102
+ "Tip: tablewidth が 80 以上あると、津波情報の一部はカラム区切りの表で表示されます。",
103
+ "Tip: FlEq の表示フレームは critical / warning / normal / info / cancel の5段階で色が切り替わります。",
104
+ "Tip: 震度6弱以上の地震情報は critical フレーム、震度4以上は warning フレームで表示されます。",
105
+ "Tip: EEW の警報は critical フレーム、予報は warning フレームで表示されます。",
106
+ "Tip: 大津波警報は critical、津波警報は warning、注意報は normal フレームで表示されます。",
107
+ "Tip: VXSE53 は震源・震度に関する情報で、最も詳細な観測点別震度が含まれる電文です。",
108
+ "Tip: VXSE51 は震度速報で、地震発生直後に大まかな震度分布をいち早く伝える電文です。",
109
+ "Tip: VTSE41/VTSE51/VTSE52 はそれぞれ異なる津波情報の電文種別です。",
110
+ "Tip: EEWログは EventID ごとにファイルが作られ、第1報から最終報まで時系列で記録されます。",
111
+ "Tip: dmdata.jp の REST API で地震履歴を取得しているため、history コマンドはローカル保存ではなくサーバーからリアルタイムに取得します。",
112
+ "Tip: --keep-existing オプションを使うと、既存の WebSocket 接続を切断せずに新しい接続を追加できます。",
113
+ "Tip: 南海トラフ関連情報は VYSE50/51/52/60 の4種類の電文で構成されています。",
114
+ "Tip: 長周期地震動の観測情報は VXSE62 電文で、高層ビルへの影響を示す専用の電文です。",
115
+ "Tip: 火山電文は10種類(VFVO50/51/52/53/54/55/56/60, VFSVii, VZVO40)で、噴火警報・噴火速報・降灰予報などを扱います。",
116
+ "Tip: 噴火警戒レベルは1(活火山であることに留意)〜5(避難)の5段階です。レベル引上げは critical フレームで表示されます。",
117
+ "Tip: VFVO56 は噴火速報で、噴火が発生した直後にいち早く伝える電文です。critical フレームで表示されます。",
118
+ "Tip: compact モードでは、地震情報のうち観測点ごとの詳細震度表示が省略されます。",
119
+ "Tip: FlEq は電文の gzip + base64 エンコードされた本文を自動でデコードしてから XML パースします。",
120
+ "Tip: プロンプトの ● が点滅しているのは接続が生きている証拠です。○ のままなら切断中です。",
121
+ // ── 地震・津波の雑学 ──
122
+ "Tip: 震度は「ある場所の揺れの強さ」、マグニチュードは「地震そのものの規模」です。",
123
+ "Tip: 日本の震度階級は 0、1、2、3、4、5弱、5強、6弱、6強、7 の10段階です。",
124
+ "Tip: 同じ地震でも、地盤や地形の違いで近い場所どうしの震度が変わることがあります。",
125
+ "Tip: 気象庁の震度は、1996年4月以降は震度計で自動観測されています。",
126
+ "Tip: 気象庁が発表する震度は、原則として地表や低層建物の1階の観測値です。中高層の上階はそれより大きく揺れることがあります。",
127
+ "Tip: マグニチュードは 1 違うとエネルギーが約32倍、2違うと約1000倍になります。",
128
+ "Tip: 一般にテレビや携帯端末で見聞きする緊急地震速報は「警報」です。",
129
+ "Tip: 緊急地震速報の警報は、最大震度5弱以上または最大長周期地震動階級3以上が予想された時に発表されます。",
130
+ "Tip: そのうち、震度6弱以上または長周期地震動階級4が予想されるものは特別警報に位置付けられています。",
131
+ "Tip: 津波警報等の第1報は、地震発生から約3分、一部の地震では最速2分以内の発表が目標です。",
132
+ "Tip: 津波は普通の波と違い、数分から数十分ごとに大きな押し引きを繰り返します。",
133
+ "Tip: 津波は半日や1日以上続くこともあります。第一波のあとも長く警戒が必要です。",
134
+ "Tip: 長周期地震動は高層ビルと共振しやすく、高層階ほど大きく長く揺れる傾向があります。",
135
+ "Tip: 長周期地震動階級は4段階です。震度だけでは見えにくい高層階の揺れを補う指標です。",
136
+ "Tip: 日本付近では年間およそ2000回の有感地震が発生しています。",
137
+ "Tip: 沖合の津波は時速数百kmにもなり、ジェット機並みの速さで伝わることがあります。",
138
+ "Tip: 日本列島の周辺は太平洋・フィリピン海・北米・ユーラシアの4つのプレートがせめぎ合う場所で、世界有数の地震多発地域です。",
139
+ "Tip: 津波は波浪と違い、海面だけでなく海水全体が大きく動く現象です。だから破壊力が非常に大きくなります。",
140
+ "Tip: 津波は深い海では波高が低くても、浅い沿岸に近づくほど高くなりやすい性質があります。",
141
+ "Tip: 津波は必ずしも最初の波が最大とは限りません。後から来る波の方が高いこともあります。",
142
+ "Tip: 津波は地震だけでなく、海底火山の噴火や山体崩壊でも発生することがあります。",
143
+ "Tip: 「津波の前には必ず潮が引く」は誤りです。いきなり押し波で始まることもあります。",
144
+ "Tip: 津波の高さは海岸線や湾の形、海底地形の影響で局所的に大きくなることがあります。",
145
+ "Tip: 満潮と津波が重なると海面がさらに高くなり、浸水被害が拡大しやすくなります。",
146
+ "Tip: 緊急地震速報は、先に届くP波を検知して震源や規模を推定し、S波の到達前に知らせる仕組みです。",
147
+ "Tip: P波は秒速約7km、S波は秒速約4kmで伝わります。この速度差が緊急地震速報の原理です。",
148
+ "Tip: EEWの計算処理は自動で瞬時に行われます。人が判断してから出す情報ではありません。",
149
+ "Tip: 一般向けEEW警報は、地震波が2点以上の観測点で確認された場合に発表されます。落雷などの誤検知を減らすためです。",
150
+ "Tip: 内陸の浅い地震では、解析や伝達に数秒かかるだけでも震源近くでは速報が間に合わないことがあります。これは仕組み上の限界です。",
151
+ "Tip: 気象庁はPLUM法という、観測された揺れから周辺の揺れを予測する手法もEEWに活用しています。巨大地震時の精度向上に寄与します。",
152
+ "Tip: 津波警報・注意報は「津波予報区」単位で発表されます。都道府県単位ではありません。",
153
+ "Tip: 地震発生後の情報は段階的に出ます。震度速報→震源情報→震源・震度に関する情報の順に精度が上がります。",
154
+ "Tip: 震度速報は、震度3以上を観測した地域を地震発生後約1分半で速報します。",
155
+ "Tip: 日本近海の巨大地震では、最初の津波警報で高さを数値ではなく「巨大」「高い」と表現することがあります。規模推定に時間がかかるためです。",
156
+ "Tip: 大津波警報は予想される津波の高さが3mを超える場合、津波警報は1m超〜3m以下、津波注意報は0.2m〜1m以下が目安です。",
157
+ "Tip: 余震という言葉はよく使われますが、後続の地震が最初の地震より大きくなることもあります。油断は禁物です。",
158
+ "Tip: 南海トラフ地震は、駿河湾から日向灘沖にかけてのプレート境界で、おおむね100〜150年の間隔で繰り返してきたとされています。",
159
+ "Tip: 地震の被害は揺れだけでなく、火災・液状化・土砂災害・長周期地震動・津波が複合して広がります。",
160
+ "Tip: 気象庁の震度データベースでは1919年以降の震度1以上の地震を検索でき、過去の地震を調べるのに便利です。",
161
+ "Tip: 気象業務法上、EEW警報を発表できるのは気象庁のみです。警報発表時はNHKに直ちに通知され放送されます。",
162
+ "Tip: 1観測点だけで出たEEW予報は、次の観測が続かなければノイズとみなされキャンセル報になることがあります。",
163
+ "Tip: EEW予報は警報より早い段階から複数回更新されます。第1報は速さ重視で、続報ほど精度が上がります。",
164
+ "Tip: 津波は水深50cmでも大人が流される危険があります。0.2mの津波注意報でも海岸は危険です。",
165
+ "Tip: 震度7は日本の震度階級の最大値で、それ以上はありません。1995年の阪神・淡路大震災で初めて適用されました。",
166
+ "Tip: 日本で記録されたマグニチュード最大の地震は2011年の東北地方太平洋沖地震(M9.0)です。",
167
+ "Tip: 「遠地地震に関する情報」は、海外で発生した大きな地震について気象庁が発表する情報です。日本への津波の有無も含まれます。",
168
+ "Tip: 地震の揺れには、初期微動(P波)と主要動(S波)があります。カタカタと小刻みに揺れた後に大きな揺れが来るのはこのためです。",
169
+ "Tip: 液状化は、地下水位が高い砂地盤で起きやすく、地面が泥水のように噴き出す現象です。地盤沈下やインフラ被害を引き起こします。",
170
+ "Tip: 日本海溝・千島海溝沿いでも巨大地震が想定されており、北海道・東北の太平洋沿岸で大きな津波が予測されています。",
171
+ "Tip: 気象庁の推計震度分布図は、震度5弱以上の地震で発表され、観測点がない地域の揺れの強さを推定します。",
172
+ "Tip: 津波は河口から川をさかのぼる「遡上」を起こすことがあり、海岸から離れた内陸でも浸水被害が出ることがあります。",
173
+ // ── 歴史的大地震・津波(日本) ──
174
+ "Tip: 869年の貞観地震(推定M8.3以上)は、仙台平野で内陸深くまで津波が達したことが地質調査で確認されています。この研究は2011年東日本大震災の想定見直しにも生かされました。",
175
+ "Tip: 1498年の明応地震(推定M8.2〜8.4)は、大津波で甚大な被害を出した南海トラフ巨大地震の一例です。伊勢大湊では6〜10m級の津波が伝えられています。",
176
+ "Tip: 1605年の慶長地震(M7.9)は、揺れのわりに津波被害が極端に大きかったため「津波地震」とされる代表例です。強い揺れを感じなくても海辺では直ちに高台へ向かうべきだと教えてくれます。",
177
+ "Tip: 1707年の宝永地震(M8.6)は、駿河湾から四国沖まで広い範囲が一度に破壊された、日本史上最大級の巨大地震です。",
178
+ "Tip: 宝永地震の49日後には富士山が宝永噴火を起こしています。大地震と噴火が連続しうることを示した歴史的な事例です。",
179
+ "Tip: 1854年の安政東海地震(M8.4)と安政南海地震(M8.4)は、32時間差で続いて発生しました。南海トラフ巨大地震は一度で終わるとは限らず、最初の大地震の後も次の発生に備える必要があります。",
180
+ "Tip: 1891年の濃尾地震(M8.0)は、日本の内陸地震として最大級で、活断層でもM8級が起こることを強く印象づけました。海から遠い地域でも、直下型地震への備えは不可欠です。",
181
+ "Tip: 1896年の明治三陸地震(M8.2)は、揺れが比較的小さいのに巨大津波で約2万2千人が犠牲になった「津波地震」です。",
182
+ "Tip: 明治三陸地震では、リアス海岸の湾奥で津波がさらに高くなりました。地形が被害を増幅する典型例です。",
183
+ "Tip: 1923年の関東大震災(M7.9)は、地震そのものに加えて大規模火災が被害を拡大しました。都市直下の大地震では、火災旋風を含む二次災害への備えも重要です。",
184
+ "Tip: 1933年の昭和三陸地震(M8.1)は、1896年の明治三陸地震から37年後に再び三陸沿岸を大津波で襲いました。同じ地域は繰り返し被災しうるため、「前にも来た海岸」は将来も危険です。",
185
+ "Tip: 1948年の福井地震(M7.1)は、戦後復興途上の福井市を直撃し、市内では住家の約8割が全壊しました。地盤の弱さと建物の耐震性不足が重なると、M7級でも壊滅的被害になりえます。",
186
+ "Tip: 1964年の新潟地震(M7.5)は、液状化現象を社会に強く印象づけた地震として有名です。建物が大きく壊れなくても、地盤が弱いと「傾く・沈む・橋が落ちる」被害が起こります。",
187
+ "Tip: 1983年の日本海中部地震(M7.7)では、死者104人のうち100人が津波によるものでした。津波警報の迅速化が大きな課題となり、日本の津波警報体制強化の契機になりました。",
188
+ "Tip: 1993年の北海道南西沖地震(M7.8)では、奥尻島に高い津波が極めて短時間で到達しました。警報が出ても間に合わないことがあるため、強い揺れを感じたら情報を待たずに避難するのが原則です。",
189
+ "Tip: 1995年の阪神・淡路大震災(M7.3)は、大都市直下の活断層地震が朝の生活圏を直撃した災害でした。この地震を契機に、震度観測や地震情報の仕組みが大きく見直されました。",
190
+ "Tip: 2004年の新潟県中越地震(M6.8)は、気象庁の震度計で震度7を初めて記録した地震です。",
191
+ "Tip: 新潟県中越地震では、中山間地で斜面崩壊や河道閉塞による集落孤立が起きました。山地の地震は揺れ以外の土砂災害にも警戒が必要です。",
192
+ "Tip: 2011年の東日本大震災(M9.0)は、日本国内で観測史上最大の地震でした。869年貞観地震の研究が巨大津波の再来を示していたように、「想定外」を減らすには過去の痕跡を学び続けることが欠かせません。",
193
+ "Tip: 2016年の熊本地震は、4月14日にM6.5、4月16日にM7.3が発生し、震度7を2回観測しました。大きな地震の後にさらに大きな地震が続くことがあるため、「本震の後こそ危険」という認識が重要です。",
194
+ "Tip: 2018年の北海道胆振東部地震(M6.7)は、北海道で初めて震度7を観測した地震です。",
195
+ "Tip: 北海道胆振東部地震では、大規模な斜面崩壊に加え全道停電「ブラックアウト」が起きました。電力の備えも防災の一部だと示した地震です。",
196
+ "Tip: 2024年の能登半島地震(M7.6)は、最大震度7を観測し、輪島市西部では最大4m程度の隆起が確認されました。",
197
+ "Tip: 能登半島地震は、2020年末から続く活発な地震活動の延長上で起きました。群発的な活動でも油断できないことを示しています。",
198
+ // ── 歴史的大地震・津波(世界) ──
199
+ "Tip: 1755年リスボン地震(推定M8.5〜9.0)は、地震・津波・大火災が連続して都市を壊滅させた歴史的災害です。津波は約10時間でカリブ海まで届き、遠地津波の脅威を早くから示しました。",
200
+ "Tip: 1960年のチリ地震(Mw9.5)は、観測史上最大の地震です。津波は太平洋を越えて約22時間後に日本にも到達し、三陸沿岸などで大きな被害を出しました。",
201
+ "Tip: 1964年のアラスカ地震(Mw9.2)は、米国史上最大の地震です。死者の多くは津波や地すべりによるもので、二次災害対策の重要性を教えます。",
202
+ "Tip: 2004年のスマトラ島沖地震・インド洋津波(Mw9.1)は、14か国で22万人超が犠牲になった記録的な津波災害です。",
203
+ "Tip: スマトラ島沖地震を契機に、インド洋にも広域の津波警報体制が整備されました。それまでインド洋には太平洋のような津波警報システムがなかったのです。",
204
+ "Tip: 2010年のハイチ地震(Mw7.0)は、首都近郊を襲い甚大な被害をもたらしました。M7級でも人口集中と脆弱な建物が重なると被害が極端に拡大します。",
205
+ "Tip: 2010年のチリ地震(Mw8.8)は、世界でも有数の観測体制のもとで詳しく記録された巨大地震です。観測データを使ったリアルタイム津波予測の重要性を示しました。",
206
+ "Tip: 2023年のトルコ・シリア地震では、2月6日にMw7.8の地震が発生し、約9時間後にMw7.5が続きました。大地震が連続して広域を襲うことがあり、最初の被害把握中でも次の強震に備える必要があります。",
207
+ // ── 今後想定される地震 ──
208
+ "Tip: 南海トラフ地震は、地震本部の2025年1月時点評価で今後30年以内の発生確率が80%で、最大クラスではM8〜9級が想定されています。",
209
+ "Tip: 内閣府の想定では、南海トラフ巨大地震は最悪条件で死者約29.8万人、全壊焼失約235万棟、経済被害は約270兆円に達し得ます。",
210
+ "Tip: 南海トラフ地震は一度で全域が割れるとは限りません。1944年の昭和東南海地震の約2年後に1946年の昭和南海地震が起きたように、時間差で連動する「半割れ」もあります。",
211
+ "Tip: 内閣府の想定では、南海トラフの半割れ後に巨大地震警戒で事前避難できれば、後発地震の津波死者は95%以上減らせると推計されています。",
212
+ "Tip: 南海トラフ地震臨時情報は「予知」ではなく、異常現象で危険度が相対的に高まった時に出る情報です。想定震源域内でM6.8以上の地震などが起きるとまず「調査中」が発表されます。",
213
+ "Tip: 南海トラフ地震の発生間隔は概ね100〜150年とされますが、過去1400年では約90〜270年のばらつきがあります。一定周期で来るというより、「幅をもって繰り返す」と考える方が実態に近いです。",
214
+ "Tip: 首都直下地震は、今後30年以内の発生確率が70%と評価されています。防災対策の主眼は都心南部直下地震Mw7.3です。",
215
+ "Tip: 首都直下地震の被害想定では、最悪の場合で死者約2.3万人、全壊焼失約61万棟です。被害を大きくする主因は揺れそのものより市街地火災で、焼失だけで約41.2万棟と見積もられています。",
216
+ "Tip: 首都圏では、首都直下地震時に約650万人の帰宅困難者が出る想定があります。職場や学校で数日とどまれる備蓄まで含めて考えることが重要です。",
217
+ "Tip: 首都圏の地下にはフィリピン海プレートの断片「関東フラグメント」が確認されています。地下構造の複雑さそのものが、首都直下地震の予測を難しくしている一因です。",
218
+ "Tip: 日本海溝・千島海溝沿いでは、日本海溝地震Mw9.1、千島海溝地震Mw9.3の最大クラスが想定されています。津波は岩手県宮古市で約30m、北海道えりも町沿岸で約28mに達するとされています。",
219
+ "Tip: 日本海溝・千島海溝沿いの被害想定では、死者は最大で日本海溝地震約19.9万人、千島海溝地震約10万人で、そのほとんどが津波です。「津波からどれだけ早く離れられるか」が生死を分けます。",
220
+ "Tip: 千島海溝の17世紀型超巨大地震は、北海道東部の湿原に残る津波堆積物から見つかりました。津波が現在の海岸線から1〜4km内陸まで及んだ可能性が示されています。",
221
+ "Tip: 千島海溝の17世紀型超巨大地震は、今後30年以内の発生確率が7〜40%です。最後の発生からすでに約400年が経っており、北海道東部では「古い話」ではありません。",
222
+ "Tip: 北海道・東北の太平洋沿岸では、巨大津波の後に寒さが命取りになります。内閣府は低体温症の要対処者を日本海溝地震で最大約4.2万人と見積もっており、防寒具の備蓄も津波対策の一部です。",
223
+ "Tip: 中部圏・近畿圏では南海トラフだけでなく活断層地震も想定されています。糸魚川−静岡構造線断層帯では、複数区間が同時に動けばM7.8〜8.1程度の可能性も示されています。",
224
+ "Tip: 相模トラフ沿いでは、1923年関東大震災のようなM8クラスの地震は30年以内0〜6%ですが、M7程度の地震は30年以内70%程度と評価されています。M7級への備えも重要です。",
225
+ "Tip: 富士山では宝永地震の49日後に宝永噴火が起きた例がありますが、地震がそのまま噴火を意味するわけではありません。地震情報と火山情報を分けて追うのが基本です。",
226
+ "Tip: 2016年熊本地震を起こした布田川断層帯のM7.0級地震の30年確率は、発生前は1%未満でした。未発見の断層もあるため、日本ではどこでも地震への備えが必要です。",
227
+ ];
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.intensityToRank = intensityToRank;
4
+ /** 震度文字列と数値ランクの対応表 */
5
+ const INTENSITY_RANK = {
6
+ "1": 1, "2": 2, "3": 3, "4": 4,
7
+ "5-": 5, "5弱": 5, "5+": 6, "5強": 6,
8
+ "6-": 7, "6弱": 7, "6+": 8, "6強": 8, "7": 9,
9
+ };
10
+ /** 震度文字列をソート・比較用の数値に変換する (不明な値は 0) */
11
+ function intensityToRank(intensity) {
12
+ return INTENSITY_RANK[intensity.replace(/\s+/g, "")] ?? 0;
13
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.maskApiKey = maskApiKey;
4
+ const VISIBLE_EDGE_LENGTH = 4;
5
+ const MASK_PLACEHOLDER = "****";
6
+ /** APIキーの先頭・末尾のみ表示し、中間をマスクする */
7
+ function maskApiKey(apiKey) {
8
+ if (apiKey.length <= VISIBLE_EDGE_LENGTH * 2) {
9
+ return MASK_PLACEHOLDER;
10
+ }
11
+ return (apiKey.substring(0, VISIBLE_EDGE_LENGTH) +
12
+ MASK_PLACEHOLDER +
13
+ apiKey.substring(apiKey.length - VISIBLE_EDGE_LENGTH));
14
+ }
package/package.json ADDED
@@ -0,0 +1,69 @@
1
+ {
2
+ "name": "@sayue_ltr/fleq",
3
+ "version": "1.49.2",
4
+ "description": "Project DM-D.S.S (dmdata.jp) リアルタイム地震・津波・EEW情報モニター CLI",
5
+ "main": "dist/index.js",
6
+ "bin": {
7
+ "fleq": "./dist/index.js"
8
+ },
9
+ "files": [
10
+ "dist",
11
+ "assets",
12
+ "README.md",
13
+ "CHANGELOG.md",
14
+ "LICENSE"
15
+ ],
16
+ "scripts": {
17
+ "build": "npm run clean && tsc && node -e \"try{require('fs').chmodSync('dist/index.js',0o755)}catch{}\"",
18
+ "start": "node dist/index.js",
19
+ "start:lowmem": "node --optimize-for-size dist/index.js",
20
+ "dev": "npm run build && node dist/index.js",
21
+ "dev:lowmem": "npm run build && node --optimize-for-size dist/index.js",
22
+ "clean": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"",
23
+ "test": "vitest run",
24
+ "test:watch": "vitest",
25
+ "prepack": "npm run build",
26
+ "prepublishOnly": "npm test",
27
+ "release": "commit-and-tag-version",
28
+ "release:minor": "commit-and-tag-version --release-as minor",
29
+ "release:major": "commit-and-tag-version --release-as major"
30
+ },
31
+ "keywords": [
32
+ "dmdata",
33
+ "earthquake",
34
+ "tsunami",
35
+ "eew",
36
+ "jma",
37
+ "seismology"
38
+ ],
39
+ "license": "MIT",
40
+ "repository": {
41
+ "type": "git",
42
+ "url": "git+https://github.com/Lateo2580/FlEq.git"
43
+ },
44
+ "homepage": "https://github.com/Lateo2580/FlEq#readme",
45
+ "bugs": {
46
+ "url": "https://github.com/Lateo2580/FlEq/issues"
47
+ },
48
+ "dependencies": {
49
+ "chalk": "^4.1.2",
50
+ "commander": "^13.1.0",
51
+ "dotenv": "^16.4.7",
52
+ "fast-xml-parser": "^5.2.1",
53
+ "ws": "^8.18.1"
54
+ },
55
+ "optionalDependencies": {
56
+ "node-notifier": "^10.0.1"
57
+ },
58
+ "devDependencies": {
59
+ "@types/node": "^22.13.4",
60
+ "@types/node-notifier": "^8.0.5",
61
+ "@types/ws": "^8.18.0",
62
+ "commit-and-tag-version": "^12.6.1",
63
+ "typescript": "^5.7.3",
64
+ "vitest": "^4.0.18"
65
+ },
66
+ "engines": {
67
+ "node": ">=18.0.0"
68
+ }
69
+ }