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: about 1 month 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 (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2025-01-24T13:17:00.000Z (4 months ago)
- Last Synced: 2025-03-24T00:16:14.625Z (about 2 months ago)
- Topics: additional-pro, fastify, fastify-pl, json-sche, schema
- Language: JavaScript
- Homepage:
- Size: 146 KB
- Stars: 19
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# fastify-no-additional-properties
[](https://www.npmjs.com/package/fastify-no-additional-properties)


[](https://coveralls.io/github/greguz/fastify-no-additional-properties?branch=master)
[](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}
})
```