From 71458169513dd159a89df5e52a8033566653e12f Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Sat, 24 Jan 2026 14:10:35 +0100 Subject: [PATCH 1/2] i18n(fr): add `ecosystem/packages/buildkit` & `ecosystem/packages/cfetch` See #194 --- .../docs/fr/ecosystem/packages/buildkit.mdx | 66 ++++ .../docs/fr/ecosystem/packages/cfetch.mdx | 329 ++++++++++++++++++ 2 files changed, 395 insertions(+) create mode 100644 src/content/docs/fr/ecosystem/packages/buildkit.mdx create mode 100644 src/content/docs/fr/ecosystem/packages/cfetch.mdx diff --git a/src/content/docs/fr/ecosystem/packages/buildkit.mdx b/src/content/docs/fr/ecosystem/packages/buildkit.mdx new file mode 100644 index 00000000..b4b0d38a --- /dev/null +++ b/src/content/docs/fr/ecosystem/packages/buildkit.mdx @@ -0,0 +1,66 @@ +--- +i18nReady: true +title: Buildkit +type: integration +catalogEntry: withstudiocms-buildkit +description: "Découvrez le paquet @withstudiocms/buildkit" +tableOfContents: + minHeadingLevel: 2 + maxHeadingLevel: 4 +--- + +import { Aside } from '@astrojs/starlight/components' +import { PackageManagers } from 'starlight-package-managers' +import ReadMore from '~/components/ReadMore.astro' + +Il s'agit d'un kit CLI reposant sur esbuild pour la création d'intégrations Astro. + +## Utilisation + +### Installation + +Installez le paquet à la racine du dépôt : + + + +### Utilisation + +Une fois le paquet buildkit installé, vous avez désormais accès à un utilitaire CLI `buildkit`. Ajoutez les éléments suivants aux scripts de vos intégrations : + +```json title="package.json" ins={3-4} +{ + "scripts": { + "build": "buildkit build 'src/**/*.{ts,astro,css}'", + "dev": "buildkit dev 'src/**/*.{ts,astro,css}'" + } +} +``` + +Le modèle de commande est `buildkit 'chemin/vers/fichier ou glob/**/**.{ts}' [options]` + +#### Options disponibles (toutes facultatives) + +- `--no-clean-dist` : Ne pas nettoyer le répertoire de sortie pendant la compilation. +- `--bundle` : Activer le regroupement. +- `--force-cjs` : Forcer la sortie CJS. +- `--tsconfig=tsconfig.json` : Permet de définir une configuration tsconfig personnalisée pour la compilation. +- `--outdir=dist` : Permet de définir le répertoire de sortie. + +#### Fichiers considérés comme des ressources + +Les extensions de fichiers suivantes seront copiées de leur source vers leurs sorties respectives et ne seront pas transformées comme s'il s'agissait de ressources statiques. + +- `.astro` +- `.d.ts` +- `.json` +- `.gif` +- `.jpeg` +- `.jpg` +- `.png` +- `.tiff` +- `.webp` +- `.avif` +- `.svg` +- `.stub` + +Pour les autres types de contenu et apprendre à les utiliser, consultez [la documentation d'esBuild](https://esbuild.github.io/content-types/). diff --git a/src/content/docs/fr/ecosystem/packages/cfetch.mdx b/src/content/docs/fr/ecosystem/packages/cfetch.mdx new file mode 100644 index 00000000..75084f43 --- /dev/null +++ b/src/content/docs/fr/ecosystem/packages/cfetch.mdx @@ -0,0 +1,329 @@ +--- +i18nReady: true +title: CFetch +type: integration +catalogEntry: studiocms-cfetch +description: "Découvrez le paquet @studiocms/cfetch" +sidebar: + badge: + text: Mis à jour + variant: success +tableOfContents: + minHeadingLevel: 2 + maxHeadingLevel: 5 +--- + +import { Aside, Steps } from '@astrojs/starlight/components' +import { PackageManagers } from 'starlight-package-managers' +import ReadMore from '~/components/ReadMore.astro' + + +Il s'agit d'une [intégration Astro](https://docs.astro.build/fr/guides/integrations-guide/) qui fournit une fonction de récupération mise en cache pour Astro SSR. + +## Utilisation + +### Prérequis + +- Utilisation avec un projet Astro SSR : Bien que vous puissiez importer et utiliser ceci dans un projet Astro SSG (statique), cela ne présenterait aucun avantage car les pages statiques d'Astro sont pré-rendues. + +### Installation + + + +1. Installez l'intégration **automatiquement** à l'aide de la CLI d'Astro : + + + + Ou installez-la **manuellement** : + + + +2. Installez les dépendances homologues + + Si votre gestionnaire de paquets n'installe pas automatiquement les dépendances homologues, vous devrez vous assurer que `Effect` est installé. + + + +3. Ajoutez l'intégration à votre configuration Astro. + + ```ts title="astro.config.mts" ins={2, 6} + import { defineConfig } from 'astro/config'; + import cFetch from "@studiocms/cfetch"; + + export default defineConfig({ + integrations: [ + cFetch(), + ], + }); + ``` + + + +### Utilisation + +Cette intégration comprend différentes versions de fonctions de récupération mises en cache et d'[Effects](https://effect.website) pour vous permettre de contrôler pleinement la façon dont vous travaillez avec vos données. + +#### Effects + +Toutes les méthodes d'Effects ont le schéma de retour suivant ou sont dérivées de + +```ts +Effect.Effect, FetchError, never>; +``` + +##### Type `CachedResponse` + +```ts +interface CachedResponse { + data: T; + ok: boolean; + status: number; + statusText: string; + headers: Record; +} +``` + +##### Type `CFetchConfig` + +```ts +interface CFetchConfig { + ttl?: Duration.DurationInput; + tags?: string[]; + key?: string; + verbose?: boolean; +} +``` + +##### `cFetchEffect` + +###### Interface + +```ts +const cFetchEffect: ( + url: string | URL, + parser: (response: Response) => Promise, + options?: RequestInit | undefined, + cacheConfig?: CFetchConfig | undefined +) => Effect.Effect, FetchError, never> +``` + +###### Exemple d'utilisation + +```ts +import { cFetchEffect, Duration } from "c:fetch" + +const effect = cFetchEffect<{ foo: string; bar: number; }>( + 'https://api.example.com/data', + (res) => res.json(), + { method: "GET" }, + { + ttl?: Duration.hours(1), + tags?: ['example'], + key?: "api-data-fetch", + verbose?: false + } +); +/* +Type renvoyé : + Effect.Effect, FetchError, never> +*/ +``` + +##### `cFetchEffectJson` + +###### Interface + +```ts +const cFetchEffectJson: ( + url: string | URL, + options?: RequestInit | undefined, + cacheConfig?: CFetchConfig | undefined +) => Effect.Effect, FetchError, never> +``` + +###### Exemple d'utilisation + +```ts +import { cFetchEffectJson } from "c:fetch" + +const effect = cFetchEffectJson<{ foo: string; bar: number; }>( + 'https://api.example.com/data', + { method: "GET" } +); +/* +Type renvoyé : + Effect.Effect, FetchError, never> +*/ +``` + +##### `cFetchEffectText` + +###### Interface + +```ts +const cFetchEffectText: ( + url: string | URL, + options?: RequestInit | undefined, + cacheConfig?: CFetchConfig | undefined +) => Effect.Effect, FetchError, never> +``` + +###### Exemple d'utilisation + +```ts +import { cFetchEffectText } from "c:fetch" + +const effect = cFetchEffectText( + 'https://example.com', + { method: "GET" } +); +/* +Type renvoyé : + Effect.Effect, FetchError, never> +*/ +``` + +##### `cFetchEffectBlob` + +###### Interface + +```ts +const cFetchEffectBlob: ( + url: string | URL, + options?: RequestInit | undefined, + cacheConfig?: CFetchConfig | undefined +) => Effect.Effect, FetchError, never> +``` + +###### Exemple d'utilisation + +```ts +import { cFetchEffectBlob } from "c:fetch" + +const effect = cFetchEffectBlob( + 'https://example.com/image.png', + { method: "GET" } +); +/* +Type renvoyé : + Effect.Effect, FetchError, never> +*/ +``` + +#### Fonctions + +Toutes les fonctions ont le modèle de retour suivant ou sont dérivées de : + +```ts +CachedResponse; +``` + +##### `cFetch` + +###### Interface + +```ts +const cFetch: ( + url: string | URL, + parser: (response: Response) => Promise, + options?: RequestInit | undefined, + cacheConfig?: CFetchConfig | undefined +) => Promise> +``` + +###### Exemple d'utilisation + +```ts +import { cFetch } from "c:fetch" + +const effect = await cFetch<{ foo: string; bar: number; }>( + 'https://api.example.com/data', + (res) => res.json(), + { method: "GET" } +); +/* +Type renvoyé : + CachedResponse<{ foo: string; bar: number; }> +*/ +``` + +##### `cFetchJson` + +###### Interface + +```ts +const cFetchJson: ( + url: string | URL, + options?: RequestInit | undefined, + cacheConfig?: CFetchConfig | undefined +) => Promise> +``` + +###### Exemple d'utilisation + +```ts +import { cFetchJson } from "c:fetch" + +const effect = await cFetchJson<{ foo: string; bar: number; }>( + 'https://api.example.com/data', + { method: "GET" } +); +/* +Type renvoyé : + CachedResponse<{ foo: string; bar: number; }> +*/ +``` + +##### `cFetchText` + +###### Interface + +```ts +const cFetchText: ( + url: string | URL, + options?: RequestInit | undefined, + cacheConfig?: CFetchConfig | undefined +) => Promise> +``` + +###### Exemple d'utilisation + +```ts +import { cFetchText } from "c:fetch" + +const effect = await cFetchText( + 'https://example.com', + { method: "GET" } +); +/* +Type renvoyé : + CachedResponse +*/ +``` + +##### `cFetchBlob` + +###### Interface + +```ts +const cFetchBlob: ( + url: string | URL, + options?: RequestInit | undefined, + cacheConfig?: CFetchConfig | undefined +) => Promise> +``` + +###### Exemple d'utilisation + +```ts +import { cFetchBlob } from "c:fetch" + +const effect = await cFetchBlob( + 'https://example.com/image.png', + { method: "GET" } +); +/* +Type renvoyé : + CachedResponse +*/ +``` From 3986f3a904a4d7387ab230e68cf58e8c7bb6251d Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Sat, 24 Jan 2026 21:58:29 +0100 Subject: [PATCH 2/2] Apply suggestions coderabbit suggestions (changes from #211) Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- src/content/docs/fr/ecosystem/packages/buildkit.mdx | 2 +- src/content/docs/fr/ecosystem/packages/cfetch.mdx | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/content/docs/fr/ecosystem/packages/buildkit.mdx b/src/content/docs/fr/ecosystem/packages/buildkit.mdx index b4b0d38a..a529be5a 100644 --- a/src/content/docs/fr/ecosystem/packages/buildkit.mdx +++ b/src/content/docs/fr/ecosystem/packages/buildkit.mdx @@ -63,4 +63,4 @@ Les extensions de fichiers suivantes seront copiées de leur source vers leurs s - `.svg` - `.stub` -Pour les autres types de contenu et apprendre à les utiliser, consultez [la documentation d'esBuild](https://esbuild.github.io/content-types/). +Pour les autres types de contenu et apprendre à les utiliser, consultez [la documentation d'esbuild](https://esbuild.github.io/content-types/). diff --git a/src/content/docs/fr/ecosystem/packages/cfetch.mdx b/src/content/docs/fr/ecosystem/packages/cfetch.mdx index 75084f43..7da53005 100644 --- a/src/content/docs/fr/ecosystem/packages/cfetch.mdx +++ b/src/content/docs/fr/ecosystem/packages/cfetch.mdx @@ -117,10 +117,10 @@ const effect = cFetchEffect<{ foo: string; bar: number; }>( (res) => res.json(), { method: "GET" }, { - ttl?: Duration.hours(1), - tags?: ['example'], - key?: "api-data-fetch", - verbose?: false + ttl: Duration.hours(1), + tags: ['example'], + key: "api-data-fetch", + verbose: false } ); /*