From 80ed5b35c1252069ef48807988162556a0f667c5 Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Fri, 23 Feb 2024 00:14:55 +0100 Subject: [PATCH] chore: fix does issues (#657) --- docs/1.guide/2.app.md | 4 +--- docs/1.guide/2.event-handler.md | 13 +++++-------- docs/4.guides/from-expressjs-to-h3.md | 8 ++------ docs/4.guides/handle-cookie.md | 20 ++++++++------------ docs/4.guides/handle-session.md | 24 +++++++++++------------- docs/4.guides/serve-static-assets.md | 6 +----- docs/4.guides/stream-response.md | 2 +- docs/4.guides/validate-data.md | 18 +++++++++--------- docs/bun.lockb | Bin 520656 -> 521990 bytes docs/package.json | 2 +- 10 files changed, 39 insertions(+), 58 deletions(-) diff --git a/docs/1.guide/2.app.md b/docs/1.guide/2.app.md index bbd40aa5..cbb48204 100644 --- a/docs/1.guide/2.app.md +++ b/docs/1.guide/2.app.md @@ -6,7 +6,7 @@ The core of a h3 server is an `app` instance. It is the core of the server that ## Initializing an app -You can create a new h3 app instance using [`createApp`](/utilities/create-app) utility: +You can create a new h3 app instance using [`createApp`](/guide/app) utility: ```js [app.mjs] import { createApp } from "h3"; @@ -158,8 +158,6 @@ app.use("/big", () => import("./big-handler"), { lazy: true }); This reduce the startup time because the runtime have less code to load and parse when starting the server. -You can use a [syntax sugar](#lazy-event-handlers) over this option using [`defineLazyEventHandler`](/concepts/utilities) or [`lazyEventHandler`](/concepts/utilities) utilities. - ## Internals > [!IMPORTANT] diff --git a/docs/1.guide/2.event-handler.md b/docs/1.guide/2.event-handler.md index 5f2520f0..825bb2f2 100644 --- a/docs/1.guide/2.event-handler.md +++ b/docs/1.guide/2.event-handler.md @@ -4,14 +4,14 @@ After creating an [app instance](/guide/app), you can start defining your application logic using event handlers. -An event handler is a function that receive an [`Event`](/concepts/event) instance and returns a response. You can compare it to controllers in other frameworks. +An event handler is a function that receive an `Event` instance and returns a response. You can compare it to controllers in other frameworks. ## Defining event handlers -You can define event handlers using [`defineEventHandler`](/concepts/event) or [`eventHandler`](/concepts/event) utilities: +You can define event handlers using `defineEventHandler` or [`eventHandler` utilities: > [!NOTE] -> You can use [`eventHandler`](/concepts/event) and [`defineEventHandler`](/concepts/event) interchangeably. They are aliases. You can use the one you prefer but **stick to it** for consistency. +> You can use `eventHandler` and `defineEventHandler` interchangeably. They are aliases. You can use the one you prefer but **stick to it** for consistency. ```js import { defineEventHandler } from "h3"; @@ -33,7 +33,7 @@ defineEventHandler(async (event) => { ### Object Syntax -You can use an object syntax in [`defineEventHandler`](/concepts/utilities) for more flexible options. +You can use an object syntax in `defineEventHandler` for more flexible options. ```js defineEventHandler({ @@ -55,7 +55,7 @@ Values returned from event handlers are automatically converted to responses. It - [Web `ReadableStream`](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream) or [node `Readable`](https://nodejs.org/api/stream.html#readable-streams) - [Web `ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer) or [node `Buffer`](https://nodejs.org/api/buffer.html#buffer) - [Web Fetch Response](https://developer.mozilla.org/en-US/docs/Web/API/Response/Response) -- [`Error`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) instance. It's supported but **recommended** to throw errors instead of returning them using [`createError`](/concepts/utilities) utility. +- [`Error`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) instance. It's supported but **recommended** to throw errors instead of returning them using `createError` utility. Any of above values could also be wrapped in a [`Promise`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise). This means that you can return a `Promise` from your event handler and h3 will wait for it to resolve before sending the response. @@ -131,9 +131,6 @@ app.use( ## Lazy event handlers -> [!NOTE] -> This is a syntax sugar over the [`lazy`](#lazy-matcher) option. - You can define lazy event handlers using `defineLazyEventHandler` or `lazyEventHandler` utilities. This allow you to define some one-time logic that will be executed only once when the first request matching the route is received. A lazy event handler must return an event handler: diff --git a/docs/4.guides/from-expressjs-to-h3.md b/docs/4.guides/from-expressjs-to-h3.md index 8d6c90b5..4d739414 100644 --- a/docs/4.guides/from-expressjs-to-h3.md +++ b/docs/4.guides/from-expressjs-to-h3.md @@ -58,7 +58,7 @@ app.use( Then, you can use `npx --yes listhen -w ./app.ts` to start the server and go to http://localhost:3000 to see the result. -:read-more{to="/concepts/app"} +:read-more{to="/guide/app"} ## Multi Router @@ -150,7 +150,7 @@ app.use("/api/v2/**", useBase("/api/v2", apiv2.handler)); It's quite similar. The main difference is that we have to use `useBase` to define a base path for a router. -:read-more{to="/concepts/router"} +:read-more{to="/guide/router"} ## Params @@ -288,8 +288,6 @@ app.use(router); With h3, we do not have a `param` method. Instead, we use `getRouterParam` or `getValidatedRouterParams` to validate the params. It's more explicit and easier to use. In this example, we use `Zod` but you are free to use any other validation library. -:read-more{to="/guides/valide-data"} - ## Cookies The fourth example is the [Cookies](https://github.com/expressjs/express/blob/master/examples/cookies/index.js). In this example, we use cookies. @@ -394,5 +392,3 @@ app.use(router); ``` With h3, we do not have a `cookieParser` middleware. Instead, we use `getCookie` and `setCookie` to get and set cookies. It's more explicit and easier to use. - -:read-more{to="/guides/handle-cookies"} diff --git a/docs/4.guides/handle-cookie.md b/docs/4.guides/handle-cookie.md index 1882df51..243c3aec 100644 --- a/docs/4.guides/handle-cookie.md +++ b/docs/4.guides/handle-cookie.md @@ -4,13 +4,13 @@ Handling cookies with h3 is straightforward. There is three utilities to handle cookies: -- [`setCookie`](/concepts/utilities) to attach a cookie to the response. -- [`getCookie`](/concepts/utilities) to get a cookie from the request. -- [`deleteCookie`](/concepts/utilities) to clear a cookie from the response. +- `setCookie` to attach a cookie to the response. +- `getCookie` to get a cookie from the request. +- `deleteCookie` to clear a cookie from the response. ## Set a Cookie -To set a cookie, you need to use [`setCookie`](/concepts/utilities) in an [event handler](/concepts/event-handler): +To set a cookie, you need to use `setCookie` in an event handler: ```ts import { defineEventHandler, setCookie } from "h3"; @@ -34,11 +34,11 @@ In the options, you can configure the [cookie flags](https://developer.mozilla.o - `httpOnly` to set the `HttpOnly` flag of the cookie. - `sameSite` to set the `SameSite` flag of the cookie. -:read-more{to="/concepts/utilities"} +:read-more{to="/utils"} ## Get a Cookie -To get a cookie, you need to use [`getCookie`](/concepts/utilities) in an [event handler](/concepts/event-handler): +To get a cookie, you need to use `getCookie` in an event handler. ```ts import { defineEventHandler, getCookie } from "h3"; @@ -54,11 +54,9 @@ app.use( This will return the value of the cookie if it exists, or `undefined` otherwise. -:read-more{to="/concepts/utilities"} - ## Delete a Cookie -To delete a cookie, you need to use [`deleteCookie`](/concepts/utilities) in an [event handler](/concepts/event-handler): +To delete a cookie, you need to use `deleteCookie` in an event handler: ```ts import { defineEventHandler, deleteCookie } from "h3"; @@ -72,8 +70,6 @@ app.use( ); ``` -The utility `deleteCookie` is a wrapper around [`setCookie`](/concepts/utilities) with the value set to `""` and the `maxAge` set to `0`. +The utility `deleteCookie` is a wrapper around `setCookie` with the value set to `""` and the `maxAge` set to `0`. This will erase the cookie from the client. - -:read-more{to="/concepts/utilities"} diff --git a/docs/4.guides/handle-session.md b/docs/4.guides/handle-session.md index 78bfac95..3789d42f 100644 --- a/docs/4.guides/handle-session.md +++ b/docs/4.guides/handle-session.md @@ -4,18 +4,18 @@ A session is a way to remember users using cookies. It is a very common way to authenticate users or save data about them such as their language or their preferences on the web. -h3 provide many [utilities](/concepts/utilities) to handle sessions: +h3 provide many utilities to handle sessions: -- [`useSession`](/concepts/utilities) to initializes a session and returns a wrapper to control it. -- [`getSession`](/concepts/utilities) to initializes or gets the current user session. -- [`updateSession`](/concepts/utilities) to updates data of the current session. -- [`clearSession`](/concepts/utilities) to clears the current session. +- `useSession` to initializes a session and returns a wrapper to control it. +- `getSession` to initializes or gets the current user session. +- `updateSession` to updates data of the current session. +- `clearSession` to clears the current session. -Most of the time, you will use [`useSession`](/concepts/utilities) to manipulate the session. +Most of the time, you will use `useSession` to manipulate the session. ## Initialize a Session -To initialize a session, you need to use [`useSession`](/concepts/utilities) in an [event handler](/concepts/event-handler): +To initialize a session, you need to use `useSession` in an [event handler](/guide/event-handler): ```js import { defineEventHandler, useSession } from "h3"; @@ -43,7 +43,7 @@ If the request contains a cookie named `h3` or a header named `x-h3-session`, th ## Get Data from a Session -To get data from a session, we will still use [`useSession`](/concepts/utilities). Under the hood, it will use [`getSession`](/concepts/utilities) to get the session. +To get data from a session, we will still use `useSession`. Under the hood, it will use [`getSession` to get the session. ```js import { defineEventHandler, useSession } from "h3"; @@ -63,7 +63,7 @@ Data are stored in the `data` property of the session. If there is no data, it w ## Add Data to a Session -To add data to a session, we will still use [`useSession`](/concepts/utilities). Under the hood, it will use [`updateSession`](/concepts/utilities) to update the session. +To add data to a session, we will still use `useSession`. Under the hood, it will use `updateSession` to update the session. ```js import { defineEventHandler, useSession } from "h3"; @@ -97,7 +97,7 @@ Try to visit the page multiple times and you will see the number of times you vi ## Clear a Session -To clear a session, we will still use [`useSession`](/concepts/utilities). Under the hood, it will use [`clearSession`](/concepts/utilities) to clear the session. +To clear a session, we will still use `useSession`. Under the hood, it will use `clearSession` to clear the session. ```js import { defineEventHandler, useSession } from "h3"; @@ -120,7 +120,7 @@ h3 will send a header `Set-Cookie` with an empty cookie named `h3` to clear the ## Options -When to use [`useSession`](/concepts/utilities), you can pass an object with options as the second argument to configure the session: +When to use `useSession`, you can pass an object with options as the second argument to configure the session: ```js import { defineEventHandler, useSession } from "h3"; @@ -142,5 +142,3 @@ app.use( }), ); ``` - -:read-more{to="/concepts/utilities"} diff --git a/docs/4.guides/serve-static-assets.md b/docs/4.guides/serve-static-assets.md index a86478a7..6645503e 100644 --- a/docs/4.guides/serve-static-assets.md +++ b/docs/4.guides/serve-static-assets.md @@ -9,7 +9,7 @@ h3 can serve static assets such as HTML, images, CSS, JavaScript, etc. ## Usage -To serve a static directory, you can use the [`serveStatic`](/concepts/utilities) utility. +To serve a static directory, you can use the `serveStatic` utility. ```ts import { createApp, serveStatic } from "h3"; @@ -41,8 +41,6 @@ This does not serve any files yet. You need to implement the `getContents` and ` They are separated to allow h3 to respond to `HEAD` requests without reading the contents of the file and to use the `Last-Modified` header. -:read-more{to="/concepts/utilities"} - ## Read files Now, create a `index.html` file in the `public` directory with a simple message and open your browser to http://localhost:3000. You should see the message. @@ -89,8 +87,6 @@ The `getContents` read the file and returns its contents, pretty simple. The `ge The file size and last modification time are used to create an etag to send a `304 Not Modified` response if the file has not been modified since the last request. This is useful to avoid sending the same file multiple times if it has not changed. -:read-more{to="/concepts/utilities"} - ## Resolving Assets If the path does not match a file, h3 will try to add `index.html` to the path and try again. If it still does not match, it will return a 404 error. diff --git a/docs/4.guides/stream-response.md b/docs/4.guides/stream-response.md index 3b717a6b..b1721b02 100644 --- a/docs/4.guides/stream-response.md +++ b/docs/4.guides/stream-response.md @@ -56,7 +56,7 @@ app.use( ); ``` -Then, you can send the stream using the [`sendStream`](/concepts/utilities) utility: +Then, you can send the stream using the `sendStream` utility: ```ts import { diff --git a/docs/4.guides/validate-data.md b/docs/4.guides/validate-data.md index 21bcf28f..6e677465 100644 --- a/docs/4.guides/validate-data.md +++ b/docs/4.guides/validate-data.md @@ -5,20 +5,20 @@ When you receive data from user on your server, you must validate them. By validate, we mean that the shape of the received data must match the expected shape. It's important because you can't trust user input. > [!WARNING] -> Do not use a generic as a validation. Providing an interface to a utility like [`readBody`](/concepts/utilities) is not a validation. You must validate the data before using them. +> Do not use a generic as a validation. Providing an interface to a utility like `readBody` is not a validation. You must validate the data before using them. ## Utilities for Validation -h3 provide some [utilities](/concepts/utilities) to help you to handle data validation. You will be able to validate: +h3 provide some utilities to help you to handle data validation. You will be able to validate: -- query with [`getValidatedQuery`](/concepts/utilities) -- params with [`getValidatedRouterParams`](/concepts/utilities). -- body with [`readValidatedBody`](/concepts/utilities) +- query with `getValidatedQuery` +- params with `getValidatedRouterParams`. +- body with `readValidatedBody` To validate data, you can use any validation library you want. h3 doesn't provide any validation library like [Zod](https://zod.dev), [joi](https://joi.dev) or [myzod](https://github.com/davidmdm/myzod). > [!WARNING] -> h3 is runtime agnostic. This means that you can use it in [any runtime](/runtimes). But some validation libraries are not compatible with all runtimes. +> h3 is runtime agnostic. This means that you can use it in [any runtime](/adapters). But some validation libraries are not compatible with all runtimes. Let's see how to validate data with [Zod](https://zod.dev). @@ -35,7 +35,7 @@ const userSchema = z.object({ ## Validate Query -You can use [`getValidatedQuery`](/concepts/utilities) to validate query and get the result, as a replacement of [`getQuery`](/concepts/utilities): +You can use `getValidatedQuery` to validate query and get the result, as a replacement of `getQuery`: ```js import { defineEventHandler, getValidatedQuery } from "h3"; @@ -62,7 +62,7 @@ If you send an invalid request and the validation fails, h3 will throw a `400 Va ## Validate Params -You can use [`getValidatedRouterParams`](/concepts/utilities) to validate params and get the result, as a replacement of [`getRouterParams`](/concepts/utilities): +You can use `getValidatedRouterParams` to validate params and get the result, as a replacement of `getRouterParams`: ```js import { defineEventHandler, getValidatedRouterParams } from "h3"; @@ -91,7 +91,7 @@ If you send an invalid request and the validation fails, h3 will throw a `400 Va ## Validate Body -You can use [`readValidatedBody`](/concepts/utilities) to validate body and get the result, as a replacement of [`readBody`](/concepts/utilities): +You can use `readValidatedBody` to validate body and get the result, as a replacement of `readBody`: ```js import { defineEventHandler, readValidatedBody } from "h3"; diff --git a/docs/bun.lockb b/docs/bun.lockb index 46d0107352bd5c458163ef93aa8b93a60a4e8837..11dad0a8b6b96fdee957ec882eca77feb8c75eb9 100755 GIT binary patch delta 39741 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 delta 39233 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