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.
		
		
		
		
		
			
		
			
				
					75 lines
				
				2.5 KiB
			
		
		
			
		
	
	
					75 lines
				
				2.5 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								import fp from './plugin';
							 | 
						||
| 
								 | 
							
								import fastify, { FastifyPluginCallback, FastifyPluginAsync, FastifyError, FastifyInstance, FastifyPluginOptions } from 'fastify';
							 | 
						||
| 
								 | 
							
								import { expectAssignable } from 'tsd'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								interface Options {
							 | 
						||
| 
								 | 
							
								  foo: string
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const testSymbol = Symbol('foobar')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Callback
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const pluginCallback: FastifyPluginCallback = (fastify, options, next) => { }
							 | 
						||
| 
								 | 
							
								expectAssignable<FastifyPluginCallback>(fp(pluginCallback))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const pluginCallbackWithTypes = (fastify: FastifyInstance, options: FastifyPluginOptions, next: (error?: FastifyError) => void): void => { }
							 | 
						||
| 
								 | 
							
								expectAssignable<FastifyPluginCallback>(fp(pluginCallbackWithTypes))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								expectAssignable<FastifyPluginCallback>(fp((fastify: FastifyInstance, options: FastifyPluginOptions, next: (error?: FastifyError) => void): void => { }))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								expectAssignable<FastifyPluginCallback>(fp(pluginCallback, '' ))
							 | 
						||
| 
								 | 
							
								expectAssignable<FastifyPluginCallback>(fp(pluginCallback, {
							 | 
						||
| 
								 | 
							
								  fastify: '',
							 | 
						||
| 
								 | 
							
								  name: '',
							 | 
						||
| 
								 | 
							
								  decorators: {
							 | 
						||
| 
								 | 
							
								    fastify: [ '', testSymbol ],
							 | 
						||
| 
								 | 
							
								    reply: [ '', testSymbol ],
							 | 
						||
| 
								 | 
							
								    request: [ '', testSymbol ]
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  dependencies: [ '' ]
							 | 
						||
| 
								 | 
							
								}))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const pluginCallbackWithOptions: FastifyPluginCallback<Options> = (fastify, options, next) => {
							 | 
						||
| 
								 | 
							
								  expectAssignable<string>(options.foo)
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								expectAssignable<FastifyPluginCallback<Options>>(fp(pluginCallbackWithOptions))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Async
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const pluginAsync: FastifyPluginAsync = async (fastify, options) => { }
							 | 
						||
| 
								 | 
							
								expectAssignable<FastifyPluginAsync>(fp(pluginAsync))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const pluginAsyncWithTypes = async (fastify: FastifyInstance, options: FastifyPluginOptions): Promise<void> => { }
							 | 
						||
| 
								 | 
							
								expectAssignable<FastifyPluginAsync>(fp(pluginAsyncWithTypes))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								expectAssignable<FastifyPluginAsync>(fp(async (fastify: FastifyInstance, options: FastifyPluginOptions): Promise<void> => { }))
							 | 
						||
| 
								 | 
							
								expectAssignable<FastifyPluginAsync>(fp(pluginAsync, '' ))
							 | 
						||
| 
								 | 
							
								expectAssignable<FastifyPluginAsync>(fp(pluginAsync, {
							 | 
						||
| 
								 | 
							
								  fastify: '',
							 | 
						||
| 
								 | 
							
								  name: '',
							 | 
						||
| 
								 | 
							
								  decorators: {
							 | 
						||
| 
								 | 
							
								    fastify: [ '', testSymbol ],
							 | 
						||
| 
								 | 
							
								    reply: [ '', testSymbol ],
							 | 
						||
| 
								 | 
							
								    request: [ '', testSymbol ]
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  dependencies: [ '' ]
							 | 
						||
| 
								 | 
							
								}))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const pluginAsyncWithOptions: FastifyPluginAsync<Options> = async (fastify, options) => {
							 | 
						||
| 
								 | 
							
								  expectAssignable<string>(options.foo)
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								expectAssignable<FastifyPluginAsync<Options>>(fp(pluginAsyncWithOptions))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Fastify register
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const server = fastify()
							 | 
						||
| 
								 | 
							
								server.register(fp(pluginCallback))
							 | 
						||
| 
								 | 
							
								server.register(fp(pluginCallbackWithTypes))
							 | 
						||
| 
								 | 
							
								server.register(fp(pluginCallbackWithOptions))
							 | 
						||
| 
								 | 
							
								server.register(fp(pluginAsync))
							 | 
						||
| 
								 | 
							
								server.register(fp(pluginAsyncWithTypes))
							 | 
						||
| 
								 | 
							
								server.register(fp(pluginAsyncWithOptions))
							 |