@stackedapp/utils 2.48.3 → 2.49.1
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,4 +1,4 @@
|
|
|
1
|
-
import { ILevelCondition, ICurrencyCondition, IStakedTokensCondition, ITrustScoreCondition, IDaysInGameCondition, ILoginStreakCondition, IAchievementCondition, IMembershipCondition, IQuestCondition, IEntityLinkCondition, IDynamicConditionItem, IIdentifiersCondition, ITokenBalanceCondition, IStackedAccountCondition, IUserSettingsCondition, IBuyItemCondition, ISpendCurrencyCondition, IDepositCurrencyCondition, ISocialCondition, ILoginCondition, ICompletionContextCondition, ILinkedCompletionsCondition, IDynamicTrackerCondition, IContractInteractionCondition, ITwitterVerificationCondition, IMocaCredentialCondition, ICompletionTrackers, ConditionDetail, StackedSnapshot, StackedBaseUserExtra } from '@stackedapp/types';
|
|
1
|
+
import { ILevelCondition, ICurrencyCondition, IStakedTokensCondition, ITrustScoreCondition, IDaysInGameCondition, ILoginStreakCondition, ICurrentLoginStreakCondition, IAchievementCondition, IMembershipCondition, IQuestCondition, IEntityLinkCondition, IDynamicConditionItem, IIdentifiersCondition, ITokenBalanceCondition, IStackedAccountCondition, IUserSettingsCondition, IBuyItemCondition, ISpendCurrencyCondition, IDepositCurrencyCondition, ISocialCondition, ILoginCondition, ICompletionContextCondition, ILinkedCompletionsCondition, IDynamicTrackerCondition, IContractInteractionCondition, ITwitterVerificationCondition, IMocaCredentialCondition, ICompletionTrackers, ConditionDetail, StackedSnapshot, StackedBaseUserExtra } from '@stackedapp/types';
|
|
2
2
|
export interface EvalContext {
|
|
3
3
|
snap: StackedSnapshot;
|
|
4
4
|
additionalData?: StackedBaseUserExtra;
|
|
@@ -20,6 +20,7 @@ export declare function evaluateLevel(cond: ILevelCondition, ctx: EvalContext):
|
|
|
20
20
|
export declare function evaluateCurrency(cond: ICurrencyCondition, ctx: EvalContext): EvalResult;
|
|
21
21
|
export declare function evaluateStakedTokens(cond: IStakedTokensCondition, ctx: EvalContext): EvalResult;
|
|
22
22
|
export declare function evaluateLoginStreak(cond: ILoginStreakCondition, ctx: EvalContext): EvalResult;
|
|
23
|
+
export declare function evaluateCurrentLoginStreak(cond: ICurrentLoginStreakCondition, ctx: EvalContext): EvalResult;
|
|
23
24
|
export declare function evaluateAchievement(cond: IAchievementCondition, ctx: EvalContext): EvalResult;
|
|
24
25
|
export declare function evaluateMembership(cond: IMembershipCondition, ctx: EvalContext): EvalResult;
|
|
25
26
|
export declare function evaluateQuest(cond: IQuestCondition, ctx: EvalContext): EvalResult;
|
|
@@ -6,6 +6,7 @@ exports.evaluateLevel = evaluateLevel;
|
|
|
6
6
|
exports.evaluateCurrency = evaluateCurrency;
|
|
7
7
|
exports.evaluateStakedTokens = evaluateStakedTokens;
|
|
8
8
|
exports.evaluateLoginStreak = evaluateLoginStreak;
|
|
9
|
+
exports.evaluateCurrentLoginStreak = evaluateCurrentLoginStreak;
|
|
9
10
|
exports.evaluateAchievement = evaluateAchievement;
|
|
10
11
|
exports.evaluateMembership = evaluateMembership;
|
|
11
12
|
exports.evaluateQuest = evaluateQuest;
|
|
@@ -250,6 +251,40 @@ function evaluateLoginStreak(cond, ctx) {
|
|
|
250
251
|
],
|
|
251
252
|
};
|
|
252
253
|
}
|
|
254
|
+
function evaluateCurrentLoginStreak(cond, ctx) {
|
|
255
|
+
const details = [];
|
|
256
|
+
let isMet = true;
|
|
257
|
+
if (cond.min) {
|
|
258
|
+
const trackerAmount = ctx.snap.loginStreak || 0;
|
|
259
|
+
const trackerGoal = cond.min;
|
|
260
|
+
const met = trackerAmount >= trackerGoal;
|
|
261
|
+
if (!met)
|
|
262
|
+
isMet = false;
|
|
263
|
+
details.push({
|
|
264
|
+
isMet: met,
|
|
265
|
+
kind: 'currentLoginStreak',
|
|
266
|
+
trackerAmount,
|
|
267
|
+
trackerGoal,
|
|
268
|
+
percentCompleted: (0, helpers_1.calculatePercent)(trackerAmount, trackerGoal, met),
|
|
269
|
+
text: templateText(cond, { current: trackerAmount, goal: trackerGoal }, `Login streak of at least ${trackerGoal} days`),
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
if (cond.max) {
|
|
273
|
+
const trackerAmount = ctx.snap.loginStreak || 0;
|
|
274
|
+
const met = trackerAmount <= cond.max;
|
|
275
|
+
if (!met)
|
|
276
|
+
isMet = false;
|
|
277
|
+
details.push({
|
|
278
|
+
isMet: met,
|
|
279
|
+
kind: 'currentLoginStreak',
|
|
280
|
+
trackerAmount,
|
|
281
|
+
trackerGoal: cond.max,
|
|
282
|
+
percentCompleted: met ? 100 : 0,
|
|
283
|
+
text: templateText(cond, { current: trackerAmount, goal: cond.max }, `Login streak of at most ${cond.max} days`),
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
return { isMet, details };
|
|
287
|
+
}
|
|
253
288
|
function evaluateAchievement(cond, ctx) {
|
|
254
289
|
const playerAchData = ctx.snap.achievements?.[cond.id];
|
|
255
290
|
const details = [];
|
package/dist/conditions/index.js
CHANGED
|
@@ -16,6 +16,7 @@ function evaluateBaseCondition(cond, ctx) {
|
|
|
16
16
|
case 'currency': return (0, handlers_1.evaluateCurrency)(cond, ctx);
|
|
17
17
|
case 'stakedTokens': return (0, handlers_1.evaluateStakedTokens)(cond, ctx);
|
|
18
18
|
case 'loginStreak': return (0, handlers_1.evaluateLoginStreak)(cond, ctx);
|
|
19
|
+
case 'currentLoginStreak': return (0, handlers_1.evaluateCurrentLoginStreak)(cond, ctx);
|
|
19
20
|
case 'achievement': return (0, handlers_1.evaluateAchievement)(cond, ctx);
|
|
20
21
|
case 'membership': return (0, handlers_1.evaluateMembership)(cond, ctx);
|
|
21
22
|
case 'quest': return (0, handlers_1.evaluateQuest)(cond, ctx);
|
|
@@ -51,6 +52,7 @@ function evaluateCompletionOnlyCondition(cond, ctx) {
|
|
|
51
52
|
case 'trustScore':
|
|
52
53
|
case 'daysInGame':
|
|
53
54
|
case 'loginStreak':
|
|
55
|
+
case 'currentLoginStreak':
|
|
54
56
|
case 'achievement':
|
|
55
57
|
case 'membership':
|
|
56
58
|
case 'quest':
|