@20syldev/api 4.9.0 → 5.1.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 CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  # API Personnelle
5
5
 
6
- [![Version](https://custom-icon-badges.demolab.com/badge/Version%20:-v4.9.0-6479ee?logo=api.sylvain.sh&labelColor=23272A)](https://github.com/20syldev/api/releases/latest)
6
+ [![Version](https://custom-icon-badges.demolab.com/badge/Version%20:-v5.1.0-6479ee?logo=api.sylvain.sh&labelColor=23272A)](https://github.com/20syldev/api/releases/latest)
7
7
 
8
8
  </div>
9
9
 
@@ -41,10 +41,10 @@ $ npm run build && npm start
41
41
  ```
42
42
 
43
43
  ```console
44
- > @20syldev/api@4.9.0 build
44
+ > @20syldev/api@5.1.0 build
45
45
  > tsc
46
46
 
47
- > @20syldev/api@4.9.0 start
47
+ > @20syldev/api@5.1.0 start
48
48
  > node dist/app.js
49
49
 
50
50
  API is running on
@@ -63,22 +63,22 @@ $ npm run dev
63
63
  Vous pouvez également importer les modules spécifiques dont vous avez besoin :
64
64
 
65
65
  ```js
66
- // Importer des modules spécifiques depuis la v4
67
- import { color, token, username } from '@20syldev/api/v4';
66
+ // Importer des modules spécifiques depuis la v5
67
+ import { evaluate, color, username } from '@20syldev/api/v5';
68
+
69
+ // Évaluer une expression mathématique
70
+ const expr = evaluate('sin(pi / 2) + sqrt(4)', 5);
71
+ console.log(expr.result); // 3
72
+ console.log(expr.expression); // "sin(pi / 2) + sqrt(4)"
68
73
 
69
74
  // Générer une couleur aléatoire
70
75
  const couleur = color();
71
76
  console.log(`Couleur HEX: ${couleur.hex}`);
72
77
  console.log(`Couleur RGB: ${couleur.rgb}`);
73
- console.log(`Couleur HSL: ${couleur.hsl}`);
74
78
 
75
79
  // Générer un nom d'utilisateur aléatoire
76
80
  const utilisateur = username();
77
81
  console.log(`Nom d'utilisateur: ${utilisateur.username}`);
78
-
79
- // Générer un jeton sécurisé
80
- const jeton = token(16, 'hex');
81
- console.log(`Jeton: ${jeton}`);
82
82
  ```
83
83
 
84
84
  ## Scripts disponibles
@@ -93,66 +93,80 @@ console.log(`Jeton: ${jeton}`);
93
93
  | `npm run format` | Formatage avec Prettier |
94
94
  | `npm run check` | Vérification TypeScript + ESLint |
95
95
 
96
- ## Endpoints disponibles (v4)
96
+ ## Endpoints disponibles (v5)
97
97
 
98
98
  | Endpoint | Méthode | Description |
99
99
  | ------------------- | ---------- | ------------------------------------------------------- |
100
- | `/v4/address` | GET | Génération d'adresses postales aléatoires |
101
- | `/v4/agent` | GET | Analyse de User-Agent |
102
- | `/v4/algorithms` | GET | Fonctions algorithmiques (tri, fibonacci, factorielle…) |
103
- | `/v4/avatar` | GET | Génération d'avatars identicon/pixel |
104
- | `/v4/barcode` | GET | Génération de codes-barres (Code128, EAN-13/8, Code39) |
105
- | `/v4/captcha` | GET | Génération d'images captcha |
106
- | `/v4/chat` | GET / POST | Système de chat temporaire |
107
- | `/v4/color` | GET | Génération de couleurs aléatoires |
108
- | `/v4/convert` | GET | Conversions d'unités |
109
- | `/v4/credit` | GET | Génération de cartes bancaires fictives (Luhn valide) |
110
- | `/v4/cron` | GET | Analyse d'expressions cron |
111
- | `/v4/dice` | GET | Lanceur de dés RPG |
112
- | `/v4/domain` | GET | Informations de domaine aléatoires |
113
- | `/v4/encode` | GET | Encodage / décodage |
114
- | `/v4/geo` | GET | Calcul de distance géographique |
115
- | `/v4/hash` | POST | Hachage de texte |
116
- | `/v4/headers` | GET | Informations des en-têtes HTTP |
117
- | `/v4/hyperplanning` | POST | Analyse de calendriers HyperPlanning |
118
- | `/v4/infos` | GET | Informations sur l'API |
119
- | `/v4/ip` | GET | Analyse d'adresses IP |
120
- | `/v4/levenshtein` | GET | Distance entre chaînes |
121
- | `/v4/palette` | GET | Génération de palettes de couleurs |
122
- | `/v4/password` | GET | Génération de mots de passe sécurisés |
123
- | `/v4/personal` | GET | Profil personnel aléatoire |
124
- | `/v4/placeholder` | GET | Génération d'images placeholder |
125
- | `/v4/qrcode` | GET | Génération de QR codes |
126
- | `/v4/regex` | GET | Test d'expressions régulières |
127
- | `/v4/statistics` | GET | Statistiques descriptives |
128
- | `/v4/text` | GET | Utilitaires texte |
129
- | `/v4/tic-tac-toe` | GET / POST | Jeu de morpion |
130
- | `/v4/time` | GET | Informations temporelles |
131
- | `/v4/token` | POST | Génération de jetons sécurisés |
132
- | `/v4/username` | GET | Génération de noms d'utilisateur |
133
- | `/v4/validate` | GET | Validation (Luhn, IBAN, email) |
100
+ | `/v5/address` | GET | Génération d'adresses postales aléatoires |
101
+ | `/v5/agent` | GET | Analyse de User-Agent |
102
+ | `/v5/algorithms` | GET | Fonctions algorithmiques (tri, fibonacci, factorielle…) |
103
+ | `/v5/avatar` | GET | Génération d'avatars identicon/pixel |
104
+ | `/v5/barcode` | GET | Génération de codes-barres (Code128, EAN-13/8, Code39) |
105
+ | `/v5/captcha` | GET | Génération d'images captcha |
106
+ | `/v5/chart` | POST | Génération de graphiques SVG (bar, line, pie, donut) |
107
+ | `/v5/chat` | GET / POST | Système de chat temporaire |
108
+ | `/v5/color` | GET | Génération de couleurs aléatoires |
109
+ | `/v5/convert` | GET | Conversions d'unités |
110
+ | `/v5/credit` | GET | Génération de cartes bancaires fictives (Luhn valide) |
111
+ | `/v5/cron` | GET | Analyse d'expressions cron |
112
+ | `/v5/dice` | GET | Lanceur de dés RPG |
113
+ | `/v5/domain` | GET | Informations de domaine aléatoires |
114
+ | `/v5/encode` | GET | Encodage / décodage |
115
+ | `/v5/evaluate` | GET | Évaluation d'expressions mathématiques |
116
+ | `/v5/geo` | GET | Calcul de distance géographique |
117
+ | `/v5/hash` | POST | Hachage de texte |
118
+ | `/v5/headers` | GET | Informations des en-têtes HTTP |
119
+ | `/v5/hyperplanning` | POST | Analyse de calendriers HyperPlanning |
120
+ | `/v5/infos` | GET | Informations sur l'API |
121
+ | `/v5/ip` | GET | Analyse d'adresses IP |
122
+ | `/v5/levenshtein` | GET | Distance entre chaînes |
123
+ | `/v5/matrix` | POST | Opérations matricielles (add, multiply, inverse…) |
124
+ | `/v5/otp` | POST | Génération et vérification de codes TOTP/HOTP |
125
+ | `/v5/palette` | GET | Génération de palettes de couleurs |
126
+ | `/v5/password` | GET | Génération de mots de passe sécurisés |
127
+ | `/v5/personal` | GET | Profil personnel aléatoire |
128
+ | `/v5/placeholder` | GET | Génération d'images placeholder |
129
+ | `/v5/qrcode` | GET | Génération de QR codes |
130
+ | `/v5/regex` | GET | Test d'expressions régulières |
131
+ | `/v5/statistics` | GET | Statistiques descriptives |
132
+ | `/v5/symmetric` | POST | Chiffrement symétrique AES (encrypt/decrypt) |
133
+ | `/v5/text` | GET | Utilitaires texte |
134
+ | `/v5/tic-tac-toe` | GET / POST | Jeu de morpion |
135
+ | `/v5/time` | GET | Informations temporelles |
136
+ | `/v5/token` | POST | Génération de jetons sécurisés |
137
+ | `/v5/username` | GET | Génération de noms d'utilisateur |
138
+ | `/v5/validate` | GET | Validation (Luhn, IBAN, email) |
134
139
 
135
140
  ## Exemples d'utilisation
136
141
 
137
142
  ```js
138
- import { avatar, barcode, credit, cron } from '@20syldev/api/v4';
139
-
140
- // Générer une carte bancaire fictive Luhn-valide
141
- const { cards } = credit('visa', 1, 'full');
142
- console.log(cards[0].formatted); // "4532 9876 5432 1098"
143
- console.log(cards[0].cvv); // "847"
144
-
145
- // Générer un avatar identicon SVG déterministe
146
- const { body } = avatar({ seed: 'john', format: 'svg', size: 200 });
147
- // body contient une chaîne SVG
148
-
149
- // Générer un code-barres Code128
150
- const { body: svg } = barcode({ data: 'Hello World' });
151
- // body contient une chaîne SVG
152
-
153
- // Analyser une expression cron
154
- const { next } = cron('0 9 * * 1-5', 3);
155
- console.log(next); // ["2026-05-12T09:00:00.000Z", ...]
143
+ import { chart, evaluate, matrix, otp, symmetric } from '@20syldev/api/v5';
144
+
145
+ // Évaluer une expression mathématique
146
+ const { result } = evaluate('log2(8) * (3 + pi)', 4);
147
+ console.log(result); // 18.4248
148
+
149
+ // Opération matricielle — produit de deux matrices
150
+ const { result: product } = matrix.multiply([[1, 2], [3, 4]], [[5, 6], [7, 8]]);
151
+ console.log(product); // [[19, 22], [43, 50]]
152
+
153
+ // Générer un graphique SVG en mémoire
154
+ const { body: svg } = chart.bar(
155
+ { labels: ['Jan', 'Fév', 'Mar'], datasets: [{ label: 'Ventes', values: [120, 85, 200] }] },
156
+ { width: 600, height: 300 },
157
+ );
158
+ // body contient une chaîne SVG prête à l'emploi
159
+
160
+ // Chiffrement symétrique AES-256-GCM
161
+ const { result: blob } = symmetric('encrypt', 'message secret', 'motdepasse');
162
+ const { result: plain } = symmetric('decrypt', blob, 'motdepasse');
163
+ console.log(plain); // 'message secret'
164
+
165
+ // Générer un secret TOTP et vérifier un code
166
+ const { secret } = otp('secret', {});
167
+ const { code } = otp('generate', { secret });
168
+ const { valid } = otp('verify', { secret, code });
169
+ console.log(valid); // true
156
170
  ```
157
171
 
158
172
  _Visitez la [documentation](https://docs.sylvain.sh) dédiée, vous y retrouverez des exemples de requêtes et des codes simples pour tester l'[API](https://api.sylvain.sh) !_
@@ -1,5 +1,6 @@
1
1
  import * as apiv3 from '../modules/v3.js';
2
2
  import * as apiv4 from '../modules/v4.js';
3
+ import * as apiv5 from '../modules/v5.js';
3
4
  /**
4
5
  * Merges a base list of endpoints with additions, deduplicating by `name`.
5
6
  * If an addition has the same name as a base entry, it overrides it.
@@ -100,11 +101,28 @@ const v4 = {
100
101
  { name: 'validate', path: '/validate?type={type}&value={value}' },
101
102
  ]),
102
103
  post: [...v3.post],
104
+ patch: [{ name: 'tic-tac-toe', path: '/tic-tac-toe/:game' }],
105
+ delete: [
106
+ { name: 'chat', path: '/chat/:token' },
107
+ { name: 'tic-tac-toe', path: '/tic-tac-toe/:game' },
108
+ ],
109
+ };
110
+ const v5 = {
111
+ get: merge(v4.get, [{ name: 'evaluate', path: '/evaluate?expr={expression}(&precision={0-15})' }]),
112
+ post: merge(v4.post, [
113
+ { name: 'chart', path: '/chart' },
114
+ { name: 'matrix', path: '/matrix' },
115
+ { name: 'otp', path: '/otp' },
116
+ { name: 'symmetric', path: '/symmetric' },
117
+ ]),
118
+ patch: [...v4.patch],
119
+ delete: [...v4.delete],
103
120
  };
104
121
  export const versions = {
105
122
  v1: { endpoints: v1, modules: apiv3 },
106
123
  v2: { endpoints: v2, modules: apiv3 },
107
124
  v3: { endpoints: v3, modules: apiv3 },
108
125
  v4: { endpoints: v4, modules: apiv4 },
126
+ v5: { endpoints: v5, modules: apiv5 },
109
127
  };
110
128
  //# sourceMappingURL=versions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../src/config/versions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../src/config/versions.ts"],"names":[],"mappings":"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"}
package/dist/constants.js CHANGED
@@ -23,16 +23,21 @@ export const STATUS_MESSAGES = {
23
23
  // Modules
24
24
  export const EARTH_RADIUS_KM = 6371;
25
25
  export const MAX_ADDRESS_COUNT = 10;
26
+ export const MAX_CHART_DATASETS = 5;
27
+ export const MAX_CHART_LABELS = 20;
26
28
  export const MAX_CREDIT_COUNT = 10;
27
29
  export const MAX_COUNTDOWN_YEARS = 100;
28
30
  export const MAX_CRON_ITERATIONS = 365 * 24 * 60;
29
31
  export const MAX_CRON_RESULTS = 20;
32
+ export const MAX_EXPR_DEPTH = 100;
33
+ export const MAX_EXPR_LENGTH = 500;
30
34
  export const MAX_FACTORIAL = 170;
31
35
  export const MAX_GCD_VALUE = 100_000;
32
36
  export const MAX_LEVENSHTEIN_LENGTH = 1000;
33
37
  export const MIN_PASSWORD_LENGTH = 8;
34
38
  export const MAX_PASSWORD_LENGTH = 128;
35
39
  export const MAX_PASSWORD_COUNT = 20;
40
+ export const MAX_MATRIX_SIZE = 20;
36
41
  export const MAX_PATTERN_LENGTH = 200;
37
42
  export const MAX_PRIME_LIST = 10_000;
38
43
  export const MAX_QRCODE_LOGO_BYTES = 2 * 1024 * 1024;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAExD,MAAM;AACN,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC;AACvC,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC;AACjC,MAAM,CAAC,MAAM,QAAQ,GAAG,yBAAyB,CAAC;AAClD,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAErC,SAAS;AACT,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AACxC,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AACxC,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AACpC,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AACxC,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AACjC,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC;AAErC,MAAM,CAAC,MAAM,eAAe,GAA2B;IACnD,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,oBAAoB;IACzB,GAAG,EAAE,mBAAmB;IACxB,GAAG,EAAE,mBAAmB;IACxB,GAAG,EAAE,uBAAuB;CAC/B,CAAC;AAEF,UAAU;AACV,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AACpC,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AACpC,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AACnC,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AACvC,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;AACjD,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AACnC,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AACjC,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC;AACrC,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAC3C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AACrC,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AACvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AACrC,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AACtC,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC;AACrC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AACrD,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AACrC,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AACtC,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AACnC,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAErC,MAAM,CAAC,MAAM,YAAY,GAAuB;IAC5C,CAAC,IAAI,EAAE,GAAG,CAAC;IACX,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,GAAG,EAAE,IAAI,CAAC;IACX,CAAC,GAAG,EAAE,GAAG,CAAC;IACV,CAAC,EAAE,EAAE,IAAI,CAAC;IACV,CAAC,EAAE,EAAE,GAAG,CAAC;IACT,CAAC,EAAE,EAAE,IAAI,CAAC;IACV,CAAC,EAAE,EAAE,GAAG,CAAC;IACT,CAAC,CAAC,EAAE,IAAI,CAAC;IACT,CAAC,CAAC,EAAE,GAAG,CAAC;IACR,CAAC,CAAC,EAAE,IAAI,CAAC;IACT,CAAC,CAAC,EAAE,GAAG,CAAC;CACX,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
@@ -32,7 +32,7 @@ export default function captcha(options) {
32
32
  const width = clamp(options.width, 'width', text.length * 60, 100, 800);
33
33
  const noise = options.noise ?? 'medium';
34
34
  if (!NOISE_LEVELS.has(noise))
35
- throw new Error('noise must be one of: low, medium, high');
35
+ throw new Error('Noise must be one of: low, medium, high');
36
36
  const { lines, dots } = NOISE_CONFIG[noise];
37
37
  const bg = normalizeColor(options.bg, '#ffffff');
38
38
  const baseColor = options.color ? normalizeColor(options.color, '#000000') : undefined;
@@ -111,14 +111,14 @@ function parseAvatar(value) {
111
111
  return 'circle';
112
112
  if (AVATAR_SHAPES.has(value))
113
113
  return value;
114
- throw new Error('avatar must be one of: circle, rounded, square');
114
+ throw new Error('Avatar must be one of: circle, rounded, square');
115
115
  }
116
116
  function parseAnimate(value) {
117
117
  if (!value)
118
118
  return 'shimmer';
119
119
  if (ANIMATE_MODES.has(value))
120
120
  return value;
121
- throw new Error('animate must be one of: shimmer, pulse, none');
121
+ throw new Error('Animate must be one of: shimmer, pulse, none');
122
122
  }
123
123
  /**
124
124
  * Generates an SVG placeholder image or skeleton loader with configurable dimensions and style.
@@ -131,10 +131,10 @@ function parseAnimate(value) {
131
131
  export default function placeholder(type, query) {
132
132
  const speed = query.speed ? parseFloat(query.speed) : 1.5;
133
133
  if (isNaN(speed) || speed < 0.1 || speed > 10)
134
- throw new Error('speed must be between 0.1 and 10');
134
+ throw new Error('Speed must be between 0.1 and 10');
135
135
  const radius = query.radius ? parseInt(query.radius, 10) : 4;
136
136
  if (isNaN(radius) || radius < 0 || radius > 50)
137
- throw new Error('radius must be between 0 and 50');
137
+ throw new Error('Radius must be between 0 and 50');
138
138
  const opts = {
139
139
  width: parseSize(query.width, 'width', 800),
140
140
  height: parseSize(query.height, 'height', 600),
@@ -40,14 +40,14 @@ export default async function qrcode(options) {
40
40
  throw new Error('Please provide a valid URL');
41
41
  const format = options.format ?? 'png';
42
42
  if (!FORMATS.has(format))
43
- throw new Error('format must be one of: png, base64');
43
+ throw new Error('Format must be one of: png, base64');
44
44
  const size = clamp(options.size, 'size', 200, 50, 2000);
45
45
  const margin = clamp(options.margin, 'margin', 4, 0, 10);
46
46
  const dark = normalizeColor(options.dark, '#000000');
47
47
  const light = normalizeColor(options.light, '#ffffff');
48
48
  let correction = options.correction ?? 'M';
49
49
  if (!CORRECTIONS.has(correction))
50
- throw new Error('correction must be one of: L, M, Q, H');
50
+ throw new Error('Correction must be one of: L, M, Q, H');
51
51
  if (options.icon)
52
52
  correction = 'H';
53
53
  const qrOpts = {