Boîte à outils de candidature
Le bext est livré avec deux couches de blocs de construction. Les capacités (voir la section Capacités) sont des caractéristiques du plugin Rust : des coutures côté serveur pour la validation de la configuration, les fournisseurs de paiement, les mailers, les indicateurs de fonctionnalités, etc. La boîte à outils d'application est la couche située au-dessus d'eux : les primitives ergonomiques TypeScript qu'un auteur de site PRISM importe directement et utilise dans un loader, un action ou un composant. Aucun plugin à enregistrer, pas d'IPC - la plupart sont des TypeScript purs et sans dépendances qui s'exécutent dans le même isolat que votre rendu.
Si vous venez de Laravel, il s'agit de la couche que vous connaissez sous le nom de façades et d'assistants — Validator::make, Gate::allows, Eloquent, Notification::send, Caissier. Même travail, TypeScript -natif, assis au-dessus du runtime de bext et des capacités de Rust.
Modules#
| Importer | Ce que ça te donne | Capacité Rust qu’il complète |
|---|---|---|
@bext-stack/framework/validation |
Validation de schéma typé pour FormData / JSON, rapports multi-erreurs, aide aux actions du serveur. |
Validateur de demande |
@bext-stack/framework/auth |
Utilitaires de cookies, sessions signées HMAC inviolables, OAuth/OIDC PKCE — crypto pure-JS, pas de node:crypto. |
Authentification / Session |
@bext-stack/framework/authz |
Portes et politiques – can / authorize, aides aux rôles et autorisations à sécurité nulle, hook before super-administrateur. |
Politique d'authentification |
@bext-stack/framework/orm + /migrate |
Modèle typé/générateur de requêtes + un exécuteur de migration suivi et idempotent et un générateur de schéma sur SQLite intégré. | Pont |
@bext-stack/framework/notifications |
Un notify() diffusé vers les e-mails/SMS/Slack/in-app/webhook, chaque canal étant rendu à partir de la même notification. |
Courrier |
@bext-stack/framework/flags |
Indicateurs et expériences de fonctionnalités définis par le code : déploiements de pourcentages de persistance déterministes, avec transition facultative vers le moteur Rust. | Indicateur de fonctionnalité |
@bext-stack/framework/billing |
Caisse / portail / abonnements Stripe de style caissier + vérification de la signature du webhook en temps constant, pas de SDK Stripe. | Fournisseurs de paiement |
@bext-stack/framework/events |
Bus d'événements de domaine typé en cours de processus : écouteurs découplés, diffusion asynchrone, carte subscribe. |
— |
@bext-stack/framework/i18n |
Catalogues de messages avec interpolation + pluralisation, paramètres régionaux de secours, détection de paramètres régionaux de demande. | I18n |
@bext-stack/framework/jobs |
Travaux en arrière-plan saisis : dispatch() sur la file d'attente du SDK, process() avec tentatives automatiques, transport enfichable. |
Tâches en arrière-plan |
@bext-stack/framework/kv |
Cache de valeurs : remember / get / put / pull / add sur un magasin enfichable (SDK KV ou en mémoire). |
Mise en cache |
@bext-stack/framework/rate-limit |
Limitation du débit à fenêtre fixe : check / attempt / peek / reset, autorisé/restant/nouvelle tentative après, keyForRequest. |
Sécurité |
@bext-stack/framework/mail |
Modèles d'e-mails transactionnels — renderMailable(spec) → HTML réactif + texte brut, compose avec des notifications. |
Courrier |
@bext-stack/framework/testkit + /testing |
Usines de modèles + un client de test d'itinéraire ( testRoute ), plus une bibliothèque de rendu/requête de composants — le tout dans bun test. |
— |
D'autres modules arrivent ici à mesure que la boîte à outils se développe (autorisation, données et migrations, notifications, facturation). Chacun est une importation de sous-chemin unique, livré avec une démo exécutable sur démo. bext.dev et des liens croisés vers la fonctionnalité Rust sur laquelle il repose.
Règles de conception#
Chaque module de la boîte à outils suit les trois mêmes règles, ils sont donc composés de manière prévisible :
- Pur là où il peut être. La validation, la création de schémas et le formatage sont
TypeScript simple sans appels d'hôte - comportement identique sur V8 et QuickJS, et testable unitaire avec
bun testet sans pont. Les modules touchant l'état passent par les coutures d'exécution documentées (le clientsdk, les globaux natifsbridge) plutôt que d'en inventer de nouveaux. - Importations de sous-chemin uniquement. Atteindre chaque module à son sous-chemin
(
@bext-stack/framework/validation), jamais la racine du baril — le baril déclenche le pipeline turbopack. - Tapé par construction. Les types que vous écrivez sont les types que vous récupérez
(
Infer<typeof schema>), de sorte que l'éditeur ettscdétectent les erreurs de forme avant l'exécution d'une requête.
Voir aussi#
- Actions du serveur — où se trouvent la plupart des appels de la boîte à outils.
- Données PRISM (chargeur / action) — le flux de données auquel la boîte à outils se connecte.
- Aperçu des capacités – les traits Rust en dessous.