lscontests 1.8.9 → 1.8.12

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 CHANGED
@@ -1,23 +1,38 @@
1
1
  # lscontests
2
2
 
3
- ![GitHub Repo stars](https://img.shields.io/github/stars/StableAgOH/lscontests?style=social)
4
- ![GitHub commit activity](https://img.shields.io/github/commit-activity/m/StableAgOH/lscontests)
5
- ![GitHub](https://img.shields.io/github/license/StableAgOH/lscontests)
3
+ [![GitHub Repo stars](https://img.shields.io/github/stars/StableAgOH/lscontests?style=social)](https://github.com/StableAgOH/lscontests)
4
+ [![GitHub commit activity](https://img.shields.io/github/commit-activity/m/StableAgOH/lscontests?logo=github)](https://github.com/StableAgOH/lscontests)
5
+ [![License](https://img.shields.io/github/license/StableAgOH/lscontests)](https://github.com/StableAgOH/lscontests)
6
6
  [![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)
7
7
 
8
- ![npm](https://img.shields.io/npm/v/lscontests)
9
- ![npm](https://img.shields.io/npm/dw/lscontests)
8
+ [![npm](https://img.shields.io/npm/v/lscontests?logo=npm)](https://www.npmjs.com/package/lscontests)
9
+ [![npm](https://img.shields.io/npm/dw/lscontests?logo=npm)](https://www.npmjs.com/package/lscontests)
10
10
 
11
11
  A tool to get information about the contests on each OJ.
12
12
 
13
+ ## Installation
14
+
15
+ ### Only use CLI
16
+
17
+ For npm: `npm install -g lscontests`
18
+
19
+ For yarn: `yarn global add lscontests`
20
+
21
+ ### Add to your package
22
+
23
+ For npm: `npm install lscontests --save`
24
+
25
+ For yarn: `yarn add lscontests`
26
+
13
27
  ## Usage
14
28
 
15
29
  ### CLI
16
30
 
17
31
  You can use cli to get a list of information about upcoming contests easily.
18
32
 
33
+ <!-- block_help begin -->
19
34
  ```text
20
- lsct [options]
35
+ Usage: lsct [options]
21
36
 
22
37
  Options:
23
38
  -V, --version output the version number
@@ -25,107 +40,211 @@ Options:
25
40
  -l, --list list all supported OJ and it's abbreviation
26
41
  -o, --oj <ojs...> OJs to display (choices: "at", "cf", "lg", "nc")
27
42
  -r, --raw print raw contest list
28
- -L, --language <lang> set output language (choices: "en", "zh-CN", "zh-TW", default: "zh-CN")
43
+ -L, --language <lang> set output language (choices: "en", "zh-CN", "zh-TW",
44
+ default: "zh-CN")
29
45
  --no-sort do not sort by contests start time, but by OJ order
30
46
  -h, --help display help for command
31
47
  ```
48
+ <!-- block_help end -->
32
49
 
33
50
  It performs as follows:
34
51
 
52
+ <!-- block_cli begin -->
53
+ (*The following content was automatically generated in Fri, 13 May 2022 12:49:18 GMT*)
54
+
35
55
  <details>
36
- <summary> <code>> lsct -o at cf</code> </summary>
56
+ <summary> <code>> lsct </code> </summary>
37
57
 
38
58
  ```text
39
- 在最近的 3 天内有 3 场比赛
59
+ 最近的 3 天内在 AtCoder,Codeforces,Luogu,NowCoder 上有 10 场比赛
40
60
 
41
- 比赛平台: Codeforces
42
- 比赛名称: Educational Codeforces Round 128 (Rated for Div. 2)
61
+ 比赛平台: NowCoder
62
+ 比赛名称:牛客竞赛博弈专题班 Sprague-Grundy 函数(SG 函数、图游戏、Nim 和)
43
63
  赛制: ICPC
44
- 开始时间: 2022/5/13 22:35:00
45
- 结束时间: 2022/5/14 00:35:00
46
- https://codeforces.com/contests/1680
64
+ 开始时间: 5/13/2022, 04:00:00
65
+ 结束时间: 5/21/2022, 13:00:00
66
+ https://ac.nowcoder.com/acm/contest/34655
47
67
 
48
- 比赛平台: Codeforces
49
- 比赛名称: Codeforces Round #791 (Div. 2)
50
- 赛制: Codeforces
51
- 开始时间: 2022/5/14 17:35:00
52
- 结束时间: 2022/5/14 19:35:00
53
- https://codeforces.com/contests/1679
68
+ 比赛平台: NowCoder
69
+ 比赛名称: 2022 图论班第一章图匹配例题与习题
70
+ 赛制: ICPC
71
+ 开始时间: 5/13/2022, 06:00:00
72
+ 结束时间: 5/30/2022, 08:00:00
73
+ https://ac.nowcoder.com/acm/contest/34649
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
+ 比赛平台: NowCoder
83
+ 比赛名称:第二届天元编程邀请赛(提高组)
84
+ 赛制: IOI
85
+ 开始时间: 5/14/2022, 04:30:00
86
+ 结束时间: 5/14/2022, 09:00:00
87
+ https://ac.nowcoder.com/acm/contest/33335
88
+
89
+ 比赛平台: NowCoder
90
+ 比赛名称:第二届天元编程邀请赛(普及组)
91
+ 赛制: IOI
92
+ 开始时间: 5/14/2022, 04:30:00
93
+ 结束时间: 5/14/2022, 08:00:00
94
+ https://ac.nowcoder.com/acm/contest/33341
95
+
96
+ 比赛平台: NowCoder
97
+ 比赛名称:第十八届西南科技大学 ACM 程序设计竞赛(同步赛)
98
+ 赛制: ICPC
99
+ 开始时间: 5/14/2022, 05:00:00
100
+ 结束时间: 5/14/2022, 10:00:00
101
+ https://ac.nowcoder.com/acm/contest/33540
102
+
103
+ 比赛平台: Luogu
104
+ 比赛名称: 【LGR-109】洛谷 5 月月赛 II & Windy Round 6
105
+ 赛制: IOI
106
+ 开始时间: 5/14/2022, 06:00:00
107
+ 结束时间: 5/14/2022, 10:00:00
108
+ https://www.luogu.com.cn/contest/68326
54
109
 
55
110
  比赛平台: AtCoder
56
- 比赛名称: Ⓐ Panasonic Programming Contest 2022(AtCoder Beginner Contest 251)
111
+ 比赛名称: Ⓐ Panasonic Programming Contest 2022 (AtCoder Beginner Contest 251)
57
112
  赛制: AtCoder
58
- 开始时间: 2022/5/14 20:00:00
59
- 结束时间: 2022/5/14 20:01:40
113
+ 开始时间: 5/14/2022, 12:00:00
114
+ 结束时间: 5/14/2022, 12:01:40
60
115
  https://atcoder.jp/contests/abc251
116
+
117
+ 比赛平台: Luogu
118
+ 比赛名称: 「WHOI」Round 1
119
+ 赛制: IOI
120
+ 开始时间: 5/15/2022, 06:00:00
121
+ 结束时间: 5/15/2022, 10:00:00
122
+ https://www.luogu.com.cn/contest/67377
123
+
124
+ 比赛平台: AtCoder
125
+ 比赛名称: Ⓐ AtCoder Regular Contest 140
126
+ 赛制: AtCoder
127
+ 开始时间: 5/15/2022, 12:00:00
128
+ 结束时间: 5/15/2022, 12:02:00
129
+ https://atcoder.jp/contests/arc140
130
+ ```
131
+
132
+ </details>
133
+
134
+ <details>
135
+ <summary> <code>> lsct -o at cf -d 7</code> </summary>
136
+
137
+ ```text
138
+ 最近的 7 天内在 AtCoder,Codeforces 上有 2 场比赛
139
+
140
+ 比赛平台: AtCoder
141
+ 比赛名称: Ⓐ Panasonic Programming Contest 2022 (AtCoder Beginner Contest 251)
142
+ 赛制: AtCoder
143
+ 开始时间: 5/14/2022, 12:00:00
144
+ 结束时间: 5/14/2022, 12:01:40
145
+ https://atcoder.jp/contests/abc251
146
+
147
+ 比赛平台: AtCoder
148
+ 比赛名称: Ⓐ AtCoder Regular Contest 140
149
+ 赛制: AtCoder
150
+ 开始时间: 5/15/2022, 12:00:00
151
+ 结束时间: 5/15/2022, 12:02:00
152
+ https://atcoder.jp/contests/arc140
61
153
  ```
62
154
 
63
155
  </details>
64
156
 
65
157
  <details>
66
- <summary> <code>> lsct -o lg -d 7 -L en</code> </summary>
158
+ <summary> <code>> lsct -o lg nc -d 7 -L en</code> </summary>
67
159
 
68
160
  ```text
69
- 2 contests in the last 7 days
161
+ 8 contests on Luogu,NowCoder in the last 7 days
162
+
163
+ OJ: NowCoder
164
+ Contest name: 牛客竞赛博弈专题班 Sprague-Grundy 函数(SG 函数、图游戏、Nim 和)
165
+ Rule: ICPC
166
+ Start time: 5/13/2022, 04:00:00
167
+ End time: 5/21/2022, 13:00:00
168
+ https://ac.nowcoder.com/acm/contest/34655
169
+
170
+ OJ: NowCoder
171
+ Contest name: 2022 图论班第一章图匹配例题与习题
172
+ Rule: ICPC
173
+ Start time: 5/13/2022, 06:00:00
174
+ End time: 5/30/2022, 08:00:00
175
+ https://ac.nowcoder.com/acm/contest/34649
176
+
177
+ OJ: NowCoder
178
+ Contest name: 牛客挑战赛 60
179
+ Rule: ICPC
180
+ Start time: 5/13/2022, 11:00:00
181
+ End time: 5/13/2022, 14:00:00
182
+ https://ac.nowcoder.com/acm/contest/11200
183
+
184
+ OJ: NowCoder
185
+ Contest name: 第二届天元编程邀请赛(提高组)
186
+ Rule: IOI
187
+ Start time: 5/14/2022, 04:30:00
188
+ End time: 5/14/2022, 09:00:00
189
+ https://ac.nowcoder.com/acm/contest/33335
190
+
191
+ OJ: NowCoder
192
+ Contest name: 第二届天元编程邀请赛(普及组)
193
+ Rule: IOI
194
+ Start time: 5/14/2022, 04:30:00
195
+ End time: 5/14/2022, 08:00:00
196
+ https://ac.nowcoder.com/acm/contest/33341
197
+
198
+ OJ: NowCoder
199
+ Contest name: 第十八届西南科技大学 ACM 程序设计竞赛(同步赛)
200
+ Rule: ICPC
201
+ Start time: 5/14/2022, 05:00:00
202
+ End time: 5/14/2022, 10:00:00
203
+ https://ac.nowcoder.com/acm/contest/33540
70
204
 
71
205
  OJ: Luogu
72
206
  Contest name: 【LGR-109】洛谷 5 月月赛 II & Windy Round 6
73
207
  Rule: IOI
74
- Start time: 2022/5/14 14:00:00
75
- End time: 2022/5/14 18:00:00
208
+ Start time: 5/14/2022, 06:00:00
209
+ End time: 5/14/2022, 10:00:00
76
210
  https://www.luogu.com.cn/contest/68326
77
211
 
78
212
  OJ: Luogu
79
213
  Contest name: 「WHOI」Round 1
80
214
  Rule: IOI
81
- Start time: 2022/5/15 14:00:00
82
- End time: 2022/5/15 18:00:00
215
+ Start time: 5/15/2022, 06:00:00
216
+ End time: 5/15/2022, 10:00:00
83
217
  https://www.luogu.com.cn/contest/67377
84
218
  ```
85
219
 
86
220
  </details>
87
221
 
88
222
  <details>
89
- <summary> <code>> lsct -r -o cf nc --no-sort</code> </summary>
223
+ <summary> <code>> lsct -o at cf -d 7 -r --no-sort</code> </summary>
90
224
 
91
- ```bash
225
+ ```json
92
226
  [
93
227
  {
94
- ojName: 'Codeforces',
95
- name: 'Codeforces Round #791 (Div. 2)',
96
- rule: 'Codeforces',
97
- startTime: 2022-05-14T09:35:00.000Z,
98
- endTime: 2022-05-14T11:35:00.000Z,
99
- url: 'https://codeforces.com/contests/1679'
228
+ "ojName": "AtCoder",
229
+ "name": "Ⓐ Panasonic Programming Contest 2022(AtCoder Beginner Contest 251)",
230
+ "rule": "AtCoder",
231
+ "startTime": "2022-05-14T12:00:00.000Z",
232
+ "endTime": "2022-05-14T12:01:40.000Z",
233
+ "url": "https://atcoder.jp/contests/abc251"
100
234
  },
101
235
  {
102
- ojName: 'Codeforces',
103
- name: 'Educational Codeforces Round 128 (Rated for Div. 2)',
104
- rule: 'ICPC',
105
- startTime: 2022-05-13T14:35:00.000Z,
106
- endTime: 2022-05-13T16:35:00.000Z,
107
- url: 'https://codeforces.com/contests/1680'
108
- },
109
- {
110
- ojName: 'NowCoder',
111
- name: '牛客挑战赛60',
112
- rule: 'ICPC',
113
- startTime: 2022-05-13T11:00:00.000Z,
114
- endTime: 2022-05-13T14:00:00.000Z,
115
- url: 'https://ac.nowcoder.com/acm/contest/11200'
116
- },
117
- {
118
- ojName: 'NowCoder',
119
- name: '第十八届西南科技大学ACM程序设计竞赛(同步赛)',
120
- rule: 'ICPC',
121
- startTime: 2022-05-14T05:00:00.000Z,
122
- endTime: 2022-05-14T10:00:00.000Z,
123
- url: 'https://ac.nowcoder.com/acm/contest/33540'
236
+ "ojName": "AtCoder",
237
+ "name": "Ⓐ AtCoder Regular Contest 140",
238
+ "rule": "AtCoder",
239
+ "startTime": "2022-05-15T12:00:00.000Z",
240
+ "endTime": "2022-05-15T12:02:00.000Z",
241
+ "url": "https://atcoder.jp/contests/arc140"
124
242
  }
125
243
  ]
126
244
  ```
127
245
 
128
246
  </details>
247
+ <!-- block_cli end -->
129
248
 
130
249
  ### API
131
250
 
@@ -179,13 +298,13 @@ main();
179
298
  This code gives the following results:
180
299
 
181
300
  ```text
182
- 1 contests in the last 1 days
301
+ 1 contests on Codeforces,testOJ in the last 1 days
183
302
 
184
303
  OJ: testOJ
185
304
  Contest name: testContest
186
305
  Rule: ICPC
187
- Start time: 2022/5/12 22:54:43
188
- End time: 2022/5/13 22:54:43
306
+ Start time: 2022/5/13 19:34:10
307
+ End time: 2022/5/14 19:34:10
189
308
  https://www.test.com
190
309
 
191
310
  [
@@ -193,8 +312,8 @@ https://www.test.com
193
312
  ojName: 'testOJ',
194
313
  name: 'testContest',
195
314
  rule: 'ICPC',
196
- startTime: 2022-05-12T14:54:46.240Z,
197
- endTime: 2022-05-13T14:54:46.240Z,
315
+ startTime: 2022-05-13T11:34:13.464Z,
316
+ endTime: 2022-05-14T11:34:13.464Z,
198
317
  url: 'https://www.test.com'
199
318
  },
200
319
  {
package/dist/index.js CHANGED
@@ -16,16 +16,21 @@ exports.addOJ = exports.cli = exports.getContestInfo = exports.getContestList =
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,
22
23
  sort: true
23
24
  };
25
+ function resolveConfig(config) {
26
+ const cfg = Object.assign(Object.assign({}, defaultConfig), config);
27
+ if (cfg.abbrList.length == 0)
28
+ cfg.abbrList = defaultConfig.abbrList;
29
+ return cfg;
30
+ }
24
31
  function getContestList(config) {
25
32
  return __awaiter(this, void 0, void 0, function* () {
26
- const cfg = Object.assign(Object.assign({}, defaultConfig), config);
27
- if (cfg.abbrList.length == 0)
28
- cfg.abbrList = defaultConfig.abbrList;
33
+ const cfg = resolveConfig(config);
29
34
  const contests = (yield Promise.all(cfg.abbrList.map((abbr) => __awaiter(this, void 0, void 0, function* () {
30
35
  try {
31
36
  const cts = yield oj_1.alloj[abbr].get();
@@ -45,21 +50,26 @@ function getContestList(config) {
45
50
  exports.getContestList = getContestList;
46
51
  function getContestInfo(config, language = "zh-CN") {
47
52
  return __awaiter(this, void 0, void 0, function* () {
53
+ const cfg = resolveConfig(config);
48
54
  const lang = yield (0, locale_1.getLangDict)(language);
49
- const contests = yield getContestList(config);
55
+ const contests = yield getContestList(cfg);
50
56
  const info = [];
51
- info.push(lodash_1.default.template(lang.welcome)({ contestCount: contests.length, days: config ? config.days : defaultConfig.days }));
57
+ info.push(lodash_1.default.template(lang.welcome)({
58
+ contestCount: contests.length,
59
+ days: cfg.days,
60
+ oj: cfg.abbrList.map(abbr => oj_1.alloj[abbr].name).join(",")
61
+ }));
52
62
  for (const contest of contests) {
53
63
  const msg = [];
54
64
  msg.push(`${lang.ojName}: ${contest.ojName}`);
55
65
  msg.push(`${lang.name}: ${contest.name}`);
56
66
  msg.push(`${lang.rule}: ${contest.rule}`);
57
- msg.push(`${lang.startTime}: ${contest.startTime.toLocaleString()}`);
58
- msg.push(`${lang.endTime}: ${contest.endTime.toLocaleString()}`);
67
+ msg.push(`${lang.startTime}: ${contest.startTime.toLocaleString(undefined, { hourCycle: "h23" })}`);
68
+ msg.push(`${lang.endTime}: ${contest.endTime.toLocaleString(undefined, { hourCycle: "h23" })}`);
59
69
  msg.push(contest.url);
60
70
  info.push(msg.join("\n"));
61
71
  }
62
- return info.join("\n\n");
72
+ return pangu_1.default.spacing(info.join("\n\n"));
63
73
  });
64
74
  }
65
75
  exports.getContestInfo = getContestInfo;
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;AACvC,oDAAuB;AAQvB,MAAM,aAAa,GAAG;IAClB,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,UAAK,CAAC;IAC5B,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,IAAI;CACb,CAAC;AAEF,SAAsB,cAAc,CAAC,MAAe;;QAEhD,MAAM,GAAG,mCAAQ,aAAa,GAAK,MAAM,CAAE,CAAC;QAC5C,IAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC;YAAE,GAAG,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;QACnE,MAAM,QAAQ,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAC/B,GAAG,CAAC,QAAQ,CAAC,GAAG,CACZ,CAAM,IAAI,EAAC,EAAE;YAET,IACA;gBACI,MAAM,GAAG,GAAG,MAAM,UAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;gBACpC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC;aACvF;YACD,OAAM,CAAC,EACP;gBACI,OAAO,CAAC,KAAK,CAAC,uCAAuC,UAAK,CAAC,IAAI,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC;gBACnF,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACjB,OAAO,EAAE,CAAC;aACb;QACL,CAAC,CAAA,CACJ,CACJ,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACzC,IAAG,GAAG,CAAC,IAAI;YAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;QACpF,OAAO,QAAQ,CAAC;IACpB,CAAC;CAAA;AAxBD,wCAwBC;AAED,SAAsB,cAAc,CAAC,MAAe,EAAE,QAAQ,GAAG,OAAO;;QAEpE,MAAM,IAAI,GAAG,MAAM,IAAA,oBAAW,EAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,gBAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACxH,KAAI,MAAM,OAAO,IAAI,QAAQ,EAC7B;YACI,MAAM,GAAG,GAAa,EAAE,CAAC;YACzB,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAC9C,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1C,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1C,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;YACrE,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;YACjE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SAC7B;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;CAAA;AAlBD,wCAkBC;AAED,6BAA4B;AAAnB,0FAAA,GAAG,OAAA;AACZ,+BAAiC;AAAxB,2FAAA,KAAK,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -57,8 +57,8 @@ function getResultList(tcf) {
57
57
  }
58
58
  const ruleRecord = {
59
59
  0: "ICPC",
60
- 1: "IOI",
61
- 2: "OI"
60
+ 2: "OI",
61
+ 3: "IOI"
62
62
  };
63
63
  exports.nc = {
64
64
  name: "NowCoder",
@@ -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,KAAK;IACR,CAAC,EAAE,IAAI;CACV,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"}
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"}
@@ -1,5 +1,5 @@
1
1
  {
2
- "welcome": "${contestCount} contests in the last ${days} days",
2
+ "welcome": "${contestCount} contests on ${oj} in the last ${days} days",
3
3
  "ojName": "OJ",
4
4
  "name": "Contest name",
5
5
  "rule": "Rule",
@@ -1,5 +1,5 @@
1
1
  {
2
- "welcome": "在最近的 ${days} 天内有 ${contestCount} 场比赛",
2
+ "welcome": "最近的 ${days} 天内在 ${oj} 上有 ${contestCount} 场比赛",
3
3
  "ojName": "比赛平台",
4
4
  "name": "比赛名称",
5
5
  "rule": "赛制",
@@ -1,5 +1,5 @@
1
1
  {
2
- "welcome": "在最近的 ${days} 天內有 ${contestCount} 場比賽",
2
+ "welcome": "最近的 ${days} 天內在 ${oj} 上有 ${contestCount} 場比賽",
3
3
  "ojName": "比賽平台",
4
4
  "name": "比賽名稱",
5
5
  "rule": "賽制",
package/package.json CHANGED
@@ -1,18 +1,21 @@
1
1
  {
2
2
  "name": "lscontests",
3
- "version": "1.8.9",
3
+ "version": "1.8.12",
4
4
  "description": "A tool to get information about the contests on each OJ",
5
5
  "keywords": [
6
6
  "cli",
7
- "OJ",
8
- "Codeforces",
7
+ "crawler",
8
+ "oj",
9
+ "atcoder",
10
+ "codeforces",
11
+ "luogu",
12
+ "nowcoder",
9
13
  "competitive-programming"
10
14
  ],
11
15
  "repository": "https://github.com/StableAgOH/lscontests",
12
16
  "bugs": "https://github.com/StableAgOH/lscontests/issues",
13
17
  "author": "StableAgOH <stagoh17@gmail.com>",
14
18
  "license": "GPL-3.0",
15
- "private": false,
16
19
  "main": "./dist/index.js",
17
20
  "bin": {
18
21
  "lsct": "./dist/cli.js"
@@ -23,25 +26,29 @@
23
26
  "scripts": {
24
27
  "build": "rimraf ./dist/* && tsc -p src",
25
28
  "clean": "rimraf ./dist",
26
- "prepack": "yarn build"
29
+ "docs": "typedoc --out docs ./src/index.ts",
30
+ "lint": "eslint && markdownlint README.md",
31
+ "prestart": "yarn build",
32
+ "start": "node ./dist/cli.js"
27
33
  },
28
34
  "dependencies": {
29
35
  "axios": "^0.27.2",
30
36
  "cheerio": "^1.0.0-rc.10",
31
37
  "commander": "^9.2.0",
32
- "lodash": "^4.17.21"
38
+ "lodash": "^4.17.21",
39
+ "pangu": "^4.0.7"
33
40
  },
34
41
  "devDependencies": {
35
- "@semantic-release/changelog": "^6.0.1",
36
- "@semantic-release/git": "^10.0.1",
37
42
  "@types/lodash": "^4.14.182",
38
- "@types/node": "^17.0.31",
39
- "@typescript-eslint/eslint-plugin": "^5.22.0",
40
- "@typescript-eslint/parser": "^5.22.0",
43
+ "@types/node": "^17.0.33",
44
+ "@types/pangu": "^3.3.0",
45
+ "@typescript-eslint/eslint-plugin": "^5.23.0",
46
+ "@typescript-eslint/parser": "^5.23.0",
41
47
  "cz-conventional-changelog": "3.3.0",
42
- "eslint": "^8.14.0",
48
+ "eslint": "^8.15.0",
49
+ "markdownlint-cli": "^0.31.1",
43
50
  "rimraf": "^3.0.2",
44
- "semantic-release": "^19.0.2",
51
+ "typedoc": "^0.22.15",
45
52
  "typescript": "^4.6.4"
46
53
  },
47
54
  "config": {