@shaxpir/duiduidui-models 1.7.5 → 1.7.6
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.
- package/dist/models/Streaks.js +7 -20
- package/package.json +7 -4
package/dist/models/Streaks.js
CHANGED
|
@@ -94,10 +94,10 @@ class Streaks {
|
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
// Calculate monthly streak
|
|
97
|
-
// Extract
|
|
97
|
+
// Extract YYYYMM from CompactDate
|
|
98
98
|
const monthlyActivity = new Set();
|
|
99
99
|
for (const date of activityDates) {
|
|
100
|
-
const month =
|
|
100
|
+
const month = shaxpir_common_1.Time.getYearMonth(date);
|
|
101
101
|
monthlyActivity.add(month);
|
|
102
102
|
}
|
|
103
103
|
const sortedMonths = Array.from(monthlyActivity).sort();
|
|
@@ -110,10 +110,7 @@ class Streaks {
|
|
|
110
110
|
}
|
|
111
111
|
else {
|
|
112
112
|
// Check if consecutive month
|
|
113
|
-
|
|
114
|
-
const [currentYear, currentMonthNum] = month.split('-').map(Number);
|
|
115
|
-
if ((currentYear === lastYear && currentMonthNum === lastMonthNum + 1) ||
|
|
116
|
-
(currentYear === lastYear + 1 && lastMonthNum === 12 && currentMonthNum === 1)) {
|
|
113
|
+
if (shaxpir_common_1.Time.areConsecutiveMonths(lastMonth, month)) {
|
|
117
114
|
monthlyStreak++;
|
|
118
115
|
}
|
|
119
116
|
else {
|
|
@@ -123,23 +120,13 @@ class Streaks {
|
|
|
123
120
|
lastMonth = month;
|
|
124
121
|
}
|
|
125
122
|
// Check if current month streak is active
|
|
126
|
-
const currentMonth =
|
|
123
|
+
const currentMonth = shaxpir_common_1.Time.getYearMonth(today);
|
|
127
124
|
const lastActiveMonth = sortedMonths[sortedMonths.length - 1];
|
|
128
125
|
const lastMonthDate = shaxpir_common_1.Time.plus(today, -30, 'days');
|
|
129
|
-
const previousMonth = shaxpir_common_1.Time.dateFrom(lastMonthDate)
|
|
126
|
+
const previousMonth = shaxpir_common_1.Time.getYearMonth(shaxpir_common_1.Time.dateFrom(lastMonthDate));
|
|
130
127
|
if (lastActiveMonth === currentMonth || lastActiveMonth === previousMonth) {
|
|
131
128
|
monthlyCurrent = monthlyStreak;
|
|
132
129
|
}
|
|
133
|
-
// Get week string for last activity (ISO week format)
|
|
134
|
-
const getWeekString = (date) => {
|
|
135
|
-
// Simple week calculation: YYYY-Www where ww is week of year
|
|
136
|
-
const [year, month, day] = date.split('-').map(Number);
|
|
137
|
-
const dateObj = new Date(year, month - 1, day);
|
|
138
|
-
const startOfYear = new Date(year, 0, 1);
|
|
139
|
-
const dayOfYear = Math.floor((dateObj.getTime() - startOfYear.getTime()) / (24 * 60 * 60 * 1000)) + 1;
|
|
140
|
-
const weekNumber = Math.ceil(dayOfYear / 7);
|
|
141
|
-
return `${year}-W${weekNumber.toString().padStart(2, '0')}`;
|
|
142
|
-
};
|
|
143
130
|
// We know lastDate has a value since activityDates.length > 0
|
|
144
131
|
const finalLastDate = lastDate || activityDates[activityDates.length - 1];
|
|
145
132
|
return {
|
|
@@ -155,8 +142,8 @@ class Streaks {
|
|
|
155
142
|
},
|
|
156
143
|
last_activity: {
|
|
157
144
|
date: finalLastDate,
|
|
158
|
-
week: getWeekString(finalLastDate),
|
|
159
|
-
month:
|
|
145
|
+
week: shaxpir_common_1.Time.getWeekString(finalLastDate),
|
|
146
|
+
month: shaxpir_common_1.Time.getYearMonth(finalLastDate)
|
|
160
147
|
},
|
|
161
148
|
total_days: activityDates.length
|
|
162
149
|
};
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shaxpir/duiduidui-models",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.6",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/shaxpir/duiduidui-models"
|
|
7
7
|
},
|
|
8
8
|
"scripts": {
|
|
9
9
|
"build": "tsc",
|
|
10
|
-
"test": "mocha tests",
|
|
11
|
-
"test:watch": "mocha -w tests"
|
|
10
|
+
"test": "npm run build && mocha -r ts-node/register tests/**/*.ts",
|
|
11
|
+
"test:watch": "npm run build && mocha -r ts-node/register -w tests/**/*.ts"
|
|
12
12
|
},
|
|
13
13
|
"main": "dist/index.js",
|
|
14
14
|
"types": "dist/index.d.ts",
|
|
@@ -18,16 +18,19 @@
|
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"@shaxpir/duiduidui-models": "^1.4.14",
|
|
20
20
|
"@shaxpir/sharedb": "^6.0.6",
|
|
21
|
-
"@shaxpir/shaxpir-common": "1.4.
|
|
21
|
+
"@shaxpir/shaxpir-common": "^1.4.1",
|
|
22
22
|
"ot-json1": "1.0.1",
|
|
23
23
|
"ot-text-unicode": "4.0.0",
|
|
24
24
|
"reconnecting-websocket": "4.4.0"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
+
"@types/chai": "^5.2.3",
|
|
27
28
|
"@types/lodash": "^4.17.20",
|
|
29
|
+
"@types/mocha": "^10.0.10",
|
|
28
30
|
"@types/node": "^18.0.50",
|
|
29
31
|
"chai": "^4.3.7",
|
|
30
32
|
"mocha": "^10.2.0",
|
|
33
|
+
"ts-node": "^10.9.2",
|
|
31
34
|
"tslint": "^5.12.1",
|
|
32
35
|
"typescript": "latest"
|
|
33
36
|
}
|