From 689eb33cd4182c40394a81976985f5094699b2ed Mon Sep 17 00:00:00 2001
From: Armand Philippot
-**Type :** `(manifest: SSRManifest, options: any) => Record
-**Type :** `(manifest: SSRManifest, options: any) => Record
-**Type :** `(renderer:` [`AstroRenderer`](https://github.com/withastro/astro/blob/fdd607c5755034edf262e7b275732519328a33b2/packages/astro/src/%40types/astro.ts#L872-L883) `) => void;`(manifest: SSRManifest, options: any) => Record\
(manifest: SSRManifest, options: any) => Record\
+**Type :** (renderer: AstroRenderer) => void;
**Exemples :** [`svelte`](https://github.com/withastro/astro/blob/main/packages/integrations/svelte/src/index.ts), [`react`](https://github.com/withastro/astro/blob/main/packages/integrations/react/src/index.ts), [`preact`](https://github.com/withastro/astro/blob/main/packages/integrations/preact/src/index.ts), [`vue`](https://github.com/withastro/astro/blob/main/packages/integrations/vue/src/index.ts), [`solid`](https://github.com/withastro/astro/blob/main/packages/integrations/solid/src/index.ts)
-**Type :** `(directive:` [`ClientDirectiveConfig`](https://github.com/withastro/astro/blob/00327c213f74627ac9ca1dec774efa5bf71e9375/packages/astro/src/%40types/astro.ts#L1872-L1875) `) => void;`
+**Type :** (directive: ClientDirectiveConfig) => void;
-**Type :** `(middleware:` [`AstroIntegrationMiddleware`](https://github.com/withastro/astro/blob/852ac0f75dfca1b2602e9cdbfa0447d9998e2449/packages/astro/src/%40types/astro.ts#L2124-L2127) `) => void;`
+**Type :** (middleware: AstroIntegrationMiddleware) => void;
-**Type :** [`RouteOptions`](https://github.com/withastro/astro/blob/3b10b97a4fecd1dfd959b160a07b5b8427fe40a7/packages/astro/src/types/public/integrations.ts#L14-L27) +**Type :** `{ readonly component: string; prerender?: boolean; }`
Un objet avec une propriété `component` pour identifier la route et les valeurs supplémentaires suivantes pour vous permettre de configurer la route générée : `prerender`. @@ -810,43 +810,43 @@ Une fonction qui envoie un message à la barre d'outils de développement qu'une Une fonction permettant aux intégrations de déclencher une mise à jour de la couche de contenu pendant `astro dev`. Cela peut être utilisé, par exemple, pour enregistrer un point de terminaison webhook pendant le développement, ou pour ouvrir un socket vers un CMS pour écouter les modifications. -Par défaut, `refreshContent` actualise toutes les collections. Vous pouvez éventuellement transmettre une propriété `loaders`, qui est un tableau de noms de chargeurs. Si elle est fournie, seules les collections qui utilisent ces chargeurs seront actualisées. Par exemple, une intégration CMS pourrait utiliser cette propriété pour actualiser uniquement ses propres collections. +Par défaut, `refreshContent()` actualise toutes les collections. Vous pouvez éventuellement transmettre une propriété `loaders`, qui est un tableau de noms de chargeurs. Si elle est fournie, seules les collections qui utilisent ces chargeurs seront actualisées. Par exemple, une intégration CMS pourrait utiliser cette propriété pour actualiser uniquement ses propres collections. Vous pouvez également transmettre un objet `context` aux chargeurs. Il peut être utilisé pour transmettre des données arbitraires telles que le corps du webhook ou un événement du websocket. ```ts title=mon-integration.ts {19-22} - { - name: 'mon-integration', - hooks: { - 'astro:server:setup': async ({ server, refreshContent }) => { - // Enregistrer un point de terminaison webhook de serveur de développement - server.middlewares.use('/_refresh', async (req, res) => { - if(req.method !== 'POST') { - res.statusCode = 405 - res.end('Méthode non autorisée'); - return - } - let body = ''; - req.on('data', chunk => { - body += chunk.toString(); - }); - req.on('end', async () => { - try { - const webhookBody = JSON.parse(body); - await refreshContent({ - context: { webhookBody }, - loaders: ['mon-chargeur'] - }); - res.writeHead(200, { 'Content-Type': 'application/json' }); - res.end(JSON.stringify({ message: 'Contenu actualisé avec succès' })); - } catch (error) { - res.writeHead(500, { 'Content-Type': 'application/json' }); - res.end(JSON.stringify({ error: "Échec de l'actualisation du contenu : " + error.message })); - } - }); - }); +{ + name: 'mon-integration', + hooks: { + 'astro:server:setup': async ({ server, refreshContent }) => { + // Enregistrer un point de terminaison webhook de serveur de développement + server.middlewares.use('/_refresh', async (req, res) => { + if(req.method !== 'POST') { + res.statusCode = 405 + res.end('Méthode non autorisée'); + return } + let body = ''; + req.on('data', chunk => { + body += chunk.toString(); + }); + req.on('end', async () => { + try { + const webhookBody = JSON.parse(body); + await refreshContent({ + context: { webhookBody }, + loaders: ['mon-chargeur'] + }); + res.writeHead(200, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify({ message: 'Contenu actualisé avec succès' })); + } catch (error) { + res.writeHead(500, { 'Content-Type': 'application/json' }); + res.end(JSON.stringify({ error: "Échec de l'actualisation du contenu : " + error.message })); + } + }); + }); } + } } ``` @@ -873,10 +873,10 @@ Le chargeur peut ensuite accéder à la propriété `refreshContextData` pour ob-**Type :** [`AddressInfo`](https://microsoft.github.io/PowerBI-JavaScript/interfaces/_node_modules__types_node_net_d_._net_.addressinfo.html) +**Type :** `AddressInfo`
-L'adresse, la famille et le numéro de port fournis par le [module Net de Node.js](https://nodejs.org/api/net.html). +L'adresse, la famille et le numéro de port fournis par la [méthode `server.address()` du module Net de Node.js](https://nodejs.org/api/net.html#serveraddress). ### `astro:server:done` @@ -955,10 +955,10 @@ export default {
-**Type :** Map\
+**Type :** `Map
+
+**Type :** `string`
+
+ +**Type :** `string` +
+ +Spécifie l'URL du composant source. + +###### `route` + ++ +**Type :** [`RouteData`](#routedata) +
+ +Décrit les informations relatives à la route de la page. + +###### `moduleSpecifier` + ++ +**Type :** `string` +
+ +Définit une chaîne de caractères pouvant être résolue en un chemin d'accès au fichier pour le module. + +###### `styles` + +
+
+**Type :** `Array<{ depth: number; order: number; sheet: { type: 'inline'; content: string } | { type: 'external'; src: string } }>`
+
@@ -1052,7 +1103,7 @@ export default {
-**Type :** [`SerializedSSRManifest`](https://github.com/withastro/astro/blob/3b10b97a4fecd1dfd959b160a07b5b8427fe40a7/packages/astro/src/core/app/types.ts#L91-L109) +**Type :** [`SerializedSSRManifest`](#propriétés-sérialisées-du-manifeste-ssr)
Vous permet de créer une compilation personnalisée en accédant au manifeste SSR. @@ -1071,6 +1122,77 @@ export default { } ``` +##### Propriétés sérialisées du manifeste SSR + +Une version sérialisée de [`SSRManifest`](#ssrmanifest), accessible via le [hook `astro:build:ssr`](#astrobuildssr). Elle contient les mêmes informations que `SSRManifest`, avec certaines propriétés ayant été converties en formats sérialisables. + +###### `routes` + ++ +**Type :** `SerializedRouteInfo[]` +
+ +Définit une liste d'informations de routage sérialisées. Chaque route contient les mêmes propriétés que [`SSRManifest.routes`](#routes-1), avec `routeData` converti au format sérialisable JSON. + +###### `assets` + ++ +**Type :** `string[]` +
+ +Définit une liste de chemins d'accès aux fichiers de ressources sérialisés. + +###### `componentMetadata` + +
+
+**Type :** [string, SSRComponentMetadata][]
+
+ +**Type :** `[string, string][]` +
+ +Définit un tableau de paires clé-valeur où chaque entrée est un tuple. Le premier élément est l'identifiant du script et le second est le contenu du script. + +###### `clientDirectives` + +
+
+**Type :** `[string, string][]`
+
+
+**Type :** `[string, string][]`
+
+
+**Type :** `string`
+
@@ -1146,7 +1268,9 @@ export default { **Type :** [`URL`](https://developer.mozilla.org/fr/docs/Web/API/URL)
-Un chemin URL vers le répertoire de sortie de la compilation. Notez que si vous avez besoin d'une chaîne de chemin absolu valide, vous devez utiliser l'utilitaire intégré [`fileURLToPath`](https://nodejs.org/api/url.html#urlfileurltopathurl-options) de Node. +Un chemin URL vers le répertoire de sortie de la compilation. + +L'exemple suivant utilise l'utilitaire [`fileURLToPath()`](https://nodejs.org/api/url.html#urlfileurltopathurl-options) intégré à Node pour calculer une chaîne de chemin absolu valide pour un fichier fourni par l'intégration : ```js import { fileURLToPath } from 'node:url'; @@ -1187,7 +1311,9 @@ export default { **Type :** [`URL`](https://developer.mozilla.org/fr/docs/Web/API/URL) -Un chemin URL vers le répertoire de sortie de la compilation. Notez que si vous avez besoin d'un chemin absolu valide, vous devriez utiliser l'utilitaire intégré [`fileURLToPath`](https://nodejs.org/api/url.html#urlfileurltopathurl-options) de Node. +Un chemin URL vers le répertoire de sortie de la compilation. + +L'exemple suivant utilise l'utilitaire [`fileURLToPath()`](https://nodejs.org/api/url.html#urlfileurltopathurl-options) intégré à Node pour calculer une chaîne de chemin absolu valide pour un fichier fourni par l'intégration avant d'écrire à l'intérieur : ```js import { writeFile } from 'node:fs/promises'; @@ -1242,7 +1368,7 @@ Contient les URL vers les chemins des fichiers de sortie, regroupés par la prop **Type :** `{ pathname: string }[]` -Une liste de toutes les pages générées. Il s'agit d'un objet avec une propriété. +Une liste de toutes les pages générées. Chaque entrée est un objet possédant une seule propriété : - `pathname` - le chemin finalisé de la page. @@ -1269,12 +1395,21 @@ Les types suivants peuvent être importés depuis le module `astro` : ```ts import type { AstroIntegrationLogger, + AstroIntegrationMiddleware, + AstroMiddlewareInstance, + AstroRenderer, + ClientDirectiveConfig, HookParameters, IntegrationResolvedRoute, RedirectConfig, RouteData, RoutePart, RouteType, + SSRComponentMetadata, + SSRLoadedRenderer, + SSRLoadedRendererValue, + SSRManifest, + SSRManifestCSP, ValidRedirectStatus, // Les éléments suivants sont dépréciés : IntegrationRouteData, @@ -1344,9 +1479,110 @@ L'exemple ci-dessus produira des journaux avec `[astro-format]` par défaut, et [astro-format/build] Compilation terminée. ``` +### `AstroIntegrationMiddleware` + ++ +**Type :** `{ order: "pre" | "post"; entrypoint: string | URL; }` +
+ +Décrit un [middleware ajouté par une intégration](#option-addmiddleware). + +#### `order` + ++ +**Type :** `"pre" | "post"` +
+ +Spécifie si le middleware doit s'exécuter avant (`pre`) ou après (`post`) les autres middlewares. + +#### `entrypoint` + ++ +**Type :** `string | URL` +
+ +Définit le chemin d'importation du middleware. + +### `AstroMiddlewareInstance` + +
+
+**Type :** \{ onRequest?: MiddlewareHandler; \}
+
+ +**Type :** `{ name: string; clientEntrypoint?: string | URL; serverEntrypoint: string | URL; }` +
+ +Décrit un [moteur de rendu de composants de framework ajouté par une intégration](#option-addrenderer). + +#### `name` + ++ +**Type :** `string` +
+ +Le nom du moteur de rendu de composants de framework. + +#### `clientEntrypoint` + ++ +**Type :** `string | URL` +
+ +Définit le chemin d'importation du moteur de rendu qui s'exécute côté client chaque fois que votre composant est utilisé. + +#### `serverEntrypoint` + ++ +**Type :** `string | URL` +
+ +Définit le chemin d'importation du moteur de rendu qui s'exécute lors des requêtes côté serveur ou des compilations statiques chaque fois que votre composant est utilisé. + +### `ClientDirectiveConfig` + ++ +**Type :** `{ name: string; entrypoint: string | URL; }` +
+ +Décrit une [directive client personnalisée ajoutée par une intégration](#option-addclientdirective). + +#### `name` + ++ +**Type :** `string` +
+ +Un nom personnalisé pour l'événement déclenché par la directive. + +#### `entrypoint` + ++ +**Type :** `string | URL` +
+ +Définit le chemin d'importation du code exécuté chaque fois que la directive est utilisée. + ### `HookParameters` -Vous pouvez obtenir le type des arguments d'un hook en transmettant le nom du hook à l'utilitaire de typage `HookParameters`. Dans l'exemple suivant, l'argument `options` d'une fonction est typé pour correspondre aux paramètres du hook `astro:config:setup` : +Vous pouvez obtenir le type des arguments d'un hook en transmettant le nom du hook à l'utilitaire de typage `HookParameters`. + +Dans l'exemple suivant, l'argument `options` d'une fonction est typé pour correspondre aux paramètres du [hook `astro:config:setup`](#astroconfigsetup) : ```ts /HookParameters(?:<.+>)?/ import type { HookParameters } from 'astro'; @@ -1436,7 +1672,7 @@ Décrit la destination d'une redirection. Il peut s'agir d'une chaîne de caract ### `RouteData` -Décrit les informations à propos d'une route. Ceci contient les propriétés suivantes : +Décrit les informations à propos d'une route. #### `route` @@ -1609,7 +1845,7 @@ Détermine si une route provient du noyau Astro (`internal`), d'une intégration **Type :** `{ content: string; dynamic: boolean; spread: boolean; }` -Décrit un segment de route. Ceci contient les propriétés suivantes : +Décrit un segment de route. #### `content` @@ -1655,6 +1891,659 @@ Une union des types de route pris en charge : * `redirect` : une route qui pointe vers une autre route qui se trouve dans le système de fichiers * `fallback` : une route qui n'existe pas dans le système de fichiers et qui doit être gérée par d'autres moyens, généralement un middleware +### `SSRComponentMetadata` + ++ +**Type :** `{ propagation: PropagationHint; containsHead: boolean; }` +
+ +Décrit les métadonnées de compilation d'un composant rendu par le serveur. + +#### `propagation` + ++ +**Type :** `'none' | 'self' | 'in-tree'` +
+ +Une description de la manière d'afficher le contenu de l'en-tête à partir de ce composant, y compris si l'environnement d'exécution Astro doit attendre un composant : +- `none` : Le composant ne propage pas le contenu de l'en-tête. +- `self` : Ce composant ajoute le contenu de l'en-tête. +- `in-tree` : Un autre composant de l'arbre de dépendances de ce composant ajoute le contenu d'en-tête. + +#### `containsHead` + ++ +**Type :** `boolean` +
+ +Détermine si le composant contient le contenu de l'en-tête. + +### `SSRLoadedRenderer` + ++ +**Type :** `{ name: string; clientEntrypoint?: string | URL; ssr: SSRLoadedRendererValue; }` +
+ +Décrit un moteur de rendu disponible pour le serveur. Il s'agit d'un sous-ensemble de [`AstroRenderer`](#astrorenderer) avec des propriétés supplémentaires. + +#### `ssr` + ++ +**Type :** [`SSRLoadedRendererValue`](#ssrloadedrenderervalue) +
+ +Définit les fonctions et la configuration utilisées par le serveur pour ce framework. + +### `SSRLoadedRendererValue` + +Contient les fonctions et la configuration nécessaires pour générer les composants sur le serveur à partir d'un framework d'interface utilisateur spécifique. + +#### `name` + ++ +**Type :** `string` +
+ +Spécifie le nom identifiant le moteur de rendu. + +#### `check()` + +
+
+**Type :** `AsyncRendererComponentFn
+
+**Type :** `AsyncRendererComponentFn<{ html: string; attrs?: Record
+
+**Type :** `boolean`
+
+
+**Type :** `() => string`
+
+
+**Type :** `string`
+
+ +**Type :** `string` +
+ +Définit le nom de l'[adaptateur serveur](/fr/guides/on-demand-rendering/#adaptateurs-de-serveur) utilisé pour le rendu à la demande. + +#### `routes` + ++ +**Type :** `RouteInfo[]` +
+ +Une liste d'informations à propos des routes disponibles dans ce projet. Chaque entrée contient les propriétés suivantes. + +##### `routeData` + ++ +**Type :** [`RouteData`](#routedata) +
+ +Un objet décrivant les informations connues concernant une route. + +##### `file` + ++ +**Type :** `string` +
+ +Spécifie le chemin d'accès au fichier de point d'entrée pour la route générée. + +##### `links` + ++ +**Type :** `string[]` +
+ +Définit une liste d'[éléments HTML `link`](https://developer.mozilla.org/fr/docs/Web/HTML/Reference/Elements/link) requis par cette route. + +##### `scripts` + ++ +**Type :** `Array<{ children: string; stage: string } | { type: 'inline' | 'external'; value: string }>` +
+ +Définit une liste des scripts associés à cette route. Cela inclut à la fois les scripts injectés par intégration avec les propriétés `children` et `stage` et les scripts hissés avec les propriétés `type` et `value`. + +##### `styles` + +
+
+**Type :** `Array<{ type: "inline"; content: string; } | { type: "external"; src: string; }>`
+
+ +**Type :** `string` +
+ +Spécifie le [`site` configuré](/fr/reference/configuration-reference/#site). + +#### `base` + ++ +**Type :** `string` +
+ +Spécifie le [chemin de `base` configuré](/fr/reference/configuration-reference/#base) vers lequel déployer. + +#### `userAssetsBase` + +
+
+**Type :** `string | undefined`
+
+
+**Type :** [`AstroConfig['trailingSlash']`](/fr/reference/configuration-reference/#trailingslash)
+
+
+**Type :** [`NonNullable
+
+
+**Type :** `boolean`
+
+
+**Type :** `string | ({ fallback: string; } & Record
+
+
+**Type :** SSRLoadedRenderer[]
+
+
+**Type :** `Map
+
+
+**Type :** `Record
+
+**Type :** `Map
+
+
+**Type :** `Set
+
+**Type :** Map\
+
+
+**Type :** `{ page: ImportComponentInstance; onRequest?: MiddlewareHandler; renderers: SSRLoadedRenderer[]; }`
+
+
+**Type :** `() => Promise
+
+**Type :** [`MiddlewareHandler`](/fr/reference/modules/astro-middleware/#middlewarehandler)
+
+
+**Type :** SSRLoadedRenderer[]
+
+
+**Type :** Map\
+
+
+**Type :** `Map
+
+
+**Type :** `Map
+
+
+**Type :** `Promise
+
+
+**Type :** `SSRManifestI18n | undefined`
+
+ +**Type :** `"manual" | "pathname-prefix-always" | "pathname-prefix-other-locales" | "pathname-prefix-always-no-redirect" | "domains-prefix-always" | "domains-prefix-other-locales" | "domains-prefix-always-no-redirect"` +
+ +Définit la [stratégie de routage i18n](/fr/reference/configuration-reference/#i18nrouting) configurée. Celle-ci détermine la manière dont les paramètres régionaux sont gérés dans les URL et si des redirections sont effectuées. + +##### `locales` + ++ +**Type :** `Locales` +
+ +Spécifie une liste des [paramètres régionaux pris en charge et configurés dans le projet](/fr/reference/configuration-reference/#i18nlocales). + +##### `defaultLocale` + ++ +**Type :** `string` +
+ +Détermine le [paramètre régional par défaut configuré dans le projet](/fr/reference/configuration-reference/#i18ndefaultlocale). + +##### `fallback` + +
+
+**Type :** `Record
+ +**Type :** `"redirect" | "rewrite"` +
+ +Détermine la [stratégie de repli configurée pour le projet](/fr/reference/configuration-reference/#i18nroutingfallbacktype). + +##### `domainLookupTable` + +
+
+**Type :** `Record
+
+**Type :** () => Promise\<AstroMiddlewareInstance\> | AstroMiddlewareInstance
+
+
+**Type :** () => Promise\<\{ server: Record\
+
+
+**Type :** `boolean`
+
+
+**Type :** Partial\<RemotePattern\>[]
+
+
+**Type :** SessionConfig\
+
+
+**Type :** `string | URL`
+
+
+**Type :** `string | URL`
+
+
+**Type :** `string | URL`
+
+
+**Type :** `string | URL`
+
+
+**Type :** `string | URL`
+
+
+**Type :** `string | URL`
+
+
+**Type :** SSRManifestCSP | undefined
+
+
+**Type :** `Record
+
+
+
+ +**Type :** `'adapter' | 'meta' | 'header' | undefined` +
+ +Spécifie si les directives CSP doivent être injectées en tant qu'élément `meta`, en tant qu'en-tête de réponse, ou par l'[`adapter` lorsqu'il prend en charge la définition des en-têtes de réponse](/fr/reference/adapter-reference/#experimentalstaticheaders). + +#### `algorithm` + ++ +**Type :** `'SHA-256' | 'SHA-384' | 'SHA-512'` +
+ +Spécifie la [fonction de hachage configurée](/fr/reference/experimental-flags/csp/#algorithm). + +#### `scriptHashes` + ++ +**Type :** `string[]` +
+ +Spécifie une liste des hachages générés pour les scripts du projet et des [hachages fournis par l'utilisateur](/fr/reference/experimental-flags/csp/#hashes) pour les scripts externes. + +#### `scriptResources` + ++ +**Type :** `string[]` +
+ +Spécifie une liste de sources valides combinant les [ressources de script configurées](/fr/reference/experimental-flags/csp/#resources) et les [ressources de script injectées](/fr/reference/experimental-flags/csp/#cspinsertscriptresource). + +#### `isStrictDynamic` + ++ +**Type :** `boolean` +
+ +Détermine si la prise en charge de l'[injection de script dynamique est activée dans la configuration](/fr/reference/experimental-flags/csp/#strictdynamic). + +#### `styleHashes` + ++ +**Type :** `string[]` +
+ +Spécifie une liste des hachages générés pour les styles du projet et des [hachages fournis par l'utilisateur](/fr/reference/experimental-flags/csp/#hashes) pour les styles externes. + +#### `styleResources` + ++ +**Type :** `string[]` +
+ +Spécifie une liste de sources valides combinant les [ressources de style configurées](/fr/reference/experimental-flags/csp/#resources) et les [ressources de style injectées](/fr/reference/experimental-flags/csp/#cspinsertstyleresource). + +#### `directives` + ++ +**Type :** `CspDirective[]` +
+ +Spécifie la [liste configurée des sources valides](/fr/reference/experimental-flags/csp/#directives) pour des types de contenu spécifiques. + ### `ValidRedirectStatus`