Date : 29/12/2024 Priorite : HAUTE - CETTE SEMAINE Objectif : Refonte architecture avec Data Catchers, Layouts, Auto Data
Durée estimée : 1-2 sessions
Créer src/services/auto-data.ts
Injecter dans le contexte
plugin@data.ts pour ajouter auto au sharedMapsharedMap.get('auto')Helpers d'accès
// src/services/context-helpers.ts
export function getAutoData(sharedMap): AutoData
export function getPageTree(sharedMap): PageTreeNode[]
export function getBreadcrumb(sharedMap): PageMeta[]
src/services/auto-data.ts (nouveau)src/types/auto-data.ts (nouveau)src/routes/plugin@data.ts (modifier)Durée estimée : 2-3 sessions
Définir le format Data Catcher
// src/types/data-catcher.ts
interface DataCatcher {
id: string;
name: string;
connector: string;
endpoint: string;
params?: Record<string, string>;
depends?: string[];
transform?: TransformConfig;
cache?: CacheConfig;
options?: OptionDefinition[];
}
Créer le resolver
src/services/data-catchers/resolver.tsStockage des catchers
STORAGE/data/catchers/*.jsonqwikpress.data_catchersAssignation multi-niveaux
config.json → dataCatchers.globalmeta.json → dataCatcherscatcherAccès dans les modules
const ctx = useDataContext();
ctx.global.featuredProducts
ctx.page.relatedItems
ctx.module.items
src/types/data-catcher.tssrc/services/data-catchers/resolver.tssrc/services/data-catchers/graph.tssrc/services/data-catchers/executor.tssrc/services/data-catchers/cache.tssrc/hooks/useDataContext.tsDurée estimée : 2-3 sessions
Définir le format Layout
interface Layout {
id: string;
path: string; // "/" ou "/docs" ou "/docs/api"
resetParent?: boolean;
zones: {
header?: ZoneConfig | "inherit" | null;
sidebar?: ZoneConfig | "inherit" | null;
content?: ContentZoneConfig;
footer?: ZoneConfig | "inherit" | null;
};
dataCatchers?: DataCatcherAssignment[];
}
Résolution des layouts
src/services/layouts/resolver.tsStockage
STORAGE/data/layouts/*.jsonqwikpress.layoutsRendu imbriqué
src/routes/(site)/layout.tsxMigration Header/Footer
HeaderModule et FooterModule si pas existantssrc/types/layout.ts (nouveau)src/services/layouts/resolver.ts (nouveau)src/services/layouts/merger.ts (nouveau)src/components/layouts/LayoutWrapper.tsx (nouveau)src/routes/(site)/layout.tsx (modifier)src/modules/header/ (nouveau ou adapter)src/modules/footer/ (nouveau ou adapter)Durée estimée : 2 sessions
Section Data Catchers
Section Layouts
Assignation dans pages/modules
src/routes/admin/catchers/ (nouveau)src/routes/admin/layouts/ (nouveau)src/components/admin/catcher-editor/ (nouveau)src/components/admin/layout-editor/ (nouveau)Durée estimée : 3-4 sessions
Sandbox sécurisé
Éditeur de code
Stockage Hot Modules
STORAGE/data/hot-modules/*.jsonqwikpress.hot_modulesRendu dynamique
HotModuleRenderer qui exécute le codeHot Connectors & Catchers
src/services/hot-modules/sandbox.tssrc/services/hot-modules/renderer.tssrc/components/admin/code-editor/src/routes/admin/custom/modules/src/routes/admin/custom/connectors/src/routes/admin/custom/catchers/Phase 1 (Auto Data) ████████░░░░░░░░░░░░ Fondation
↓
Phase 2 (Catchers) ░░░░░░░░████████████ Core logic
↓
Phase 3 (Layouts) ░░░░░░░░░░░░████████ Structure
↓
Phase 4 (Admin UI) ░░░░░░░░░░░░░░░░████ Interface
↓
Phase 5 (Hot Modules) ░░░░░░░░░░░░░░░░░░██ Avancé
On attaque Phase 1 : Auto Data maintenant ?