Skip to main content

@sveltejs/kit/hooks

import { defineEnvVars, sequence } from '@sveltejs/kit/hooks';

defineEnvVars

Importez plutôt defineEnvVars depuis @sveltejs/kit/env

Un utilitaire permettant de définir des variables d’environnement, qui sont rendues disponibles via $app/env/public et $app/env/private.

function defineEnvVars<
	T extends Record<string, EnvVarConfig<any>>
>(variables: T): T;

sequence

Une fonction utilitaire pour séquencer plusieurs appels handle à la manière d’un middleware. Le comportement des options de handle est le suivant :

  • transformPageChunk est appliquée en ordre inversé et fusionné
  • preload est appliquée en ordre normal, la première option “gagne” et aucune option preload n’est appelée après elle
  • filterSerializedResponseHeaders se comporte comme preload
src/hooks.server
import { sequence } from '@sveltejs/kit/hooks';

/** @type {import('@sveltejs/kit').Handle} */
async function first({ event, resolve }) {
	console.log('first pre-processing');
	const result = await resolve(event, {
		transformPageChunk: ({ html }) => {
			// les transformations sont appliquées en ordre inverse
			console.log('first transform');
			return html;
		},
		preload: () => {
			// c'est ce `preload` qui gagne car c'est le premier défini dans la chaîne
			console.log('first preload');
			return true;
		}
	});
	console.log('first post-processing');
	return result;
}

/** @type {import('@sveltejs/kit').Handle} */
async function second({ event, resolve }) {
	console.log('second pre-processing');
	const result = await resolve(event, {
		transformPageChunk: ({ html }) => {
			console.log('second transform');
			return html;
		},
		preload: () => {
			console.log('second preload');
			return true;
		},
		filterSerializedResponseHeaders: () => {
			// ce `filterSerializedResponseHeaders` gagne car c'est le premier défini dans la chaîne
			console.log('second filterSerializedResponseHeaders');
			return true;
		}
	});
	console.log('second post-processing');
	return result;
}

export const handle = sequence(first, second);
import { sequence } from '@sveltejs/kit/hooks';
import type { Handle } from '@sveltejs/kit';

const first: Handle = async ({ event, resolve }) => {
	console.log('first pre-processing');
	const result = await resolve(event, {
		transformPageChunk: ({ html }) => {
			// les transformations sont appliquées en ordre inverse
			console.log('first transform');
			return html;
		},
		preload: () => {
			// c'est ce `preload` qui gagne car c'est le premier défini dans la chaîne
			console.log('first preload');
			return true;
		}
	});
	console.log('first post-processing');
	return result;
};

const second: Handle = async ({ event, resolve }) => {
	console.log('second pre-processing');
	const result = await resolve(event, {
		transformPageChunk: ({ html }) => {
			console.log('second transform');
			return html;
		},
		preload: () => {
			console.log('second preload');
			return true;
		},
		filterSerializedResponseHeaders: () => {
			// ce `filterSerializedResponseHeaders` gagne car c'est le premier défini dans la chaîne
			console.log('second filterSerializedResponseHeaders');
			return true;
		}
	});
	console.log('second post-processing');
	return result;
};

export const handle = sequence(first, second);

L’exemple ci-dessus affichera :

first pre-processing
first preload
second pre-processing
second filterSerializedResponseHeaders
second transform
first transform
second post-processing
first post-processing
function sequence(...handlers: Handle[]): Handle;

Modifier cette page sur Github llms.txt