Points d'entrée
Catalogue des sous-chemins @lrvo/core/*, fichier ciblé, runtime, et lesquels sont importables depuis un fichier 'use client'.
Chaque sous-chemin importable de @lrvo/core, avec son runtime. C'est la seule vue d'ensemble de ce qui est importable et depuis où.
Ajouter un point d'entrée public = éditer uniquement package.json#exports. La liste des fichiers compilés se régénère au build par un parcours de src/. Voir Build et exports.
Lecture de la colonne runtime
| Runtime | Signification |
|---|---|
| serveur | Importe du code Node (pg, fs, next/headers) ou en dépend transitivement. Ne jamais l'importer depuis un fichier 'use client', ni depuis un fichier qu'un 'use client' importe. |
| client | Porte ou tire 'use client'. |
| neutre | Sans dépendance de runtime. Importable des deux côtés. |
Un import serveur depuis un fichier client ne produit pas toujours une erreur immédiate : le bundler trace la chaîne d'imports statiques et fait remonter un Module not found: Can't resolve 'dns', parfois depuis un fichier qui n'a rien à voir.
Racine
| Sous-chemin | Fichier | Runtime |
|---|---|---|
@lrvo/core | src/index.js | serveur |
Barrel de commodité qui expose db, auth, admin, api, email, cron, payments, stripe et pdf en espaces de noms. En pratique, préférer les sous-chemins ciblés : ils sont plus lisibles et n'entraînent pas tout le graphe serveur.
Features
| Sous-chemin | Fichier | Runtime |
|---|---|---|
@lrvo/core/features/auth | features/auth/index.js | serveur |
@lrvo/core/features/auth/actions | features/auth/actions.js | serveur ('use server') |
@lrvo/core/features/auth/server | features/auth/AuthPage.server.js | serveur |
@lrvo/core/features/auth/client | features/auth/AuthPage.client.js | client |
@lrvo/core/features/auth/pages | features/auth/pages/index.js | client |
@lrvo/core/features/admin | features/admin/index.js | neutre |
@lrvo/core/features/admin/protect | features/admin/protect.js | serveur |
@lrvo/core/features/admin/server | features/admin/AdminPage.server.js | serveur |
@lrvo/core/features/admin/layout | features/admin/AdminLayout.server.js | serveur |
@lrvo/core/features/admin/client | features/admin/AdminPage.client.js | client |
@lrvo/core/features/admin/components | features/admin/components/index.js | client |
@lrvo/core/features/provider | features/provider/index.js | client |
features/admin est délibérément neutre : c'est ce qui permet à un module de l'importer depuis son client.js comme depuis son register-server.js. Il ne ré-exporte donc pas protect.js, qui importe next/navigation et, transitivement, next/headers au top-level.
Cores
| Sous-chemin | Fichier | Runtime |
|---|---|---|
@lrvo/core/api | core/api/index.js | serveur |
@lrvo/core/api/handler | core/api/route-handler.js | serveur |
@lrvo/core/database | core/database/index.js | serveur |
@lrvo/core/users | core/users/index.js | serveur |
@lrvo/core/users/constants | core/users/constants.js | neutre |
@lrvo/core/crypto | core/crypto/index.js | serveur |
@lrvo/core/storage | core/storage/index.js | serveur |
@lrvo/core/email | core/email/index.js | serveur |
@lrvo/core/email/templates | core/email/templates/index.js | serveur |
@lrvo/core/email/components | core/email/components.js | serveur |
@lrvo/core/cron | core/cron/index.js | serveur |
@lrvo/core/payments | core/payments/index.js | serveur |
@lrvo/core/stripe | core/payments/stripe.js | serveur |
@lrvo/core/pdf | core/pdf/index.js | serveur |
@lrvo/core/toast | core/toast/index.js | client |
@lrvo/core/themes | core/themes/index.js | client |
@lrvo/core/themes/define | core/themes/define.js | neutre |
@lrvo/core/themes/server | core/themes/index.server.js | serveur |
@lrvo/core/modules | core/modules/index.js | serveur |
@lrvo/core/registry | core/registry/index.js | serveur |
@lrvo/core/update/check-cache | core/update/check-cache.server.js | serveur |
@lrvo/core/templates | core/templates/index.js | serveur |
@lrvo/core/public-content | core/public-content/index.js | serveur |
@lrvo/core/public-pages | core/public-pages/index.js | serveur |
@lrvo/core/public-pages/server | core/public-pages/PublicModulePage.server.js | serveur |
@lrvo/core/users est le barrel serveur complet. Depuis un fichier client, n'importer que @lrvo/core/users/constants, qui ne contient que PERMISSIONS, PERMISSION_DEFINITIONS et getPermissionGroups.
@lrvo/core/update/check-cache expose le seul fichier lisible à chaud de core/update. Il n'existe volontairement pas de sous-chemin @lrvo/core/update : un barrel tirerait plan.server.js et npm.server.js, dont les sous-processus npm n'ont rien à faire dans le graphe d'un rendu de page.
Sous-entrées d'un module @lrvo/module-*
Symétrie de la table précédente, côté module. Ces trois sous-entrées ne sont pas au choix du module : chacune a son point d'accroche dans le projet hôte, et c'est ce point d'accroche qui décide de la compilation Next.js qui verra le code.
| Sous-chemin | Fichier | Runtime | Tiré par |
|---|---|---|---|
. | src/index.js | serveur | instrumentation.js, via app/.lrvo/modules.generated.js |
./client | src/client.js | client ('use client') | app/layout.js, via <LrvoModulesClient /> |
./public-page | src/public-page.js | serveur, graphe RSC | app/lrvo/[...path]/page.js, via app/.lrvo/public-pages.server.js |
./public-page n'est pas un fichier 'use client' : c'est un point d'entrée RSC dont les feuilles peuvent l'être, ce qui est précisément sa raison d'exister. Voir Pages publiques.
Certains modules exposent aussi un ./public et un ./server. Ceux-là sont de simples barrels que le code du site importe directement, sans point d'accroche généré. Ne pas confondre ./public et ./public-page : le premier est importé par le projet, le second ne l'est jamais.
Registres de contenu
| Sous-chemin | Fichier | Runtime |
|---|---|---|
@lrvo/core/blocks-registry | blocks-registry/index.server.js | serveur |
@lrvo/core/blocks-registry/render | blocks-registry/render.server.js | serveur |
@lrvo/core/blocks-registry/walk | blocks-registry/walk.js | neutre |
@lrvo/core/blocks-registry/columns-layout | blocks-registry/columns-layout.js | neutre |
@lrvo/core/blocks-registry/schema | blocks-registry/fields-schema.js | neutre |
@lrvo/core/blocks-registry/client | blocks-registry/client.client.js | client |
@lrvo/core/blocks-registry/fields-ui | blocks-registry/fields-ui.client.js | client |
@lrvo/core/media-registry | media-registry/index.server.js | serveur |
@lrvo/core/media-registry/file-route | media-registry/file-route.server.js | serveur |
@lrvo/core/media-registry/block-editor | media-registry/block-editor.server.js | serveur |
@lrvo/core/media-registry/client | media-registry/index.client.js | client |
Partagé
| Sous-chemin | Fichier | Runtime |
|---|---|---|
@lrvo/core/shared/components | shared/components/index.js | client |
@lrvo/core/shared/components/block-editor | shared/components/BlockEditor/helpers.js | neutre |
@lrvo/core/shared/hooks | shared/hooks/index.js | client |
@lrvo/core/shared/public | shared/public/index.js | client |
@lrvo/core/shared/icons | shared/icons/index.js | neutre |
@lrvo/core/seo | shared/lib/seo/index.js | neutre |
@lrvo/core/shared/metadata | shared/lib/metadata/index.js | neutre |
@lrvo/core/shared/dates | shared/lib/dates.js | neutre |
@lrvo/core/shared/currency | shared/utils/currency.js | neutre |
@lrvo/core/shared/config | shared/lib/appConfig.js | serveur |
@lrvo/core/shared/logger | shared/lib/logger.js | serveur |
@lrvo/core/shared/rate-limit | shared/lib/rateLimit.js | serveur |
@lrvo/core/styles/core.css | shared/styles/core.css | feuille de style |
@lrvo/core/shared/components/block-editor n'expose que les helpers purs de l'éditeur : format InlineNode[], sérialisation DOM, conversion Block[] ↔ HTML. Il ne tire pas BlockEditor.client.js, ce qui permet à un rendu public d'appeler blocksToHtml côté serveur. Le composant reste sous @lrvo/core/shared/components, l'enregistrement d'un type de bloc sous @lrvo/core/blocks-registry/client. Voir BlockEditor.
@lrvo/core/shared/public porte le cadre des pages publiques des modules : PublicShell, BrandMark, GateBanner et ThemeToggle. Il s'importe depuis un composant serveur comme depuis un composant client, les fichiers portant eux mêmes 'use client'. La marque à lui passer se lit avec getPublicBrand() de @lrvo/core/shared/config, côté serveur. Voir Pages publiques.
@lrvo/core/seo est neutre au sens du bundler, et SeoFields comme SeoScoreBadge en importent computeSeoScore côté client. En revanche isSeoEnabled() lit process.env : côté client il retournerait toujours false. Le flag descend par le contexte de config de l'admin, pas par cet appel.
@lrvo/core/shared/currency est neutre au même sens : le formatage fonctionne des deux côtés, mais getDefaultCurrency() et getCurrencySymbol() passent par getAppConfig(), qui lit process.env. Côté client ils retombent sur CAD et $ au lieu des valeurs configurées. Descendre la devise par les props ou le contexte quand elle doit être exacte dans le navigateur. @lrvo/core/shared/dates n'a pas cette réserve : il ne lit aucune variable d'environnement.
Sous-entrées sûres depuis un fichier 'use client'
Le client.js d'un module ne doit jamais importer un barrel mixte, c'est-à-dire un barrel qui ré-exporte du code serveur à côté de constantes utilisables côté client.
| Sous-entrée | Contenu |
|---|---|
@lrvo/core/users/constants | Permissions et leurs définitions. Aucun import serveur. |
@lrvo/core/features/admin | registerPage, registerWidget, registerNavItem, registerNavSection, buildNavigationSections. |
@lrvo/core/features/admin/components | Composants client de l'admin. |
@lrvo/core/features/provider | LrvoProvider. |
@lrvo/core/media-registry/client | Registre média client. Vide sans @lrvo/module-medias. |
@lrvo/core/blocks-registry/client | Enregistrement de blocs côté éditeur. |
@lrvo/core/blocks-registry/fields-ui | Champs d'édition d'un bloc personnalisé. |
@lrvo/core/blocks-registry/walk, .../columns-layout, .../schema | Helpers neutres. |
@lrvo/core/themes | Bascule clair / sombre. |
@lrvo/core/themes/define | defineTheme, pour le theme.js du projet. |
@lrvo/core/themes/server | ThemeStyle, getTheme, getThemeValues. |
@lrvo/core/toast | Notifications. |
@lrvo/core/shared/icons | Icônes. |
@lrvo/core/shared/components | Composants partagés. |
@lrvo/core/shared/components/block-editor | Helpers purs de l'éditeur, sans le composant. |
@lrvo/core/shared/hooks | Hooks. |
@lrvo/core/shared/public | Cadre des pages publiques des modules. |
@lrvo/core/shared/dates | Helpers de dates, sans lecture d'environnement. |
@lrvo/core/shared/currency | Formatage monétaire, avec la réserve ci-dessus sur les valeurs configurées. |
Tout ce qui n'est pas dans cette liste (en particulier @lrvo/core/users complet, @lrvo/core/database, @lrvo/core/api, @lrvo/core/storage) est du code serveur.
Notes
Certains exports ne servent qu'aux tests. resetLrvoInitialization() sur le barrel racine, clearRegisteredModules(), clearRouterConfig(), clearFeatureRoutes() et clearStorageConfig() remettent un registre à zéro entre deux cas. Ils sont exportés parce qu'un registre singleton ne se réinitialise pas autrement, pas parce qu'une application aurait à les appeler : le faire en production vide l'état sur lequel repose le reste du processus.
Il n'y a pas de sous-chemin @lrvo/core/docs. La documentation est livrée en fichiers statiques sous node_modules/@lrvo/core/dist/docs/, pas comme un module importable.
Le pattern de nommage des fichiers est la source de vérité du runtime. .server.js pour le code serveur strict, .client.js pour ce qui commence par 'use client', pas de suffixe pour un module neutre. Voir Frontières serveur/client.