# Les modules BERKIOS : vue d'ensemble

Source : https://docs.berkios.online/modules/apercu/ · Section : Modules · Documentation officielle BERKIOS (https://docs.berkios.online)


Un **module** (ou **bibliothèque**) ajoute de nouvelles commandes au code de vos composants : générer un identifiant unique, calculer une date relative, fabriquer un PDF, appeler une API, tirer un nombre au hasard…

Vous l'installez en quelques clics depuis le Studio, puis vous utilisez ses commandes comme celles de BERKIOS CODE.

## Installer un module

1. Ouvrez le Studio, puis **Code → Bibliothèques**.
2. Choisissez une bibliothèque dans le catalogue et installez-la. Le Studio vérifie l'**empreinte SHA-256** du fichier avant de l'enregistrer.
3. Cliquez sur **Ajouter au projet**. La définition est copiée **dans votre projet** : il reste ouvrable sans connexion, et l'application générée est autonome.
4. Utilisez les commandes dans le code d'un composant.

Avant l'ajout, le Studio affiche les **permissions** demandées par la bibliothèque (réseau, fichiers, impression…). Une bibliothèque qui utilise une permission non déclarée est refusée.

## Utiliser une commande

```text
quand clic
  uuid4 "$id"                  # génère un identifiant unique
  uuid-valide "$id" "$ok"      # true
  dans-jours "Echeance" 30     # date d'aujourd'hui + 30 jours
```

- Une commande s'écrit par son **nom court** (`uuid4`) ou son **nom qualifié** (`uuid.uuid4`).
- Si deux bibliothèques utilisent le même nom, ou si le nom existe déjà dans BERKIOS CODE, utilisez la forme qualifiée.
- Une commande de bibliothèque commence une ligne : on ne l'imbrique pas après `si … alors` ou `repeter`.
- La plupart des bibliothèques proposent leurs commandes en **français, anglais, espagnol et swahili**.

## Deux familles de modules

| Famille | Principe | Exemples |
|---|---|---|
| **Bibliothèques `.bkl`** | Des macros écrites en BERKIOS CODE. Elles n'exécutent rien d'autre que ce que BERKIOS CODE sait déjà faire : l'aperçu et l'application finale se comportent de la même façon. | `datetime`, `uuid`, `randomy`, `golib`, `requeto`, `pdflab`, `video`, `mygame`, `easyapi` |
| **Modules natifs** | Du code exécuté par le Bridge de BERKIOS, pour les fonctions qu'une macro ne peut pas faire (cryptographie, réseau, appareils). | [Passo](https://docs.berkios.online/modules/passo/), [Berkrypt](https://docs.berkios.online/modules/berkrypt/), [ftpLab](https://docs.berkios.online/modules/ftplab/), [KConnect](https://docs.berkios.online/modules/kconnect/), [KPartage](https://docs.berkios.online/modules/kpartage/) |

## Les bibliothèques fournies

| Bibliothèque | Contenu |
|---|---|
| `systeme` | Copier une valeur, exporter un texte, sauvegarder et restaurer une valeur. |
| [`datetime`](https://docs.berkios.online/modules/datetime/) | Date et heure, dates relatives, jours restants, durées lisibles, chronomètre (13 commandes). |
| [`randomy`](https://docs.berkios.online/modules/randomy/) | Nombres aléatoires, dans l'esprit du module `random` de Python (30 commandes). |
| [`uuid`](https://docs.berkios.online/modules/uuid/) | Identifiants uniques (12 commandes). |
| [`golib`](https://docs.berkios.online/modules/golib/) | Chemins de fichiers, dans l'esprit de `pathlib` (37 commandes). |
| [`requeto`](https://docs.berkios.online/modules/requeto/) | Requêtes HTTP GET avec extraction JSON et cache (8 commandes). |
| [`pdflab`](https://docs.berkios.online/modules/pdflab/) | Génération de PDF (39 commandes). |
| [`pdfreader`](https://docs.berkios.online/modules/pdfreader/) | Lecture de PDF. |
| [`video`](https://docs.berkios.online/modules/video/) | Lecteur vidéo (24 commandes). |
| [`mygame`](https://docs.berkios.online/modules/mygame/) | Jeux 2D : canevas, sprites, collisions, scores. |
| [`easyapi`](https://docs.berkios.online/modules/easyapi/) | Créer des API REST en BERKIOS CODE. |
| `fichiers` | Fichiers virtuels et réels dans le dossier de travail confiné. |

## Permissions

Les permissions possibles pour une bibliothèque `.bkl` sont : `reseau`, `fichiers`, `presse-papiers`, `impression`, `audio` et `stockage`. Le Studio les **déduit** des commandes utilisées et refuse une bibliothèque qui n'en déclare pas assez.

## Limites actuelles

- Les bibliothèques `.bkl` sont des macros : elles ne peuvent pas ajouter de code Dart ni de plugins.
- Le catalogue n'est pas signé. L'empreinte SHA-256 protège contre un fichier modifié, pas contre un catalogue malveillant : installez uniquement des bibliothèques de sources de confiance.

## Créer votre propre bibliothèque

Une bibliothèque est un simple fichier JSON. Le [format `.bkl`](https://docs.berkios.online/modules/format-bkl/) explique comment en écrire une.
