diff --git a/website/docs/documentation/connect-on-cloudflare.mdx b/website/docs/documentation/connect-on-cloudflare.mdx new file mode 100644 index 0000000000..0b640e8b39 --- /dev/null +++ b/website/docs/documentation/connect-on-cloudflare.mdx @@ -0,0 +1,78 @@ +import { History } from '@site/src/components/History'; + +# Cloudflare Workers + + + Support for non-eval parsers by using{' '} + disableEval option. + , + ], + }, + ]} +/> + +## Prerequisites + +- A [Cloudflare](https://dash.cloudflare.com/sign-up) account. +- [Wrangler](https://developers.cloudflare.com/workers/wrangler/) installed. +- **MySQL2** version `3.13.0` or higher. + +To learn how to create a **Cloudflare Worker** project, please refer to [**Cloudflare Workers Documentation**](https://developers.cloudflare.com/workers/get-started/guide/). + +## Setup + +### Wrangler + +**MySQL2** relies on **Node.js** modules, such as `net`, `events`, `stream`, `tls`, etc. You can enable **Node.js** compatibility for **Cloudflare Workers** by using the `"nodejs_compat"` flag through the `wrangler.jsonc` file: + +```json +{ + "compatibility_flags": ["nodejs_compat"] +} +``` + +:::important +The minimum compatibility date is `2025-02-24`, for example: + +```json +{ + "compatibility_date": "2025-02-24", + "compatibility_flags": ["nodejs_compat"] +} +``` + +::: + +### MySQL2 connection + +**MySQL2** uses a code generation-based parser for performance by default, but since **Cloudflare Workers** don't offer support for evaluations, you can disable it by using the `disableEval` option: + +```ts +import { createConnection } from 'mysql2/promise'; + +export default { + async fetch(): Promise { + const conn = await createConnection({ + host: 'localhost', + user: 'root', + database: 'test', + // highlight-start + disableEval: true, + // highlight-end + }); + + const [results] = await conn.query('SHOW TABLES;'); + + return new Response(JSON.stringify(results)); + }, +} satisfies ExportedHandler; +``` + +:::tip +For required **SSL** connections, it is recommended to use the [**Cloudflare Hyperdrive**](https://developers.cloudflare.com/hyperdrive/) connection pool. +:::