poi-plugin-quest-info-2 0.6.2 → 0.6.3

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.
@@ -1 +1 @@
1
- be5db381c0cca84ede0166eb8c582d19afe0aec1
1
+ 9c5a15512d59eaad02e09fe717defba581c4e4a3
@@ -4,4 +4,4 @@ export const KcwikiQuestData = {
4
4
  'zh-CN': zh_CN,
5
5
  }
6
6
 
7
- export const version = 'be5db381c0cca84ede0166eb8c582d19afe0aec1'
7
+ export const version = '9c5a15512d59eaad02e09fe717defba581c4e4a3'
@@ -0,0 +1,9 @@
1
+ [
2
+ "314",
3
+ "329",
4
+ "441",
5
+ "840",
6
+ "841",
7
+ "843",
8
+ "969"
9
+ ]
@@ -516,7 +516,7 @@
516
516
  ]
517
517
  },
518
518
  "158": {
519
- "code": "A92 ",
519
+ "code": "A92",
520
520
  "desc": "主力战舰编成任务:第一舰队旗舰配备「长门改二」,二号舰配备「陆奥改二」的第一战队,编成精锐无比的水上打击部队!\n❀备注:第一舰队旗舰长门改二,2 号位陆奥改二。",
521
521
  "memo": "奖励:三式弾改 以下奖励三选一:41cm 連装砲 ×2 新型火炮兵装资材 开发资材 ×8",
522
522
  "name": "精锐无比「第一战队」准备起锚!",
@@ -863,7 +863,7 @@
863
863
  ]
864
864
  },
865
865
  "196": {
866
- "code": "A91 ",
866
+ "code": "A91",
867
867
  "desc": "甲型驱逐舰编成任务:编成由夕云型驱逐舰「夕云改二」及「卷云改二」2 艘组成的精锐第十驱逐队(2 艘编成)!\n❀备注:将夕云改二与卷云改二编成在同一舰队",
868
868
  "memo": "奖励:战斗粮食 (特制饭团) 以下奖励二选一:高速修复材 x5 特制家具职人",
869
869
  "name": "精锐「第十驱逐队」,准备起锚!",
@@ -2007,6 +2007,13 @@
2007
2007
  "F3"
2008
2008
  ]
2009
2009
  },
2010
+ "329": {
2011
+ "code": "2201LC01",
2012
+ "desc": "节分任务:编组含有轻巡或练习巡洋舰 2 艘,且驱逐舰或海防舰 2 艘的节分舰队,以此舰队实行节分演习!一日内演习取得【S 胜】3 次以上!\n❀备注:日常任务含轻巡或练巡两艘,驱逐或海防两艘的舰队,单日内演习三次 S 胜",
2013
+ "memo": "奖励:福豆 ×1",
2014
+ "name": "【节分任务】节分演习!二零二二",
2015
+ "pre": []
2016
+ },
2010
2017
  "330": {
2011
2018
  "code": "C29",
2012
2019
  "desc": "航母机动部队演习任务:编成航空母舰旗舰和僚舰 1 艘,共 2 艘以上,并含有驱逐舰 2 艘的航母机动部队。\n❀备注:空母系旗舰并携带至少另 1 艘空母系以及至少 2 只驱逐舰的舰队在一个任务周期内取得演习胜利 4 次",
@@ -2126,7 +2133,7 @@
2126
2133
  ]
2127
2134
  },
2128
2135
  "344": {
2129
- "code": "C48 ",
2136
+ "code": "C48",
2130
2137
  "desc": "第十方面舰队演习任务:将作为同舰队中坚战力的重巡「羽黑」「足柄」、驱逐舰「神风」中的任意两艘以上的舰船编入队伍。以该舰队达成 4 次以上【A 胜】!",
2131
2138
  "memo": "奖励:以下奖励二选一:改修资材 ×2 高速修复材 ×4 以下奖励二选一:25mm 三連装機銃 ×2 新型兵装资材",
2132
2139
  "name": "「第十方面舰队」演习!",
@@ -2564,6 +2571,16 @@
2564
2571
  "D31"
2565
2572
  ]
2566
2573
  },
2574
+ "441": {
2575
+ "code": "2201LD01",
2576
+ "desc": "节分任务:完成 “西方海域侦察作战”“潜水艇派遣演习 ”“潜水艇派遣作战 ” 以及 “ 长时间对潜警戒”“铝土船团护卫 ” 远征任务!\n❀备注:完成远征 D1/29/30/A3/45 各一次。",
2577
+ "memo": "奖励:以下奖励三选一:特制家具职人 ×1 新型航空兵装资材 ×2 改修资材 ×4 以下奖励三选一:Me163B ×1Do 17 Z-2 ×22cm 四連装 FlaK 38 color",
2578
+ "name": "【节分任务】令和四年节分远征任务",
2579
+ "pre": [
2580
+ "2201LB06",
2581
+ "C63"
2582
+ ]
2583
+ },
2567
2584
  "442": {
2568
2585
  "code": "D38",
2569
2586
  "desc": "西方联络作战准备:「远征 | 西方海域侦察作战」(远征 D1)「远征 | 潜水艇派遣演习」(远征 29)「远征 | 潜水艇派遣作战」(远征 30)以及「远征 | 同欧洲方面友军接触」(月常远征 D3)\n❀备注:年常任务 (2 月) 远征 D1/29/30/D3 各成功一次总时长 2h + 24h + 48h + 12h",
@@ -2605,7 +2622,7 @@
2605
2622
  ]
2606
2623
  },
2607
2624
  "446": {
2608
- "code": "D43 ",
2625
+ "code": "D43",
2609
2626
  "desc": "请实施【对潜警戒任务】、【海上护卫任务】、【油轮护卫任务】、【兵站强化任务】、【南西方面航空侦察作战】作战各一次!\n❀备注:远征 4/5/A1/9/B1 各成功 1 次",
2610
2627
  "memo": "奖励:以下奖励三选一:九三式水中听音机 ×2 九四式暴雷投射机 ×2 开发资材 ×6 以下奖励三选一:三式水中探信仪改修资材 ×3 特注家具职人",
2611
2628
  "name": "强化海上运输航线护卫",
@@ -3976,6 +3993,41 @@
3976
3993
  "B8"
3977
3994
  ]
3978
3995
  },
3996
+ "840": {
3997
+ "code": "2201LB05",
3998
+ "desc": "节分任务:编组轻空母或轻巡级为旗舰,且驱逐舰或海防舰 3 艘的舰队,以此舰队实行节分演习!对节分期间的镇守府近海、镇守府海域制油所地带沿岸、东部奥廖尔海进行警戒!发现敌舰队,并压制他们!\n❀备注:周常任务 CVL 或 CL 旗舰,含 3DD 或 3DE 的舰队,",
3999
+ "memo": "奖励:福豆 ×2 以下奖励三选一:高速修复材 ×3 洋上补给 ×1 紧急修理资材 ×1",
4000
+ "name": "【节分任务】节分作战二零二二",
4001
+ "pre": []
4002
+ },
4003
+ "841": {
4004
+ "code": "2201LB06",
4005
+ "desc": "节分任务:以水上机母舰、航空巡洋舰、重巡任一为旗舰,并编入与旗舰同一舰种的伴随舰,以该舰队镇压危害昭南本土航线的敌人,并将槟榔屿海域深处、塔威塔威泊地海岸深处的敌军主力歼灭!\n❀备注:周常任务 AV/CAV/CA 旗舰 + 1 旗舰相同舰种的僚舰",
4006
+ "memo": "奖励:福豆 ×2 以下奖励三选一:开发资材 ×6 伊良湖 ×1 改修资材 ×2",
4007
+ "name": "【节分任务】南西海域节分作战二零二二",
4008
+ "pre": [
4009
+ "2201LB05",
4010
+ "2201LC01"
4011
+ ]
4012
+ },
4013
+ "842": {
4014
+ "code": "B89",
4015
+ "desc": "以两艘以上的战舰及航空战舰为核心组成的强力战舰战队向冲之岛海域展开,捕捉并歼灭入侵的敌方舰队!\n❀备注:2 低速战舰 / 航空战舰 + 4 任意,2-4BOSS 取得 S 胜利",
4016
+ "memo": "奖励:伊良湖从下列奖励中选择:改良型舰本式叶轮机 * 1 强化型舰本式缶 * 1",
4017
+ "name": "主力战舰战队,拔锚!",
4018
+ "pre": [
4019
+ "B19"
4020
+ ]
4021
+ },
4022
+ "843": {
4023
+ "code": "2201LB07",
4024
+ "desc": "节分扩张任务:以战舰 2 艘以上或航空母舰 2 艘以上并含「大淀」或川内型轻巡的舰队,出击节分期间的冲之岛海域、珊瑚群岛近海、沙门海域北方、中部北海域孔雀岛近海,歼灭敌舰队!\n❀备注:周常任务 2BB 系或 2CV 系 + 大淀 / 川内 / 神通 / 那珂",
4025
+ "memo": "奖励:福豆 ×3 战果 * 220",
4026
+ "name": "【节分扩张任务】节分作战二零二二、全力出击!",
4027
+ "pre": [
4028
+ "2201LB06"
4029
+ ]
4030
+ },
3979
4031
  "844": {
3980
4032
  "code": "B90",
3981
4033
  "desc": "编成以荒潮改二为旗舰,僚舰中包含另一「第八驱逐队」成员的精锐第一舰队,突入 5-5 | 沙门海域北方(5-5),捕捉接近该方面的强力敌舰队,尽力削弱敌方战力!\n❀备注:第八驱逐队可在朝潮、大潮和满潮中选择一只,Boss 战 A 胜以上两次",
@@ -4972,14 +5024,14 @@
4972
5024
  ]
4973
5025
  },
4974
5026
  "957": {
4975
- "code": "B172 ",
5027
+ "code": "B172",
4976
5028
  "desc": "以山风改二 / 山风改二丁作为旗舰,编成含旗舰在内共三艘或以上的驱逐舰或海防舰的舰队,出击南西诸岛冲,制油所地带沿岸,南西诸岛防卫线以及镇守府近海!把侵入近海的敌人全都消灭吧!\n❀备注:编成山风改二 (丁) 为旗舰,3 艘及以上 DD/DE 的舰队 1-2、1-3、1-4、1-5 各一次 S 胜",
4977
5029
  "memo": "奖励:三式水中探信仪改",
4978
5030
  "name": "【山风改二】,拔锚!",
4979
5031
  "pre": []
4980
5032
  },
4981
5033
  "958": {
4982
- "code": "B173 ",
5034
+ "code": "B173",
4983
5035
  "desc": "【山风改二 / 山风改二丁】【江风改二】【海风改二】任选两艘编成舰队,出击南西诸岛巴士海峡,塔威塔威泊地海域深处,南方海域前面,中部北海域孔雀岛海域,击灭敌方战力吧!\n❀备注:包含山风改二 (丁)/ 江风改二 / 海风改二任意两艘的舰队 2-2、7-2P2、5-1、6-4 各一次 S 胜",
4984
5036
  "memo": "奖励:以下奖励三选一:改修资材 ×5 大発動艇 ×3 新型兵装资材 ×2",
4985
5037
  "name": "改白露型驱逐舰,【山风改二】,奋战!",
@@ -5004,7 +5056,7 @@
5004
5056
  ]
5005
5057
  },
5006
5058
  "961": {
5007
- "code": "B174 ",
5059
+ "code": "B174",
5008
5060
  "desc": "第十五驱逐队任务:编成包含「黑潮改二」及「亲潮改二」的舰队,出击南西诸岛海域冲之岛海域,南方海域沙门海域,南西海域塔威塔威泊地海岸深部反复出击!捕捉并歼灭敌舰!\n❀备注:包含黑潮改二 + 亲潮改二 2-4 5-4 7-2P2 各 S 胜两次",
5009
5061
  "memo": "奖励:以下奖励三选一:特制家具职人 新型火炮兵装资材 ×2 改修资材 ×5",
5010
5062
  "name": "奋战!精锐「第十五驱逐队」第一小队!",
@@ -5048,7 +5100,7 @@
5048
5100
  ]
5049
5101
  },
5050
5102
  "966": {
5051
- "code": "B175 ",
5103
+ "code": "B175",
5052
5104
  "desc": "击破南西诸岛近海,巴士海峡,东部奥廖尔海,槟榔屿深部的敌舰队!经由昭南本土航路于台湾停泊。准备「设营队」x1,在当地展开可用于空中掩护的南西海域「基地航空队」!\n❀备注:2-1 2-2 2-3 7-3P2 s 胜各 1 次 7-4 O 点到达 1 次",
5053
5105
  "memo": "奖励:以下奖励三选一:一式陸攻 三式戦 飛燕 ×2 改修资材 ×5",
5054
5106
  "name": "开设南西海域「基地航空队」",
@@ -5058,7 +5110,7 @@
5058
5110
  ]
5059
5111
  },
5060
5112
  "967": {
5061
- "code": "B176 ",
5113
+ "code": "B176",
5062
5114
  "desc": "Hi 船团海上护卫任务:南西海域:完成昭南本土海路所在任务,保护 Hi 船团突破昭南 - 本土航路上潜在的威胁!舰队,基地航空队,出击!\n❀备注:7-4 血条击破",
5063
5115
  "memo": "奖励:八幡丸 | 160px 以下奖励三选一:开发资材 ×8 改修资材 ×4 应急修理女神 ×1",
5064
5116
  "name": "海上护卫!保护 Hi 船团!",
@@ -5067,7 +5119,7 @@
5067
5119
  ]
5068
5120
  },
5069
5121
  "968": {
5070
- "code": "B177 ",
5122
+ "code": "B177",
5071
5123
  "desc": "编成空母「云鹰」(八幡丸也可)为旗舰的舰队,击破昭南本土航路,塔威塔威泊地深部,冲之岛海,中部北海域孔雀岛近海的敌战力!航空母舰「云鹰」,出击!\n❀备注:7-4 7-2P2 2-5 6-4 A 胜各 1 次",
5072
5124
  "memo": "奖励:以下奖励三选一:九七式艦攻 (九三一空) ×2 改修资材 ×6 新型航空兵装资材 ×2 以下奖励三选一:战斗详报 ×2 九七式艦攻改 試製三号戊型 (空六号電探改装備機) ×2 试制甲板用弹射器",
5073
5125
  "name": "航空母舰「云鹰」,拔锚!",
@@ -5076,7 +5128,7 @@
5076
5128
  ]
5077
5129
  },
5078
5130
  "969": {
5079
- "code": "B178 ",
5131
+ "code": "B178",
5080
5132
  "desc": "以编入「天雾改二 / 改二丁」,及「青叶」、「大井」、「狭雾」中任意 2 艘的舰队,出击巴士海峡、槟榔屿海域深处、南方海域前方、沙门海域、中部北海域孔雀岛近海!全力找出并歼灭敌方舰队!\n❀备注:含天雾改二 / 丁,青叶、大井、狭雾三选二的舰队,",
5081
5133
  "memo": "奖励:以下奖励二选一:勋章 ×1 补强增设 ×1 以下奖励三选一:战斗详报 ×112.7cm 連装砲 B 型改四 (戦時改修)+ 高射装置 color",
5082
5134
  "name": "改特型驱逐舰「天雾改二」,出击!",
@@ -5136,14 +5188,14 @@
5136
5188
  ]
5137
5189
  },
5138
5190
  "1107": {
5139
- "code": "F102 ",
5191
+ "code": "F102",
5140
5192
  "desc": "把钢材出口,再买入铝材,以此增加陆航的兵力吧!废弃【舰战】【舰攻】类装备各两个,再准备钢材 24000 以及 10 个开发资材!※完成任务时准备的材料会消失。\n❀备注:年常任务 (9 月) 废弃舰战 ×2、舰攻 ×2 完成任务时消耗钢材 ×24000、开发资材 ×10",
5141
5193
  "memo": "奖励:以下奖励三选一:九六式陸攻 ×2 一式陸攻 新型航空兵装资材",
5142
5194
  "name": "【钢材出口】增加陆基航空队的兵力吧!",
5143
5195
  "pre": []
5144
5196
  },
5145
5197
  "1108": {
5146
- "code": "F103 ",
5198
+ "code": "F103",
5147
5199
  "desc": "旗舰【山风改二 / 山风改二丁】或者【时雨改二】在第一装备格装备满改修的【三式水中探信仪】。再废弃【九三式水中听音机】以及【三式水中探信仪】各两个。准备新型兵装资材 2 个,开发资材 30 个,以及铝材 1300。\n❀备注:以山風改二 / 丁或時雨改二為秘書艦,於第一格裝備「三式水中探信儀☆MAX」、準備新型兵装資材 ×2, 開発資材 ×30, 鋁土 1300, 並廢棄「九三式水中聴音機」×2 、「三式水中探信儀」×2 後達成",
5148
5200
  "memo": "奖励:三式水中探信仪改",
5149
5201
  "name": "增产调整改良型【水中聴音机】",
package/i18n/en-US.json CHANGED
@@ -11,6 +11,7 @@
11
11
  "Arsenal": "Arsenal",
12
12
  "Modernization": "Modernization",
13
13
  "Others": "Others",
14
+ "New": "New",
14
15
  "Daily": "Daily",
15
16
  "Weekly": "Weekly",
16
17
  "Monthly": "Monthly",
package/i18n/ja-JP.json CHANGED
@@ -11,6 +11,7 @@
11
11
  "Arsenal": "工廠",
12
12
  "Modernization": "改装",
13
13
  "Others": "その他",
14
+ "New": "最新任務",
14
15
  "Daily": "デイリー",
15
16
  "Weekly": "ウィークリー",
16
17
  "Monthly": "マンスリー",
package/i18n/zh-CN.json CHANGED
@@ -11,6 +11,7 @@
11
11
  "Arsenal": "工厂",
12
12
  "Modernization": "改装",
13
13
  "Others": "其他",
14
+ "New": "新任务",
14
15
  "Daily": "日常",
15
16
  "Weekly": "周常",
16
17
  "Monthly": "月常",
package/i18n/zh-TW.json CHANGED
@@ -11,6 +11,7 @@
11
11
  "Arsenal": "工廠",
12
12
  "Modernization": "改装",
13
13
  "Others": "其他",
14
+ "New": "新任務",
14
15
  "Daily": "每日",
15
16
  "Weekly": "每週",
16
17
  "Monthly": "每月",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "poi-plugin-quest-info-2",
3
- "version": "0.6.2",
3
+ "version": "0.6.3",
4
4
  "private": false,
5
5
  "description": "show quest info",
6
6
  "homepage": "https://github.com/lawvs/poi-plugin-quest-2/",
@@ -31,7 +31,7 @@
31
31
  "storybook": "start-storybook -p 6006",
32
32
  "test": "jest",
33
33
  "typeCheck": "tsc --noEmit",
34
- "update": "npm run downloadKcanotifyData & npm run downloadKcQuestsData && npm run genQuestCategory"
34
+ "update": "npm run downloadKcanotifyData && npm run downloadKcQuestsData && npm run genQuestCategory"
35
35
  },
36
36
  "dependencies": {
37
37
  "react-use": "^17.3.1",
@@ -8,13 +8,15 @@ import { prepareDir } from './utils'
8
8
  // See https://github.com/kcwikizh/kcQuests
9
9
 
10
10
  const OUTPUT_PATH = path.resolve('build', 'kcQuestsData')
11
- const FILE_NAME = 'quests-scn.json'
12
- const URL = `https://kcwikizh.github.io/kcQuests/${FILE_NAME}`
11
+ const DATA_FILE_NAME = 'quests-scn.json'
12
+ const DATA_URL = `https://kcwikizh.github.io/kcQuests/${DATA_FILE_NAME}`
13
+ const NEW_QUEST_FILE_NAME = 'quests-scn-new.json'
14
+ const NEW_QUEST_URL = `https://kcwikizh.github.io/kcQuests/${NEW_QUEST_FILE_NAME}`
13
15
  const VERSION_URL =
14
16
  'https://api.github.com/repos/kcwikizh/kcQuests/branches/main'
15
17
 
16
- // expired quest: 2021 节分任务
17
- const IGNORE_DATA = [329, 441, 840, 841, 842, 843] as const
18
+ // maybe need ignore some expired quest
19
+ const IGNORE_DATA = [] as const
18
20
 
19
21
  const getRemoteVersion = async () => {
20
22
  const resp = await fetch(VERSION_URL)
@@ -55,29 +57,13 @@ const genTS = (version: string) => {
55
57
  return `${importCode}\n\n${exportCode}\n\n${versionCode}\n`
56
58
  }
57
59
 
58
- const main = async () => {
59
- const args = process.argv.slice(2)
60
-
61
- prepareDir(OUTPUT_PATH)
62
- const remoteVersion = await getRemoteVersion()
63
- const localVersion = getLocalVersion()
64
- if (remoteVersion === localVersion) {
65
- console.log('The local version is up to date. Version:', localVersion)
66
- if (!args.find((v) => v === '-f' || v === '--force')) {
67
- return
68
- }
69
- } else {
70
- console.log('New Version Detected. Version:', remoteVersion)
71
- }
72
-
73
- console.log(`Download kcQuests data...`)
74
- const resp = await fetch(URL)
60
+ const downloadQuestData = async () => {
61
+ const resp = await fetch(DATA_URL)
75
62
  if (!resp.ok) {
76
63
  console.error(`Fetch Error!\nurl: ${resp.url}\nstatus: ${resp.status}`)
77
64
  return
78
65
  }
79
- let text = await resp.text()
80
- text = text.trim()
66
+ const text = await resp.text()
81
67
 
82
68
  const json = JSON.parse(text) as {
83
69
  [gameId: string]: {
@@ -88,7 +74,8 @@ const main = async () => {
88
74
  }
89
75
  }
90
76
  for (const gameId in json) {
91
- const { name, desc, memo } = json[gameId]
77
+ const { code, name, desc, memo } = json[gameId]
78
+ json[gameId].code = code.trim()
92
79
  json[gameId].name = pangu.spacing(name)
93
80
  json[gameId].desc = pangu.spacing(desc)
94
81
  if (memo) {
@@ -98,7 +85,38 @@ const main = async () => {
98
85
 
99
86
  IGNORE_DATA.forEach((gameId) => delete json[gameId])
100
87
  const data = JSON.stringify(json, undefined, 2)
101
- writeFileSync(`${OUTPUT_PATH}/${FILE_NAME}`, data)
88
+ writeFileSync(path.resolve(OUTPUT_PATH, DATA_FILE_NAME), data)
89
+ }
90
+
91
+ const downloadNewQuest = async () => {
92
+ const resp = await fetch(NEW_QUEST_URL)
93
+ if (!resp.ok) {
94
+ console.error(`Fetch Error!\nurl: ${resp.url}\nstatus: ${resp.status}`)
95
+ return
96
+ }
97
+ const text = await resp.text()
98
+ const json = Object.keys(JSON.parse(text))
99
+ const data = JSON.stringify(json, undefined, 2)
100
+ writeFileSync(path.resolve(OUTPUT_PATH, NEW_QUEST_FILE_NAME), data)
101
+ }
102
+
103
+ const main = async () => {
104
+ const args = process.argv.slice(2)
105
+
106
+ prepareDir(OUTPUT_PATH)
107
+ const remoteVersion = await getRemoteVersion()
108
+ const localVersion = getLocalVersion()
109
+ if (remoteVersion === localVersion) {
110
+ console.log('The local version is up to date. Version:', localVersion)
111
+ if (!args.find((v) => v === '-f' || v === '--force')) {
112
+ return
113
+ }
114
+ } else {
115
+ console.log('New Version Detected. Version:', remoteVersion)
116
+ }
117
+
118
+ console.log(`Download kcQuests data...`)
119
+ await Promise.all([downloadQuestData(), downloadNewQuest()])
102
120
 
103
121
  const ts = genTS(remoteVersion)
104
122
  writeFileSync(`${OUTPUT_PATH}/index.ts`, ts)
@@ -573,7 +573,7 @@ Object {
573
573
  "name": "夏日格纳库整备 & 航空基地整备",
574
574
  },
575
575
  Object {
576
- "code": "F102 ",
576
+ "code": "F102",
577
577
  "gameId": "1107",
578
578
  "name": "【钢材出口】增加陆基航空队的兵力吧!",
579
579
  },
@@ -1,15 +1,28 @@
1
1
  import { version, KcwikiQuestData } from '../../build/kcQuestsData'
2
2
 
3
- test('should KcwikiQuestData Game data version correct', () => {
4
- expect(version).toMatchInlineSnapshot(
5
- `"be5db381c0cca84ede0166eb8c582d19afe0aec1"`
6
- )
7
- })
3
+ describe('should version correct', () => {
4
+ test('should KcwikiQuestData Game data version correct', () => {
5
+ expect(version).toMatchInlineSnapshot(
6
+ `"9c5a15512d59eaad02e09fe717defba581c4e4a3"`
7
+ )
8
+ })
8
9
 
9
- test('should KcwikiQuestData Game data keys correct', () => {
10
- expect(Object.keys(KcwikiQuestData)).toMatchInlineSnapshot(`
10
+ test('should KcwikiQuestData Game data keys correct', () => {
11
+ expect(Object.keys(KcwikiQuestData)).toMatchInlineSnapshot(`
11
12
  Array [
12
13
  "zh-CN",
13
14
  ]
14
15
  `)
16
+ })
17
+ })
18
+
19
+ describe('should format correct', () => {
20
+ test('key format', () => {
21
+ Object.keys(KcwikiQuestData['zh-CN']).forEach((key) => {
22
+ // gameId should not extra space
23
+ expect(key.trim()).toEqual(key)
24
+ // gameId should be number
25
+ expect(String(+key)).toEqual(key)
26
+ })
27
+ })
15
28
  })
@@ -24,8 +24,8 @@ describe('should questCategory correct', () => {
24
24
  .sort((a, b) => +a - +b)
25
25
  .map((gameId) => ({
26
26
  gameId,
27
- code: mergeData[gameId as keyof typeof mergeData]?.code,
28
- name: mergeData[gameId as keyof typeof mergeData]?.name,
27
+ code: mergeData[gameId as keyof typeof mergeData].code,
28
+ name: mergeData[gameId as keyof typeof mergeData].name,
29
29
  })),
30
30
  ])
31
31
  )
@@ -1,4 +1,5 @@
1
1
  import questCategory from '../build/questCategory.json'
2
+ import newQuestData from '../build/kcQuestsData/quests-scn-new.json'
2
3
  import { GameQuest, QUEST_API_STATE } from './poi/types'
3
4
 
4
5
  type DocQuest = {
@@ -32,6 +33,7 @@ const monthlyQuest = new Set(questCategory.monthlyQuest)
32
33
  const quarterlyQuest = new Set(questCategory.quarterlyQuest)
33
34
  const yearlyQuest = new Set(questCategory.yearlyQuest)
34
35
  const singleQuest = new Set(questCategory.singleQuest)
36
+ const newQuest = new Set(newQuestData)
35
37
 
36
38
  export const isInProgressQuest = (quest: UnionQuest) =>
37
39
  quest.gameQuest?.api_state === QUEST_API_STATE.IN_PROGRESS ||
@@ -48,6 +50,9 @@ export const isYearlyQuest = (quest: UnionQuest) =>
48
50
  export const isSingleQuest = (quest: UnionQuest) =>
49
51
  singleQuest.has(quest.gameId)
50
52
 
53
+ export const hasNewQuest = newQuestData.length > 0
54
+ export const isNewQuest = (quest: UnionQuest) => newQuest.has(quest.gameId)
55
+
51
56
  export enum QUEST_CATEGORY {
52
57
  Composition = '1',
53
58
  Sortie = '2',
package/src/tags.ts CHANGED
@@ -15,6 +15,8 @@ import {
15
15
  isUnknownCategoryQuest,
16
16
  isInProgressQuest,
17
17
  isSingleQuest,
18
+ hasNewQuest,
19
+ isNewQuest,
18
20
  } from './questHelper'
19
21
  import type { UnionQuest } from './questHelper'
20
22
 
@@ -47,6 +49,7 @@ export const CATEGORY_TAGS = [
47
49
  export const TYPE_TAGS = [
48
50
  ALL_TYPE_TAG,
49
51
  ...(IN_POI ? [{ name: 'In Progress', filter: isInProgressQuest }] : []),
52
+ ...(hasNewQuest ? [{ name: 'New', filter: isNewQuest }] : []),
50
53
  { name: 'Daily', filter: isDailyQuest },
51
54
  { name: 'Weekly', filter: isWeeklyQuest },
52
55
  { name: 'Monthly', filter: isMonthlyQuest },