@20syldev/api 5.0.0 → 5.2.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 +22 -47
- package/dist/config/versions.js +3 -0
- package/dist/config/versions.js.map +1 -1
- package/dist/constants.js +1 -0
- package/dist/constants.js.map +1 -1
- package/dist/modules/v4/captcha.js +1 -1
- package/dist/modules/v4/placeholder.js +4 -4
- package/dist/modules/v4/qrcode.js +2 -2
- package/dist/modules/v5/asymmetric.js +67 -0
- package/dist/modules/v5/asymmetric.js.map +1 -0
- package/dist/modules/v5/chart.js +12 -12
- package/dist/modules/v5/chart.js.map +1 -1
- package/dist/modules/v5/evaluate.js +2 -2
- package/dist/modules/v5/evaluate.js.map +1 -1
- package/dist/modules/v5/matrix.js +6 -6
- package/dist/modules/v5/matrix.js.map +1 -1
- package/dist/modules/v5/otp.js +108 -0
- package/dist/modules/v5/otp.js.map +1 -0
- package/dist/modules/v5/symmetric.js +71 -0
- package/dist/modules/v5/symmetric.js.map +1 -0
- package/dist/modules/v5.js +3 -0
- package/dist/modules/v5.js.map +1 -1
- package/dist/routes/delete.js +2 -2
- package/dist/routes/delete.js.map +1 -1
- package/dist/routes/get.js +12 -0
- package/dist/routes/get.js.map +1 -1
- package/dist/routes/patch.js +1 -1
- package/dist/routes/patch.js.map +1 -1
- package/dist/routes/post.js +90 -0
- package/dist/routes/post.js.map +1 -1
- package/package.json +1 -1
- package/recap.md +0 -98
package/recap.md
DELETED
|
@@ -1,98 +0,0 @@
|
|
|
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` |
|