poi-plugin-item-improvement2-beta 1.0.91 → 1.0.95

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 (53) hide show
  1. package/README.md +38 -6
  2. package/assets/icon/71.png +0 -0
  3. package/assets/main.css +40 -0
  4. package/i18n/en-US.json +60 -1
  5. package/i18n/ja-JP.json +17 -8
  6. package/i18n/zh-CN.json +17 -7
  7. package/i18n/zh-TW.json +17 -7
  8. package/package.json +18 -7
  9. package/views/changelog-modal.js +50 -0
  10. package/views/changelog.js +63 -0
  11. package/views/data-package.js +99 -0
  12. package/views/detail-row.js +109 -83
  13. package/views/improvement-data-source.js +70 -0
  14. package/views/improvement-data.js +153 -0
  15. package/views/item-info-area.js +63 -13
  16. package/views/item-info-row.js +2 -2
  17. package/views/item-wrapper.js +4 -5
  18. package/views/mat-row.js +27 -14
  19. package/views/selectors.js +30 -117
  20. package/views/starcraft/add-new-equip-view.js +4 -2
  21. package/views/starcraft/equip-list-view.js +3 -1
  22. package/views/starcraft/equip-view.js +1 -6
  23. package/views/starcraft/plan-modify-control.js +11 -23
  24. package/views/starcraft/plan-view.js +1 -14
  25. package/views/starcraft/starcraft-area.js +36 -12
  26. package/views/starcraft/utils.js +180 -16
  27. package/views/useitem-icon.js +11 -12
  28. package/.eslintrc.js +0 -42
  29. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  30. package/.idea/inspectionProfiles/profiles_settings.xml +0 -7
  31. package/.idea/misc.xml +0 -4
  32. package/.idea/modules.xml +0 -8
  33. package/.idea/plugin-item-improvement.iml +0 -8
  34. package/.idea/vcs.xml +0 -6
  35. package/.idea/workspace.xml +0 -177
  36. package/assets/db/arsenal_all.nedb +0 -372
  37. package/assets/db/items.nedb +0 -372
  38. package/assets/icon/100.png +0 -0
  39. package/assets/icon/104.png +0 -0
  40. package/assets/icon/145.png +0 -0
  41. package/assets/icon/150.png +0 -0
  42. package/assets/icon/2.png +0 -0
  43. package/assets/icon/241.png +0 -0
  44. package/assets/icon/57.png +0 -0
  45. package/assets/icon/70.png +0 -0
  46. package/assets/icon/75.png +0 -0
  47. package/assets/icon/77.png +0 -0
  48. package/assets/icon/78.png +0 -0
  49. package/assets/icon/91.png +0 -0
  50. package/assets/icon/92.png +0 -0
  51. package/assets/icon/94.png +0 -0
  52. package/assets/icon/95.png +0 -0
  53. package/index.es +0 -12
package/README.md CHANGED
@@ -1,7 +1,39 @@
1
- # Plugin-Item-Improvement
2
- Show improvable items of the day
3
- #### Usage
4
- Put the folder into /path/to/poi/resources/app/plugins.
1
+ # Plugin Item Improvement
5
2
 
6
- #### Data source
7
- The plugin makes use of data from [JA Wiki](https://wikiwiki.jp/kancolle/%E6%94%B9%E4%BF%AE%E8%A1%A8#SmallCaliber/) and [Kcwiki API](http://api.kcwiki.moe/) Project.
3
+ Poi plugin for viewing KanColle equipment improvement schedules, complete recipe routes, costs, and required materials.
4
+
5
+ ## Usage
6
+
7
+ Install the plugin through Poi, or place the package in Poi's plugin directory.
8
+
9
+ Improvement data and use-item assets are supplied by the local npm dependency `@sakura2333/kancolle-data`; the plugin does not download GitHub data at runtime.
10
+
11
+ ## Development
12
+
13
+ ```bash
14
+ npm ci --include=dev
15
+ npm test
16
+ npm pack --dry-run
17
+ ```
18
+
19
+ The committed lockfile keeps the legacy Poi transpilation toolchain reproducible. CI tests both the locked minimum-compatible data package and the latest compatible data package.
20
+
21
+ ## Publishing
22
+
23
+ Publish a compatible `@sakura2333/kancolle-data` release before publishing a plugin version that depends on it.
24
+
25
+ Official package:
26
+
27
+ ```bash
28
+ npm test
29
+ npm publish --registry=https://registry.npmjs.org/
30
+ ```
31
+
32
+ Beta package:
33
+
34
+ ```bash
35
+ npm run publish:beta:dry-run
36
+ npm run publish:beta
37
+ ```
38
+
39
+ The beta script temporarily changes the package and runtime namespace to `poi-plugin-item-improvement2-beta-beta`, publishes it, and restores the source tree even when publication fails.
Binary file
package/assets/main.css CHANGED
@@ -191,3 +191,43 @@
191
191
  flex: 1;
192
192
  width: calc(100% - 30px);
193
193
  }
194
+
195
+ .improvement-route-table + .improvement-route-table {
196
+ margin-top: 8px;
197
+ }
198
+
199
+ #item-improvement .improvement-toolbar {
200
+ display: flex;
201
+ align-items: center;
202
+ width: 100%;
203
+ }
204
+
205
+ #item-improvement .improvement-toolbar .main-nav {
206
+ flex: 1;
207
+ min-width: 0;
208
+ }
209
+
210
+ #item-improvement .changelog-button {
211
+ flex: 0 0 auto;
212
+ margin-left: 8px;
213
+ white-space: nowrap;
214
+ }
215
+
216
+ .improvement-changelog-version + .improvement-changelog-version {
217
+ border-top: 1px solid rgba(127, 127, 127, 0.25);
218
+ margin-top: 16px;
219
+ padding-top: 12px;
220
+ }
221
+
222
+ .improvement-changelog-version h4 {
223
+ margin-top: 0;
224
+ }
225
+
226
+ .improvement-changelog-version ul {
227
+ margin-bottom: 0;
228
+ padding-left: 22px;
229
+ }
230
+
231
+ .improvement-changelog-version li + li {
232
+ margin-top: 6px;
233
+ }
package/i18n/en-US.json CHANGED
@@ -1,4 +1,63 @@
1
1
  {
2
+ "Equipment Improvement": "Equipment Improvement",
3
+ "plugin_description": "View equipment improvement information, based on [Akashi List](https://akashi-list.me/)",
4
+ "Weekday setting": "Weekday setting",
5
+ "Choose weekday": "Choose weekday",
6
+ "Sunday": "Sunday",
7
+ "Monday": "Monday",
8
+ "Tuesday": "Tuesday",
9
+ "Wednesday": "Wednesday",
10
+ "Thursday": "Thursday",
11
+ "Friday": "Friday",
12
+ "Saturday": "Saturday",
13
+ "Sun": "Sun",
14
+ "Mon": "Mon",
15
+ "Tue": "Tue",
16
+ "Wed": "Wed",
17
+ "Thu": "Thu",
18
+ "Fri": "Fri",
19
+ "Sat": "Sat",
20
+ "Improvement information": "Improvement information",
21
+ "Type": "Type",
22
+ "Name": "Name",
23
+ "2nd Ship": "2nd Ship",
24
+ "None": "None",
25
+ "upgrade to": "upgrade to",
26
+ "Resource to consume": "Resource to consume",
27
+ "upgrade": "upgrade",
28
+ "Equipment": "Equipment",
29
+ "All": "All",
30
+ "Content": "Content",
31
+ "View": "View",
32
+ "Default": "Default",
33
+ "Expand All": "Expand All",
34
+ "Collapse All": "Collapse All",
35
+ "View Mode": "View Mode",
36
+ "Export as Image": "Export as Image",
37
+ "Owned": "Owned",
38
+ "Add": "Add",
39
+ "Remove": "Remove",
40
+ "Modify": "Modify",
41
+ "Invalid": "Invalid",
42
+ "Infinity": "Infinity",
2
43
  "Available": " (Available: %d)",
3
- "plugin_description": "View equipment improvement information, based on [Japanese wiki](https://wikiwiki.jp/kancolle/%E6%94%B9%E4%BF%AE%E8%A1%A8#SmallCaliber) "
44
+ "New equipment plan": "New equipment plan",
45
+ "Expand only non-empty categories": "Expand only non-empty categories",
46
+ "Starcraft": "Starcraft",
47
+ "Your personal planner for crafting stars": "Your personal planner for crafting stars",
48
+ "What's New": "What's New",
49
+ "Release Notes": "Release Notes",
50
+ "Close": "Close",
51
+ "changelog_1_0_26_useitem_icon": "Fixed a missing material icon after installation so the affected item now displays correctly.",
52
+ "changelog_1_0_25_user_focused": "Release notes now focus on visible features and usability, while implementation details stay out of the in-app dialog.",
53
+ "changelog_1_0_24_compatible_data_updates": "Compatible improvement-data updates can now be picked up when the plugin is installed or updated, reducing the need for frequent plugin releases.",
54
+ "changelog_1_0_23_offline_ready": "Improvement data and material icons are now installed with the plugin, so startup no longer waits for an online sync.",
55
+ "changelog_1_0_23_network_resilience": "The improvement view remains available when the network is unstable or temporarily offline.",
56
+ "changelog_1_0_23_consistent_data": "Stable and test releases now use the same improvement data for more consistent results.",
57
+ "changelog_1_0_22_auto_notes": "The plugin now shows the latest changes once after an update.",
58
+ "changelog_1_0_22_reopen_notes": "A What’s New button was added to the toolbar so release notes can be reopened at any time.",
59
+ "changelog_1_0_21_stable_data": "Improvement information now loads and updates more reliably.",
60
+ "changelog_1_0_21_separate_routes": "Improvement routes with different materials, costs, or upgrade targets are now shown in separate tables.",
61
+ "changelog_1_0_21_tamanami_route": "Added Tamanami Kai Ni’s dedicated material route and kept it separate from the normal route.",
62
+ "changelog_1_0_27_data_safety": "Improved data safety checks so incomplete or incompatible improvement information is rejected instead of being displayed incorrectly."
4
63
  }
package/i18n/ja-JP.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "Equipment Improvement": "装備改修表",
3
- "plugin_description": "装備改修情報を表示します。[日本語wiki](https://wikiwiki.jp/kancolle/%E6%94%B9%E4%BF%AE%E8%A1%A8#SmallCaliber) のデータに基づいています",
3
+ "plugin_description": "装備改修情報を表示します。[Akashi List](https://akashi-list.me/) のデータに基づいています",
4
4
  "Weekday setting": "曜日設定",
5
5
  "Choose weekday": "曜日選択",
6
6
  "Sunday": "日曜日",
@@ -27,16 +27,13 @@
27
27
  "upgrade": "更新",
28
28
  "Equipment": "装備",
29
29
  "All": "全ての装備",
30
-
31
30
  "Content": "内容",
32
31
  "View": "ビュー",
33
-
34
32
  "Default": "デフォルト",
35
33
  "Expand All": "すべて展開",
36
34
  "Collapse All": "すべて格納",
37
35
  "View Mode": "ビューモード",
38
36
  "Export as Image": "画像として保存",
39
-
40
37
  "Owned": "保有",
41
38
  "Add": "作成",
42
39
  "Remove": "削除",
@@ -44,11 +41,23 @@
44
41
  "Invalid": "無効",
45
42
  "Infinity": "無上限",
46
43
  "Available": " (利用可能: %d)",
47
-
48
-
49
44
  "New equipment plan": "新しい改修計画",
50
45
  "Expand only non-empty categories": "改修計画がある装備種類だけを展開",
51
-
52
46
  "Starcraft": "スタークラフト",
53
- "Your personal planner for crafting stars": "装備改修計画"
47
+ "Your personal planner for crafting stars": "装備改修計画",
48
+ "What's New": "更新履歴",
49
+ "Release Notes": "更新履歴",
50
+ "Close": "閉じる",
51
+ "changelog_1_0_26_useitem_icon": "インストール後に一部の資材アイコンが欠ける問題を修正し、正しく表示されるようになりました。",
52
+ "changelog_1_0_25_user_focused": "更新履歴を機能変更と使い勝手の内容に整理し、開発やデータ構造の詳細は表示しないようにしました。",
53
+ "changelog_1_0_24_compatible_data_updates": "プラグインのインストールや更新時に互換性のある新しい改修データを取得できるようになり、データ更新のたびにプラグインを更新する必要が減りました。",
54
+ "changelog_1_0_23_offline_ready": "改修データと資材アイコンをプラグインと一緒にインストールするようにし、起動時のオンライン同期待ちをなくしました。",
55
+ "changelog_1_0_23_network_resilience": "通信が不安定な場合や一時的にオフラインの場合でも、改修画面を利用できます。",
56
+ "changelog_1_0_23_consistent_data": "正式版とテスト版で同じ改修データを使用し、表示内容を統一しました。",
57
+ "changelog_1_0_22_auto_notes": "プラグイン更新後に、そのバージョンの変更内容を一度だけ自動表示するようにしました。",
58
+ "changelog_1_0_22_reopen_notes": "ツールバーに「更新履歴」ボタンを追加し、いつでも変更内容を確認できるようにしました。",
59
+ "changelog_1_0_21_stable_data": "改修情報の読み込みと更新をより安定させました。",
60
+ "changelog_1_0_21_separate_routes": "必要装備、資材、更新先が異なる改修ルートを別々の表で表示するようにしました。",
61
+ "changelog_1_0_21_tamanami_route": "玉波改二専用の改修素材ルートを追加し、通常ルートと混在しないようにしました。",
62
+ "changelog_1_0_27_data_safety": "不完全または互換性のない改修情報を誤って表示しないよう、データ確認を強化しました。"
54
63
  }
package/i18n/zh-CN.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "Equipment Improvement": "装备改修2",
3
- "plugin_description": "查看装备改修信息,基于[日文wiki](https://wikiwiki.jp/kancolle/%E6%94%B9%E4%BF%AE%E8%A1%A8#SmallCaliber)数据",
3
+ "plugin_description": "查看装备改修信息,基于[Akashi List](https://akashi-list.me/)数据",
4
4
  "Weekday setting": "日期设置",
5
5
  "Choose weekday": "选择日期",
6
6
  "Sunday": "星期日",
@@ -27,16 +27,13 @@
27
27
  "upgrade": "升级",
28
28
  "Equipment": "装备",
29
29
  "All": "全部装备",
30
-
31
30
  "Content": "内容",
32
31
  "View": "浏览",
33
-
34
32
  "Default": "默认",
35
33
  "Expand All": "全部展开",
36
34
  "Collapse All": "全部折叠",
37
35
  "View Mode": "浏览模式",
38
36
  "Export as Image": "导出图片",
39
-
40
37
  "Owned": "持有",
41
38
  "Add": "添加",
42
39
  "Remove": "删除",
@@ -44,10 +41,23 @@
44
41
  "Invalid": "无效",
45
42
  "Infinity": "不设上限",
46
43
  "Available": " (可用: %d)",
47
-
48
44
  "New equipment plan": "新建装备计划",
49
45
  "Expand only non-empty categories": "仅展开内容非空的装备类别",
50
-
51
46
  "Starcraft": "星级争霸",
52
- "Your personal planner for crafting stars": "装备改修规划书"
47
+ "Your personal planner for crafting stars": "装备改修规划书",
48
+ "What's New": "更新日志",
49
+ "Release Notes": "更新日志",
50
+ "Close": "关闭",
51
+ "changelog_1_0_26_useitem_icon": "修复部分资材图标在安装后的插件中缺失,相关资材现在可以正常显示。",
52
+ "changelog_1_0_25_user_focused": "更新日志现在只展示功能变化和使用体验,开发与数据结构细节不再打扰日常使用。",
53
+ "changelog_1_0_24_compatible_data_updates": "改修资料会在安装或更新插件时获取兼容的新版本,后续资料更新不必频繁升级插件。",
54
+ "changelog_1_0_23_offline_ready": "改修资料和资材图标现在会随插件一起安装,启动时无需再等待在线同步。",
55
+ "changelog_1_0_23_network_resilience": "网络不稳定或暂时离线时,改修页面仍可正常使用。",
56
+ "changelog_1_0_23_consistent_data": "正式版与测试版共用同一套改修资料,显示结果更加一致。",
57
+ "changelog_1_0_22_auto_notes": "插件更新后会自动展示一次本次版本变化。",
58
+ "changelog_1_0_22_reopen_notes": "工具栏新增“更新日志”按钮,可随时回看版本变化。",
59
+ "changelog_1_0_21_stable_data": "改修信息的加载和更新更加稳定。",
60
+ "changelog_1_0_21_separate_routes": "材料、资材或升级目标不同的改修路线现在会分表展示。",
61
+ "changelog_1_0_21_tamanami_route": "补充玉波改二专属的改修材料路线,避免与普通路线混在一起。",
62
+ "changelog_1_0_27_data_safety": "加强改修资料完整性检查,遇到不完整或不兼容的资料时会拒绝加载,避免显示错误内容。"
53
63
  }
package/i18n/zh-TW.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "Equipment Improvement": "裝備修改",
3
- "plugin_description": "檢視裝備修改訊息,基於[日文wiki](https://wikiwiki.jp/kancolle/%E6%94%B9%E4%BF%AE%E8%A1%A8#SmallCaliber)資料",
3
+ "plugin_description": "檢視裝備修改訊息,基於[Akashi List](https://akashi-list.me/)資料",
4
4
  "Weekday setting": "日期設定",
5
5
  "Choose weekday": "選擇日期",
6
6
  "Sunday": "星期日",
@@ -27,16 +27,13 @@
27
27
  "upgrade": "升級",
28
28
  "Equipment": "装備",
29
29
  "All": "全部装備",
30
-
31
30
  "Content": "內容",
32
31
  "View": "瀏覽",
33
-
34
32
  "Default": "默認",
35
33
  "Expand All": "全部展開",
36
34
  "Collapse All": "全部摺疊",
37
35
  "View Mode": "瀏覽模式",
38
36
  "Export as Image": "導出圖片",
39
-
40
37
  "Owned": "持有",
41
38
  "Add": "添加",
42
39
  "Remove": "刪除",
@@ -44,10 +41,23 @@
44
41
  "Invalid": "無效",
45
42
  "Infinity": "不設上限",
46
43
  "Available": " (可用: %d)",
47
-
48
44
  "New equipment plan": "新建裝備計劃",
49
45
  "Expand only non-empty categories": "僅展開內容非空的裝備類別",
50
-
51
46
  "Starcraft": "星海爭霸",
52
- "Your personal planner for crafting stars": "裝備改修規劃書"
47
+ "Your personal planner for crafting stars": "裝備改修規劃書",
48
+ "What's New": "更新日誌",
49
+ "Release Notes": "更新日誌",
50
+ "Close": "關閉",
51
+ "changelog_1_0_26_useitem_icon": "修正部分資材圖示在安裝後的插件中缺失,相關資材現在可以正常顯示。",
52
+ "changelog_1_0_25_user_focused": "更新日誌現在只顯示功能變化與使用體驗,開發及資料結構細節不再干擾日常使用。",
53
+ "changelog_1_0_24_compatible_data_updates": "改修資料會在安裝或更新外掛時取得相容的新版本,後續資料更新不必頻繁升級外掛。",
54
+ "changelog_1_0_23_offline_ready": "改修資料與資材圖示現在會隨外掛一同安裝,啟動時不必再等待線上同步。",
55
+ "changelog_1_0_23_network_resilience": "網路不穩定或暫時離線時,改修頁面仍可正常使用。",
56
+ "changelog_1_0_23_consistent_data": "正式版與測試版共用同一套改修資料,顯示結果更加一致。",
57
+ "changelog_1_0_22_auto_notes": "外掛更新後會自動顯示一次本次版本變更。",
58
+ "changelog_1_0_22_reopen_notes": "工具列新增「更新日誌」按鈕,可隨時回看版本變更。",
59
+ "changelog_1_0_21_stable_data": "改修資訊的載入與更新更加穩定。",
60
+ "changelog_1_0_21_separate_routes": "材料、資材或升級目標不同的改修路線現在會分表顯示。",
61
+ "changelog_1_0_21_tamanami_route": "補充玉波改二專屬的改修材料路線,避免與一般路線混在一起。",
62
+ "changelog_1_0_27_data_safety": "加強改修資料完整性檢查,遇到不完整或不相容的資料時會拒絕載入,避免顯示錯誤內容。"
53
63
  }
package/package.json CHANGED
@@ -1,13 +1,16 @@
1
1
  {
2
2
  "name": "poi-plugin-item-improvement2-beta",
3
- "version": "1.0.91",
4
- "description": "use new data source",
5
- "main": "index.es",
3
+ "version": "1.0.95",
4
+ "description": "View KanColle equipment improvement schedules, routes, costs, and required materials in Poi",
5
+ "main": "index.js",
6
6
  "scripts": {
7
7
  "prepack": "poi-util-transpile",
8
- "test": "echo \"Error: no test specified\" && exit 1",
8
+ "test": "npm run prepack && node tests/improvement-data.test.js",
9
9
  "postpack": "npm run clean:js",
10
- "clean:js": "find ./views -name '*.js' -type f -delete && rm -f ./index.js"
10
+ "clean:js": "find ./views -name '*.js' -type f -delete && rm -f ./index.js",
11
+ "posttest": "npm run clean:js",
12
+ "publish:beta": "node scripts/publish-beta.js",
13
+ "publish:beta:dry-run": "npm run publish:beta -- --dry-run"
11
14
  },
12
15
  "repository": {
13
16
  "type": "git",
@@ -30,7 +33,8 @@
30
33
  "homepage": "https://github.com/sakura2333/plugin-item-improvement#readme",
31
34
  "dependencies": {
32
35
  "dom-to-image": "^2.6.0",
33
- "react-numeric-input": "^2.2.3"
36
+ "react-numeric-input": "^2.2.3",
37
+ "@sakura2333/kancolle-data": ">=0.1.0 <0.3.0"
34
38
  },
35
39
  "devDependencies": {
36
40
  "babel-eslint": "^10.0.1",
@@ -53,5 +57,12 @@
53
57
  "8.0.99": "5.0.6",
54
58
  "8.3.0": "6.0.1"
55
59
  }
56
- }
60
+ },
61
+ "files": [
62
+ "index.js",
63
+ "views/**/*.js",
64
+ "assets/**/*",
65
+ "i18n/*.json",
66
+ "README.md"
67
+ ]
57
68
  }
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.ChangelogModal = void 0;
5
+
6
+ var _react = _interopRequireDefault(require("react"));
7
+
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+
10
+ var _reactBootstrap = require("react-bootstrap");
11
+
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+ const {
15
+ __
16
+ } = window.i18n['poi-plugin-item-improvement2-beta'];
17
+
18
+ const ChangelogModal = ({
19
+ entries,
20
+ onHide,
21
+ show
22
+ }) => _react.default.createElement(_reactBootstrap.Modal, {
23
+ show: show,
24
+ onHide: onHide,
25
+ bsSize: "large"
26
+ }, _react.default.createElement(_reactBootstrap.Modal.Header, {
27
+ closeButton: true
28
+ }, _react.default.createElement(_reactBootstrap.Modal.Title, null, __('Release Notes'))), _react.default.createElement(_reactBootstrap.Modal.Body, {
29
+ className: "improvement-changelog"
30
+ }, entries.map(entry => _react.default.createElement("section", {
31
+ className: "improvement-changelog-version",
32
+ key: entry.version
33
+ }, _react.default.createElement("h4", null, _react.default.createElement(_reactBootstrap.Label, {
34
+ bsStyle: "info"
35
+ }, "v", entry.version)), _react.default.createElement("ul", null, entry.items.map(item => _react.default.createElement("li", {
36
+ key: item
37
+ }, __(item))))))), _react.default.createElement(_reactBootstrap.Modal.Footer, null, _react.default.createElement(_reactBootstrap.Button, {
38
+ bsStyle: "primary",
39
+ onClick: onHide
40
+ }, __('Close'))));
41
+
42
+ exports.ChangelogModal = ChangelogModal;
43
+ ChangelogModal.propTypes = {
44
+ entries: _propTypes.default.arrayOf(_propTypes.default.shape({
45
+ version: _propTypes.default.string.isRequired,
46
+ items: _propTypes.default.arrayOf(_propTypes.default.string).isRequired
47
+ })).isRequired,
48
+ onHide: _propTypes.default.func.isRequired,
49
+ show: _propTypes.default.bool.isRequired
50
+ };
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.getChangelogEntriesSince = exports.compareVersions = exports.CHANGELOG = exports.CHANGELOG_BASELINE_VERSION = exports.CHANGELOG_CONFIG_KEY = exports.CURRENT_VERSION = void 0;
5
+
6
+ const pluginPackage = require('../package.json');
7
+
8
+ const CURRENT_VERSION = pluginPackage.version;
9
+ exports.CURRENT_VERSION = CURRENT_VERSION;
10
+ const CHANGELOG_CONFIG_KEY = 'poi-plugin-item-improvement2-beta.lastSeenChangelogVersion';
11
+ exports.CHANGELOG_CONFIG_KEY = CHANGELOG_CONFIG_KEY;
12
+ const CHANGELOG_BASELINE_VERSION = '1.0.20'; // Keep in-app notes focused on user-visible behavior. Engineering details belong in CHANGELOG.md.
13
+
14
+ exports.CHANGELOG_BASELINE_VERSION = CHANGELOG_BASELINE_VERSION;
15
+ const CHANGELOG = [{
16
+ version: '1.0.27',
17
+ items: ['changelog_1_0_27_data_safety']
18
+ }, {
19
+ version: '1.0.26',
20
+ items: ['changelog_1_0_26_useitem_icon']
21
+ }, {
22
+ version: '1.0.25',
23
+ items: ['changelog_1_0_25_user_focused']
24
+ }, {
25
+ version: '1.0.24',
26
+ items: ['changelog_1_0_24_compatible_data_updates']
27
+ }, {
28
+ version: '1.0.23',
29
+ items: ['changelog_1_0_23_offline_ready', 'changelog_1_0_23_network_resilience', 'changelog_1_0_23_consistent_data']
30
+ }, {
31
+ version: '1.0.22',
32
+ items: ['changelog_1_0_22_auto_notes', 'changelog_1_0_22_reopen_notes']
33
+ }, {
34
+ version: '1.0.21',
35
+ items: ['changelog_1_0_21_stable_data', 'changelog_1_0_21_separate_routes', 'changelog_1_0_21_tamanami_route']
36
+ }];
37
+ exports.CHANGELOG = CHANGELOG;
38
+
39
+ const normalizeVersion = version => String(version || '').replace(/^v/i, '').split('.').map(part => Number.parseInt(part, 10) || 0);
40
+
41
+ const compareVersions = (left, right) => {
42
+ const a = normalizeVersion(left);
43
+ const b = normalizeVersion(right);
44
+ const length = Math.max(a.length, b.length);
45
+
46
+ for (let index = 0; index < length; index += 1) {
47
+ const leftPart = a[index] || 0;
48
+ const rightPart = b[index] || 0;
49
+ if (leftPart > rightPart) return 1;
50
+ if (leftPart < rightPart) return -1;
51
+ }
52
+
53
+ return 0;
54
+ };
55
+
56
+ exports.compareVersions = compareVersions;
57
+
58
+ const getChangelogEntriesSince = lastSeenVersion => {
59
+ const baseline = lastSeenVersion || CHANGELOG_BASELINE_VERSION;
60
+ return CHANGELOG.filter(entry => compareVersions(entry.version, baseline) > 0 && compareVersions(entry.version, CURRENT_VERSION) <= 0);
61
+ };
62
+
63
+ exports.getChangelogEntriesSince = getChangelogEntriesSince;
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.validateSchemaVersion = exports.SUPPORTED_IMPROVEMENT_LIST_SCHEMA_VERSION = exports.SUPPORTED_IMPROVEMENT_SCHEMA_VERSION = exports.DATA_PACKAGE_NAME = exports.getUseitemIconPath = exports.getImprovementDataPaths = exports.getDataPackageManifest = void 0;
5
+
6
+ var _fs = _interopRequireDefault(require("fs"));
7
+
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
+
10
+ const PACKAGE_NAME = '@sakura2333/kancolle-data';
11
+ const IMPROVEMENT_SCHEMA_VERSION = 3;
12
+ const IMPROVEMENT_LIST_SCHEMA_VERSION = 2;
13
+ let dataPackage = null;
14
+ let manifest = null;
15
+
16
+ function loadDataPackage() {
17
+ if (dataPackage) return dataPackage;
18
+
19
+ try {
20
+ // Keep this as CommonJS so the published data package can expose stable paths
21
+ // without being bundled into the plugin JavaScript output.
22
+ dataPackage = require(PACKAGE_NAME);
23
+ } catch (error) {
24
+ throw new Error(`Missing required data package ${PACKAGE_NAME}: ${error.message}`);
25
+ }
26
+
27
+ return dataPackage;
28
+ }
29
+
30
+ function requireExactSchema(value, expected, label) {
31
+ const schemaVersion = Number(value);
32
+
33
+ if (!Number.isInteger(schemaVersion) || schemaVersion !== expected) {
34
+ throw new Error(`Unsupported ${label} schema ${value}; supported version is ${expected}`);
35
+ }
36
+ }
37
+
38
+ function readManifest() {
39
+ if (manifest) return manifest;
40
+ const pkg = loadDataPackage();
41
+
42
+ if (!pkg.manifestPath || !_fs.default.existsSync(pkg.manifestPath)) {
43
+ throw new Error(`${PACKAGE_NAME} manifest not found`);
44
+ }
45
+
46
+ manifest = JSON.parse(_fs.default.readFileSync(pkg.manifestPath, 'utf8'));
47
+ const improvement = manifest.datasets && manifest.datasets.improvement;
48
+
49
+ if (!improvement) {
50
+ throw new Error(`${PACKAGE_NAME} does not contain the improvement dataset`);
51
+ }
52
+
53
+ requireExactSchema(improvement.schemaVersion, IMPROVEMENT_SCHEMA_VERSION, 'improvement detail');
54
+
55
+ if (improvement.listSchemaVersion != null) {
56
+ requireExactSchema(improvement.listSchemaVersion, IMPROVEMENT_LIST_SCHEMA_VERSION, 'improvement list');
57
+ }
58
+
59
+ return manifest;
60
+ }
61
+
62
+ const getDataPackageManifest = () => readManifest();
63
+
64
+ exports.getDataPackageManifest = getDataPackageManifest;
65
+
66
+ const getImprovementDataPaths = () => {
67
+ readManifest();
68
+ const pkg = loadDataPackage();
69
+
70
+ if (!pkg.improvement || !pkg.improvement.listPath || !pkg.improvement.detailPath) {
71
+ throw new Error(`${PACKAGE_NAME} improvement paths are incomplete`);
72
+ }
73
+
74
+ if (!_fs.default.existsSync(pkg.improvement.listPath) || !_fs.default.existsSync(pkg.improvement.detailPath)) {
75
+ throw new Error(`${PACKAGE_NAME} improvement files are missing`);
76
+ }
77
+
78
+ return {
79
+ listPath: pkg.improvement.listPath,
80
+ detailPath: pkg.improvement.detailPath
81
+ };
82
+ };
83
+
84
+ exports.getImprovementDataPaths = getImprovementDataPaths;
85
+
86
+ const getUseitemIconPath = id => {
87
+ const pkg = loadDataPackage();
88
+ return pkg.assets && typeof pkg.assets.useitemPath === 'function' ? pkg.assets.useitemPath(id) : null;
89
+ };
90
+
91
+ exports.getUseitemIconPath = getUseitemIconPath;
92
+ const DATA_PACKAGE_NAME = PACKAGE_NAME;
93
+ exports.DATA_PACKAGE_NAME = DATA_PACKAGE_NAME;
94
+ const SUPPORTED_IMPROVEMENT_SCHEMA_VERSION = IMPROVEMENT_SCHEMA_VERSION;
95
+ exports.SUPPORTED_IMPROVEMENT_SCHEMA_VERSION = SUPPORTED_IMPROVEMENT_SCHEMA_VERSION;
96
+ const SUPPORTED_IMPROVEMENT_LIST_SCHEMA_VERSION = IMPROVEMENT_LIST_SCHEMA_VERSION;
97
+ exports.SUPPORTED_IMPROVEMENT_LIST_SCHEMA_VERSION = SUPPORTED_IMPROVEMENT_LIST_SCHEMA_VERSION;
98
+ const validateSchemaVersion = requireExactSchema;
99
+ exports.validateSchemaVersion = validateSchemaVersion;