@20syldev/api 4.8.0 → 5.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.
- package/README.md +93 -55
- package/dist/config/versions.js +16 -0
- package/dist/config/versions.js.map +1 -1
- package/dist/constants.js +5 -0
- package/dist/constants.js.map +1 -1
- package/dist/modules/v5/chart.js +379 -0
- package/dist/modules/v5/chart.js.map +1 -0
- package/dist/modules/v5/evaluate.js +281 -0
- package/dist/modules/v5/evaluate.js.map +1 -0
- package/dist/modules/v5/matrix.js +238 -0
- package/dist/modules/v5/matrix.js.map +1 -0
- package/dist/modules/v5.js +5 -0
- package/dist/modules/v5.js.map +1 -0
- package/dist/routes/get.js +191 -162
- package/dist/routes/get.js.map +1 -1
- package/dist/routes/post.js +69 -0
- package/dist/routes/post.js.map +1 -1
- package/package.json +4 -2
- package/recap.md +98 -0
- package/.github/FUNDING.yml +0 -1
- package/.prettierrc +0 -7
- package/eslint.config.js +0 -24
- package/robots.txt +0 -74
- package/src/app.ts +0 -53
- package/src/config/env.ts +0 -87
- package/src/config/plans.ts +0 -61
- package/src/config/versions.ts +0 -121
- package/src/constants.ts +0 -61
- package/src/favicon.ico +0 -0
- package/src/middleware/cors.ts +0 -23
- package/src/middleware/error.ts +0 -16
- package/src/middleware/json.ts +0 -9
- package/src/middleware/logger.ts +0 -32
- package/src/middleware/ratelimit.ts +0 -89
- package/src/middleware/version.ts +0 -40
- package/src/modules/v3/algorithms.js +0 -218
- package/src/modules/v3/captcha.js +0 -60
- package/src/modules/v3/chat.js +0 -111
- package/src/modules/v3/color.js +0 -60
- package/src/modules/v3/convert.js +0 -39
- package/src/modules/v3/domain.js +0 -86
- package/src/modules/v3/hash.js +0 -16
- package/src/modules/v3/hyperplanning.js +0 -56
- package/src/modules/v3/levenshtein.js +0 -46
- package/src/modules/v3/personal.js +0 -139
- package/src/modules/v3/qrcode.js +0 -20
- package/src/modules/v3/tic_tac_toe.js +0 -242
- package/src/modules/v3/time.js +0 -98
- package/src/modules/v3/token.js +0 -54
- package/src/modules/v3/username.js +0 -94
- package/src/modules/v3/utils.js +0 -77
- package/src/modules/v3.js +0 -15
- package/src/modules/v4/address.ts +0 -412
- package/src/modules/v4/agent.ts +0 -104
- package/src/modules/v4/algorithms.ts +0 -276
- package/src/modules/v4/captcha.ts +0 -114
- package/src/modules/v4/chat.ts +0 -130
- package/src/modules/v4/color.ts +0 -75
- package/src/modules/v4/convert.ts +0 -127
- package/src/modules/v4/cron.ts +0 -221
- package/src/modules/v4/dice.ts +0 -46
- package/src/modules/v4/domain.ts +0 -86
- package/src/modules/v4/encode.ts +0 -241
- package/src/modules/v4/geo.ts +0 -64
- package/src/modules/v4/hash.ts +0 -32
- package/src/modules/v4/hyperplanning.ts +0 -93
- package/src/modules/v4/ip.ts +0 -134
- package/src/modules/v4/levenshtein.ts +0 -46
- package/src/modules/v4/palette.ts +0 -71
- package/src/modules/v4/password.ts +0 -379
- package/src/modules/v4/personal.ts +0 -140
- package/src/modules/v4/placeholder.ts +0 -197
- package/src/modules/v4/qrcode.ts +0 -121
- package/src/modules/v4/regex.ts +0 -67
- package/src/modules/v4/statistics.ts +0 -62
- package/src/modules/v4/text.ts +0 -330
- package/src/modules/v4/tic_tac_toe.ts +0 -264
- package/src/modules/v4/time.ts +0 -149
- package/src/modules/v4/token.ts +0 -53
- package/src/modules/v4/username.ts +0 -94
- package/src/modules/v4/validate.ts +0 -76
- package/src/modules/v4.ts +0 -29
- package/src/routes/delete.ts +0 -72
- package/src/routes/get.ts +0 -856
- package/src/routes/index.ts +0 -59
- package/src/routes/patch.ts +0 -45
- package/src/routes/post.ts +0 -209
- package/src/storage/index.ts +0 -16
- package/src/types/express.d.ts +0 -17
- package/src/types/storage.ts +0 -48
- package/src/utils/colors.ts +0 -91
- package/src/utils/helpers.ts +0 -90
- package/src/utils/response.ts +0 -28
- package/tests/integration/api.test.ts +0 -772
- package/tests/tsconfig.json +0 -3
- package/tests/unit/address.test.ts +0 -84
- package/tests/unit/agent.test.ts +0 -113
- package/tests/unit/algorithms.test.ts +0 -121
- package/tests/unit/captcha.test.ts +0 -62
- package/tests/unit/chat.test.ts +0 -54
- package/tests/unit/color.test.ts +0 -54
- package/tests/unit/convert.test.ts +0 -68
- package/tests/unit/cron.test.ts +0 -110
- package/tests/unit/dice.test.ts +0 -58
- package/tests/unit/domain.test.ts +0 -48
- package/tests/unit/encode.test.ts +0 -109
- package/tests/unit/geo.test.ts +0 -46
- package/tests/unit/hash.test.ts +0 -45
- package/tests/unit/hyperplanning.test.ts +0 -97
- package/tests/unit/ip.test.ts +0 -140
- package/tests/unit/levenshtein.test.ts +0 -35
- package/tests/unit/palette.test.ts +0 -54
- package/tests/unit/password.test.ts +0 -86
- package/tests/unit/personal.test.ts +0 -66
- package/tests/unit/placeholder.test.ts +0 -58
- package/tests/unit/qrcode.test.ts +0 -83
- package/tests/unit/regex.test.ts +0 -95
- package/tests/unit/statistics.test.ts +0 -58
- package/tests/unit/text.test.ts +0 -108
- package/tests/unit/tic_tac_toe.test.ts +0 -56
- package/tests/unit/time.test.ts +0 -115
- package/tests/unit/token.test.ts +0 -62
- package/tests/unit/username.test.ts +0 -35
- package/tests/unit/validate.test.ts +0 -72
- package/tsconfig.json +0 -17
- package/tsconfig.test.json +0 -9
package/dist/routes/post.js
CHANGED
|
@@ -4,6 +4,33 @@ import { chatStorage, ticTacToeStorage } from '../storage/index.js';
|
|
|
4
4
|
import { since } from '../utils/helpers.js';
|
|
5
5
|
import { error } from '../utils/response.js';
|
|
6
6
|
const router = Router();
|
|
7
|
+
// Generate a chart as SVG
|
|
8
|
+
router.post('/:version/chart', (req, res) => {
|
|
9
|
+
const body = req.body || {};
|
|
10
|
+
const { type, data, title, width, height, colors, bg, legend, mode } = body;
|
|
11
|
+
const { version } = req.params;
|
|
12
|
+
const chartMod = req.module.chart;
|
|
13
|
+
if (!chartMod) {
|
|
14
|
+
error(res, 404, `Endpoint not available in ${version}.`, `${req.latest}/chart`);
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
if (!type || typeof type !== 'string' || !Object.hasOwn(chartMod, type)) {
|
|
18
|
+
error(res, 400, 'Please provide a valid chart type (?type=bar|line|pie|donut)', `${version}/chart`);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
try {
|
|
22
|
+
const output = chartMod[type](data, { title, width, height, colors, bg, legend, mode });
|
|
23
|
+
if (output.contentType === 'application/json') {
|
|
24
|
+
res.jsonResponse(output.body);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
res.type(output.contentType).send(output.body);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
error(res, 400, err.message, `${req.version}/chart`);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
7
34
|
// Store chat messages
|
|
8
35
|
router.post('/:version/chat', (req, res) => {
|
|
9
36
|
const { username, message, timestamp, session, token } = req.body || {};
|
|
@@ -98,6 +125,48 @@ router.post('/:version/hyperplanning', async (req, res) => {
|
|
|
98
125
|
error(res, 400, err.message, `${req.version}/hyperplanning`);
|
|
99
126
|
}
|
|
100
127
|
});
|
|
128
|
+
// Matrix operations
|
|
129
|
+
router.post('/:version/matrix', (req, res) => {
|
|
130
|
+
const body = req.body || {};
|
|
131
|
+
const { operation, matrix: m, matrix2, scalar } = body;
|
|
132
|
+
const { version } = req.params;
|
|
133
|
+
const matrixMod = req.module.matrix;
|
|
134
|
+
if (!matrixMod) {
|
|
135
|
+
error(res, 404, `Endpoint not available in ${version}.`, `${req.latest}/matrix`);
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
if (!operation || typeof operation !== 'string' || !Object.hasOwn(matrixMod, operation)) {
|
|
139
|
+
error(res, 400, 'Please provide a valid operation (?operation=add|subtract|multiply|scalar|transpose|determinant|inverse|identity)', `${version}/matrix`);
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
try {
|
|
143
|
+
let result;
|
|
144
|
+
switch (operation) {
|
|
145
|
+
case 'add':
|
|
146
|
+
case 'subtract':
|
|
147
|
+
case 'multiply':
|
|
148
|
+
result = matrixMod[operation](m, matrix2);
|
|
149
|
+
break;
|
|
150
|
+
case 'scalar':
|
|
151
|
+
result = matrixMod.scalar(m, scalar);
|
|
152
|
+
break;
|
|
153
|
+
case 'transpose':
|
|
154
|
+
case 'determinant':
|
|
155
|
+
case 'inverse':
|
|
156
|
+
result = matrixMod[operation](m);
|
|
157
|
+
break;
|
|
158
|
+
case 'identity':
|
|
159
|
+
result = matrixMod.identity(scalar);
|
|
160
|
+
break;
|
|
161
|
+
default:
|
|
162
|
+
throw new Error('Unknown operation');
|
|
163
|
+
}
|
|
164
|
+
res.jsonResponse(result);
|
|
165
|
+
}
|
|
166
|
+
catch (err) {
|
|
167
|
+
error(res, 400, err.message, `${req.version}/matrix`);
|
|
168
|
+
}
|
|
169
|
+
});
|
|
101
170
|
// Store tic tac toe games
|
|
102
171
|
router.post('/:version/tic-tac-toe', (req, res) => {
|
|
103
172
|
const { username, move, session, game } = req.body || {};
|
package/dist/routes/post.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post.js","sourceRoot":"","sources":["../../src/routes/post.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"post.js","sourceRoot":"","sources":["../../src/routes/post.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "
|
|
2
|
+
"version": "5.0.0",
|
|
3
3
|
"name": "@20syldev/api",
|
|
4
4
|
"description": "Node.js API with multiple features. Check the documentation at https://docs.sylvain.sh",
|
|
5
5
|
"main": "dist/app.js",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"scripts": {
|
|
8
|
+
"prepare": "tsc",
|
|
8
9
|
"dev": "tsx watch src/app.ts",
|
|
9
10
|
"start": "node dist/app.js",
|
|
10
11
|
"build": "tsc",
|
|
@@ -21,7 +22,8 @@
|
|
|
21
22
|
"./v1": "./dist/modules/v1.js",
|
|
22
23
|
"./v2": "./dist/modules/v2.js",
|
|
23
24
|
"./v3": "./dist/modules/v3.js",
|
|
24
|
-
"./v4": "./dist/modules/v4.js"
|
|
25
|
+
"./v4": "./dist/modules/v4.js",
|
|
26
|
+
"./v5": "./dist/modules/v5.js"
|
|
25
27
|
},
|
|
26
28
|
"dependencies": {
|
|
27
29
|
"@20syldev/logger.ts": "^1.0.1",
|
package/recap.md
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# Récap des changements — v5.0.0
|
|
2
|
+
|
|
3
|
+
## Nouveaux fichiers
|
|
4
|
+
|
|
5
|
+
### `src/modules/v5/evaluate.ts`
|
|
6
|
+
Parseur Pratt (sans `eval()`) pour évaluer des expressions mathématiques.
|
|
7
|
+
- Tokenizer → récursif avec binding powers → évaluateur AST
|
|
8
|
+
- Constantes : `pi`, `e`
|
|
9
|
+
- 14 fonctions : `sin`, `cos`, `tan`, `asin`, `acos`, `atan`, `sqrt`, `abs`, `floor`, `ceil`, `round`, `log`, `log2`, `log10`
|
|
10
|
+
- Opérateurs : `+` `-` `*` `/` `%` `^` (unaire `-`)
|
|
11
|
+
- Division par zéro et identifiants inconnus → exception
|
|
12
|
+
- Profondeur max : `MAX_EXPR_DEPTH = 100`
|
|
13
|
+
- Longueur max : `MAX_EXPR_LENGTH = 500`
|
|
14
|
+
|
|
15
|
+
### `src/modules/v5/matrix.ts`
|
|
16
|
+
8 opérations matricielles (namespace export).
|
|
17
|
+
- `add`, `subtract`, `multiply`, `scalar`, `transpose`, `determinant`, `inverse`, `identity`
|
|
18
|
+
- Déterminant : élimination gaussienne avec pivot partiel
|
|
19
|
+
- Inverse : Gauss-Jordan
|
|
20
|
+
- Validation : tableau 2D, longueurs uniformes, nombres finis, max `MAX_MATRIX_SIZE = 20`
|
|
21
|
+
|
|
22
|
+
### `src/modules/v5/chart.ts`
|
|
23
|
+
Génération SVG de graphiques (bar, line, pie, donut).
|
|
24
|
+
- **Dimensions** : `width`/`height` optionnels → si fournis, `viewBox` adapté + attrs sur `<svg>` ; sinon pas d'attrs (SVG responsive qui remplit son conteneur)
|
|
25
|
+
- **`legend`** (bool, défaut `true`) : masque la légende si `false`
|
|
26
|
+
- **`mode`** (`"svg"` défaut ou `"data"`) : retourne le SVG ou les données brutes JSON
|
|
27
|
+
- `ChartOutput` : union type `image/svg+xml | application/json`
|
|
28
|
+
- Axes dessinés avant les données (points par-dessus les axes)
|
|
29
|
+
- Marges : `{ bottom: 40, left: 50, right: 40, top: 30 }`
|
|
30
|
+
- Max : `MAX_CHART_LABELS = 20`, `MAX_CHART_DATASETS = 5`
|
|
31
|
+
- Échappement XML des labels (`<`, `>`, `&`, `"`)
|
|
32
|
+
|
|
33
|
+
### `src/modules/v5.ts`
|
|
34
|
+
Barrel v5 — exports nommés depuis le barrel v4 + v5-specifics.
|
|
35
|
+
```ts
|
|
36
|
+
export { address, agent, ..., validate } from './v4.js'; // héritage sans ambiguïté
|
|
37
|
+
export * as chart from './v5/chart.js';
|
|
38
|
+
export { default as evaluate } from './v5/evaluate.js';
|
|
39
|
+
export * as matrix from './v5/matrix.js';
|
|
40
|
+
```
|
|
41
|
+
Avantage : pour upgrader un endpoint v4 en v5, on retire son nom de la liste v4 et on ajoute un export v5.
|
|
42
|
+
|
|
43
|
+
### `tests/unit/evaluate.test.ts`
|
|
44
|
+
### `tests/unit/matrix.test.ts`
|
|
45
|
+
### `tests/unit/chart.test.ts`
|
|
46
|
+
Tests unitaires avec `node:test` + `node:assert`. 654 tests au total, 0 échec.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Fichiers modifiés
|
|
51
|
+
|
|
52
|
+
### `package.json`
|
|
53
|
+
- Version `4.9.0` → `5.0.0`
|
|
54
|
+
- Ajout export `"./v5": "./dist/modules/v5.js"`
|
|
55
|
+
- Ajout script `prepare`
|
|
56
|
+
|
|
57
|
+
### `src/constants.ts`
|
|
58
|
+
```ts
|
|
59
|
+
MAX_CHART_DATASETS = 5
|
|
60
|
+
MAX_CHART_LABELS = 20
|
|
61
|
+
MAX_EXPR_DEPTH = 100
|
|
62
|
+
MAX_EXPR_LENGTH = 500
|
|
63
|
+
MAX_MATRIX_SIZE = 20
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### `src/config/versions.ts`
|
|
67
|
+
- Import `apiv5`
|
|
68
|
+
- Config v5 : hérite des endpoints v4 + ajout `evaluate` (GET), `chart` (POST), `matrix` (POST)
|
|
69
|
+
|
|
70
|
+
### `src/types/express.d.ts`
|
|
71
|
+
- Ajout `typeof apiv5` dans le type union de `req.module`
|
|
72
|
+
|
|
73
|
+
### `src/routes/get.ts`
|
|
74
|
+
- Handler `GET /:version/evaluate` (v5 only, 404 en v4)
|
|
75
|
+
- Handlers 405 pour `GET /chart` et `GET /matrix`
|
|
76
|
+
- Tous les handlers triés alphabétiquement par endpoint (`:version` en tête, sous-routes après leur parent)
|
|
77
|
+
- Toutes les URLs de doc dans les erreurs 404 pointent sur `req.latest` (plus sur la version demandée)
|
|
78
|
+
|
|
79
|
+
### `src/routes/post.ts`
|
|
80
|
+
- Handler `POST /:version/chart` : dispatch sur `mode` → SVG (`res.type().send()`) ou JSON (`res.jsonResponse()`) ; passe `legend` et `mode` à la fonction
|
|
81
|
+
- Handler `POST /:version/matrix` : switch sur `operation`
|
|
82
|
+
- Handlers triés alphabétiquement : chart → chat → chat/private → hash → hyperplanning → matrix → tic-tac-toe → token
|
|
83
|
+
|
|
84
|
+
### `tests/integration/api.test.ts`
|
|
85
|
+
- Blocs `describe` pour `GET /v5/evaluate`, `POST /v5/matrix`, `POST /v5/chart`
|
|
86
|
+
- Tests `mode: "data"` (retour JSON), 404 sur v4, 405 GET sur endpoints POST-only
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Fixes
|
|
91
|
+
|
|
92
|
+
| Problème | Fix |
|
|
93
|
+
|---|---|
|
|
94
|
+
| URLs de doc 404 pointaient sur la version demandée | Remplacé `${version}/endpoint` par `${req.latest}/endpoint` partout |
|
|
95
|
+
| Donut/pie : légende coupée en bas | `chartAreaH` soustrait correctement `MARGIN.top` + gap |
|
|
96
|
+
| Line chart : point du premier label masqué par l'axe Y | Axes dessinés avant les données |
|
|
97
|
+
| `width`/`height` SVG : fond blanc s'agrandissait sans changer le dessin | `renderW`/`renderH` = dimensions réelles de dessin (= `viewBox`) ; `displayW`/`displayH` = attrs SVG uniquement si fournis |
|
|
98
|
+
| `export * from './v4.js'` dans v5.ts : ambiguïté si upgrade d'un endpoint | Remplacé par exports nommés explicites depuis `./v4.js` |
|
package/.github/FUNDING.yml
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
github: [20syldev]
|
package/.prettierrc
DELETED
package/eslint.config.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import eslint from '@eslint/js';
|
|
2
|
-
import simpleImportSort from 'eslint-plugin-simple-import-sort';
|
|
3
|
-
import tseslint from 'typescript-eslint';
|
|
4
|
-
import eslintConfigPrettier from 'eslint-config-prettier';
|
|
5
|
-
|
|
6
|
-
export default tseslint.config(
|
|
7
|
-
eslint.configs.recommended,
|
|
8
|
-
...tseslint.configs.strict,
|
|
9
|
-
eslintConfigPrettier,
|
|
10
|
-
{
|
|
11
|
-
plugins: { 'simple-import-sort': simpleImportSort },
|
|
12
|
-
rules: {
|
|
13
|
-
'simple-import-sort/imports': 'error',
|
|
14
|
-
'simple-import-sort/exports': 'error',
|
|
15
|
-
'@typescript-eslint/no-explicit-any': 'warn',
|
|
16
|
-
'@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
|
|
17
|
-
'@typescript-eslint/no-non-null-assertion': 'off',
|
|
18
|
-
'@typescript-eslint/no-dynamic-delete': 'off',
|
|
19
|
-
},
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
ignores: ['dist/', 'node_modules/', 'src/modules/v3/'],
|
|
23
|
-
},
|
|
24
|
-
);
|
package/robots.txt
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
User-agent: 360Spider
|
|
2
|
-
User-agent: 360Spider-Image
|
|
3
|
-
User-agent: 360Spider-Video
|
|
4
|
-
User-agent: AdsBot-Google
|
|
5
|
-
User-agent: AdsBot-Google-Mobile
|
|
6
|
-
User-agent: AdsBot-Google-Mobile-Apps
|
|
7
|
-
User-agent: adidxbot
|
|
8
|
-
User-agent: Applebot
|
|
9
|
-
User-agent: AppleNewsBot
|
|
10
|
-
User-agent: Baiduspider
|
|
11
|
-
User-agent: Baiduspider-image
|
|
12
|
-
User-agent: Baiduspider-news
|
|
13
|
-
User-agent: Baiduspider-video
|
|
14
|
-
User-agent: bingbot
|
|
15
|
-
User-agent: BingPreview
|
|
16
|
-
User-agent: BublupBot
|
|
17
|
-
User-agent: CCBot
|
|
18
|
-
User-agent: Cliqzbot
|
|
19
|
-
User-agent: coccoc
|
|
20
|
-
User-agent: coccocbot-image
|
|
21
|
-
User-agent: coccocbot-web
|
|
22
|
-
User-agent: Daumoa
|
|
23
|
-
User-agent: Dazoobot
|
|
24
|
-
User-agent: DeuSu
|
|
25
|
-
User-agent: DuckDuckBot
|
|
26
|
-
User-agent: DuckDuckGo-Favicons-Bot
|
|
27
|
-
User-agent: EuripBot
|
|
28
|
-
User-agent: Exploratodo
|
|
29
|
-
User-agent: Facebot
|
|
30
|
-
User-agent: Feedly
|
|
31
|
-
User-agent: Findxbot
|
|
32
|
-
User-agent: Googlebot
|
|
33
|
-
User-agent: Googlebot-Image
|
|
34
|
-
User-agent: Googlebot-Mobile
|
|
35
|
-
User-agent: Googlebot-News
|
|
36
|
-
User-agent: Googlebot-Video
|
|
37
|
-
User-agent: HaoSouSpider
|
|
38
|
-
User-agent: ichiro
|
|
39
|
-
User-agent: istellabot
|
|
40
|
-
User-agent: JikeSpider
|
|
41
|
-
User-agent: Lycos
|
|
42
|
-
User-agent: Mail.Ru
|
|
43
|
-
User-agent: Mediapartners-Google
|
|
44
|
-
User-agent: MojeekBot
|
|
45
|
-
User-agent: msnbot
|
|
46
|
-
User-agent: msnbot-media
|
|
47
|
-
User-agent: OrangeBot
|
|
48
|
-
User-agent: Pinterest
|
|
49
|
-
User-agent: Plukkie
|
|
50
|
-
User-agent: Qwantify
|
|
51
|
-
User-agent: Rambler
|
|
52
|
-
User-agent: SeznamBot
|
|
53
|
-
User-agent: Sosospider
|
|
54
|
-
User-agent: Slurp
|
|
55
|
-
User-agent: Sogou blog
|
|
56
|
-
User-agent: Sogou inst spider
|
|
57
|
-
User-agent: Sogou News Spider
|
|
58
|
-
User-agent: Sogou Orion spider
|
|
59
|
-
User-agent: Sogou spider2
|
|
60
|
-
User-agent: Sogou web spider
|
|
61
|
-
User-agent: SputnikBot
|
|
62
|
-
User-agent: Teoma
|
|
63
|
-
User-agent: Twitterbot
|
|
64
|
-
User-agent: wotbox
|
|
65
|
-
User-agent: yacybot
|
|
66
|
-
User-agent: Yandex
|
|
67
|
-
User-agent: YandexMobileBot
|
|
68
|
-
User-agent: Yeti
|
|
69
|
-
User-agent: YioopBot
|
|
70
|
-
User-agent: yoozBot
|
|
71
|
-
User-agent: YoudaoBot
|
|
72
|
-
Disallow:
|
|
73
|
-
User-agent: *
|
|
74
|
-
Disallow: /
|
package/src/app.ts
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import express from 'express';
|
|
2
|
-
|
|
3
|
-
import { env } from './config/env.js';
|
|
4
|
-
import { setupCors } from './middleware/cors.js';
|
|
5
|
-
import { errorHandler } from './middleware/error.js';
|
|
6
|
-
import { jsonResponseMiddleware } from './middleware/json.js';
|
|
7
|
-
import { loggerMiddleware } from './middleware/logger.js';
|
|
8
|
-
import { rateLimitMiddleware } from './middleware/ratelimit.js';
|
|
9
|
-
import { endpointCheckMiddleware, versionCheckMiddleware } from './middleware/version.js';
|
|
10
|
-
import deleteRoutes from './routes/delete.js';
|
|
11
|
-
import getRoutes from './routes/get.js';
|
|
12
|
-
import indexRoutes from './routes/index.js';
|
|
13
|
-
import patchRoutes from './routes/patch.js';
|
|
14
|
-
import postRoutes from './routes/post.js';
|
|
15
|
-
|
|
16
|
-
const app = express();
|
|
17
|
-
|
|
18
|
-
// Setup CORS, body parsing, static files
|
|
19
|
-
setupCors(app);
|
|
20
|
-
|
|
21
|
-
// Custom JSON response
|
|
22
|
-
app.use(jsonResponseMiddleware);
|
|
23
|
-
|
|
24
|
-
// Rate limiting
|
|
25
|
-
app.use(rateLimitMiddleware);
|
|
26
|
-
|
|
27
|
-
// Request logging
|
|
28
|
-
app.use(loggerMiddleware);
|
|
29
|
-
|
|
30
|
-
// Error handling
|
|
31
|
-
app.use(errorHandler);
|
|
32
|
-
|
|
33
|
-
// Root routes (before version check)
|
|
34
|
-
app.use(indexRoutes);
|
|
35
|
-
|
|
36
|
-
// Version & endpoint validation
|
|
37
|
-
app.use('/:version', versionCheckMiddleware);
|
|
38
|
-
app.use('/:version/:endpoint', endpointCheckMiddleware);
|
|
39
|
-
|
|
40
|
-
// Versioned routes
|
|
41
|
-
app.use(getRoutes);
|
|
42
|
-
app.use(postRoutes);
|
|
43
|
-
app.use(patchRoutes);
|
|
44
|
-
app.use(deleteRoutes);
|
|
45
|
-
|
|
46
|
-
// Start server
|
|
47
|
-
if (process.env.NODE_ENV !== 'test') {
|
|
48
|
-
app.listen(env.PORT, () =>
|
|
49
|
-
console.log(`API is running on\n - http://127.0.0.1:${env.PORT}\n - http://localhost:${env.PORT}`),
|
|
50
|
-
);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export default app;
|
package/src/config/env.ts
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import dotenv from 'dotenv';
|
|
2
|
-
|
|
3
|
-
import { DEFAULT_PORT } from '../constants.js';
|
|
4
|
-
|
|
5
|
-
dotenv.config();
|
|
6
|
-
|
|
7
|
-
function envList(key: string): string[] | null {
|
|
8
|
-
const v = process.env[key];
|
|
9
|
-
return v && v !== 'undefined' ? v.split(' ') : null;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
function envNumber(key: string, fallback: number): number {
|
|
13
|
-
const v = parseInt(process.env[key] ?? '', 10);
|
|
14
|
-
return isNaN(v) ? fallback : v;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export const env = {
|
|
18
|
-
PORT: envNumber('PORT', DEFAULT_PORT),
|
|
19
|
-
GITHUB_TOKEN: process.env.GITHUB_TOKEN ?? '',
|
|
20
|
-
|
|
21
|
-
DEFAULT_LIMIT: envNumber('DEFAULT_LIMIT', 2000),
|
|
22
|
-
ADVANCED_LIMIT: envNumber('ADVANCED_LIMIT', 3500),
|
|
23
|
-
PRO_LIMIT: envNumber('PRO_LIMIT', 6000),
|
|
24
|
-
BUSINESS_LIMIT: envNumber('BUSINESS_LIMIT', 10000),
|
|
25
|
-
GLOBAL_LIMIT: envNumber('GLOBAL_LIMIT', 50000),
|
|
26
|
-
|
|
27
|
-
DEFAULT_BURST: envNumber('DEFAULT_BURST', 50),
|
|
28
|
-
ADVANCED_BURST: envNumber('ADVANCED_BURST', 80),
|
|
29
|
-
PRO_BURST: envNumber('PRO_BURST', 120),
|
|
30
|
-
BUSINESS_BURST: envNumber('BUSINESS_BURST', 200),
|
|
31
|
-
|
|
32
|
-
BUSINESS_TOKEN_LIST: envList('BUSINESS_TOKEN_LIST') ?? [],
|
|
33
|
-
PRO_TOKEN_LIST: envList('PRO_TOKEN_LIST') ?? [],
|
|
34
|
-
ADVANCED_TOKEN_LIST: envList('ADVANCED_TOKEN_LIST') ?? [],
|
|
35
|
-
|
|
36
|
-
// Website endpoint env vars
|
|
37
|
-
G_2048: process.env.G_2048,
|
|
38
|
-
API: process.env.API,
|
|
39
|
-
CDN: process.env.CDN,
|
|
40
|
-
COOP_API: process.env.COOP_API,
|
|
41
|
-
COOP_STATUS: process.env.COOP_STATUS,
|
|
42
|
-
CHAT: process.env.CHAT,
|
|
43
|
-
DIGIT: process.env.DIGIT,
|
|
44
|
-
DOC_COOPBOT: process.env.DOC_COOPBOT,
|
|
45
|
-
DOCS: process.env.DOCS,
|
|
46
|
-
DONUT: process.env.DONUT,
|
|
47
|
-
DRAWIO_PLUGIN: process.env.DRAWIO_PLUGIN,
|
|
48
|
-
FLOWERS: process.env.FLOWERS,
|
|
49
|
-
GEMSYNC: process.env.GEMSYNC,
|
|
50
|
-
GFT: process.env.GFT,
|
|
51
|
-
GITSITE: process.env.GITSITE,
|
|
52
|
-
LEBONCHAR: process.env.LEBONCHAR,
|
|
53
|
-
LOGGER: process.env.LOGGER,
|
|
54
|
-
LOGS: process.env.LOGS,
|
|
55
|
-
LOGVAULT: process.env.LOGVAULT,
|
|
56
|
-
LYAH: process.env.LYAH,
|
|
57
|
-
MINIFY: process.env.MINIFY,
|
|
58
|
-
MN: process.env.MN,
|
|
59
|
-
MONITORING: process.env.MONITORING,
|
|
60
|
-
MORPION: process.env.MORPION,
|
|
61
|
-
NITROGEN: process.env.NITROGEN,
|
|
62
|
-
OLD_DATABASE: process.env.OLD_DATABASE,
|
|
63
|
-
PASSWORD: process.env.PASSWORD,
|
|
64
|
-
PHP: process.env.PHP,
|
|
65
|
-
PLANNING: process.env.PLANNING,
|
|
66
|
-
PING: process.env.PING,
|
|
67
|
-
PORTFOLIO: process.env.PORTFOLIO,
|
|
68
|
-
PYTHON_API: process.env.PYTHON_API,
|
|
69
|
-
README: process.env.README,
|
|
70
|
-
TIMESTAMP: process.env.TIMESTAMP,
|
|
71
|
-
TERMINAL: process.env.TERMINAL,
|
|
72
|
-
VALENTINE: process.env.VALENTINE,
|
|
73
|
-
WRKIT: process.env.WRKIT,
|
|
74
|
-
ZPKI: process.env.ZPKI,
|
|
75
|
-
|
|
76
|
-
PATCH: envList('PATCH'),
|
|
77
|
-
RECENT: envList('RECENT'),
|
|
78
|
-
NEW: envList('NEW'),
|
|
79
|
-
DOMAINS: envList('DOMAINS'),
|
|
80
|
-
|
|
81
|
-
STATS1: process.env.STATS1,
|
|
82
|
-
STATS2: process.env.STATS2,
|
|
83
|
-
STATS3: process.env.STATS3,
|
|
84
|
-
STATS4: process.env.STATS4,
|
|
85
|
-
TAG: process.env.TAG,
|
|
86
|
-
ACTIVE: process.env.ACTIVE === 'true',
|
|
87
|
-
};
|
package/src/config/plans.ts
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { env } from './env.js';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Rate limit plans configuration.
|
|
5
|
-
*
|
|
6
|
-
* hourly — max requests per hour (matches pricing page)
|
|
7
|
-
* burst — max requests per 10-second window
|
|
8
|
-
* tokens — list of bearer tokens for this tier
|
|
9
|
-
*
|
|
10
|
-
* To adjust limits, edit the values below or override via .env:
|
|
11
|
-
* DEFAULT_LIMIT, ADVANCED_LIMIT, PRO_LIMIT, BUSINESS_LIMIT
|
|
12
|
-
* DEFAULT_BURST, ADVANCED_BURST, PRO_BURST, BUSINESS_BURST
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
export interface Plan {
|
|
16
|
-
hourly: number;
|
|
17
|
-
burst: number;
|
|
18
|
-
tokens: string[];
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export const plans: Record<string, Plan> = {
|
|
22
|
-
business: {
|
|
23
|
-
hourly: env.BUSINESS_LIMIT,
|
|
24
|
-
burst: env.BUSINESS_BURST,
|
|
25
|
-
tokens: env.BUSINESS_TOKEN_LIST,
|
|
26
|
-
},
|
|
27
|
-
pro: {
|
|
28
|
-
hourly: env.PRO_LIMIT,
|
|
29
|
-
burst: env.PRO_BURST,
|
|
30
|
-
tokens: env.PRO_TOKEN_LIST,
|
|
31
|
-
},
|
|
32
|
-
advanced: {
|
|
33
|
-
hourly: env.ADVANCED_LIMIT,
|
|
34
|
-
burst: env.ADVANCED_BURST,
|
|
35
|
-
tokens: env.ADVANCED_TOKEN_LIST,
|
|
36
|
-
},
|
|
37
|
-
default: {
|
|
38
|
-
hourly: env.DEFAULT_LIMIT,
|
|
39
|
-
burst: env.DEFAULT_BURST,
|
|
40
|
-
tokens: [],
|
|
41
|
-
},
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
export const globalLimit = env.GLOBAL_LIMIT; // 50 000/h
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Returns the plan matching a bearer token, or 'default'.
|
|
48
|
-
* Returns null if the token is provided but invalid.
|
|
49
|
-
*/
|
|
50
|
-
export function getPlan(token: string): { name: string; plan: Plan } | null {
|
|
51
|
-
if (!token) return { name: 'default', plan: plans.default! };
|
|
52
|
-
if (token === 'undefined') return null;
|
|
53
|
-
|
|
54
|
-
for (const [name, plan] of Object.entries(plans)) {
|
|
55
|
-
if (name === 'default') continue;
|
|
56
|
-
if (plan.tokens.includes('undefined')) continue;
|
|
57
|
-
if (plan.tokens.includes(token)) return { name, plan };
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
return null;
|
|
61
|
-
}
|
package/src/config/versions.ts
DELETED
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
import * as apiv3 from '../modules/v3.js';
|
|
2
|
-
import * as apiv4 from '../modules/v4.js';
|
|
3
|
-
|
|
4
|
-
export interface Endpoint {
|
|
5
|
-
name: string;
|
|
6
|
-
path?: string;
|
|
7
|
-
children?: Record<string, string>;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export interface VersionConfig {
|
|
11
|
-
endpoints: {
|
|
12
|
-
get: Endpoint[];
|
|
13
|
-
post: Endpoint[];
|
|
14
|
-
patch?: Endpoint[];
|
|
15
|
-
delete?: Endpoint[];
|
|
16
|
-
};
|
|
17
|
-
modules: typeof apiv3 | typeof apiv4;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Merges a base list of endpoints with additions, deduplicating by `name`.
|
|
22
|
-
* If an addition has the same name as a base entry, it overrides it.
|
|
23
|
-
*/
|
|
24
|
-
const merge = (base: Endpoint[], additions: Endpoint[]): Endpoint[] => {
|
|
25
|
-
const map = new Map(base.map((e) => [e.name, e]));
|
|
26
|
-
for (const e of additions) map.set(e.name, e);
|
|
27
|
-
return [...map.values()];
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
const v1 = {
|
|
31
|
-
get: [
|
|
32
|
-
{ name: 'algorithms', path: '/algorithms?method={algorithm}&value={value}(&value2={value2})' },
|
|
33
|
-
{ name: 'captcha', path: '/captcha?text={text}' },
|
|
34
|
-
{ name: 'color', path: '/color' },
|
|
35
|
-
{ name: 'convert', path: '/convert?value={value}&from={unit}&to={unit}' },
|
|
36
|
-
{ name: 'domain', path: '/domain' },
|
|
37
|
-
{ name: 'infos', path: '/infos' },
|
|
38
|
-
{ name: 'personal', path: '/personal' },
|
|
39
|
-
{ name: 'qrcode', path: '/qrcode?url={URL}' },
|
|
40
|
-
{ name: 'username', path: '/username' },
|
|
41
|
-
{ name: 'website', path: '/website' },
|
|
42
|
-
],
|
|
43
|
-
post: [{ name: 'token', path: '/token' }],
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
const v2 = {
|
|
47
|
-
get: merge(v1.get, [{ name: 'chat', path: '/chat' }]),
|
|
48
|
-
post: merge(v1.post, [
|
|
49
|
-
{
|
|
50
|
-
name: 'chat',
|
|
51
|
-
children: {
|
|
52
|
-
chat: '/chat',
|
|
53
|
-
private: '/chat/private',
|
|
54
|
-
} as Record<string, string>,
|
|
55
|
-
},
|
|
56
|
-
{ name: 'hash', path: '/hash' },
|
|
57
|
-
{
|
|
58
|
-
name: 'tic_tac_toe',
|
|
59
|
-
children: {
|
|
60
|
-
tic_tac_toe: '/tic-tac-toe',
|
|
61
|
-
fetch: '/tic-tac-toe/fetch',
|
|
62
|
-
list: '/tic-tac-toe/list',
|
|
63
|
-
} as Record<string, string>,
|
|
64
|
-
},
|
|
65
|
-
]),
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
const v3 = {
|
|
69
|
-
get: merge(v2.get, [
|
|
70
|
-
{ name: 'levenshtein', path: '/levenshtein?str1={string}&str2={string}' },
|
|
71
|
-
{
|
|
72
|
-
name: 'time',
|
|
73
|
-
path: '/time(?type={live|random|countdown}&target={date}&start={timestamp}&end={timestamp}&format={format}&timezone={timezone})',
|
|
74
|
-
},
|
|
75
|
-
]),
|
|
76
|
-
post: merge(v2.post, [{ name: 'hyperplanning', path: '/hyperplanning' }]),
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
const v4 = {
|
|
80
|
-
get: merge(v3.get, [
|
|
81
|
-
{ name: 'address', path: '/address(&country={code}&count={n})' },
|
|
82
|
-
{ name: 'agent', path: '/agent(&ua={string})' },
|
|
83
|
-
{
|
|
84
|
-
name: 'captcha',
|
|
85
|
-
path: '/captcha(&text={text}&length={n}&width={px}&height={px}&noise={low|medium|high}&bg={hex}&color={hex})',
|
|
86
|
-
},
|
|
87
|
-
{ name: 'color', path: '/color(&hex={hex})' },
|
|
88
|
-
{ name: 'convert', path: '/convert?value={value}&from={unit}&to={unit}' },
|
|
89
|
-
{ name: 'cron', path: '/cron?expr={expression}(&count={n}&from={date}&timezone={timezone})' },
|
|
90
|
-
{ name: 'dice', path: '/dice?roll={NdX+M}' },
|
|
91
|
-
{ name: 'encode', path: '/encode?method={method}&text={text}(&shift={shift})' },
|
|
92
|
-
{ name: 'geo', path: '/geo?lat1={lat}&lon1={lon}&lat2={lat}&lon2={lon}' },
|
|
93
|
-
{ name: 'headers', path: '/headers(&filter={header1,header2})' },
|
|
94
|
-
{ name: 'ip', path: '/ip(&address={ip})' },
|
|
95
|
-
{ name: 'palette', path: '/palette?color={#hex}&type={type}' },
|
|
96
|
-
{
|
|
97
|
-
name: 'password',
|
|
98
|
-
path: '/password(&type={random|passphrase}&length={n}&uppercase={bool}&lowercase={bool}&digits={bool}&symbols={bool}&exclude={chars}&count={n}&separator={char})',
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
name: 'placeholder',
|
|
102
|
-
path: '/placeholder?type={image|skeleton}&width={w}&height={h}(&bg={hex}&color={hex}&text={text}&rows={n}&avatar={bool})',
|
|
103
|
-
},
|
|
104
|
-
{
|
|
105
|
-
name: 'qrcode',
|
|
106
|
-
path: '/qrcode?url={URL}(&size={px}&margin={n}&correction={L|M|Q|H}&dark={hex}&light={hex}&icon={URL}&iconSize={px}&iconPadding={px}&iconRadius={px}&format={png|base64})',
|
|
107
|
-
},
|
|
108
|
-
{ name: 'regex', path: '/regex?pattern={regex}&text={string}(&flags={flags})' },
|
|
109
|
-
{ name: 'statistics', path: '/statistics?values={n1,n2,n3,...}' },
|
|
110
|
-
{ name: 'text', path: '/text?method={method}(&value={value}&type={type}&count={count}&lang={lang})' },
|
|
111
|
-
{ name: 'validate', path: '/validate?type={type}&value={value}' },
|
|
112
|
-
]),
|
|
113
|
-
post: [...v3.post],
|
|
114
|
-
};
|
|
115
|
-
|
|
116
|
-
export const versions: Record<string, VersionConfig> = {
|
|
117
|
-
v1: { endpoints: v1, modules: apiv3 },
|
|
118
|
-
v2: { endpoints: v2, modules: apiv3 },
|
|
119
|
-
v3: { endpoints: v3, modules: apiv3 },
|
|
120
|
-
v4: { endpoints: v4, modules: apiv4 },
|
|
121
|
-
};
|