@20syldev/api 3.5.0 → 4.0.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.
Files changed (180) hide show
  1. package/.prettierrc +7 -0
  2. package/README.md +32 -33
  3. package/dist/app.js +36 -0
  4. package/dist/app.js.map +1 -0
  5. package/dist/config/env.js +73 -0
  6. package/dist/config/env.js.map +1 -0
  7. package/dist/config/versions.js +72 -0
  8. package/dist/config/versions.js.map +1 -0
  9. package/dist/constants.js +42 -0
  10. package/dist/constants.js.map +1 -0
  11. package/dist/middleware/cors.js +15 -0
  12. package/dist/middleware/cors.js.map +1 -0
  13. package/dist/middleware/error.js +6 -0
  14. package/dist/middleware/error.js.map +1 -0
  15. package/dist/middleware/json.js +8 -0
  16. package/dist/middleware/json.js.map +1 -0
  17. package/dist/middleware/logger.js +26 -0
  18. package/dist/middleware/logger.js.map +1 -0
  19. package/dist/middleware/ratelimit.js +58 -0
  20. package/dist/middleware/ratelimit.js.map +1 -0
  21. package/dist/middleware/version.js +30 -0
  22. package/dist/middleware/version.js.map +1 -0
  23. package/dist/modules/v3/algorithms.js +221 -0
  24. package/dist/modules/v3/algorithms.js.map +1 -0
  25. package/{modules → dist/modules}/v3/captcha.js +4 -13
  26. package/dist/modules/v3/captcha.js.map +1 -0
  27. package/dist/modules/v3/chat.js +103 -0
  28. package/dist/modules/v3/chat.js.map +1 -0
  29. package/{modules → dist/modules}/v3/color.js +12 -13
  30. package/dist/modules/v3/color.js.map +1 -0
  31. package/dist/modules/v3/convert.js +41 -0
  32. package/dist/modules/v3/convert.js.map +1 -0
  33. package/dist/modules/v3/domain.js +83 -0
  34. package/dist/modules/v3/domain.js.map +1 -0
  35. package/dist/modules/v3/hash.js +16 -0
  36. package/dist/modules/v3/hash.js.map +1 -0
  37. package/dist/modules/v3/hyperplanning.js +50 -0
  38. package/dist/modules/v3/hyperplanning.js.map +1 -0
  39. package/dist/modules/v3/levenshtein.js +38 -0
  40. package/dist/modules/v3/levenshtein.js.map +1 -0
  41. package/dist/modules/v3/personal.js +129 -0
  42. package/dist/modules/v3/personal.js.map +1 -0
  43. package/dist/modules/v3/qrcode.js +21 -0
  44. package/dist/modules/v3/qrcode.js.map +1 -0
  45. package/dist/modules/v3/tic_tac_toe.js +221 -0
  46. package/dist/modules/v3/tic_tac_toe.js.map +1 -0
  47. package/dist/modules/v3/time.js +88 -0
  48. package/dist/modules/v3/time.js.map +1 -0
  49. package/{modules → dist/modules}/v3/token.js +10 -11
  50. package/dist/modules/v3/token.js.map +1 -0
  51. package/dist/modules/v3/username.js +92 -0
  52. package/dist/modules/v3/username.js.map +1 -0
  53. package/dist/modules/v3/utils.js +70 -0
  54. package/dist/modules/v3/utils.js.map +1 -0
  55. package/dist/modules/v3.js +16 -0
  56. package/dist/modules/v3.js.map +1 -0
  57. package/dist/modules/v4/algorithms.js +200 -0
  58. package/dist/modules/v4/algorithms.js.map +1 -0
  59. package/dist/modules/v4/captcha.js +35 -0
  60. package/dist/modules/v4/captcha.js.map +1 -0
  61. package/dist/modules/v4/chat.js +92 -0
  62. package/dist/modules/v4/chat.js.map +1 -0
  63. package/dist/modules/v4/color.js +43 -0
  64. package/dist/modules/v4/color.js.map +1 -0
  65. package/dist/modules/v4/convert.js +33 -0
  66. package/dist/modules/v4/convert.js.map +1 -0
  67. package/dist/modules/v4/dice.js +30 -0
  68. package/dist/modules/v4/dice.js.map +1 -0
  69. package/dist/modules/v4/domain.js +78 -0
  70. package/dist/modules/v4/domain.js.map +1 -0
  71. package/dist/modules/v4/encode.js +165 -0
  72. package/dist/modules/v4/encode.js.map +1 -0
  73. package/dist/modules/v4/geo.js +41 -0
  74. package/dist/modules/v4/geo.js.map +1 -0
  75. package/dist/modules/v4/hash.js +9 -0
  76. package/dist/modules/v4/hash.js.map +1 -0
  77. package/dist/modules/v4/hyperplanning.js +42 -0
  78. package/dist/modules/v4/hyperplanning.js.map +1 -0
  79. package/dist/modules/v4/levenshtein.js +29 -0
  80. package/dist/modules/v4/levenshtein.js.map +1 -0
  81. package/dist/modules/v4/palette.js +89 -0
  82. package/dist/modules/v4/palette.js.map +1 -0
  83. package/dist/modules/v4/personal.js +125 -0
  84. package/dist/modules/v4/personal.js.map +1 -0
  85. package/dist/modules/v4/placeholder.js +96 -0
  86. package/dist/modules/v4/placeholder.js.map +1 -0
  87. package/dist/modules/v4/qrcode.js +12 -0
  88. package/dist/modules/v4/qrcode.js.map +1 -0
  89. package/dist/modules/v4/statistics.js +41 -0
  90. package/dist/modules/v4/statistics.js.map +1 -0
  91. package/dist/modules/v4/text.js +293 -0
  92. package/dist/modules/v4/text.js.map +1 -0
  93. package/dist/modules/v4/tic_tac_toe.js +206 -0
  94. package/dist/modules/v4/tic_tac_toe.js.map +1 -0
  95. package/dist/modules/v4/time.js +73 -0
  96. package/dist/modules/v4/time.js.map +1 -0
  97. package/dist/modules/v4/token.js +36 -0
  98. package/dist/modules/v4/token.js.map +1 -0
  99. package/dist/modules/v4/username.js +87 -0
  100. package/dist/modules/v4/username.js.map +1 -0
  101. package/dist/modules/v4/utils.js +26 -0
  102. package/dist/modules/v4/utils.js.map +1 -0
  103. package/dist/modules/v4/validate.js +54 -0
  104. package/dist/modules/v4/validate.js.map +1 -0
  105. package/dist/modules/v4.js +18 -0
  106. package/dist/modules/v4.js.map +1 -0
  107. package/dist/routes/delete.js +65 -0
  108. package/dist/routes/delete.js.map +1 -0
  109. package/dist/routes/get.js +441 -0
  110. package/dist/routes/get.js.map +1 -0
  111. package/dist/routes/index.js +50 -0
  112. package/dist/routes/index.js.map +1 -0
  113. package/dist/routes/patch.js +41 -0
  114. package/dist/routes/patch.js.map +1 -0
  115. package/dist/routes/post.js +185 -0
  116. package/dist/routes/post.js.map +1 -0
  117. package/dist/storage/index.js +13 -0
  118. package/dist/storage/index.js.map +1 -0
  119. package/dist/types/storage.js +2 -0
  120. package/dist/types/storage.js.map +1 -0
  121. package/dist/utils/response.js +10 -0
  122. package/dist/utils/response.js.map +1 -0
  123. package/dist/utils/version.js +3 -0
  124. package/dist/utils/version.js.map +1 -0
  125. package/eslint.config.js +20 -0
  126. package/package.json +30 -15
  127. package/src/app.ts +44 -0
  128. package/src/config/env.ts +81 -0
  129. package/src/config/versions.ts +80 -0
  130. package/src/constants.ts +28 -0
  131. package/src/middleware/cors.ts +17 -0
  132. package/src/middleware/error.ts +7 -0
  133. package/src/middleware/json.ts +9 -0
  134. package/src/middleware/logger.ts +31 -0
  135. package/src/middleware/ratelimit.ts +66 -0
  136. package/src/middleware/version.ts +39 -0
  137. package/{modules → src/modules}/v3/algorithms.js +1 -1
  138. package/src/modules/v3/captcha.js +60 -0
  139. package/{modules → src/modules}/v3/chat.js +6 -4
  140. package/src/modules/v3/color.js +60 -0
  141. package/{modules → src/modules}/v3/convert.js +5 -5
  142. package/{modules → src/modules}/v3/domain.js +51 -4
  143. package/{modules → src/modules}/v3/hash.js +1 -1
  144. package/{modules → src/modules}/v3/hyperplanning.js +11 -10
  145. package/{modules → src/modules}/v3/levenshtein.js +3 -3
  146. package/{modules → src/modules}/v3/personal.js +20 -8
  147. package/{modules → src/modules}/v3/qrcode.js +1 -1
  148. package/{modules → src/modules}/v3/tic_tac_toe.js +24 -18
  149. package/{modules → src/modules}/v3/time.js +22 -11
  150. package/src/modules/v3/token.js +54 -0
  151. package/src/modules/v3/username.js +94 -0
  152. package/{modules → src/modules}/v3/utils.js +2 -2
  153. package/{modules → src/modules}/v3.js +1 -1
  154. package/src/modules/v4/algorithms.ts +155 -0
  155. package/src/modules/v4/captcha.ts +49 -0
  156. package/src/modules/v4/chat.ts +99 -0
  157. package/src/modules/v4/color.ts +64 -0
  158. package/src/modules/v4/convert.ts +38 -0
  159. package/src/modules/v4/domain.ts +81 -0
  160. package/src/modules/v4/hash.ts +9 -0
  161. package/src/modules/v4/hyperplanning.ts +58 -0
  162. package/src/modules/v4/levenshtein.ts +38 -0
  163. package/src/modules/v4/personal.ts +147 -0
  164. package/src/modules/v4/qrcode.ts +11 -0
  165. package/src/modules/v4/tic_tac_toe.ts +223 -0
  166. package/src/modules/v4/time.ts +92 -0
  167. package/src/modules/v4/token.ts +43 -0
  168. package/src/modules/v4/username.ts +89 -0
  169. package/src/modules/v4/utils.ts +38 -0
  170. package/src/modules/v4.ts +15 -0
  171. package/src/routes/get.ts +461 -0
  172. package/src/routes/index.ts +58 -0
  173. package/src/routes/post.ts +200 -0
  174. package/src/storage/index.ts +16 -0
  175. package/src/types/express.d.ts +17 -0
  176. package/src/types/storage.ts +48 -0
  177. package/src/utils/response.ts +11 -0
  178. package/tsconfig.json +17 -0
  179. package/app.js +0 -865
  180. package/modules/v3/username.js +0 -32
@@ -0,0 +1,441 @@
1
+ import { Router } from 'express';
2
+ import { versions } from '../config/versions.js';
3
+ import { env } from '../config/env.js';
4
+ import { ipLimits } from '../storage/index.js';
5
+ import { chatStorage } from '../storage/index.js';
6
+ import { DOCS_URL, GITHUB_CACHE_TTL } from '../constants.js';
7
+ import { error } from '../utils/response.js';
8
+ const router = Router();
9
+ let activity = [];
10
+ let lastFetch = 0;
11
+ // Display version information
12
+ router.get('/:version', (req, res) => {
13
+ const version = req.params.version;
14
+ const versionConfig = versions[version];
15
+ const endpoints = Object.keys(versionConfig.endpoints).reduce((acc, method) => {
16
+ const endpointList = versionConfig.endpoints[method];
17
+ if (!endpointList)
18
+ return acc;
19
+ acc[method] = endpointList
20
+ .filter(({ name }) => name !== 'website')
21
+ .sort((a, b) => a.name.localeCompare(b.name))
22
+ .reduce((group, endpoint) => {
23
+ if (endpoint.children) {
24
+ group[endpoint.name] = Object.keys(endpoint.children)
25
+ .sort((a, b) => a.localeCompare(b))
26
+ .reduce((childGroup, childName) => {
27
+ childGroup[childName] = `/${version}${endpoint.children[childName]}`;
28
+ return childGroup;
29
+ }, {});
30
+ }
31
+ else {
32
+ group[endpoint.name] = `/${version}${endpoint.path}`;
33
+ }
34
+ return group;
35
+ }, {});
36
+ return acc;
37
+ }, {});
38
+ res.jsonResponse({
39
+ version,
40
+ documentation: `${DOCS_URL}/${version}`,
41
+ endpoints,
42
+ });
43
+ });
44
+ // Algorithms
45
+ router.get('/:version/algorithms', (req, res) => {
46
+ const { method, value, value2 } = req.query;
47
+ const { version } = req.params;
48
+ const algorithms = req.module.algorithms;
49
+ if (!algorithms || !algorithms[method]) {
50
+ error(res, 400, 'Please provide a valid algorithm (?method={algorithm})', `${version}/algorithms`);
51
+ return;
52
+ }
53
+ try {
54
+ const answer = algorithms[method](value, value2);
55
+ res.jsonResponse({ answer });
56
+ }
57
+ catch (err) {
58
+ error(res, 400, err.message, `${req.version}/algorithms`);
59
+ }
60
+ });
61
+ // Generate captcha
62
+ router.get('/:version/captcha', (req, res) => {
63
+ const text = req.query.text;
64
+ if (!text) {
65
+ error(res, 400, 'Please provide a valid argument (?text={text})', `${req.version}/captcha`);
66
+ return;
67
+ }
68
+ try {
69
+ const result = req.module.captcha(text);
70
+ res.type('png').send(result);
71
+ }
72
+ catch (err) {
73
+ error(res, 400, err.message, `${req.version}/captcha`);
74
+ }
75
+ });
76
+ // Display stored data
77
+ router.get('/:version/chat', (req, res) => {
78
+ try {
79
+ const messages = req.module.chat('fetch', {
80
+ username: 'system',
81
+ storage: chatStorage,
82
+ });
83
+ res.jsonResponse(messages);
84
+ }
85
+ catch (err) {
86
+ error(res, 400, err.message);
87
+ }
88
+ });
89
+ // GET private chat error
90
+ router.get('/:version/chat/private', (_req, res) => {
91
+ error(res, 405, 'This endpoint only supports POST requests.');
92
+ });
93
+ // Generate color
94
+ router.get('/:version/color', (req, res) => {
95
+ try {
96
+ const result = req.module.color();
97
+ res.jsonResponse(result);
98
+ }
99
+ catch (err) {
100
+ error(res, 400, err.message, `${req.version}/color`);
101
+ }
102
+ });
103
+ // Convert units
104
+ router.get('/:version/convert', (req, res) => {
105
+ const { value, from, to } = req.query;
106
+ if (!value || isNaN(Number(value))) {
107
+ error(res, 400, 'Please provide a valid value (?value={value})', `${req.version}/convert`);
108
+ return;
109
+ }
110
+ if (!from) {
111
+ error(res, 400, 'Please provide a valid source unit (&from={unit})', `${req.version}/convert`);
112
+ return;
113
+ }
114
+ if (!to) {
115
+ error(res, 400, 'Please provide a valid target unit (&to={unit})', `${req.version}/convert`);
116
+ return;
117
+ }
118
+ try {
119
+ const result = req.module.convert(value, from, to);
120
+ res.jsonResponse(result);
121
+ }
122
+ catch (err) {
123
+ error(res, 400, err.message, `${req.version}/convert`);
124
+ }
125
+ });
126
+ // Generate domain informations
127
+ router.get('/:version/domain', (req, res) => {
128
+ try {
129
+ const result = req.module.domain();
130
+ res.jsonResponse(result);
131
+ }
132
+ catch (err) {
133
+ error(res, 400, err.message, `${req.version}/domain`);
134
+ }
135
+ });
136
+ // RPG Dice roller
137
+ router.get('/:version/dice', (req, res) => {
138
+ const { roll } = req.query;
139
+ const { version } = req.params;
140
+ const dice = req.module.dice;
141
+ if (!dice) {
142
+ error(res, 404, `Endpoint not available in ${version}.`, `${version}/dice`);
143
+ return;
144
+ }
145
+ if (!roll) {
146
+ error(res, 400, 'Please provide a roll notation (?roll=2d6+3)', `${version}/dice`);
147
+ return;
148
+ }
149
+ try {
150
+ const result = dice(roll);
151
+ res.jsonResponse(result);
152
+ }
153
+ catch (err) {
154
+ error(res, 400, err.message, `${req.version}/dice`);
155
+ }
156
+ });
157
+ // GET planning error
158
+ router.get('/:version/hyperplanning', (_req, res) => {
159
+ error(res, 405, 'This endpoint only supports POST requests.');
160
+ });
161
+ // GET hash error
162
+ router.get('/:version/hash', (_req, res) => {
163
+ error(res, 405, 'This endpoint only supports POST requests.');
164
+ });
165
+ // Display API informations
166
+ router.get('/:version/infos', (req, res) => {
167
+ const endpoints = Object.values(versions[req.version].endpoints).flat();
168
+ const paths = endpoints.flatMap((e) => (e.children ? Object.values(e.children) : e.path ? [e.path] : []));
169
+ res.jsonResponse({
170
+ endpoints: new Set(paths).size,
171
+ last_version: Object.keys(versions).pop(),
172
+ documentation: DOCS_URL,
173
+ github: 'https://github.com/20syldev/api',
174
+ creation: 'November 25th 2024',
175
+ });
176
+ });
177
+ // Calculate Levenshtein distance
178
+ router.get('/:version/levenshtein', (req, res) => {
179
+ const { str1, str2 } = req.query;
180
+ if (!str1 || typeof str1 !== 'string') {
181
+ error(res, 400, 'Please provide a first string (?str1={string})', `${req.version}/levenshtein`);
182
+ return;
183
+ }
184
+ if (!str2 || typeof str2 !== 'string') {
185
+ error(res, 400, 'Please provide a second string (&str2={string})', `${req.version}/levenshtein`);
186
+ return;
187
+ }
188
+ try {
189
+ const result = req.module.levenshtein(str1, str2);
190
+ res.jsonResponse(result);
191
+ }
192
+ catch (err) {
193
+ error(res, 400, err.message, `${req.version}/levenshtein`);
194
+ }
195
+ });
196
+ // Generate personal data
197
+ router.get('/:version/personal', (req, res) => {
198
+ try {
199
+ const result = req.module.personal();
200
+ res.jsonResponse(result);
201
+ }
202
+ catch (err) {
203
+ error(res, 400, err.message, `${req.version}/personal`);
204
+ }
205
+ });
206
+ // Generate QR Code
207
+ router.get('/:version/qrcode', async (req, res) => {
208
+ const { url } = req.query;
209
+ if (!url) {
210
+ error(res, 400, 'Please provide a valid url (?url={URL})', `${req.version}/qrcode`);
211
+ return;
212
+ }
213
+ try {
214
+ const result = await req.module.qrcode(url);
215
+ res.jsonResponse(result);
216
+ }
217
+ catch (err) {
218
+ error(res, 400, err.message, `${req.version}/qrcode`);
219
+ }
220
+ });
221
+ // Statistics on a list of numbers
222
+ router.get('/:version/statistics', (req, res) => {
223
+ const { values } = req.query;
224
+ const { version } = req.params;
225
+ const statistics = req.module.statistics;
226
+ if (!statistics) {
227
+ error(res, 404, `Endpoint not available in ${version}.`, `${version}/statistics`);
228
+ return;
229
+ }
230
+ if (!values) {
231
+ error(res, 400, 'Please provide a list of values (?values=1,2,3)', `${version}/statistics`);
232
+ return;
233
+ }
234
+ try {
235
+ const result = statistics(values);
236
+ res.jsonResponse(result);
237
+ }
238
+ catch (err) {
239
+ error(res, 400, err.message, `${req.version}/statistics`);
240
+ }
241
+ });
242
+ // GET tic-tac-toe errors
243
+ router.get('/:version/tic-tac-toe', (_req, res) => {
244
+ error(res, 405, 'This endpoint only supports POST requests.');
245
+ });
246
+ router.get('/:version/tic-tac-toe/fetch', (_req, res) => {
247
+ error(res, 405, 'This endpoint only supports POST requests.');
248
+ });
249
+ router.get('/:version/tic-tac-toe/list', (_req, res) => {
250
+ error(res, 405, 'This endpoint only supports POST requests.');
251
+ });
252
+ // Display or generate time informations
253
+ router.get('/:version/time', (req, res) => {
254
+ const { type = 'live', start, end, format, timezone } = req.query;
255
+ const validFormats = [
256
+ 'iso',
257
+ 'utc',
258
+ 'timestamp',
259
+ 'locale',
260
+ 'date',
261
+ 'time',
262
+ 'year',
263
+ 'month',
264
+ 'day',
265
+ 'hour',
266
+ 'minute',
267
+ 'second',
268
+ 'ms',
269
+ 'dayOfWeek',
270
+ 'dayOfYear',
271
+ 'weekNumber',
272
+ 'timezone',
273
+ 'timezoneOffset',
274
+ ];
275
+ const validTimezones = ['UTC', 'America/New_York', 'Europe/Paris', 'Asia/Tokyo', 'Australia/Sydney'];
276
+ if (type !== 'live' && type !== 'random') {
277
+ error(res, 400, 'Please provide a valid type (?type={type})', `${req.version}/time`);
278
+ return;
279
+ }
280
+ if (start && !Date.parse(start)) {
281
+ error(res, 400, 'Please provide a valid start date (?start={YYYY-MM-DD})', `${req.version}/time`);
282
+ return;
283
+ }
284
+ if (end && !Date.parse(end)) {
285
+ error(res, 400, 'Please provide a valid end date (?end={YYYY-MM-DD})', `${req.version}/time`);
286
+ return;
287
+ }
288
+ if (format && !validFormats.includes(format)) {
289
+ error(res, 400, 'Please provide a valid format (?format={format})', `${req.version}/time`);
290
+ return;
291
+ }
292
+ if (timezone && !validTimezones.includes(timezone)) {
293
+ error(res, 400, 'Please provide a valid timezone (?timezone={timezone})', `${req.version}/time`);
294
+ return;
295
+ }
296
+ try {
297
+ const time = req.module.time(type, start, end, format, timezone);
298
+ res.jsonResponse(time);
299
+ }
300
+ catch (err) {
301
+ error(res, 400, err.message, `${req.version}/time`);
302
+ }
303
+ });
304
+ // GET token error
305
+ router.get('/:version/token', (_req, res) => {
306
+ error(res, 405, 'This endpoint only supports POST requests.');
307
+ });
308
+ // Generate username
309
+ router.get('/:version/username', (req, res) => {
310
+ try {
311
+ const result = req.module.username();
312
+ res.jsonResponse(result);
313
+ }
314
+ catch (err) {
315
+ error(res, 400, err.message, `${req.version}/username`);
316
+ }
317
+ });
318
+ // Display informations for owner's website
319
+ router.get('/:version/website', async (req, res) => {
320
+ const currentTime = Date.now();
321
+ if (currentTime - lastFetch >= GITHUB_CACHE_TTL) {
322
+ try {
323
+ const username = '20syldev';
324
+ const token = env.GITHUB_TOKEN;
325
+ const lastYear = new Date(new Date().setFullYear(new Date().getFullYear() - 1)).toISOString().split('T')[0];
326
+ const query = `
327
+ {
328
+ user(login: "${username}") {
329
+ contributionsCollection(from: "${lastYear}T00:00:00Z") {
330
+ contributionCalendar {
331
+ totalContributions
332
+ weeks {
333
+ firstDay
334
+ contributionDays {
335
+ date
336
+ contributionCount
337
+ }
338
+ }
339
+ }
340
+ }
341
+ }
342
+ }`;
343
+ const apiResponse = await fetch('https://api.github.com/graphql', {
344
+ method: 'POST',
345
+ headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json' },
346
+ body: JSON.stringify({ query }),
347
+ });
348
+ if (!apiResponse.ok)
349
+ throw new Error('Error fetching data.');
350
+ const data = (await apiResponse.json());
351
+ const user = data?.data?.user;
352
+ const weeks = user?.contributionsCollection?.contributionCalendar?.weeks || [];
353
+ activity = weeks.map((w) => ({
354
+ week: w.firstDay,
355
+ total: w.contributionDays.reduce((sum, d) => sum + d.contributionCount, 0),
356
+ days: w.contributionDays.map((d) => ({ date: d.date, count: d.contributionCount })),
357
+ }));
358
+ lastFetch = currentTime;
359
+ }
360
+ catch {
361
+ activity = [];
362
+ }
363
+ }
364
+ const response = {
365
+ versions: {
366
+ 2048: env.G_2048,
367
+ api: env.API,
368
+ cdn: env.CDN,
369
+ coop_api: env.COOP_API,
370
+ coop_status: env.COOP_STATUS,
371
+ chat: env.CHAT,
372
+ digit: env.DIGIT,
373
+ doc_coopbot: env.DOC_COOPBOT,
374
+ docs: env.DOCS,
375
+ donut: env.DONUT,
376
+ drawio_plugin: env.DRAWIO_PLUGIN,
377
+ flowers: env.FLOWERS,
378
+ gemsync: env.GEMSYNC,
379
+ gft: env.GFT,
380
+ gitsite: env.GITSITE,
381
+ lebonchar: env.LEBONCHAR,
382
+ logger: env.LOGGER,
383
+ logs: env.LOGS,
384
+ logvault: env.LOGVAULT,
385
+ lyah: env.LYAH,
386
+ minify: env.MINIFY,
387
+ mn: env.MN,
388
+ monitoring: env.MONITORING,
389
+ morpion: env.MORPION,
390
+ nitrogen: env.NITROGEN,
391
+ old_database: env.OLD_DATABASE,
392
+ password: env.PASSWORD,
393
+ php: env.PHP,
394
+ planning: env.PLANNING,
395
+ ping: env.PING,
396
+ portfolio: env.PORTFOLIO,
397
+ python_api: env.PYTHON_API,
398
+ readme: env.README,
399
+ timestamp: env.TIMESTAMP,
400
+ terminal: env.TERMINAL,
401
+ valentine: env.VALENTINE,
402
+ wrkit: env.WRKIT,
403
+ zpki: env.ZPKI,
404
+ },
405
+ patched_projects: env.PATCH,
406
+ updated_projects: env.RECENT,
407
+ new_projects: env.NEW,
408
+ sub_domains: env.DOMAINS,
409
+ stats: {
410
+ 1: env.STATS1,
411
+ 2: env.STATS2,
412
+ 3: env.STATS3,
413
+ 4: env.STATS4,
414
+ 5: Object.keys(ipLimits).length,
415
+ activity,
416
+ },
417
+ tag: env.TAG,
418
+ active: env.ACTIVE,
419
+ };
420
+ const key = req.query.key;
421
+ if (key) {
422
+ if (['__proto__', 'constructor', 'prototype'].some((p) => key.includes(p))) {
423
+ error(res, 400, 'Invalid key.');
424
+ return;
425
+ }
426
+ const keys = key.split('.');
427
+ let result = response;
428
+ for (const k of keys) {
429
+ if (result == null || typeof result !== 'object' || !(k in result)) {
430
+ error(res, 404, `Key '${key}' not found.`);
431
+ return;
432
+ }
433
+ result = result[k];
434
+ }
435
+ res.jsonResponse({ [key]: result });
436
+ return;
437
+ }
438
+ res.jsonResponse(response);
439
+ });
440
+ export default router;
441
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../src/routes/get.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import { Router } from 'express';
2
+ import { versions } from '../config/versions.js';
3
+ import { ipLimits } from '../storage/index.js';
4
+ import { logger } from '../middleware/logger.js';
5
+ import { DOCS_URL, START_TIME } from '../constants.js';
6
+ const router = Router();
7
+ router.get('/', (req, res) => {
8
+ const base = `${req.protocol}://${req.get('host')}`;
9
+ const links = Object.keys(versions).reduce((link, version) => {
10
+ link[version] = `${base}/${version}`;
11
+ return link;
12
+ }, {});
13
+ res.jsonResponse({
14
+ documentation: DOCS_URL,
15
+ latest: `${base}/latest`,
16
+ health: `${base}/health`,
17
+ logs: `${base}/logs`,
18
+ versions: links,
19
+ });
20
+ });
21
+ router.get('/health', (_req, res) => {
22
+ const mem = process.memoryUsage();
23
+ res.jsonResponse({
24
+ status: 'ok',
25
+ uptime: Math.floor((Date.now() - START_TIME) / 1000),
26
+ version: '4.1.0',
27
+ node: process.version,
28
+ memory: {
29
+ rss: `${(mem.rss / 1024 / 1024).toFixed(1)} MB`,
30
+ heap_used: `${(mem.heapUsed / 1024 / 1024).toFixed(1)} MB`,
31
+ heap_total: `${(mem.heapTotal / 1024 / 1024).toFixed(1)} MB`,
32
+ },
33
+ connections: Object.keys(ipLimits).length,
34
+ logs: logger.entries().length,
35
+ });
36
+ });
37
+ router.get('/logs', (_req, res) => {
38
+ res.jsonResponse(logger.entries());
39
+ });
40
+ router.get('/latest', (_req, res) => {
41
+ const latest = Object.keys(versions).pop();
42
+ res.redirect(`/${latest}`);
43
+ });
44
+ router.get('/latest/{*rest}', (req, res) => {
45
+ const latest = Object.keys(versions).pop();
46
+ const rest = req.params.rest;
47
+ res.redirect(`/${latest}/${rest}`);
48
+ });
49
+ export default router;
50
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { Router } from 'express';
2
+ import { ticTacToeStorage } from '../storage/index.js';
3
+ import { error } from '../utils/response.js';
4
+ import { supportsRest } from '../utils/version.js';
5
+ const router = Router();
6
+ // Play a tic-tac-toe move (REST: PATCH /tic-tac-toe/:game)
7
+ router.patch('/:version/tic-tac-toe/:game', (req, res) => {
8
+ if (!supportsRest(req)) {
9
+ error(res, 405, 'PATCH is only supported in v4+.', `${req.version}/tic-tac-toe`);
10
+ return;
11
+ }
12
+ const game = req.params.game;
13
+ const { username, move, session } = req.body || {};
14
+ if (!username) {
15
+ error(res, 400, 'Please provide a username (?username={username})');
16
+ return;
17
+ }
18
+ if (!move) {
19
+ error(res, 400, 'Please provide a valid move (&move={move})');
20
+ return;
21
+ }
22
+ if (!session) {
23
+ error(res, 400, 'Please provide a valid session ID (&session={ID})');
24
+ return;
25
+ }
26
+ try {
27
+ const result = req.module.tic_tac_toe('play', {
28
+ username,
29
+ move,
30
+ session,
31
+ game,
32
+ storage: ticTacToeStorage,
33
+ });
34
+ res.jsonResponse(result);
35
+ }
36
+ catch (err) {
37
+ error(res, 400, err.message);
38
+ }
39
+ });
40
+ export default router;
41
+ //# sourceMappingURL=patch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patch.js","sourceRoot":"","sources":["../../src/routes/patch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA+B,MAAM,SAAS,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;AAExB,2DAA2D;AAC3D,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;IACxE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,iCAAiC,EAAE,GAAG,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC;QACjF,OAAO;IACX,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAc,CAAC;IACvC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAI,GAAG,CAAC,IAA+B,IAAI,EAAE,CAAC;IAE/E,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,kDAAkD,CAAC,CAAC;QACpE,OAAO;IACX,CAAC;IACD,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,4CAA4C,CAAC,CAAC;QAC9D,OAAO;IACX,CAAC;IACD,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,mDAAmD,CAAC,CAAC;QACrE,OAAO;IACX,CAAC;IAED,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE;YAC1C,QAAQ;YACR,IAAI;YACJ,OAAO;YACP,IAAI;YACJ,OAAO,EAAE,gBAAgB;SAC5B,CAAC,CAAC;QACH,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,KAAK,CAAC,GAAG,EAAE,GAAG,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}