lscontests 1.8.11 → 1.9.0
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/README.md +122 -106
- package/dist/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.js +59 -34
- package/dist/index.js.map +1 -1
- package/dist/lib/oj/atcoder.js +2 -2
- package/dist/lib/oj/atcoder.js.map +1 -1
- package/dist/lib/oj/codeforces.js +1 -1
- package/dist/lib/oj/codeforces.js.map +1 -1
- package/dist/lib/oj/luogu.js +1 -1
- package/dist/lib/oj/luogu.js.map +1 -1
- package/dist/lib/oj/nowcoder.js +2 -2
- package/dist/lib/oj/nowcoder.js.map +1 -1
- package/dist/locale/en.json +4 -1
- package/dist/locale/index.d.ts +4 -1
- package/dist/locale/index.js.map +1 -1
- package/dist/locale/zh-CN.json +4 -1
- package/dist/locale/zh-TW.json +4 -1
- package/package.json +4 -2
package/README.md
CHANGED
@@ -20,7 +20,7 @@ For yarn: `yarn global add lscontests`
|
|
20
20
|
|
21
21
|
### Add to your package
|
22
22
|
|
23
|
-
For npm: `npm install lscontests`
|
23
|
+
For npm: `npm install lscontests --save`
|
24
24
|
|
25
25
|
For yarn: `yarn add lscontests`
|
26
26
|
|
@@ -50,35 +50,28 @@ Options:
|
|
50
50
|
It performs as follows:
|
51
51
|
|
52
52
|
<!-- block_cli begin -->
|
53
|
-
(*The following content was automatically generated in
|
53
|
+
(*The following content was automatically generated in Fri, 13 May 2022 15:28:45 GMT*)
|
54
54
|
|
55
55
|
<details>
|
56
56
|
<summary> <code>> lsct </code> </summary>
|
57
57
|
|
58
58
|
```text
|
59
|
-
|
59
|
+
在 AtCoder,Codeforces,Luogu,NowCoder 上有 3 场正在进行的比赛
|
60
60
|
|
61
61
|
比赛平台: NowCoder
|
62
|
-
|
62
|
+
比赛名称:牛客竞赛博弈专题班 Sprague-Grundy 函数(SG 函数、图游戏、Nim 和)
|
63
63
|
赛制: ICPC
|
64
64
|
开始时间: 5/13/2022, 04:00:00
|
65
65
|
结束时间: 5/21/2022, 13:00:00
|
66
66
|
https://ac.nowcoder.com/acm/contest/34655
|
67
67
|
|
68
68
|
比赛平台: NowCoder
|
69
|
-
比赛名称: 2022图论班第一章图匹配例题与习题
|
69
|
+
比赛名称: 2022 图论班第一章图匹配例题与习题
|
70
70
|
赛制: ICPC
|
71
71
|
开始时间: 5/13/2022, 06:00:00
|
72
72
|
结束时间: 5/30/2022, 08:00:00
|
73
73
|
https://ac.nowcoder.com/acm/contest/34649
|
74
74
|
|
75
|
-
比赛平台: NowCoder
|
76
|
-
比赛名称: 牛客挑战赛60
|
77
|
-
赛制: ICPC
|
78
|
-
开始时间: 5/13/2022, 11:00:00
|
79
|
-
结束时间: 5/13/2022, 14:00:00
|
80
|
-
https://ac.nowcoder.com/acm/contest/11200
|
81
|
-
|
82
75
|
比赛平台: Codeforces
|
83
76
|
比赛名称: Educational Codeforces Round 128 (Rated for Div. 2)
|
84
77
|
赛制: ICPC
|
@@ -86,22 +79,24 @@ https://ac.nowcoder.com/acm/contest/11200
|
|
86
79
|
结束时间: 5/13/2022, 16:35:00
|
87
80
|
https://codeforces.com/contests/1680
|
88
81
|
|
82
|
+
接下来的 3 天内在 AtCoder,Codeforces,Luogu,NowCoder 上有 8 场比赛
|
83
|
+
|
89
84
|
比赛平台: NowCoder
|
90
|
-
|
91
|
-
赛制:
|
85
|
+
比赛名称:第二届天元编程邀请赛(提高组)
|
86
|
+
赛制: IOI
|
92
87
|
开始时间: 5/14/2022, 04:30:00
|
93
88
|
结束时间: 5/14/2022, 09:00:00
|
94
89
|
https://ac.nowcoder.com/acm/contest/33335
|
95
90
|
|
96
91
|
比赛平台: NowCoder
|
97
|
-
|
98
|
-
赛制:
|
92
|
+
比赛名称:第二届天元编程邀请赛(普及组)
|
93
|
+
赛制: IOI
|
99
94
|
开始时间: 5/14/2022, 04:30:00
|
100
95
|
结束时间: 5/14/2022, 08:00:00
|
101
96
|
https://ac.nowcoder.com/acm/contest/33341
|
102
97
|
|
103
98
|
比赛平台: NowCoder
|
104
|
-
|
99
|
+
比赛名称:第十八届西南科技大学 ACM 程序设计竞赛(同步赛)
|
105
100
|
赛制: ICPC
|
106
101
|
开始时间: 5/14/2022, 05:00:00
|
107
102
|
结束时间: 5/14/2022, 10:00:00
|
@@ -122,10 +117,10 @@ https://www.luogu.com.cn/contest/68326
|
|
122
117
|
https://codeforces.com/contests/1679
|
123
118
|
|
124
119
|
比赛平台: AtCoder
|
125
|
-
比赛名称: Ⓐ Panasonic Programming Contest 2022(AtCoder Beginner Contest 251)
|
120
|
+
比赛名称: Ⓐ Panasonic Programming Contest 2022 (AtCoder Beginner Contest 251)
|
126
121
|
赛制: AtCoder
|
127
122
|
开始时间: 5/14/2022, 12:00:00
|
128
|
-
结束时间: 5/14/2022,
|
123
|
+
结束时间: 5/14/2022, 13:40:00
|
129
124
|
https://atcoder.jp/contests/abc251
|
130
125
|
|
131
126
|
比赛平台: Luogu
|
@@ -139,7 +134,7 @@ https://www.luogu.com.cn/contest/67377
|
|
139
134
|
比赛名称: Ⓐ AtCoder Regular Contest 140
|
140
135
|
赛制: AtCoder
|
141
136
|
开始时间: 5/15/2022, 12:00:00
|
142
|
-
结束时间: 5/15/2022,
|
137
|
+
结束时间: 5/15/2022, 14:00:00
|
143
138
|
https://atcoder.jp/contests/arc140
|
144
139
|
```
|
145
140
|
|
@@ -149,7 +144,7 @@ https://atcoder.jp/contests/arc140
|
|
149
144
|
<summary> <code>> lsct -o at cf -d 7</code> </summary>
|
150
145
|
|
151
146
|
```text
|
152
|
-
|
147
|
+
在 AtCoder,Codeforces 上有 1 场正在进行的比赛
|
153
148
|
|
154
149
|
比赛平台: Codeforces
|
155
150
|
比赛名称: Educational Codeforces Round 128 (Rated for Div. 2)
|
@@ -158,6 +153,8 @@ https://atcoder.jp/contests/arc140
|
|
158
153
|
结束时间: 5/13/2022, 16:35:00
|
159
154
|
https://codeforces.com/contests/1680
|
160
155
|
|
156
|
+
接下来的 7 天内在 AtCoder,Codeforces 上有 3 场比赛
|
157
|
+
|
161
158
|
比赛平台: Codeforces
|
162
159
|
比赛名称: Codeforces Round #791 (Div. 2)
|
163
160
|
赛制: Codeforces
|
@@ -166,17 +163,17 @@ https://codeforces.com/contests/1680
|
|
166
163
|
https://codeforces.com/contests/1679
|
167
164
|
|
168
165
|
比赛平台: AtCoder
|
169
|
-
比赛名称: Ⓐ Panasonic Programming Contest 2022(AtCoder Beginner Contest 251)
|
166
|
+
比赛名称: Ⓐ Panasonic Programming Contest 2022 (AtCoder Beginner Contest 251)
|
170
167
|
赛制: AtCoder
|
171
168
|
开始时间: 5/14/2022, 12:00:00
|
172
|
-
结束时间: 5/14/2022,
|
169
|
+
结束时间: 5/14/2022, 13:40:00
|
173
170
|
https://atcoder.jp/contests/abc251
|
174
171
|
|
175
172
|
比赛平台: AtCoder
|
176
173
|
比赛名称: Ⓐ AtCoder Regular Contest 140
|
177
174
|
赛制: AtCoder
|
178
175
|
开始时间: 5/15/2022, 12:00:00
|
179
|
-
结束时间: 5/15/2022,
|
176
|
+
结束时间: 5/15/2022, 14:00:00
|
180
177
|
https://atcoder.jp/contests/arc140
|
181
178
|
```
|
182
179
|
|
@@ -186,45 +183,40 @@ https://atcoder.jp/contests/arc140
|
|
186
183
|
<summary> <code>> lsct -o lg nc -d 7 -L en</code> </summary>
|
187
184
|
|
188
185
|
```text
|
189
|
-
|
186
|
+
There are 2 contests is running on Luogu,NowCoder
|
190
187
|
|
191
188
|
OJ: NowCoder
|
192
|
-
Contest name: 牛客竞赛博弈专题班Sprague-Grundy函数(SG函数、图游戏、Nim和)
|
189
|
+
Contest name: 牛客竞赛博弈专题班 Sprague-Grundy 函数(SG 函数、图游戏、Nim 和)
|
193
190
|
Rule: ICPC
|
194
191
|
Start time: 5/13/2022, 04:00:00
|
195
192
|
End time: 5/21/2022, 13:00:00
|
196
193
|
https://ac.nowcoder.com/acm/contest/34655
|
197
194
|
|
198
195
|
OJ: NowCoder
|
199
|
-
Contest name: 2022图论班第一章图匹配例题与习题
|
196
|
+
Contest name: 2022 图论班第一章图匹配例题与习题
|
200
197
|
Rule: ICPC
|
201
198
|
Start time: 5/13/2022, 06:00:00
|
202
199
|
End time: 5/30/2022, 08:00:00
|
203
200
|
https://ac.nowcoder.com/acm/contest/34649
|
204
201
|
|
205
|
-
|
206
|
-
Contest name: 牛客挑战赛60
|
207
|
-
Rule: ICPC
|
208
|
-
Start time: 5/13/2022, 11:00:00
|
209
|
-
End time: 5/13/2022, 14:00:00
|
210
|
-
https://ac.nowcoder.com/acm/contest/11200
|
202
|
+
There are 5 contests on Luogu,NowCoder in the next 7 days
|
211
203
|
|
212
204
|
OJ: NowCoder
|
213
205
|
Contest name: 第二届天元编程邀请赛(提高组)
|
214
|
-
Rule:
|
206
|
+
Rule: IOI
|
215
207
|
Start time: 5/14/2022, 04:30:00
|
216
208
|
End time: 5/14/2022, 09:00:00
|
217
209
|
https://ac.nowcoder.com/acm/contest/33335
|
218
210
|
|
219
211
|
OJ: NowCoder
|
220
212
|
Contest name: 第二届天元编程邀请赛(普及组)
|
221
|
-
Rule:
|
213
|
+
Rule: IOI
|
222
214
|
Start time: 5/14/2022, 04:30:00
|
223
215
|
End time: 5/14/2022, 08:00:00
|
224
216
|
https://ac.nowcoder.com/acm/contest/33341
|
225
217
|
|
226
218
|
OJ: NowCoder
|
227
|
-
Contest name: 第十八届西南科技大学ACM程序设计竞赛(同步赛)
|
219
|
+
Contest name: 第十八届西南科技大学 ACM 程序设计竞赛(同步赛)
|
228
220
|
Rule: ICPC
|
229
221
|
Start time: 5/14/2022, 05:00:00
|
230
222
|
End time: 5/14/2022, 10:00:00
|
@@ -251,40 +243,44 @@ https://www.luogu.com.cn/contest/67377
|
|
251
243
|
<summary> <code>> lsct -o at cf -d 7 -r --no-sort</code> </summary>
|
252
244
|
|
253
245
|
```json
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
246
|
+
{
|
247
|
+
"running": [
|
248
|
+
{
|
249
|
+
"ojName": "Codeforces",
|
250
|
+
"name": "Educational Codeforces Round 128 (Rated for Div. 2)",
|
251
|
+
"rule": "ICPC",
|
252
|
+
"startTime": "2022-05-13T14:35:00.000Z",
|
253
|
+
"endTime": "2022-05-13T16:35:00.000Z",
|
254
|
+
"url": "https://codeforces.com/contests/1680"
|
255
|
+
}
|
256
|
+
],
|
257
|
+
"upcoming": [
|
258
|
+
{
|
259
|
+
"ojName": "AtCoder",
|
260
|
+
"name": "Ⓐ Panasonic Programming Contest 2022(AtCoder Beginner Contest 251)",
|
261
|
+
"rule": "AtCoder",
|
262
|
+
"startTime": "2022-05-14T12:00:00.000Z",
|
263
|
+
"endTime": "2022-05-14T13:40:00.000Z",
|
264
|
+
"url": "https://atcoder.jp/contests/abc251"
|
265
|
+
},
|
266
|
+
{
|
267
|
+
"ojName": "AtCoder",
|
268
|
+
"name": "Ⓐ AtCoder Regular Contest 140",
|
269
|
+
"rule": "AtCoder",
|
270
|
+
"startTime": "2022-05-15T12:00:00.000Z",
|
271
|
+
"endTime": "2022-05-15T14:00:00.000Z",
|
272
|
+
"url": "https://atcoder.jp/contests/arc140"
|
273
|
+
},
|
274
|
+
{
|
275
|
+
"ojName": "Codeforces",
|
276
|
+
"name": "Codeforces Round #791 (Div. 2)",
|
277
|
+
"rule": "Codeforces",
|
278
|
+
"startTime": "2022-05-14T09:35:00.000Z",
|
279
|
+
"endTime": "2022-05-14T11:35:00.000Z",
|
280
|
+
"url": "https://codeforces.com/contests/1679"
|
281
|
+
}
|
282
|
+
]
|
283
|
+
}
|
288
284
|
```
|
289
285
|
|
290
286
|
</details>
|
@@ -299,7 +295,7 @@ If you want to get a list of contest information in your project by calling *lsc
|
|
299
295
|
```typescript
|
300
296
|
import { getContestInfo } from "lscontests";
|
301
297
|
|
302
|
-
|
298
|
+
getContestsInfoText({ abbrList: ["cf", "lg"] }).then(console.log);
|
303
299
|
```
|
304
300
|
|
305
301
|
This code gives the same result as `lsct -o cf lg`.
|
@@ -309,7 +305,7 @@ This code gives the same result as `lsct -o cf lg`.
|
|
309
305
|
```typescript
|
310
306
|
import { getContestList } from "lscontests";
|
311
307
|
|
312
|
-
|
308
|
+
getContests({ sort: false }).then(console.log);
|
313
309
|
```
|
314
310
|
|
315
311
|
This code gives the same result as `lsct -r --no-sort`.
|
@@ -317,23 +313,23 @@ This code gives the same result as `lsct -r --no-sort`.
|
|
317
313
|
#### Add OJ support
|
318
314
|
|
319
315
|
```typescript
|
320
|
-
import { addOJ,
|
316
|
+
import { addOJ, getContestsInfoText, getContests } from "lscontests";
|
321
317
|
|
322
318
|
addOJ("ts", {
|
323
319
|
name: "testOJ", get: async () => [{
|
324
320
|
ojName: "testOJ",
|
325
321
|
name: "testContest",
|
326
322
|
rule: "ICPC",
|
327
|
-
startTime: new Date(Date.now()
|
328
|
-
endTime: new Date(Date.now() +
|
323
|
+
startTime: new Date(Date.now() - 1),
|
324
|
+
endTime: new Date(Date.now() + 3600000),
|
329
325
|
url: "https://www.test.com"
|
330
326
|
}]
|
331
327
|
});
|
332
328
|
|
333
329
|
async function main() {
|
334
|
-
console.log(await
|
330
|
+
console.log(await getContestsInfoText({ abbrList: ["cf", "ts"], days: 1 }, "en"));
|
335
331
|
console.log();
|
336
|
-
console.log(await
|
332
|
+
console.log(await getContests({ abbrList: ["at", "ts"], days: 7 }));
|
337
333
|
}
|
338
334
|
|
339
335
|
main();
|
@@ -342,41 +338,61 @@ main();
|
|
342
338
|
This code gives the following results:
|
343
339
|
|
344
340
|
```text
|
345
|
-
|
341
|
+
There are 2 contests is running on Codeforces,testOJ
|
342
|
+
|
343
|
+
OJ: Codeforces
|
344
|
+
Contest name: Educational Codeforces Round 128 (Rated for Div. 2)
|
345
|
+
Rule: ICPC
|
346
|
+
Start time: 2022/5/13 22:35:00
|
347
|
+
End time: 2022/5/14 00:35:00
|
348
|
+
https://codeforces.com/contests/1680
|
346
349
|
|
347
350
|
OJ: testOJ
|
348
351
|
Contest name: testContest
|
349
352
|
Rule: ICPC
|
350
|
-
Start time: 2022/5/13
|
351
|
-
End time: 2022/5/14
|
353
|
+
Start time: 2022/5/13 23:23:31
|
354
|
+
End time: 2022/5/14 00:23:31
|
352
355
|
https://www.test.com
|
353
356
|
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
357
|
+
There are 1 contests on Codeforces,testOJ in the next 1 days
|
358
|
+
|
359
|
+
OJ: Codeforces
|
360
|
+
Contest name: Codeforces Round #791 (Div. 2)
|
361
|
+
Rule: Codeforces
|
362
|
+
Start time: 2022/5/14 17:35:00
|
363
|
+
End time: 2022/5/14 19:35:00
|
364
|
+
https://codeforces.com/contests/1679
|
365
|
+
|
366
|
+
{
|
367
|
+
running: [
|
368
|
+
{
|
369
|
+
ojName: 'testOJ',
|
370
|
+
name: 'testContest',
|
371
|
+
rule: 'ICPC',
|
372
|
+
startTime: 2022-05-13T15:23:37.245Z,
|
373
|
+
endTime: 2022-05-13T16:23:37.246Z,
|
374
|
+
url: 'https://www.test.com'
|
375
|
+
}
|
376
|
+
],
|
377
|
+
upcoming: [
|
378
|
+
{
|
379
|
+
ojName: 'AtCoder',
|
380
|
+
name: 'Ⓐ Panasonic Programming Contest 2022(AtCoder Beginner Contest 251)',
|
381
|
+
rule: 'AtCoder',
|
382
|
+
startTime: 2022-05-14T12:00:00.000Z,
|
383
|
+
endTime: 2022-05-14T13:40:00.000Z,
|
384
|
+
url: 'https://atcoder.jp/contests/abc251'
|
385
|
+
},
|
386
|
+
{
|
387
|
+
ojName: 'AtCoder',
|
388
|
+
name: 'Ⓐ AtCoder Regular Contest 140',
|
389
|
+
rule: 'AtCoder',
|
390
|
+
startTime: 2022-05-15T12:00:00.000Z,
|
391
|
+
endTime: 2022-05-15T14:00:00.000Z,
|
392
|
+
url: 'https://atcoder.jp/contests/arc140'
|
393
|
+
}
|
394
|
+
]
|
395
|
+
}
|
380
396
|
```
|
381
397
|
|
382
398
|
#### Use link CLI
|
package/dist/cli.js
CHANGED
@@ -64,9 +64,9 @@ function cli(arg, name) {
|
|
64
64
|
sort: opts.sort
|
65
65
|
};
|
66
66
|
if (opts.raw)
|
67
|
-
return JSON.stringify(yield (0, _1.
|
67
|
+
return JSON.stringify(yield (0, _1.getContests)(config), null, 2);
|
68
68
|
else
|
69
|
-
return yield (0, _1.
|
69
|
+
return yield (0, _1.getContestsInfoText)(config, opts.language);
|
70
70
|
}
|
71
71
|
});
|
72
72
|
}
|
package/dist/cli.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,kDAA+C;AAC/C,yCAA4C;AAC5C,iCAAiC;AACjC,
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,kDAA+C;AAC/C,yCAA4C;AAC5C,iCAAiC;AACjC,wBAA6D;AAC7D,qCAAoC;AACpC,oDAAuB;AAEvB,SAAS,OAAO;IAEZ,OAAO,IAAI,mBAAO,EAAE;SACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACzB,OAAO,CAAC,sBAAO,CAAC;SAChB,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,EAAE,GAAG,CAAC;SAC7D,MAAM,CAAC,YAAY,EAAE,6CAA6C,CAAC;SACnE,SAAS,CAAC,IAAI,kBAAM,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,UAAK,CAAC,CAAC,CAAC;SACxF,SAAS,CAAC,IAAI,kBAAM,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;SAClF,SAAS,CAAC,IAAI,kBAAM,CAAC,uBAAuB,EAAE,qBAAqB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,iBAAQ,CAAC,CAAC;SACxG,MAAM,CAAC,WAAW,EAAE,qDAAqD,CAAC,CAAC;AACpF,CAAC;AAED,SAAsB,GAAG,CAAC,GAAY,EAAE,IAAa;;QAEjD,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;QACtB,IAAG,GAAG,KAAK,SAAS;YAAE,GAAG,CAAC,KAAK,EAAE,CAAC;aAElC;YACI,IAAI,GAAG,GAAG,EAAE,CAAC;YACb,IACA;gBACI,IAAG,IAAI;oBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxB,GAAG;qBACE,eAAe,CAAC;oBACb,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG;oBAC1B,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG;oBAC1B,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG;iBAChC,CAAC;qBACD,YAAY,EAAE;qBACd,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;aAChD;YACD,OAAM,CAAC,EAAE;gBAAE,OAAO,GAAG,CAAC;aAAE;SAC3B;QAED,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACxB,IAAG,IAAI,CAAC,IAAI;YAAE,OAAO,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAC,CAAC,SAAS,CAAC,UAAK,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;aAEtG;YACI,MAAM,MAAM,GAAW;gBACnB,QAAQ,EAAE,gBAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,IAAI,EAAE,IAAI,CAAC,IAAc;gBACzB,IAAI,EAAE,IAAI,CAAC,IAAI;aAClB,CAAC;YACF,IAAG,IAAI,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,IAAA,cAAW,EAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;;gBAClE,OAAO,MAAM,IAAA,sBAAmB,EAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SAChE;IACL,CAAC;CAAA;AAlCD,kBAkCC;AAED,IAAG,OAAO,CAAC,IAAI,KAAK,MAAM;IAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
@@ -1,9 +1,13 @@
|
|
1
|
+
import { contest } from "./lib/contest";
|
1
2
|
export declare type config = {
|
2
3
|
abbrList?: string[];
|
3
4
|
days?: number;
|
4
5
|
sort?: boolean;
|
5
6
|
};
|
6
|
-
export declare function
|
7
|
-
|
7
|
+
export declare function getContests(config?: config): Promise<{
|
8
|
+
running: contest[];
|
9
|
+
upcoming: contest[];
|
10
|
+
}>;
|
11
|
+
export declare function getContestsInfoText(config?: config, language?: string): Promise<string>;
|
8
12
|
export { cli } from "./cli";
|
9
13
|
export { addOJ } from "./lib/oj";
|
package/dist/index.js
CHANGED
@@ -12,10 +12,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
13
13
|
};
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
15
|
-
exports.addOJ = exports.cli = exports.
|
15
|
+
exports.addOJ = exports.cli = exports.getContestsInfoText = exports.getContests = void 0;
|
16
16
|
const oj_1 = require("./lib/oj");
|
17
17
|
const locale_1 = require("./locale");
|
18
18
|
const lodash_1 = __importDefault(require("lodash"));
|
19
|
+
const pangu_1 = __importDefault(require("pangu"));
|
19
20
|
const defaultConfig = {
|
20
21
|
abbrList: Object.keys(oj_1.alloj),
|
21
22
|
days: 3,
|
@@ -27,51 +28,75 @@ function resolveConfig(config) {
|
|
27
28
|
cfg.abbrList = defaultConfig.abbrList;
|
28
29
|
return cfg;
|
29
30
|
}
|
30
|
-
function
|
31
|
+
function getContests(config) {
|
31
32
|
return __awaiter(this, void 0, void 0, function* () {
|
32
33
|
const cfg = resolveConfig(config);
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
34
|
+
function ls(fn) {
|
35
|
+
return __awaiter(this, void 0, void 0, function* () {
|
36
|
+
return (yield Promise.all(cfg.abbrList.map((abbr) => __awaiter(this, void 0, void 0, function* () {
|
37
|
+
try {
|
38
|
+
return (yield oj_1.alloj[abbr].get()).filter(fn);
|
39
|
+
}
|
40
|
+
catch (e) {
|
41
|
+
console.error(`Failed to get match information for ${oj_1.alloj[abbr].name}, details:`);
|
42
|
+
console.error(e);
|
43
|
+
return [];
|
44
|
+
}
|
45
|
+
})))).reduce((ls1, ls2) => ls1.concat(ls2));
|
46
|
+
});
|
47
|
+
}
|
48
|
+
const ret = {
|
49
|
+
running: yield ls(ct => ct.startTime <= new Date() && ct.endTime > new Date()),
|
50
|
+
upcoming: yield ls(ct => ct.startTime > new Date() && ct.startTime <= new Date(Date.now() + cfg.days * 86400000))
|
51
|
+
};
|
44
52
|
if (cfg.sort)
|
45
|
-
|
46
|
-
return
|
53
|
+
Object.values(ret).forEach(ct => ct.sort((a, b) => a.startTime.getTime() - b.startTime.getTime()));
|
54
|
+
return ret;
|
47
55
|
});
|
48
56
|
}
|
49
|
-
exports.
|
50
|
-
function
|
57
|
+
exports.getContests = getContests;
|
58
|
+
function getContestsInfoText(config, language = "zh-CN") {
|
51
59
|
return __awaiter(this, void 0, void 0, function* () {
|
52
60
|
const cfg = resolveConfig(config);
|
53
61
|
const lang = yield (0, locale_1.getLangDict)(language);
|
54
|
-
const
|
62
|
+
const { running, upcoming } = yield getContests(cfg);
|
55
63
|
const info = [];
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
64
|
+
const oj = cfg.abbrList.map(abbr => oj_1.alloj[abbr].name).join(",");
|
65
|
+
function msg(contests) {
|
66
|
+
return contests.map(contest => {
|
67
|
+
const ls = [];
|
68
|
+
ls.push(`${lang.ojName}: ${contest.ojName}`);
|
69
|
+
ls.push(`${lang.name}: ${contest.name}`);
|
70
|
+
ls.push(`${lang.rule}: ${contest.rule}`);
|
71
|
+
ls.push(`${lang.startTime}: ${contest.startTime.toLocaleString(undefined, { hourCycle: "h23" })}`);
|
72
|
+
ls.push(`${lang.endTime}: ${contest.endTime.toLocaleString(undefined, { hourCycle: "h23" })}`);
|
73
|
+
ls.push(contest.url);
|
74
|
+
return ls.join("\n");
|
75
|
+
});
|
76
|
+
}
|
77
|
+
if (running.length) {
|
78
|
+
info.push(lodash_1.default.template(lang.runnning)({
|
79
|
+
contestCount: running.length,
|
80
|
+
oj
|
81
|
+
}));
|
82
|
+
info.push(...msg(running));
|
83
|
+
}
|
84
|
+
else
|
85
|
+
info.push(lodash_1.default.template(lang.norunning)({ oj }));
|
86
|
+
if (upcoming.length) {
|
87
|
+
info.push(lodash_1.default.template(lang.upcoming)({
|
88
|
+
contestCount: upcoming.length,
|
89
|
+
days: cfg.days,
|
90
|
+
oj
|
91
|
+
}));
|
92
|
+
info.push(...msg(upcoming));
|
70
93
|
}
|
71
|
-
|
94
|
+
else
|
95
|
+
info.push(lodash_1.default.template(lang.noupcoming)({ days: cfg.days, oj }));
|
96
|
+
return pangu_1.default.spacing(info.join("\n\n"));
|
72
97
|
});
|
73
98
|
}
|
74
|
-
exports.
|
99
|
+
exports.getContestsInfoText = getContestsInfoText;
|
75
100
|
var cli_1 = require("./cli");
|
76
101
|
Object.defineProperty(exports, "cli", { enumerable: true, get: function () { return cli_1.cli; } });
|
77
102
|
var oj_2 = require("./lib/oj");
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,iCAAiC;AACjC,qCAAuC;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/oj/atcoder.js
CHANGED
@@ -62,8 +62,8 @@ exports.at = {
|
|
62
62
|
ct.url = `https://atcoder.jp${ele.attr().href}`;
|
63
63
|
}
|
64
64
|
else if (idx == 2) {
|
65
|
-
const [h,
|
66
|
-
ct.endTime = new Date(ct.startTime.getTime() + (parseInt(h) * 60 + parseInt(
|
65
|
+
const [h, m] = $(this).text().split(":");
|
66
|
+
ct.endTime = new Date(ct.startTime.getTime() + (parseInt(h) * 60 + parseInt(m)) * 60 * 1000);
|
67
67
|
}
|
68
68
|
});
|
69
69
|
contests.push(ct);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"atcoder.js","sourceRoot":"","sources":["../../../src/lib/oj/atcoder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,iDAAmC;AAItB,QAAA,EAAE,GAAO;IAClB,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,GAAS,EAAE;QAEZ,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAChE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAc,EAAE,CAAC;QAC/B,CAAC,CAAC,4CAA4C,CAAC,CAAC,IAAI,CAAC;YAEjD,MAAM,EAAE,GAAY;gBAChB,MAAM,EAAE,UAAE,CAAC,IAAI;gBACf,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,SAAS;gBACf,SAAS,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;gBACtB,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;gBACpB,GAAG,EAAE,EAAE;aACV,CAAC;YACF,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG;gBAE5B,IAAG,GAAG,IAAI,CAAC;oBAAE,EAAE,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;qBAChD,IAAG,GAAG,IAAI,CAAC,EAChB;oBACI,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;oBACzB,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;oBAC1D,EAAE,CAAC,GAAG,GAAG,qBAAqB,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;iBACnD;qBACI,IAAG,GAAG,IAAI,CAAC,EAChB;oBACI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACzC,EAAE,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;
|
1
|
+
{"version":3,"file":"atcoder.js","sourceRoot":"","sources":["../../../src/lib/oj/atcoder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,iDAAmC;AAItB,QAAA,EAAE,GAAO;IAClB,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,GAAS,EAAE;QAEZ,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAChE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAc,EAAE,CAAC;QAC/B,CAAC,CAAC,4CAA4C,CAAC,CAAC,IAAI,CAAC;YAEjD,MAAM,EAAE,GAAY;gBAChB,MAAM,EAAE,UAAE,CAAC,IAAI;gBACf,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,SAAS;gBACf,SAAS,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;gBACtB,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;gBACpB,GAAG,EAAE,EAAE;aACV,CAAC;YACF,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG;gBAE5B,IAAG,GAAG,IAAI,CAAC;oBAAE,EAAE,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;qBAChD,IAAG,GAAG,IAAI,CAAC,EAChB;oBACI,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;oBACzB,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;oBAC1D,EAAE,CAAC,GAAG,GAAG,qBAAqB,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;iBACnD;qBACI,IAAG,GAAG,IAAI,CAAC,EAChB;oBACI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACzC,EAAE,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;iBAChG;YACL,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IACpB,CAAC,CAAA;CACJ,CAAC"}
|
@@ -60,7 +60,7 @@ exports.cf = {
|
|
60
60
|
endTime: new Date((res.startTimeSeconds + res.durationSeconds) * 1000),
|
61
61
|
url: `https://codeforces.com/contests/${res.id}`
|
62
62
|
};
|
63
|
-
}).filter(contest => contest.
|
63
|
+
}).filter(contest => contest.endTime >= new Date());
|
64
64
|
})
|
65
65
|
};
|
66
66
|
//# sourceMappingURL=codeforces.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"codeforces.js","sourceRoot":"","sources":["../../../src/lib/oj/codeforces.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,iDAAmC;AAenC,MAAM,UAAU,GAAyB;IACrC,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,MAAM;CACf,CAAC;AAEW,QAAA,EAAE,GAAO;IAClB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,GAAS,EAAE;QAEZ,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QAC5E,IAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,YAAY,MAAM,CAAC,EACrC;YACI,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;SAC7B;QACD,MAAM,OAAO,GAAa,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;QAC/C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAW,EAAE;YAEhC,OAAO;gBACH,MAAM,EAAE,UAAE,CAAC,IAAI;gBACf,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC1B,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBAChD,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,GAAG,GAAG,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;gBACtE,GAAG,EAAE,mCAAmC,GAAG,CAAC,EAAE,EAAE;aACnD,CAAC;QACN,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,
|
1
|
+
{"version":3,"file":"codeforces.js","sourceRoot":"","sources":["../../../src/lib/oj/codeforces.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,iDAAmC;AAenC,MAAM,UAAU,GAAyB;IACrC,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,MAAM;CACf,CAAC;AAEW,QAAA,EAAE,GAAO;IAClB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,GAAS,EAAE;QAEZ,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QAC5E,IAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,YAAY,MAAM,CAAC,EACrC;YACI,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;SAC7B;QACD,MAAM,OAAO,GAAa,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;QAC/C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAW,EAAE;YAEhC,OAAO;gBACH,MAAM,EAAE,UAAE,CAAC,IAAI;gBACf,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC1B,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBAChD,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,GAAG,GAAG,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;gBACtE,GAAG,EAAE,mCAAmC,GAAG,CAAC,EAAE,EAAE;aACnD,CAAC;QACN,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC,CAAA;CACJ,CAAC"}
|
package/dist/lib/oj/luogu.js
CHANGED
@@ -38,7 +38,7 @@ exports.lg = {
|
|
38
38
|
endTime: new Date(res.endTime * 1000),
|
39
39
|
url: `https://www.luogu.com.cn/contest/${res.id}`
|
40
40
|
};
|
41
|
-
}).filter(contest => contest.
|
41
|
+
}).filter(contest => contest.endTime >= new Date());
|
42
42
|
})
|
43
43
|
};
|
44
44
|
//# sourceMappingURL=luogu.js.map
|
package/dist/lib/oj/luogu.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"luogu.js","sourceRoot":"","sources":["../../../src/lib/oj/luogu.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAA0B;AAiB1B,MAAM,UAAU,GAAyB;IACrC,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,KAAK;IACR,CAAC,EAAE,YAAY;CAClB,CAAC;AAEF,MAAM,OAAO,GAAG;IACZ,YAAY,EAAE,qHAAqH;IACnI,cAAc,EAAE,cAAc;CACjC,CAAC;AAEW,QAAA,EAAE,GAAO;IAClB,IAAI,EAAE,OAAO;IACb,GAAG,EAAE,GAAS,EAAE;QAEZ,MAAM,OAAO,GAAa,CAAC,MAAM,eAAK,CAAC,GAAG,CAAC,uCAAuC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC;QACnI,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAW,EAAE;YAEhC,OAAO;gBACH,MAAM,EAAE,UAAE,CAAC,IAAI;gBACf,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAC9B,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;gBACzC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;gBACrC,GAAG,EAAE,oCAAoC,GAAG,CAAC,EAAE,EAAE;aACpD,CAAC;QACN,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,
|
1
|
+
{"version":3,"file":"luogu.js","sourceRoot":"","sources":["../../../src/lib/oj/luogu.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAA0B;AAiB1B,MAAM,UAAU,GAAyB;IACrC,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,KAAK;IACR,CAAC,EAAE,YAAY;CAClB,CAAC;AAEF,MAAM,OAAO,GAAG;IACZ,YAAY,EAAE,qHAAqH;IACnI,cAAc,EAAE,cAAc;CACjC,CAAC;AAEW,QAAA,EAAE,GAAO;IAClB,IAAI,EAAE,OAAO;IACb,GAAG,EAAE,GAAS,EAAE;QAEZ,MAAM,OAAO,GAAa,CAAC,MAAM,eAAK,CAAC,GAAG,CAAC,uCAAuC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC;QACnI,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAW,EAAE;YAEhC,OAAO;gBACH,MAAM,EAAE,UAAE,CAAC,IAAI;gBACf,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAC9B,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;gBACzC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;gBACrC,GAAG,EAAE,oCAAoC,GAAG,CAAC,EAAE,EAAE;aACpD,CAAC;QACN,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC,CAAA;CACJ,CAAC"}
|
package/dist/lib/oj/nowcoder.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"nowcoder.js","sourceRoot":"","sources":["../../../src/lib/oj/nowcoder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,iDAAmC;AAgDnC,IAAK,iBAIJ;AAJD,WAAK,iBAAiB;IAElB,8EAAmB,CAAA;IACnB,4EAAa,CAAA;AACjB,CAAC,EAJI,iBAAiB,KAAjB,iBAAiB,QAIrB;AAED,MAAM,GAAG,GAAG,+CAA+C,CAAC;AAE5D,SAAe,aAAa,CAAC,GAAsB;;QAE/C,MAAM,IAAI,GAAG,CAAC,MAAM,eAAK,CAAC,GAAG,CAAC,GAAG,GAAG,sBAAsB,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACvE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,EAAE,GAAa,EAAE,CAAC;QACxB,CAAC,CAAC,qCAAqC,CAAC,CAAC,IAAI,CAAC;YAE1C,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;IACd,CAAC;CAAA;AAED,MAAM,UAAU,GAAyB;IACrC,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,
|
1
|
+
{"version":3,"file":"nowcoder.js","sourceRoot":"","sources":["../../../src/lib/oj/nowcoder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAA0B;AAC1B,iDAAmC;AAgDnC,IAAK,iBAIJ;AAJD,WAAK,iBAAiB;IAElB,8EAAmB,CAAA;IACnB,4EAAa,CAAA;AACjB,CAAC,EAJI,iBAAiB,KAAjB,iBAAiB,QAIrB;AAED,MAAM,GAAG,GAAG,+CAA+C,CAAC;AAE5D,SAAe,aAAa,CAAC,GAAsB;;QAE/C,MAAM,IAAI,GAAG,CAAC,MAAM,eAAK,CAAC,GAAG,CAAC,GAAG,GAAG,sBAAsB,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACvE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,EAAE,GAAa,EAAE,CAAC;QACxB,CAAC,CAAC,qCAAqC,CAAC,CAAC,IAAI,CAAC;YAE1C,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;IACd,CAAC;CAAA;AAED,MAAM,UAAU,GAAyB;IACrC,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,KAAK;CACX,CAAC;AAEW,QAAA,EAAE,GAAO;IAClB,IAAI,EAAE,UAAU;IAChB,GAAG,EAAE,GAAS,EAAE;QAEZ,MAAM,GAAG,GAAa;YAClB,GAAG,MAAM,aAAa,CAAC,iBAAiB,CAAC,cAAc,CAAC;YACxD,GAAG,MAAM,aAAa,CAAC,iBAAiB,CAAC,aAAa,CAAC;SAC1D,CAAC;QACF,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,sBAAsB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAW,EAAE;YAE1E,OAAO;gBACH,MAAM,EAAE,UAAE,CAAC,IAAI;gBACf,IAAI,EAAE,GAAG,CAAC,WAAW;gBACrB,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC1B,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC;gBACzC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC;gBACrC,GAAG,EAAE,uCAAuC,GAAG,CAAC,SAAS,EAAE;aAC9D,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC,CAAA;CACJ,CAAC"}
|
package/dist/locale/en.json
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
{
|
2
|
-
"
|
2
|
+
"runnning": "There are ${contestCount} contests is running on ${oj}",
|
3
|
+
"norunning": "No upcomming contests on ${oj}",
|
4
|
+
"upcoming": "There are ${contestCount} contests on ${oj} in the next ${days} days",
|
5
|
+
"noupcoming": "No contests for the next ${days} days on ${oj}",
|
3
6
|
"ojName": "OJ",
|
4
7
|
"name": "Contest name",
|
5
8
|
"rule": "Rule",
|
package/dist/locale/index.d.ts
CHANGED
package/dist/locale/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/locale/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2BAAiC;AAEpB,QAAA,QAAQ,GAAG,IAAA,gBAAW,EAAC,GAAG,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/locale/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2BAAiC;AAEpB,QAAA,QAAQ,GAAG,IAAA,gBAAW,EAAC,GAAG,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAclJ,SAAsB,WAAW,CAAC,QAAgB;;QAE9C,IAAG,CAAC,gBAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,QAAQ,+BAA+B,gBAAQ,EAAE,CAAC,CAAC;QACxH,yDAAc,KAAK,QAAQ,OAAO,IAAE;IACxC,CAAC;CAAA;AAJD,kCAIC"}
|
package/dist/locale/zh-CN.json
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
{
|
2
|
-
"
|
2
|
+
"runnning": "在 ${oj} 上有 ${contestCount} 场正在进行的比赛",
|
3
|
+
"norunning": "在 ${oj} 上没有正在进行的比赛捏",
|
4
|
+
"upcoming": "接下来的 ${days} 天内在 ${oj} 上有 ${contestCount} 场比赛",
|
5
|
+
"noupcoming": "接下来的 ${days} 天内在 ${oj} 上没有比赛捏",
|
3
6
|
"ojName": "比赛平台",
|
4
7
|
"name": "比赛名称",
|
5
8
|
"rule": "赛制",
|
package/dist/locale/zh-TW.json
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
{
|
2
|
-
"
|
2
|
+
"runnning": "在 ${oj} 上有 ${contestCount} 場正在進行的比賽",
|
3
|
+
"norunning": "在 ${oj} 上沒有正在進行的比賽",
|
4
|
+
"upcoming": "接下来的 ${days} 天內在 ${oj} 上有 ${contestCount} 場比賽",
|
5
|
+
"noupcoming": "接下來的 ${days} 天內在 ${oj} 上沒有比賽",
|
3
6
|
"ojName": "比賽平台",
|
4
7
|
"name": "比賽名稱",
|
5
8
|
"rule": "賽制",
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "lscontests",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.9.0",
|
4
4
|
"description": "A tool to get information about the contests on each OJ",
|
5
5
|
"keywords": [
|
6
6
|
"cli",
|
@@ -35,11 +35,13 @@
|
|
35
35
|
"axios": "^0.27.2",
|
36
36
|
"cheerio": "^1.0.0-rc.10",
|
37
37
|
"commander": "^9.2.0",
|
38
|
-
"lodash": "^4.17.21"
|
38
|
+
"lodash": "^4.17.21",
|
39
|
+
"pangu": "^4.0.7"
|
39
40
|
},
|
40
41
|
"devDependencies": {
|
41
42
|
"@types/lodash": "^4.14.182",
|
42
43
|
"@types/node": "^17.0.33",
|
44
|
+
"@types/pangu": "^3.3.0",
|
43
45
|
"@typescript-eslint/eslint-plugin": "^5.23.0",
|
44
46
|
"@typescript-eslint/parser": "^5.23.0",
|
45
47
|
"cz-conventional-changelog": "3.3.0",
|