@sparted/shared-library 1.7.38 → 1.7.39
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.
|
@@ -71,6 +71,7 @@ export type CampaignCardScheduling = {
|
|
|
71
71
|
export type LiveCampaignCardDetails = BaseCampaignCardDetails & CampaignCardScheduling;
|
|
72
72
|
export type CampaignCardAchievement = {
|
|
73
73
|
lastSessionPlayed: number;
|
|
74
|
+
lastPlayedAt: string;
|
|
74
75
|
stars: Stars;
|
|
75
76
|
points: Points;
|
|
76
77
|
};
|
|
@@ -87,3 +88,4 @@ export declare const isCampaignSchedulingRandom: (scheduling: CampaignScheduling
|
|
|
87
88
|
export declare const isCampaignSchedulingManual: (scheduling: CampaignScheduling) => scheduling is ManualCampaignScheduling;
|
|
88
89
|
export declare const isWikiCard: (item: unknown) => item is WikiCard;
|
|
89
90
|
export declare const computeCurrentSession: (card: LiveCampaignCard) => number;
|
|
91
|
+
export declare const checkTodayPlayable: (card: LiveCampaignCard) => boolean;
|
|
@@ -26,8 +26,27 @@ const computeCurrentSession = (card) => {
|
|
|
26
26
|
return calculateCurrentSessionAux(date, nextSession);
|
|
27
27
|
};
|
|
28
28
|
return calculateCurrentSessionAux(startDate, 1);
|
|
29
|
+
};
|
|
30
|
+
const checkTodayPlayable = (card) => {
|
|
31
|
+
const today = new Date();
|
|
32
|
+
const { details } = card;
|
|
33
|
+
const startDate = new Date(details.utcStartDate);
|
|
34
|
+
const endDate = new Date(details.utcEndDate);
|
|
35
|
+
if (today < startDate || today > endDate) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
const jsDay = today.getDay();
|
|
39
|
+
const day = jsDay === 0 ? 7 : jsDay;
|
|
40
|
+
if (!details.enabledWeekDays.includes(day)) {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
if (details.disabledDates.includes(today.toISOString().slice(0, 10))) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
return true;
|
|
29
47
|
};
|
|
30
48
|
|
|
49
|
+
exports.checkTodayPlayable = checkTodayPlayable;
|
|
31
50
|
exports.computeCurrentSession = computeCurrentSession;
|
|
32
51
|
exports.isCampaignSchedulingManual = isCampaignSchedulingManual;
|
|
33
52
|
exports.isCampaignSchedulingRandom = isCampaignSchedulingRandom;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"campaign.js","sources":["../../../src/business/types/campaign.ts"],"sourcesContent":["import type { Content, GameType } from './content';\nimport type { Image } from './media';\nimport type { MultilingualLabel } from './multilingual';\nimport type { Points, Stars } from './score';\n\nexport type CampaignInformations = {\n coverImage: Image;\n name: MultilingualLabel;\n description: MultilingualLabel;\n disclaimer?: MultilingualLabel;\n lastSave: Date;\n};\n\nexport type BaseCampaignScheduling = {\n type: 'flexible' | 'intense';\n launchDate: string;\n endDate?: string;\n extraDays: number;\n enabledWeekDays: number[];\n disabledDates: string[];\n};\n\nexport type ManualCampaignScheduling = BaseCampaignScheduling & {\n mode: 'manual';\n orderedSessions: Content[][];\n};\n\nexport type RandomCampaignScheduling = BaseCampaignScheduling & {\n mode: 'random';\n nbSessions: number;\n contents: Content[];\n};\n\nexport type CampaignScheduling = ManualCampaignScheduling | RandomCampaignScheduling;\n\nexport type Campaign = {\n id: number;\n informations: CampaignInformations;\n scheduling: CampaignScheduling;\n type: 'campaign';\n};\n\nexport type BaseCampaignCardDetails = {\n id: number;\n coverImage: string;\n title: MultilingualLabel;\n description: MultilingualLabel;\n utcStartDate: string;\n utcEndDate: string;\n contentCount: number;\n};\n\nexport type WikiCardDetails = BaseCampaignCardDetails;\n\nexport type WikiCardPlayerInteraction = {\n contentPlayedCount: number;\n favorite: boolean;\n};\n\nexport type WikiCard = {\n details: WikiCardDetails;\n playerInteraction: WikiCardPlayerInteraction;\n};\n\nexport type WikiContentCardDetails = {\n id: number;\n coverImage: string;\n title: MultilingualLabel;\n session: number;\n};\n\nexport type WikiContentCard = {\n contentDetails: WikiContentCardDetails;\n points: Points;\n};\n\nexport type CampaignCardScheduling = {\n type: 'flexible' | 'intense';\n extraDays: number;\n enabledWeekDays: number[];\n disabledDates: string[];\n sessionCount: number;\n};\n\nexport type LiveCampaignCardDetails = BaseCampaignCardDetails & CampaignCardScheduling;\n\nexport type CampaignCardAchievement = {\n lastSessionPlayed: number;\n stars: Stars;\n points: Points;\n};\n\nexport type SessionInsight = {\n sessionNumber: number;\n gameTypes: GameType[];\n};\n\nexport type LiveCampaignCard = {\n details: LiveCampaignCardDetails;\n achievement: CampaignCardAchievement;\n sessionInsights: SessionInsight[];\n};\n\nexport const isCampaignSchedulingRandom = (scheduling: CampaignScheduling): scheduling is RandomCampaignScheduling =>\n scheduling.mode === 'random';\n\nexport const isCampaignSchedulingManual = (scheduling: CampaignScheduling): scheduling is ManualCampaignScheduling =>\n scheduling.mode === 'manual';\n\nexport const isWikiCard = (item: unknown): item is WikiCard =>\n typeof item === 'object' && item !== null && 'activityDetails' in item && 'playerInteraction' in item;\n\nexport const computeCurrentSession = (card: LiveCampaignCard): number => {\n const { details, achievement } = card;\n\n if (details.type === 'flexible') {\n return Math.min(achievement.lastSessionPlayed + 1, details.sessionCount);\n }\n\n const today = new Date();\n const startDate = new Date(details.utcStartDate);\n const endData = new Date(details.utcEndDate);\n\n const calculateCurrentSessionAux = (date: Date, currentSession: number): number => {\n if (date >= today || (endData && date >= endData) || currentSession >= details.sessionCount) {\n return currentSession;\n }\n\n const jsDay = date.getDay();\n const day = jsDay === 0 ? 7 : jsDay;\n\n const isEnabledDay = details.enabledWeekDays.includes(day);\n const isNotDisabledDate = !details.disabledDates.includes(date.toISOString().slice(0, 10));\n\n const nextSession = isEnabledDay && isNotDisabledDate ? currentSession + 1 : currentSession;\n\n date.setDate(date.getDate() + 1);\n\n return calculateCurrentSessionAux(date, nextSession);\n };\n\n return calculateCurrentSessionAux(startDate, 1);\n};\n"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"campaign.js","sources":["../../../src/business/types/campaign.ts"],"sourcesContent":["import type { Content, GameType } from './content';\nimport type { Image } from './media';\nimport type { MultilingualLabel } from './multilingual';\nimport type { Points, Stars } from './score';\n\nexport type CampaignInformations = {\n coverImage: Image;\n name: MultilingualLabel;\n description: MultilingualLabel;\n disclaimer?: MultilingualLabel;\n lastSave: Date;\n};\n\nexport type BaseCampaignScheduling = {\n type: 'flexible' | 'intense';\n launchDate: string;\n endDate?: string;\n extraDays: number;\n enabledWeekDays: number[];\n disabledDates: string[];\n};\n\nexport type ManualCampaignScheduling = BaseCampaignScheduling & {\n mode: 'manual';\n orderedSessions: Content[][];\n};\n\nexport type RandomCampaignScheduling = BaseCampaignScheduling & {\n mode: 'random';\n nbSessions: number;\n contents: Content[];\n};\n\nexport type CampaignScheduling = ManualCampaignScheduling | RandomCampaignScheduling;\n\nexport type Campaign = {\n id: number;\n informations: CampaignInformations;\n scheduling: CampaignScheduling;\n type: 'campaign';\n};\n\nexport type BaseCampaignCardDetails = {\n id: number;\n coverImage: string;\n title: MultilingualLabel;\n description: MultilingualLabel;\n utcStartDate: string;\n utcEndDate: string;\n contentCount: number;\n};\n\nexport type WikiCardDetails = BaseCampaignCardDetails;\n\nexport type WikiCardPlayerInteraction = {\n contentPlayedCount: number;\n favorite: boolean;\n};\n\nexport type WikiCard = {\n details: WikiCardDetails;\n playerInteraction: WikiCardPlayerInteraction;\n};\n\nexport type WikiContentCardDetails = {\n id: number;\n coverImage: string;\n title: MultilingualLabel;\n session: number;\n};\n\nexport type WikiContentCard = {\n contentDetails: WikiContentCardDetails;\n points: Points;\n};\n\nexport type CampaignCardScheduling = {\n type: 'flexible' | 'intense';\n extraDays: number;\n enabledWeekDays: number[];\n disabledDates: string[];\n sessionCount: number;\n};\n\nexport type LiveCampaignCardDetails = BaseCampaignCardDetails & CampaignCardScheduling;\n\nexport type CampaignCardAchievement = {\n lastSessionPlayed: number;\n lastPlayedAt: string;\n stars: Stars;\n points: Points;\n};\n\nexport type SessionInsight = {\n sessionNumber: number;\n gameTypes: GameType[];\n};\n\nexport type LiveCampaignCard = {\n details: LiveCampaignCardDetails;\n achievement: CampaignCardAchievement;\n sessionInsights: SessionInsight[];\n};\n\nexport const isCampaignSchedulingRandom = (scheduling: CampaignScheduling): scheduling is RandomCampaignScheduling =>\n scheduling.mode === 'random';\n\nexport const isCampaignSchedulingManual = (scheduling: CampaignScheduling): scheduling is ManualCampaignScheduling =>\n scheduling.mode === 'manual';\n\nexport const isWikiCard = (item: unknown): item is WikiCard =>\n typeof item === 'object' && item !== null && 'activityDetails' in item && 'playerInteraction' in item;\n\nexport const computeCurrentSession = (card: LiveCampaignCard): number => {\n const { details, achievement } = card;\n\n if (details.type === 'flexible') {\n return Math.min(achievement.lastSessionPlayed + 1, details.sessionCount);\n }\n\n const today = new Date();\n const startDate = new Date(details.utcStartDate);\n const endData = new Date(details.utcEndDate);\n\n const calculateCurrentSessionAux = (date: Date, currentSession: number): number => {\n if (date >= today || (endData && date >= endData) || currentSession >= details.sessionCount) {\n return currentSession;\n }\n\n const jsDay = date.getDay();\n const day = jsDay === 0 ? 7 : jsDay;\n\n const isEnabledDay = details.enabledWeekDays.includes(day);\n const isNotDisabledDate = !details.disabledDates.includes(date.toISOString().slice(0, 10));\n\n const nextSession = isEnabledDay && isNotDisabledDate ? currentSession + 1 : currentSession;\n\n date.setDate(date.getDate() + 1);\n\n return calculateCurrentSessionAux(date, nextSession);\n };\n\n return calculateCurrentSessionAux(startDate, 1);\n};\n\nexport const checkTodayPlayable = (card: LiveCampaignCard): boolean => {\n const today = new Date();\n\n const { details } = card;\n\n const startDate = new Date(details.utcStartDate);\n const endDate = new Date(details.utcEndDate);\n\n if (today < startDate || today > endDate) {\n return false;\n }\n\n const jsDay = today.getDay();\n const day = jsDay === 0 ? 7 : jsDay;\n\n if (!details.enabledWeekDays.includes(day)) {\n return false;\n }\n\n if (details.disabledDates.includes(today.toISOString().slice(0, 10))) {\n return false;\n }\n\n return true;\n};\n"],"names":[],"mappings":"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"}
|
package/business/types/index.js
CHANGED
|
@@ -13,6 +13,7 @@ var score = require('./score.js');
|
|
|
13
13
|
exports.ACTIVITY_STATUS = activity.ACTIVITY_STATUS;
|
|
14
14
|
exports.isActivityBreakingNews = activity.isActivityBreakingNews;
|
|
15
15
|
exports.isActivityCampaign = activity.isActivityCampaign;
|
|
16
|
+
exports.checkTodayPlayable = campaign.checkTodayPlayable;
|
|
16
17
|
exports.computeCurrentSession = campaign.computeCurrentSession;
|
|
17
18
|
exports.isCampaignSchedulingManual = campaign.isCampaignSchedulingManual;
|
|
18
19
|
exports.isCampaignSchedulingRandom = campaign.isCampaignSchedulingRandom;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|