You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					59 lines
				
				2.3 KiB
			
		
		
			
		
	
	
					59 lines
				
				2.3 KiB
			| 
											3 years ago
										 | # @fastify/ajv-compiler
 | ||
|  | 
 | ||
|  | [](http://standardjs.com/) | ||
|  | [](https://github.com/fastify/ajv-compiler/actions/workflows/ci.yml) | ||
|  | 
 | ||
|  | This module manages the [`ajv`](https://www.npmjs.com/package/ajv) instances for the Fastify framework. | ||
|  | It isolates the `ajv` dependency so that the AJV version is not tightly coupled to the Fastify version. | ||
|  | This allows the user to decide which version of AJV to use in their Fastify based application. | ||
|  | 
 | ||
|  | 
 | ||
|  | ## Versions
 | ||
|  | 
 | ||
|  | | `@fastify/ajv-compiler` | `ajv` | Default in `fastify` | | ||
|  | |------------------------:|------:|---------------------:| | ||
|  | |                    v1.x |  v6.x |                ^3.14 | | ||
|  | 
 | ||
|  | 
 | ||
|  | ### AJV Configuration
 | ||
|  | 
 | ||
|  | The Fastify's default [`ajv` options](https://github.com/ajv-validator/ajv/tree/v6#options) are: | ||
|  | 
 | ||
|  | ```js | ||
|  | { | ||
|  |   coerceTypes: true, | ||
|  |   useDefaults: true, | ||
|  |   removeAdditional: true, | ||
|  |   // Explicitly set allErrors to `false`. | ||
|  |   // When set to `true`, a DoS attack is possible. | ||
|  |   allErrors: false, | ||
|  |   nullable: true | ||
|  | } | ||
|  | ``` | ||
|  | 
 | ||
|  | To customize them, see how in the [Fastify official docs](https://www.fastify.io/docs/latest/Server/#ajv). | ||
|  | 
 | ||
|  | 
 | ||
|  | ## Usage
 | ||
|  | 
 | ||
|  | This module is already used as default by Fastify.  | ||
|  | If you need to provide to your server instance a different version, refer to [the official doc](https://www.fastify.io/docs/latest/Server/#schemacontroller). | ||
|  | 
 | ||
|  | ### How it works
 | ||
|  | 
 | ||
|  | This module provide a factory function to produce [Validator Compilers](https://www.fastify.io/docs/latest/Server/#validatorcompiler) functions. | ||
|  | 
 | ||
|  | The Fastify factory function is just one per server instance and it is called for every encapsulated context created by the application through the `fastify.register()` call. | ||
|  | 
 | ||
|  | Every Validator Compiler produced has a dedicated AJV instance, so, this factory will try to produce as less as possible AJV instances to reduce the memory footprint and the startup time. | ||
|  | 
 | ||
|  | The variables involved to choose if a Validator Compiler can be reused are: | ||
|  | 
 | ||
|  | - the AJV configuration: it is [one per server](https://www.fastify.io/docs/latest/Server/#ajv) | ||
|  | - the external JSON schemas: once a new schema is added to a fastify's context, calling `fastify.addSchema()`, it will cause a new AJV inizialization | ||
|  | 
 | ||
|  | 
 | ||
|  | ## License
 | ||
|  | 
 | ||
|  | Licensed under [MIT](./LICENSE). |