lscontests 1.11.3 → 2.1.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.
- package/README.md +13 -34
- package/dist/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/dist/index.js +24 -11
- package/dist/index.js.map +1 -1
- package/dist/locale/en.json +2 -0
- package/dist/locale/index.d.ts +2 -0
- package/dist/locale/index.js.map +1 -1
- package/dist/locale/zh-CN.json +2 -0
- package/dist/locale/zh-NE.json +2 -0
- package/dist/locale/zh-TW.json +2 -0
- package/dist/server.d.ts +1 -0
- package/dist/server.js +105 -0
- package/dist/server.js.map +1 -0
- package/package.json +9 -4
package/README.md
CHANGED
@@ -38,7 +38,8 @@ Usage: lsct [options]
|
|
38
38
|
|
39
39
|
Options:
|
40
40
|
-V, --version output the version number
|
41
|
-
-d, --days, <day> number of days to display
|
41
|
+
-d, --days, <day> number of days to display, set to 0 to get all
|
42
|
+
contests infomation (default: "3")
|
42
43
|
-l, --list list all supported OJ and it's abbreviation
|
43
44
|
-o, --oj <ojs...> OJs to display (choices: "at", "cf", "lc", "lg", "nc")
|
44
45
|
-r, --raw print raw contest list
|
@@ -54,13 +55,13 @@ Options:
|
|
54
55
|
It performs as follows:
|
55
56
|
|
56
57
|
<!-- block_cli begin -->
|
57
|
-
(*The following content was automatically generated using [semantic-release](https://github.com/semantic-release/semantic-release) on
|
58
|
+
(*The following content was automatically generated using [semantic-release](https://github.com/semantic-release/semantic-release) on Tue, 24 May 2022 15:51:06 GMT*)
|
58
59
|
|
59
60
|
<details>
|
60
61
|
<summary> <code>> lsct -L en</code> </summary>
|
61
62
|
|
62
63
|
```text
|
63
|
-
There are
|
64
|
+
There are 1 contests is running on NowCoder
|
64
65
|
|
65
66
|
OJ: NowCoder
|
66
67
|
Contest name: 2022 图论班第一章图匹配例题与习题
|
@@ -69,21 +70,7 @@ Start time: 5/13/2022, 06:00:00
|
|
69
70
|
End time: 5/30/2022, 08:00:00
|
70
71
|
https://ac.nowcoder.com/acm/contest/34649
|
71
72
|
|
72
|
-
|
73
|
-
Contest name: 牛客竞赛字符串专题班 SA(后缀数组 nlogn 构造和应用)习题
|
74
|
-
Rule: ICPC
|
75
|
-
Start time: 5/17/2022, 09:00:00
|
76
|
-
End time: 5/24/2022, 14:00:00
|
77
|
-
https://ac.nowcoder.com/acm/contest/34974
|
78
|
-
|
79
|
-
There are 3 contests on Codeforces in the next 3 days
|
80
|
-
|
81
|
-
OJ: Codeforces
|
82
|
-
Contest name: Educational Codeforces Round 129 (Rated for Div. 2)
|
83
|
-
Rule: ICPC
|
84
|
-
Start time: 5/23/2022, 14:35:00
|
85
|
-
End time: 5/23/2022, 16:35:00
|
86
|
-
https://codeforces.com/contests/1681
|
73
|
+
There are 3 contests on Codeforces,NowCoder in the next 3 days
|
87
74
|
|
88
75
|
OJ: Codeforces
|
89
76
|
Contest name: Codeforces Round #794 (Div. 1)
|
@@ -98,6 +85,13 @@ Rule: Codeforces
|
|
98
85
|
Start time: 5/25/2022, 17:35:00
|
99
86
|
End time: 5/25/2022, 19:50:00
|
100
87
|
https://codeforces.com/contests/1686
|
88
|
+
|
89
|
+
OJ: NowCoder
|
90
|
+
Contest name: 牛客练习赛 99
|
91
|
+
Rule: ICPC
|
92
|
+
Start time: 5/27/2022, 11:00:00
|
93
|
+
End time: 5/27/2022, 13:30:00
|
94
|
+
https://ac.nowcoder.com/acm/contest/34330
|
101
95
|
```
|
102
96
|
|
103
97
|
</details>
|
@@ -108,14 +102,7 @@ https://codeforces.com/contests/1686
|
|
108
102
|
```text
|
109
103
|
No running contests
|
110
104
|
|
111
|
-
There are
|
112
|
-
|
113
|
-
OJ: Codeforces
|
114
|
-
Contest name: Educational Codeforces Round 129 (Rated for Div. 2)
|
115
|
-
Rule: ICPC
|
116
|
-
Start time: 5/23/2022, 14:35:00
|
117
|
-
End time: 5/23/2022, 16:35:00
|
118
|
-
https://codeforces.com/contests/1681
|
105
|
+
There are 3 contests on Codeforces,AtCoder in the next 7 days
|
119
106
|
|
120
107
|
OJ: Codeforces
|
121
108
|
Contest name: Codeforces Round #794 (Div. 1)
|
@@ -171,14 +158,6 @@ https://atcoder.jp/contests/ahc011
|
|
171
158
|
"startTime": "2022-05-25T17:35:00.000Z",
|
172
159
|
"endTime": "2022-05-25T19:50:00.000Z",
|
173
160
|
"url": "https://codeforces.com/contests/1686"
|
174
|
-
},
|
175
|
-
{
|
176
|
-
"ojName": "Codeforces",
|
177
|
-
"name": "Educational Codeforces Round 129 (Rated for Div. 2)",
|
178
|
-
"rule": "ICPC",
|
179
|
-
"startTime": "2022-05-23T14:35:00.000Z",
|
180
|
-
"endTime": "2022-05-23T16:35:00.000Z",
|
181
|
-
"url": "https://codeforces.com/contests/1681"
|
182
161
|
}
|
183
162
|
]
|
184
163
|
}
|
package/dist/cli.js
CHANGED
@@ -24,7 +24,7 @@ function initCmd() {
|
|
24
24
|
return new commander_1.Command()
|
25
25
|
.name(Object.keys(package_json_1.bin)[0])
|
26
26
|
.version(package_json_1.version)
|
27
|
-
.option("-d, --days, <day>", "number of days to display", "3")
|
27
|
+
.option("-d, --days, <day>", "number of days to display, set to 0 to get all contests infomation", "3")
|
28
28
|
.option("-l, --list", "list all supported OJ and it's abbreviation")
|
29
29
|
.addOption(new commander_1.Option("-o, --oj <ojs...>", "OJs to display").choices(Object.keys(oj_1.alloj)))
|
30
30
|
.addOption(new commander_1.Option("-r, --raw", "print raw contest list").conflicts("language"))
|
@@ -68,7 +68,7 @@ function cli(arg, name) {
|
|
68
68
|
else {
|
69
69
|
const config = {
|
70
70
|
abbrList: lodash_1.default.uniq(opts.oj),
|
71
|
-
days: opts.days,
|
71
|
+
days: parseInt(opts.days),
|
72
72
|
sort: opts.sort,
|
73
73
|
running: opts.running,
|
74
74
|
upcoming: opts.upcoming
|
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,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,
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
@@ -63,8 +63,8 @@ function getContests(config) {
|
|
63
63
|
}
|
64
64
|
})))).reduce((ls1, ls2) => ls1.concat(ls2));
|
65
65
|
const ret = {
|
66
|
-
running: cfg.
|
67
|
-
upcoming: cfg.upcoming ? contests.filter(ct => ct.startTime > new Date() && ct.startTime <= new Date(Date.now() + cfg.days * 86400000)) : []
|
66
|
+
running: cfg.running ? contests.filter(ct => ct.startTime <= new Date() && ct.endTime > new Date()) : [],
|
67
|
+
upcoming: cfg.upcoming ? contests.filter(ct => ct.startTime > new Date() && (cfg.days === -1 || ct.startTime <= new Date(Date.now() + cfg.days * 86400000))) : []
|
68
68
|
};
|
69
69
|
if (cfg.sort)
|
70
70
|
Object.values(ret).forEach(ct => ct.sort((a, b) => a.startTime.getTime() - b.startTime.getTime()));
|
@@ -108,16 +108,29 @@ function getContestsInfoText(config, language = "zh-CN") {
|
|
108
108
|
info.push(lang.norunning);
|
109
109
|
}
|
110
110
|
if (cfg.upcoming) {
|
111
|
-
if (
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
111
|
+
if (cfg.days === -1) {
|
112
|
+
if (upcoming.length) {
|
113
|
+
info.push(lodash_1.default.template(lang.upcoming_all)({
|
114
|
+
contestCount: upcoming.length,
|
115
|
+
oj: lodash_1.default.uniq(upcoming.map(contest => contest.ojName))
|
116
|
+
}));
|
117
|
+
info.push(...msg(upcoming));
|
118
|
+
}
|
119
|
+
else
|
120
|
+
info.push(lang.noupcoming_all);
|
121
|
+
}
|
122
|
+
else {
|
123
|
+
if (upcoming.length) {
|
124
|
+
info.push(lodash_1.default.template(lang.upcoming)({
|
125
|
+
contestCount: upcoming.length,
|
126
|
+
days: cfg.days,
|
127
|
+
oj: lodash_1.default.uniq(upcoming.map(contest => contest.ojName))
|
128
|
+
}));
|
129
|
+
info.push(...msg(upcoming));
|
130
|
+
}
|
131
|
+
else
|
132
|
+
info.push(lodash_1.default.template(lang.noupcoming)({ days: cfg.days }));
|
118
133
|
}
|
119
|
-
else
|
120
|
-
info.push(lodash_1.default.template(lang.noupcoming)({ days: cfg.days }));
|
121
134
|
}
|
122
135
|
return pangu_1.default.spacing(info.join("\n\n"));
|
123
136
|
});
|
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;AAEvC,oDAAuB;AACvB,kDAA0B;AAU1B,MAAM,aAAa,GAAG;IAClB,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,UAAK,CAAC;IAC5B,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,IAAI;CACjB,CAAC;AAEF,SAAS,aAAa,CAAC,MAAe;IAElC,MAAM,GAAG,mCAAQ,aAAa,GAAK,MAAM,CAAE,CAAC;IAC5C,IAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC;QAAE,GAAG,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;IACnE,OAAO,GAAG,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAsB,WAAW,CAAC,MAAe;;QAE7C,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAC/B,GAAG,CAAC,QAAQ,CAAC,GAAG,CACZ,CAAM,IAAI,EAAC,EAAE;YAET,IAAI;gBAAE,OAAO,MAAM,UAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;aAAE;YACvC,OAAM,CAAC,EACP;gBACI,OAAO,CAAC,KAAK,CAAC,yCAAyC,UAAK,CAAC,IAAI,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC;gBACrF,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,MAAM,GAAG,GAAG;YACR,OAAO,EAAE,GAAG,CAAC,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/locale/en.json
CHANGED
@@ -2,7 +2,9 @@
|
|
2
2
|
"runnning": "There are ${contestCount} contests is running on ${oj}",
|
3
3
|
"norunning": "No running contests",
|
4
4
|
"upcoming": "There are ${contestCount} contests on ${oj} in the next ${days} days",
|
5
|
+
"upcoming_all": "There will be ${contestCount} contests on ${oj} in the future",
|
5
6
|
"noupcoming": "No contests for the next ${days} days",
|
7
|
+
"noupcoming_all": "There is no contests in the future???",
|
6
8
|
"ojName": "OJ",
|
7
9
|
"name": "Contest name",
|
8
10
|
"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;AAgBlJ,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
@@ -2,7 +2,9 @@
|
|
2
2
|
"runnning": "在 ${oj} 上有 ${contestCount} 场正在进行的比赛",
|
3
3
|
"norunning": "没有正在进行的比赛捏",
|
4
4
|
"upcoming": "接下来的 ${days} 天内在 ${oj} 上有 ${contestCount} 场比赛",
|
5
|
+
"upcoming_all": "将来在 ${oj} 上有 ${contestCount} 场比赛",
|
5
6
|
"noupcoming": "接下来的 ${days} 天内没有比赛捏",
|
7
|
+
"noupcoming_all": "将来竟然没有比赛???",
|
6
8
|
"ojName": "比赛平台",
|
7
9
|
"name": "比赛名称",
|
8
10
|
"rule": "赛制",
|
package/dist/locale/zh-NE.json
CHANGED
@@ -2,7 +2,9 @@
|
|
2
2
|
"runnning": "搁 ${oj} 上有 ${contestCount} 场比赛正偷摸干着呢",
|
3
3
|
"norunning": "这前属实是没比赛打",
|
4
4
|
"upcoming": "之后 ${days} 天搁 ${oj} 上拢共 ${contestCount} 场比赛",
|
5
|
+
"upcoming_all": "往后搁 ${oj} 上有 ${contestCount} 场比赛",
|
5
6
|
"noupcoming": "没成想往后 ${days} 天没比赛打啊",
|
7
|
+
"noupcoming_all": "啥玩意?之后没比赛???",
|
6
8
|
"ojName": "搁哪",
|
7
9
|
"name": "叫啥",
|
8
10
|
"rule": "咋个整法",
|
package/dist/locale/zh-TW.json
CHANGED
@@ -2,7 +2,9 @@
|
|
2
2
|
"runnning": "在 ${oj} 上有 ${contestCount} 場正在進行的比賽",
|
3
3
|
"norunning": "沒有正在進行的比賽",
|
4
4
|
"upcoming": "接下来的 ${days} 天內在 ${oj} 上有 ${contestCount} 場比賽",
|
5
|
+
"upcoming_all": "將來在 ${oj} 上有 ${contestCount} 場比賽",
|
5
6
|
"noupcoming": "接下來的 ${days} 天內沒有比賽",
|
7
|
+
"noupcoming_all": "將來竟然沒有比賽? ? ?",
|
6
8
|
"ojName": "比賽平台",
|
7
9
|
"name": "比賽名稱",
|
8
10
|
"rule": "賽制",
|
package/dist/server.d.ts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
package/dist/server.js
ADDED
@@ -0,0 +1,105 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
9
|
+
});
|
10
|
+
};
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
13
|
+
};
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
15
|
+
const express_1 = __importDefault(require("express"));
|
16
|
+
const index_1 = require("./index");
|
17
|
+
const oj_1 = require("./lib/oj");
|
18
|
+
const locale_1 = require("./locale");
|
19
|
+
const ics_1 = require("ics");
|
20
|
+
const pangu_1 = __importDefault(require("pangu"));
|
21
|
+
const crypto_1 = require("crypto");
|
22
|
+
const commander_1 = require("commander");
|
23
|
+
const package_json_1 = require("../package.json");
|
24
|
+
const lodash_1 = __importDefault(require("lodash"));
|
25
|
+
const app = (0, express_1.default)();
|
26
|
+
function assertType(obj) {
|
27
|
+
}
|
28
|
+
app.get("/", (req, res) => {
|
29
|
+
res.redirect("https://github.com/StableAgOH/lscontests");
|
30
|
+
});
|
31
|
+
app.get("/ics", (req, res) => __awaiter(void 0, void 0, void 0, function* () {
|
32
|
+
const { language, l, ojs, o } = req.query;
|
33
|
+
const lArg = language || l || "zh-CN";
|
34
|
+
let oArg = ojs || o;
|
35
|
+
if (lArg instanceof Array) {
|
36
|
+
res.status(400).send("Multiple languages not supported");
|
37
|
+
return;
|
38
|
+
}
|
39
|
+
if (typeof oArg === "string") {
|
40
|
+
if (oArg.includes(","))
|
41
|
+
oArg = oArg.split(",");
|
42
|
+
else
|
43
|
+
oArg = [oArg];
|
44
|
+
}
|
45
|
+
else if (!oArg)
|
46
|
+
oArg = Object.keys(oj_1.alloj);
|
47
|
+
assertType(oArg);
|
48
|
+
assertType(lArg);
|
49
|
+
const data = yield getIcs(lArg, oArg);
|
50
|
+
res.setHeader("Content-Type", "text/calendar");
|
51
|
+
res.send(data);
|
52
|
+
}));
|
53
|
+
const contestsCache = {
|
54
|
+
contests: [],
|
55
|
+
lastUpdate: 0
|
56
|
+
};
|
57
|
+
function getIcs(lang, ojs) {
|
58
|
+
return __awaiter(this, void 0, void 0, function* () {
|
59
|
+
if (contestsCache.lastUpdate < Date.now() - 1000 * 60 * 5) {
|
60
|
+
const c = yield (0, index_1.getContests)({ days: -1 });
|
61
|
+
contestsCache.contests = lodash_1.default.uniqBy(contestsCache.contests.concat(c.running.concat(c.upcoming)), c => JSON.stringify(c));
|
62
|
+
contestsCache.lastUpdate = Date.now();
|
63
|
+
}
|
64
|
+
const contests = contestsCache.contests.filter(c => ojs.some(oj => c.ojName === oj_1.alloj[oj].name));
|
65
|
+
const langDict = yield (0, locale_1.getLangDict)(lang);
|
66
|
+
const events = contests.map((c) => {
|
67
|
+
const ls = [];
|
68
|
+
ls.push(`${langDict.ojName}: ${c.ojName}`);
|
69
|
+
ls.push(`${langDict.name}: ${c.name}`);
|
70
|
+
ls.push(`${langDict.rule}: ${c.rule}`);
|
71
|
+
ls.push(c.url);
|
72
|
+
const description = pangu_1.default.spacing(ls.join("\n"));
|
73
|
+
const ret = {
|
74
|
+
start: (0, ics_1.convertTimestampToArray)(c.startTime.getTime(), "local"),
|
75
|
+
end: (0, ics_1.convertTimestampToArray)(c.endTime.getTime(), "local"),
|
76
|
+
calName: "算法竞赛",
|
77
|
+
productId: "-//StableAgOH//LSCT//CN",
|
78
|
+
title: c.name,
|
79
|
+
url: c.url,
|
80
|
+
location: c.ojName,
|
81
|
+
categories: [c.rule],
|
82
|
+
uid: `${(0, crypto_1.randomUUID)()}@LSCT`,
|
83
|
+
description,
|
84
|
+
};
|
85
|
+
return ret;
|
86
|
+
});
|
87
|
+
const { value, error } = (0, ics_1.createEvents)(events);
|
88
|
+
if (error)
|
89
|
+
throw error;
|
90
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
91
|
+
return value;
|
92
|
+
});
|
93
|
+
}
|
94
|
+
const command = new commander_1.Command()
|
95
|
+
.name(Object.keys(package_json_1.bin)[1])
|
96
|
+
.version(package_json_1.version)
|
97
|
+
.option("-h, --host, <host>", "Host to listen on", "0.0.0.0")
|
98
|
+
.option("-p, --port, <port>", "Port to listen on", "8080");
|
99
|
+
command.parse();
|
100
|
+
const { host, port } = command.opts();
|
101
|
+
app.listen(port, host, () => {
|
102
|
+
const logURL = `http://${host === "0.0.0.0" ? "127.0.0.1" : host}:${port}/`;
|
103
|
+
console.log(`Listening on ${logURL}`);
|
104
|
+
});
|
105
|
+
//# sourceMappingURL=server.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "lscontests",
|
3
|
-
"version": "1.
|
3
|
+
"version": "2.1.1",
|
4
4
|
"description": "A tool to get information about the contests on each OJ",
|
5
5
|
"keywords": [
|
6
6
|
"cli",
|
@@ -18,7 +18,8 @@
|
|
18
18
|
"license": "GPL-3.0",
|
19
19
|
"main": "./dist/index.js",
|
20
20
|
"bin": {
|
21
|
-
"lsct": "./dist/cli.js"
|
21
|
+
"lsct": "./dist/cli.js",
|
22
|
+
"lsct-s": "./dist/server.js"
|
22
23
|
},
|
23
24
|
"files": [
|
24
25
|
"dist"
|
@@ -28,15 +29,17 @@
|
|
28
29
|
"clean": "rimraf ./dist",
|
29
30
|
"docs": "typedoc",
|
30
31
|
"lint": "eslint && markdownlint README.md",
|
31
|
-
"prestart": "yarn build",
|
32
32
|
"release": "mkdirp docs && yarn semantic-release",
|
33
|
-
"start": "
|
33
|
+
"start": "tsx src/cli.ts",
|
34
|
+
"start-s": "tsx src/server.ts"
|
34
35
|
},
|
35
36
|
"dependencies": {
|
36
37
|
"axios": "^0.27.2",
|
37
38
|
"axios-retry": "^3.2.5",
|
38
39
|
"cheerio": "^1.0.0-rc.10",
|
39
40
|
"commander": "^9.2.0",
|
41
|
+
"express": "^4.18.1",
|
42
|
+
"ics": "^2.35.0",
|
40
43
|
"lodash": "^4.17.21",
|
41
44
|
"pangu": "^4.0.7"
|
42
45
|
},
|
@@ -45,6 +48,7 @@
|
|
45
48
|
"@semantic-release/changelog": "^6.0.1",
|
46
49
|
"@semantic-release/exec": "^6.0.3",
|
47
50
|
"@semantic-release/git": "^10.0.1",
|
51
|
+
"@types/express": "^4.17.13",
|
48
52
|
"@types/lodash": "^4.14.182",
|
49
53
|
"@types/node": "^17.0.34",
|
50
54
|
"@types/pangu": "^3.3.0",
|
@@ -56,6 +60,7 @@
|
|
56
60
|
"mkdirp": "^1.0.4",
|
57
61
|
"rimraf": "^3.0.2",
|
58
62
|
"semantic-release": "^19.0.2",
|
63
|
+
"tsx": "*",
|
59
64
|
"typedoc": "^0.22.15",
|
60
65
|
"typedoc-plugin-extras": "^2.2.3",
|
61
66
|
"typescript": "^4.6.4"
|