Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cpreston321/h3-defu
A simple utility to deep merge objects that extends h3 body and query parameters passed.
https://github.com/cpreston321/h3-defu
add-on defu h3
Last synced: 21 days ago
JSON representation
A simple utility to deep merge objects that extends h3 body and query parameters passed.
- Host: GitHub
- URL: https://github.com/cpreston321/h3-defu
- Owner: cpreston321
- License: mit
- Created: 2022-09-20T22:00:09.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-04-08T01:07:36.000Z (9 months ago)
- Last Synced: 2024-04-14T23:16:05.153Z (9 months ago)
- Topics: add-on, defu, h3
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/h3-defu
- Size: 636 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# h3-defu
[![npm version][npm-version-src]][npm-version-href]
[![npm downloads][npm-downloads-src]][npm-downloads-href]
[![Github Actions][github-actions-src]][github-actions-href]
[![Codecov][codecov-src]][codecov-href]> JSON Defaults for [h3](https://github.com/unjs/h3), using [defu](https://github.com/unjs/defu) under the hood.
## Install
```sh
# Using npm
npm install h3-defu# Using yarn
yarn install h3-defu# Using pnpm
pnpm install h3-defu
```## Usage
```js
import { createServer } from 'node:http'
import { createApp, eventHandler, toNodeListener } from 'h3'
import { getQueryWithDefaults, readBodyWithDefaults } from 'h3-defu'const app = createApp()
app.use('/api/test', eventHandler(async (event) => {
// Default body
// example BODY: { show: false }
// expected: { show: false, name: 'Anonymous' }
const body = await readBodyWithDefaults(event, {
show: true,
name: 'Anonymous'
})// Default query
// example: /api/test?page=2
// expected: { page: 1, limit: 10 }
const query = getQueryWithDefaults(event, {
page: 1,
limit: 10
})return {
body,
query
}
}))createServer(toNodeListener(app)).listen(process.env.PORT || 3000)
```## Development 💻
- Clone this repository
- Install dependencies using `pnpm install`
- Run interactive tests using `pnpm dev`## ➕ Contributing
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are **greatly appreciated**.
1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request## Credits
[`h3`](https://github.com/unjs/h3) is developed by [@unjs](https://github.com/unjs)
[`defu`](https://github.com/unjs/defu) is developed by [@unjs](https://github.com/unjs)
[`README Inspiration`](https://github.com/zernonia) by [@zernonia](https://github.com/zernonia)
## 📜 License
[MIT](./LICENSE) License © 2022 [cpreston321](https://github.com/cpreston321)
# 📧 Contact
cpreston321 - [@cpreston321](https://twitter.com/cpreston321)
Also, if you like my work, please feel free to [buy me a coffee](https://www.buymeacoffee.com/cpreston321) ☕️
[npm-version-src]: https://img.shields.io/npm/v/h3-defu?style=flat-square
[npm-version-href]: https://npmjs.com/package/h3-defu[npm-downloads-src]: https://img.shields.io/npm/dm/h3-defu?style=flat-square
[npm-downloads-href]: https://npmjs.com/package/h3-defu[github-actions-src]: https://img.shields.io/github/workflow/status/cpreston321/h3-defu/CI
[github-actions-href]: https://github.com/cpreston321/h3-defu/actions?query=workflow%3Aci[codecov-src]: https://img.shields.io/codecov/c/gh/cpreston321/h3-defu/main?style=flat-square
[codecov-href]: https://codecov.io/gh/cpreston321/h3-defu