open-index/open-npm huggingface dataset:
npm package: @shiyuhang0/serverless
Description: TiDB Cloud Serverless Driver
Author: tidbcloud
Latest version: 0.0.11-beta2

# TiDB Cloud Serverless Driver for JavaScript

This driver is for serverless and edge compute platforms that require HTTP external connections, such as Vercel Edge Functions or Cloudflare Workers.

## Usage

**Install**

You can install the driver with npm:

```bash
npm install @tidbcloud/serverless
```

**Query**

To query from TiDB Serverless, you need to create a connection first. Then you can use the connection to execute raw SQL queries. For example:

```ts
import { connect } from '@tidbcloud/serverless'

const conn = connect({url: 'mysql://username:password@host/database'})
const results = await conn.execute('select * from test where id = ?',[1])
```

**Transaction (Experimental)**

You can also perform interactive transactions with the serverless driver. For example:

```ts
import { connect } from '@tidbcloud/serverless'

const conn = connect({url: 'mysql://username:password@host/database'})
const tx = await conn.begin()

try {
  await tx.execute('insert into test values (1)')
  await tx.execute('select * from test')
  await tx.commit()
}catch (err) {
  await tx.rollback()
  throw err
}
```

**Edge example**

The serverless driver is suitable for the edge environments. See how to use it with Vercel Edge Functions:

```
import { NextResponse } from 'next/server';
import type { NextRequest } from 'next/server';
import { connect } from '@tidbcloud/serverless'
export const runtime = 'edge'

export async function GET(request: NextRequest) {
  const conn = connect({url: process.env.DATABASE_URL})
  const result = await conn.execute('show tables')
  return NextResponse.json({result});
}
```

See [TiDB Cloud Serverless Driver](https://docs.pingcap.com/tidbcloud/serverless-driver#edge-examples) documentation to learn more.

## Configuration

See [Configure TiDB Cloud Serverless Driver](https://docs.pingcap.com/tidbcloud/serverless-driver-config).

## License

Apache 2.0, see [LICENSE](./LICENSE).
npm package: @shiyuhang0/serverless-js
Description: A Fetch API-compatible PlanetScale database driver
Author: shiyuhang0
Latest version: 0.5.3

# TiDB Cloud Serverless Driver for JavaScript

A Fetch API-compatible TiDB Cloud database driver based on [planetscale-serverless-driver](https://github.com/planetscale/database-js). Thanks for their great work!


## User Guide

This driver is for serverless and edge compute platforms that require HTTP external connections, such as Cloudflare Workers or Vercel Edge Functions.

### Installation

```
npm install @shiyuhang0/serverless
```

### Usage

```ts
import { connect } from '@shiyuhang0/serverless'

const config = {
  host: '<host>',
  username: '<user>',
  password: '<password>'
}

const conn = connect(config)
const results = await conn.execute('select 1 from sample_data.github_events')
console.log(results)
```

### Transactions

Use the `transaction` function to safely perform database transactions.

> Use different client ip to execute transaction may lead to error.

```ts
import { connect } from '@shiyuhang0/serverless'

const conn = connect(config)
const tx = await conn.begin()
await tx.execute('insert into test.test values (6,"test6")')
console.log(await tx.execute('select * from test.test'))
console.log(await conn.execute('select * from test.test'))
await tx.commit()
console.log(await conn.execute('select * from test.test'))
```

## Configuration

The following configurations are supported in connection level:

- username
- password
- host
- url
- fetch

### Database URL

A single database URL value can be used to configure the `host`, `username`, and `password` values.

```ts

const config = {
  url: process.env['DATABASE_URL'] || 'mysql://user:pass@host/dbname'
}

const conn = connect(config)
```

### Custom fetch function

Node.js version 18 includes a built-in global `fetch` function. When using an older version of Node.js, you can provide a custom fetch function implementation. We recommend the [`undici`][1] package on which Node's built-in fetch is based.

[1]: https://github.com/nodejs/undici

```ts
import { connect } from '@shiyuhang0/serverless'
import { fetch } from 'undici'

const config = {
  fetch,
  host: '<host>',
  username: '<user>',
  password: '<password>'
}

const conn = connect(config)
const results = await conn.execute('select 1 from sample_data.github_events')
console.log(results)
```


## Options

The following options are supported in SQL level:

- arrayMode boolean (default false): whether to return results as arrays instead of objects.
- fullResult boolean (default false): whether to return full result object instead of just rows.