Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/greguz/fastify-no-additional-properties
Add `additionalProperties: false` by default to your JSON Schemas
https://github.com/greguz/fastify-no-additional-properties
additional-pro fastify fastify-pl json-sche schema
Last synced: 2 months ago
JSON representation
Add `additionalProperties: false` by default to your JSON Schemas
- Host: GitHub
- URL: https://github.com/greguz/fastify-no-additional-properties
- Owner: greguz
- License: mit
- Created: 2019-07-22T07:19:22.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-12-06T08:34:22.000Z (about 1 year ago)
- Last Synced: 2024-08-08T15:05:29.256Z (6 months ago)
- Topics: additional-pro, fastify, fastify-pl, json-sche, schema
- Language: JavaScript
- Homepage:
- Size: 139 KB
- Stars: 19
- Watchers: 3
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# fastify-no-additional-properties
[![npm version](https://badge.fury.io/js/fastify-no-additional-properties.svg)](https://www.npmjs.com/package/fastify-no-additional-properties)
![Libraries.io dependency status for latest release](https://img.shields.io/librariesio/release/npm/fastify-no-additional-properties)
![ci](https://github.com/greguz/fastify-no-additional-properties/workflows/ci/badge.svg)
[![Coverage Status](https://coveralls.io/repos/github/greguz/fastify-no-additional-properties/badge.svg?branch=master)](https://coveralls.io/github/greguz/fastify-no-additional-properties?branch=master)
[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)Add `additionalProperties: false` by default to your JSON Schemas.
Under Fastify, when a JSON schema is defined without the `additionalProperties` field, the output will be the same as defining It as `true`. I think that this is somehow counterintuitive.
This plugin will default that field to `false` by default. It's also possible to configure which schema needs to be updated.
All schemas are updated by copying the entire definition, so the source objects are left untouched.
## Features
- **Zero dependencies**: small footprint (ignoring `fastify-plugin`).
- **ESM**: future proof for the next Node.js releases.
- **Common.js support**: still compatible with older runtimes.
- **Sane defaults**: I suppose.
- **TypeScript**: types declaration included.## Install
```
npm install --save fastify-no-additional-properties
```### Fastify version support
This plugin now targets Fastify v5.
Use `npm install fastify-no-additional-properties@^2.5.0` for Fastify v4.
## Usage
```javascript
import Fastify from 'fastify'
import noAdditionalProperties from 'fastify-no-additional-properties'const fastify = Fastify({
logger: true
})fastify.register(noAdditionalProperties, {
/**
* If true, update the request body schema.
* @default true
*/
body: true,
/**
* If true, update the request headers schema.
* @default false
*/
headers: false,
/**
* If true, update the URL parameters schema.
* @default false
*/
params: false,
/**
* If true, update the URL querystring schema.
* @default true
*/
query: true,
/**
* If true, update all response schemas.
* @default false
*/
response: false,
/**
* If true, update schemas registered **AFTER** this plugin registration.
* @default false
*/
ref: false
})// From now on, all registered routes will have additionalProperties: false by default.
fastify.listen({ port: 3000 }, (err, address) => {
if (err) {
fastify.log.fatal({ err }, 'bootstrap failed')
process.exit(1)
}
// Server is now listening on ${address}
})
```