lscontests 1.10.2 → 1.11.1

Sign up to get free protection for your applications and to get access to all the features.
package/README.md CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  A tool to get information about the contests on each OJ.
12
12
 
13
- [中文文档](./README-zh-CN.md)
13
+ [中文文档](https://github.com/StableAgOH/lscontests/blob/main/README-zh-CN.md)
14
14
 
15
15
  ## Installation
16
16
 
@@ -45,6 +45,8 @@ Options:
45
45
  -L, --language <lang> set output language (choices: "en", "zh-CN", "zh-NE",
46
46
  "zh-TW", default: "zh-CN")
47
47
  --no-sort do not sort by contests start time, but by OJ order
48
+ --no-running do not list all running contests
49
+ --no-upcoming do not list all upcoming contests
48
50
  -h, --help display help for command
49
51
  ```
50
52
  <!-- block_help end -->
@@ -52,36 +54,43 @@ Options:
52
54
  It performs as follows:
53
55
 
54
56
  <!-- block_cli begin -->
55
- (*The following content was automatically generated by [semantic-release](https://github.com/semantic-release/semantic-release) in Sat, 14 May 2022 16:26:45 GMT*)
57
+ (*The following content was automatically generated using [semantic-release](https://github.com/semantic-release/semantic-release) on Tue, 17 May 2022 04:55:42 GMT*)
56
58
 
57
59
  <details>
58
- <summary> <code>> lsct </code> </summary>
60
+ <summary> <code>> lsct -L en</code> </summary>
59
61
 
60
62
  ```text
61
- 没有正在进行的比赛捏
62
-
63
- 接下来的 3 天内在 LeetCode,Luogu,AtCoder 上有 3 场比赛
64
-
65
- 比赛平台: LeetCode
66
- 比赛名称: Weekly Contest 293
67
- 赛制: AtCoder
68
- 开始时间: 5/15/2022, 02:30:00
69
- 结束时间: 5/15/2022, 04:00:00
70
- https://leetcode.com/contest/weekly-contest-293
71
-
72
- 比赛平台: Luogu
73
- 比赛名称: 「WHOI」Round 1
74
- 赛制: IOI
75
- 开始时间: 5/15/2022, 06:00:00
76
- 结束时间: 5/15/2022, 10:00:00
77
- https://www.luogu.com.cn/contest/67377
78
-
79
- 比赛平台: AtCoder
80
- 比赛名称: AtCoder Regular Contest 140
81
- 赛制: AtCoder
82
- 开始时间: 5/15/2022, 12:00:00
83
- 结束时间: 5/15/2022, 14:00:00
84
- https://atcoder.jp/contests/arc140
63
+ There are 2 contests is running on NowCoder
64
+
65
+ OJ: NowCoder
66
+ Contest name: 牛客竞赛博弈专题班 Sprague-Grundy 函数(SG 函数、图游戏、Nim 和)
67
+ Rule: ICPC
68
+ Start time: 5/13/2022, 04:00:00
69
+ End time: 5/21/2022, 13:00:00
70
+ https://ac.nowcoder.com/acm/contest/34655
71
+
72
+ OJ: NowCoder
73
+ Contest name: 2022 图论班第一章图匹配例题与习题
74
+ Rule: ICPC
75
+ Start time: 5/13/2022, 06:00:00
76
+ End time: 5/30/2022, 08:00:00
77
+ https://ac.nowcoder.com/acm/contest/34649
78
+
79
+ There are 2 contests on Codeforces in the next 3 days
80
+
81
+ OJ: Codeforces
82
+ Contest name: Codeforces Round #792 (Div. 1)
83
+ Rule: Codeforces
84
+ Start time: 5/19/2022, 14:35:00
85
+ End time: 5/19/2022, 16:35:00
86
+ https://codeforces.com/contests/1683
87
+
88
+ OJ: Codeforces
89
+ Contest name: Codeforces Round #792 (Div. 2)
90
+ Rule: Codeforces
91
+ Start time: 5/19/2022, 14:35:00
92
+ End time: 5/19/2022, 16:35:00
93
+ https://codeforces.com/contests/1684
85
94
  ```
86
95
 
87
96
  </details>
@@ -92,14 +101,42 @@ https://atcoder.jp/contests/arc140
92
101
  ```text
93
102
  No running contests
94
103
 
95
- There are 1 contests on AtCoder in the next 7 days
104
+ There are 5 contests on Codeforces,AtCoder in the next 7 days
105
+
106
+ OJ: Codeforces
107
+ Contest name: Codeforces Round #792 (Div. 1)
108
+ Rule: Codeforces
109
+ Start time: 5/19/2022, 14:35:00
110
+ End time: 5/19/2022, 16:35:00
111
+ https://codeforces.com/contests/1683
112
+
113
+ OJ: Codeforces
114
+ Contest name: Codeforces Round #792 (Div. 2)
115
+ Rule: Codeforces
116
+ Start time: 5/19/2022, 14:35:00
117
+ End time: 5/19/2022, 16:35:00
118
+ https://codeforces.com/contests/1684
96
119
 
97
120
  OJ: AtCoder
98
- Contest name: Ⓐ AtCoder Regular Contest 140
121
+ Contest name: Ⓐ AtCoder Beginner Contest 252
99
122
  Rule: AtCoder
100
- Start time: 5/15/2022, 12:00:00
101
- End time: 5/15/2022, 14:00:00
102
- https://atcoder.jp/contests/arc140
123
+ Start time: 5/21/2022, 12:00:00
124
+ End time: 5/21/2022, 13:40:00
125
+ https://atcoder.jp/contests/abc252
126
+
127
+ OJ: Codeforces
128
+ Contest name: Codeforces Round #793 (Div. 2)
129
+ Rule: Codeforces
130
+ Start time: 5/22/2022, 14:35:00
131
+ End time: 5/22/2022, 16:35:00
132
+ https://codeforces.com/contests/1682
133
+
134
+ OJ: Codeforces
135
+ Contest name: Educational Codeforces Round 129 (Rated for Div. 2)
136
+ Rule: ICPC
137
+ Start time: 5/23/2022, 14:35:00
138
+ End time: 5/23/2022, 16:35:00
139
+ https://codeforces.com/contests/1681
103
140
  ```
104
141
 
105
142
  </details>
@@ -113,11 +150,43 @@ https://atcoder.jp/contests/arc140
113
150
  "upcoming": [
114
151
  {
115
152
  "ojName": "AtCoder",
116
- "name": "Ⓐ AtCoder Regular Contest 140",
153
+ "name": "Ⓐ AtCoder Beginner Contest 252",
117
154
  "rule": "AtCoder",
118
- "startTime": "2022-05-15T12:00:00.000Z",
119
- "endTime": "2022-05-15T14:00:00.000Z",
120
- "url": "https://atcoder.jp/contests/arc140"
155
+ "startTime": "2022-05-21T12:00:00.000Z",
156
+ "endTime": "2022-05-21T13:40:00.000Z",
157
+ "url": "https://atcoder.jp/contests/abc252"
158
+ },
159
+ {
160
+ "ojName": "Codeforces",
161
+ "name": "Educational Codeforces Round 129 (Rated for Div. 2)",
162
+ "rule": "ICPC",
163
+ "startTime": "2022-05-23T14:35:00.000Z",
164
+ "endTime": "2022-05-23T16:35:00.000Z",
165
+ "url": "https://codeforces.com/contests/1681"
166
+ },
167
+ {
168
+ "ojName": "Codeforces",
169
+ "name": "Codeforces Round #793 (Div. 2)",
170
+ "rule": "Codeforces",
171
+ "startTime": "2022-05-22T14:35:00.000Z",
172
+ "endTime": "2022-05-22T16:35:00.000Z",
173
+ "url": "https://codeforces.com/contests/1682"
174
+ },
175
+ {
176
+ "ojName": "Codeforces",
177
+ "name": "Codeforces Round #792 (Div. 1)",
178
+ "rule": "Codeforces",
179
+ "startTime": "2022-05-19T14:35:00.000Z",
180
+ "endTime": "2022-05-19T16:35:00.000Z",
181
+ "url": "https://codeforces.com/contests/1683"
182
+ },
183
+ {
184
+ "ojName": "Codeforces",
185
+ "name": "Codeforces Round #792 (Div. 2)",
186
+ "rule": "Codeforces",
187
+ "startTime": "2022-05-19T14:35:00.000Z",
188
+ "endTime": "2022-05-19T16:35:00.000Z",
189
+ "url": "https://codeforces.com/contests/1684"
121
190
  }
122
191
  ]
123
192
  }
package/dist/cli.js CHANGED
@@ -29,7 +29,9 @@ function initCmd() {
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"))
31
31
  .addOption(new commander_1.Option("-L, --language <lang>", "set output language").default("zh-CN").choices(locale_1.langList))
32
- .option("--no-sort", "do not sort by contests start time, but by OJ order");
32
+ .option("--no-sort", "do not sort by contests start time, but by OJ order")
33
+ .option("--no-running", "do not list all running contests")
34
+ .option("--no-upcoming", "do not list all upcoming contests");
33
35
  }
34
36
  /**
35
37
  * CLI entrypoint
@@ -67,7 +69,9 @@ function cli(arg, name) {
67
69
  const config = {
68
70
  abbrList: lodash_1.default.uniq(opts.oj),
69
71
  days: opts.days,
70
- sort: opts.sort
72
+ sort: opts.sort,
73
+ running: opts.running,
74
+ upcoming: opts.upcoming
71
75
  };
72
76
  if (opts.raw)
73
77
  return JSON.stringify(yield (0, _1.getContests)(config), null, 2);
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,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;AAGD;;;;;GAKG;AACH,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"}
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;SAC1E,MAAM,CAAC,cAAc,EAAE,kCAAkC,CAAC;SAC1D,MAAM,CAAC,eAAe,EAAE,mCAAmC,CAAC,CAAC;AACtE,CAAC;AAED;;;;;GAKG;AACH,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;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;aAC1B,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;AApCD,kBAoCC;AAED,IAAG,OAAO,CAAC,IAAI,KAAK,MAAM;IAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -3,6 +3,8 @@ export declare type config = {
3
3
  abbrList?: string[];
4
4
  days?: number;
5
5
  sort?: boolean;
6
+ running?: boolean;
7
+ upcoming?: boolean;
6
8
  };
7
9
  /**
8
10
  * Get the list of all contests matching the given config
@@ -20,5 +22,6 @@ export declare function getContests(config?: config): Promise<{
20
22
  * @returns A string containing detail text of contests that match the given config
21
23
  */
22
24
  export declare function getContestsInfoText(config?: config, language?: string): Promise<string>;
25
+ export * from "./lib/contest";
23
26
  export { cli } from "./cli";
24
- export { addOJ } from "./lib/oj";
27
+ export { oj, addOJ } from "./lib/oj";
package/dist/index.js CHANGED
@@ -1,4 +1,18 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
2
16
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
17
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
18
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -20,7 +34,9 @@ const pangu_1 = __importDefault(require("pangu"));
20
34
  const defaultConfig = {
21
35
  abbrList: Object.keys(oj_1.alloj),
22
36
  days: 3,
23
- sort: true
37
+ sort: true,
38
+ running: true,
39
+ upcoming: true
24
40
  };
25
41
  function resolveConfig(config) {
26
42
  const cfg = Object.assign(Object.assign({}, defaultConfig), config);
@@ -47,8 +63,8 @@ function getContests(config) {
47
63
  }
48
64
  })))).reduce((ls1, ls2) => ls1.concat(ls2));
49
65
  const ret = {
50
- running: contests.filter(ct => ct.startTime <= new Date() && ct.endTime > new Date()),
51
- upcoming: contests.filter(ct => ct.startTime > new Date() && ct.startTime <= new Date(Date.now() + cfg.days * 86400000))
66
+ running: cfg.upcoming ? contests.filter(ct => ct.startTime <= new Date() && ct.endTime > new Date()) : [],
67
+ upcoming: cfg.upcoming ? contests.filter(ct => ct.startTime > new Date() && ct.startTime <= new Date(Date.now() + cfg.days * 86400000)) : []
52
68
  };
53
69
  if (cfg.sort)
54
70
  Object.values(ret).forEach(ct => ct.sort((a, b) => a.startTime.getTime() - b.startTime.getTime()));
@@ -80,29 +96,34 @@ function getContestsInfoText(config, language = "zh-CN") {
80
96
  return ls.join("\n");
81
97
  });
82
98
  }
83
- if (running.length) {
84
- info.push(lodash_1.default.template(lang.runnning)({
85
- contestCount: running.length,
86
- oj: lodash_1.default.uniq(running.map(contest => contest.ojName))
87
- }));
88
- info.push(...msg(running));
99
+ if (cfg.running) {
100
+ if (running.length) {
101
+ info.push(lodash_1.default.template(lang.runnning)({
102
+ contestCount: running.length,
103
+ oj: lodash_1.default.uniq(running.map(contest => contest.ojName))
104
+ }));
105
+ info.push(...msg(running));
106
+ }
107
+ else
108
+ info.push(lang.norunning);
89
109
  }
90
- else
91
- info.push(lang.norunning);
92
- if (upcoming.length) {
93
- info.push(lodash_1.default.template(lang.upcoming)({
94
- contestCount: upcoming.length,
95
- days: cfg.days,
96
- oj: lodash_1.default.uniq(upcoming.map(contest => contest.ojName))
97
- }));
98
- info.push(...msg(upcoming));
110
+ if (cfg.upcoming) {
111
+ if (upcoming.length) {
112
+ info.push(lodash_1.default.template(lang.upcoming)({
113
+ contestCount: upcoming.length,
114
+ days: cfg.days,
115
+ oj: lodash_1.default.uniq(upcoming.map(contest => contest.ojName))
116
+ }));
117
+ info.push(...msg(upcoming));
118
+ }
119
+ else
120
+ info.push(lodash_1.default.template(lang.noupcoming)({ days: cfg.days }));
99
121
  }
100
- else
101
- info.push(lodash_1.default.template(lang.noupcoming)({ days: cfg.days }));
102
122
  return pangu_1.default.spacing(info.join("\n\n"));
103
123
  });
104
124
  }
105
125
  exports.getContestsInfoText = getContestsInfoText;
126
+ __exportStar(require("./lib/contest"), exports);
106
127
  var cli_1 = require("./cli");
107
128
  Object.defineProperty(exports, "cli", { enumerable: true, get: function () { return cli_1.cli; } });
108
129
  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;AAEvC,oDAAuB;AACvB,kDAA0B;AAQ1B,MAAM,aAAa,GAAG;IAClB,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,UAAK,CAAC;IAC5B,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,IAAI;CACb,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,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;YACrF,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC;SAC3H,CAAC;QACF,IAAG,GAAG,CAAC,IAAI;YAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,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,CAAC;QAChH,OAAO,GAAG,CAAC;IACf,CAAC;CAAA;AAvBD,kCAuBC;AAED;;;;;GAKG;AACH,SAAsB,mBAAmB,CAAC,MAAe,EAAE,QAAQ,GAAG,OAAO;;QAEzE,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM,IAAA,oBAAW,EAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;QACrD,MAAM,IAAI,GAAa,EAAE,CAAC;QAE1B,SAAS,GAAG,CAAC,QAAmB;YAE5B,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;gBAE1B,MAAM,EAAE,GAAa,EAAE,CAAC;gBACxB,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC7C,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;gBACzC,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;gBACzC,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;gBACnG,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC/F,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACrB,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;QACP,CAAC;QAED,IAAG,OAAO,CAAC,MAAM,EACjB;YACI,IAAI,CAAC,IAAI,CAAC,gBAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAChC,YAAY,EAAE,OAAO,CAAC,MAAM;gBAC5B,EAAE,EAAE,gBAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aACrD,CAAC,CAAC,CAAC;YACJ,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;SAC9B;;YACI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/B,IAAG,QAAQ,CAAC,MAAM,EAClB;YACI,IAAI,CAAC,IAAI,CAAC,gBAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAChC,YAAY,EAAE,QAAQ,CAAC,MAAM;gBAC7B,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,EAAE,EAAE,gBAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aACtD,CAAC,CAAC,CAAC;YACJ,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;SAC/B;;YACI,IAAI,CAAC,IAAI,CAAC,gBAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAEhE,OAAO,eAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5C,CAAC;CAAA;AA3CD,kDA2CC;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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;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,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;YACzG,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;SAC/I,CAAC;QACF,IAAG,GAAG,CAAC,IAAI;YAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,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,CAAC;QAChH,OAAO,GAAG,CAAC;IACf,CAAC;CAAA;AAvBD,kCAuBC;AAED;;;;;GAKG;AACH,SAAsB,mBAAmB,CAAC,MAAe,EAAE,QAAQ,GAAG,OAAO;;QAEzE,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM,IAAA,oBAAW,EAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;QACrD,MAAM,IAAI,GAAa,EAAE,CAAC;QAE1B,SAAS,GAAG,CAAC,QAAmB;YAE5B,OAAO,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;gBAE1B,MAAM,EAAE,GAAa,EAAE,CAAC;gBACxB,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC7C,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;gBACzC,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;gBACzC,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;gBACnG,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC/F,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACrB,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;QACP,CAAC;QAED,IAAG,GAAG,CAAC,OAAO,EACd;YACI,IAAG,OAAO,CAAC,MAAM,EACjB;gBACI,IAAI,CAAC,IAAI,CAAC,gBAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAChC,YAAY,EAAE,OAAO,CAAC,MAAM;oBAC5B,EAAE,EAAE,gBAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;iBACrD,CAAC,CAAC,CAAC;gBACJ,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;aAC9B;;gBACI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAClC;QAED,IAAG,GAAG,CAAC,QAAQ,EACf;YACI,IAAG,QAAQ,CAAC,MAAM,EAClB;gBACI,IAAI,CAAC,IAAI,CAAC,gBAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAChC,YAAY,EAAE,QAAQ,CAAC,MAAM;oBAC7B,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,EAAE,EAAE,gBAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;iBACtD,CAAC,CAAC,CAAC;gBACJ,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;aAC/B;;gBACI,IAAI,CAAC,IAAI,CAAC,gBAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;SACnE;QAED,OAAO,eAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5C,CAAC;CAAA;AAlDD,kDAkDC;AAED,gDAA8B;AAC9B,6BAA4B;AAAnB,0FAAA,GAAG,OAAA;AACZ,+BAAqC;AAAxB,2FAAA,KAAK,OAAA"}
@@ -1,3 +1,6 @@
1
+ /**
2
+ * LeDuo: From Luogu OJ
3
+ */
1
4
  export declare type rule = "OI" | "IOI" | "ICPC" | "LeDuo" | "Codeforces" | "AtCoder";
2
5
  export declare type contest = {
3
6
  ojName: string;
@@ -1,4 +1,9 @@
1
1
  import { contest } from "../contest";
2
+ /**
3
+ * name: OJ name
4
+ *
5
+ * get: return a Promise that contains an array of all contests with end times after the current time
6
+ */
2
7
  export declare type oj = {
3
8
  name: string;
4
9
  get: () => Promise<contest[]>;
@@ -1,11 +1,17 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.addOJ = exports.alloj = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const axios_retry_1 = __importDefault(require("axios-retry"));
4
9
  const atcoder_1 = require("./atcoder");
5
10
  const codeforces_1 = require("./codeforces");
6
11
  const leetcode_1 = require("./leetcode");
7
12
  const luogu_1 = require("./luogu");
8
13
  const nowcoder_1 = require("./nowcoder");
14
+ (0, axios_retry_1.default)(axios_1.default, { retries: 3, retryDelay: (retryCount) => retryCount * 1000 });
9
15
  exports.alloj = {
10
16
  at: atcoder_1.at,
11
17
  cf: codeforces_1.cf,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/oj/index.ts"],"names":[],"mappings":";;;AACA,uCAA+B;AAC/B,6CAAkC;AAClC,yCAAgC;AAChC,mCAA6B;AAC7B,yCAAgC;AAOnB,QAAA,KAAK,GAA4B;IAC1C,EAAE,EAAF,YAAE;IACF,EAAE,EAAF,eAAE;IACF,EAAE,EAAF,aAAE;IACF,EAAE,EAAF,UAAE;IACF,EAAE,EAAF,aAAE;CACL,CAAC;AAEF;;;;GAIG;AACH,SAAgB,KAAK,CAAC,IAAY,EAAE,EAAM;IAEtC,aAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACrB,CAAC;AAHD,sBAGC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/oj/index.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,8DAAqC;AAErC,uCAA+B;AAC/B,6CAAkC;AAClC,yCAAgC;AAChC,mCAA6B;AAC7B,yCAAgC;AAEhC,IAAA,qBAAU,EAAC,eAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,IAAI,EAAE,CAAC,CAAC;AAYpE,QAAA,KAAK,GAA4B;IAC1C,EAAE,EAAF,YAAE;IACF,EAAE,EAAF,eAAE;IACF,EAAE,EAAF,aAAE;IACF,EAAE,EAAF,UAAE;IACF,EAAE,EAAF,aAAE;CACL,CAAC;AAEF;;;;GAIG;AACH,SAAgB,KAAK,CAAC,IAAY,EAAE,EAAM;IAEtC,aAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACrB,CAAC;AAHD,sBAGC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lscontests",
3
- "version": "1.10.2",
3
+ "version": "1.11.1",
4
4
  "description": "A tool to get information about the contests on each OJ",
5
5
  "keywords": [
6
6
  "cli",
@@ -26,28 +26,36 @@
26
26
  "scripts": {
27
27
  "build": "rimraf ./dist/* && tsc -p src",
28
28
  "clean": "rimraf ./dist",
29
- "docs": "typedoc --footerTypedocVersion --footerDate --footerTime",
29
+ "docs": "typedoc",
30
30
  "lint": "eslint && markdownlint README.md",
31
31
  "prestart": "yarn build",
32
+ "release": "mkdirp docs && yarn semantic-release",
32
33
  "start": "node ./dist/cli.js"
33
34
  },
34
35
  "dependencies": {
35
36
  "axios": "^0.27.2",
37
+ "axios-retry": "^3.2.5",
36
38
  "cheerio": "^1.0.0-rc.10",
37
39
  "commander": "^9.2.0",
38
40
  "lodash": "^4.17.21",
39
41
  "pangu": "^4.0.7"
40
42
  },
41
43
  "devDependencies": {
44
+ "@qiwi/semantic-release-gh-pages-plugin": "^5.2.2",
45
+ "@semantic-release/changelog": "^6.0.1",
46
+ "@semantic-release/exec": "^6.0.3",
47
+ "@semantic-release/git": "^10.0.1",
42
48
  "@types/lodash": "^4.14.182",
43
- "@types/node": "^17.0.33",
49
+ "@types/node": "^17.0.34",
44
50
  "@types/pangu": "^3.3.0",
45
- "@typescript-eslint/eslint-plugin": "^5.23.0",
46
- "@typescript-eslint/parser": "^5.23.0",
51
+ "@typescript-eslint/eslint-plugin": "^5.24.0",
52
+ "@typescript-eslint/parser": "^5.24.0",
47
53
  "cz-conventional-changelog": "3.3.0",
48
54
  "eslint": "^8.15.0",
49
55
  "markdownlint-cli": "^0.31.1",
56
+ "mkdirp": "^1.0.4",
50
57
  "rimraf": "^3.0.2",
58
+ "semantic-release": "^19.0.2",
51
59
  "typedoc": "^0.22.15",
52
60
  "typedoc-plugin-extras": "^2.2.3",
53
61
  "typescript": "^4.6.4"