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.
		
		
		
		
		
			
		
			
				
					65 lines
				
				1.4 KiB
			
		
		
			
		
	
	
					65 lines
				
				1.4 KiB
			| 
											3 years ago
										 | import fastify from "fastify"; | ||
|  | import pointOfView, { PointOfViewOptions } from ".."; | ||
|  | import { expectAssignable } from "tsd"; | ||
|  | import * as path from "path"; | ||
|  | 
 | ||
|  | interface Locals { | ||
|  |   appVersion: string, | ||
|  | } | ||
|  | 
 | ||
|  | declare module "fastify" { | ||
|  |   interface FastifyReply { | ||
|  |     locals: Partial<Locals> | undefined | ||
|  |   } | ||
|  | } | ||
|  | const app = fastify(); | ||
|  | 
 | ||
|  | app.register(pointOfView, { | ||
|  |   engine: { | ||
|  |     handlebars: require("handlebars"), | ||
|  |   }, | ||
|  |   templates: "templates", | ||
|  |   includeViewExtension: true, | ||
|  |   defaultContext: { | ||
|  |     dev: true, | ||
|  |   }, | ||
|  |   options: {}, | ||
|  |   layout: "layout", | ||
|  |   charset: "utf-8", | ||
|  |   maxCache: 100, | ||
|  |   production: false, | ||
|  |   root: path.resolve(__dirname, "../templates"), | ||
|  |   viewExt: "ejs", | ||
|  | }); | ||
|  | 
 | ||
|  | app.get("/", (request, reply) => { | ||
|  |   reply.view("/index-with-no-data"); | ||
|  | }); | ||
|  | 
 | ||
|  | app.get("/data", (request, reply) => { | ||
|  |   if (!reply.locals) { | ||
|  |     reply.locals = {} | ||
|  |   } | ||
|  | 
 | ||
|  |   // reply.locals.appVersion = 1 // not a valid type
 | ||
|  |   reply.locals.appVersion = '4.14.0' | ||
|  |   reply.view("/index", { text: "Sample data" }); | ||
|  | }); | ||
|  | 
 | ||
|  | app.get("/dataTyped", (request, reply) => { | ||
|  |   if (!reply.locals) { | ||
|  |     reply.locals = {} | ||
|  |   } | ||
|  | 
 | ||
|  |   // reply.locals.appVersion = 1 // not a valid type
 | ||
|  |   reply.locals.appVersion = '4.14.0' | ||
|  |   reply.view<{ text: string; }>("/index", { text: "Sample data" }); | ||
|  | }); | ||
|  | 
 | ||
|  | app.listen(3000, (err, address) => { | ||
|  |   if (err) throw err | ||
|  |   console.log(`server listening on ${address} ...`) | ||
|  | }) | ||
|  | 
 | ||
|  | expectAssignable<PointOfViewOptions>({ engine: { twig: require('twig') }, propertyName: 'mobile' }) |