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.
		
		
		
		
		
			
		
			
				
					99 lines
				
				2.4 KiB
			
		
		
			
		
	
	
					99 lines
				
				2.4 KiB
			| 
											3 years ago
										 | // Definitions by: Jannik <https://github.com/jannikkeye>
 | ||
|  | //                 Leo <https://github.com/leomelzer>
 | ||
|  | /// <reference types="node" />
 | ||
|  | 
 | ||
|  | import { FastifyPluginCallback, FastifyReply } from 'fastify'; | ||
|  | import { Stats } from 'fs'; | ||
|  | 
 | ||
|  | declare module "fastify" { | ||
|  |   interface FastifyReply { | ||
|  |     sendFile(filename: string, rootPath?: string): FastifyReply; | ||
|  |     sendFile(filename: string, options?: SendOptions): FastifyReply; | ||
|  |     sendFile(filename: string, rootPath?: string, options?: SendOptions): FastifyReply; | ||
|  |     download(filepath: string, options?: SendOptions): FastifyReply; | ||
|  |     download(filepath: string, filename?: string): FastifyReply; | ||
|  |     download(filepath: string, filename?: string, options?: SendOptions): FastifyReply; | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | interface ExtendedInformation { | ||
|  |   fileCount: number; | ||
|  |   totalFileCount: number; | ||
|  |   folderCount: number; | ||
|  |   totalFolderCount: number; | ||
|  |   totalSize: number; | ||
|  |   lastModified: number; | ||
|  | } | ||
|  | 
 | ||
|  | interface ListDir { | ||
|  |   href: string; | ||
|  |   name: string; | ||
|  |   stats: Stats; | ||
|  |   extendedInfo?: ExtendedInformation; | ||
|  | } | ||
|  | 
 | ||
|  | interface ListFile { | ||
|  |   href: string; | ||
|  |   name: string; | ||
|  |   stats: Stats; | ||
|  | } | ||
|  | 
 | ||
|  | interface ListRender { | ||
|  |   (dirs: ListDir[], files: ListFile[]): string; | ||
|  | } | ||
|  | 
 | ||
|  | interface ListOptions { | ||
|  |   format: 'json' | 'html'; | ||
|  |   names: string[]; | ||
|  |   render: ListRender; | ||
|  |   extendedFolderInfo?: boolean; | ||
|  |   jsonFormat?: 'names' | 'extended'; | ||
|  | } | ||
|  | 
 | ||
|  | // Passed on to `send`
 | ||
|  | interface SendOptions { | ||
|  |   acceptRanges?: boolean; | ||
|  |   cacheControl?: boolean; | ||
|  |   dotfiles?: 'allow' | 'deny' | 'ignore'; | ||
|  |   etag?: boolean; | ||
|  |   extensions?: string[]; | ||
|  |   immutable?: boolean; | ||
|  |   index?: string[] | false; | ||
|  |   lastModified?: boolean; | ||
|  |   maxAge?: string | number; | ||
|  | } | ||
|  | 
 | ||
|  | export interface FastifyStaticOptions extends SendOptions { | ||
|  |   root: string | string[]; | ||
|  |   prefix?: string; | ||
|  |   prefixAvoidTrailingSlash?: boolean; | ||
|  |   serve?: boolean; | ||
|  |   decorateReply?: boolean; | ||
|  |   schemaHide?: boolean; | ||
|  |   setHeaders?: (...args: any[]) => void; | ||
|  |   redirect?: boolean; | ||
|  |   wildcard?: boolean; | ||
|  |   list?: boolean | ListOptions; | ||
|  |   allowedPath?: (pathName: string, root?: string) => boolean; | ||
|  |   /** | ||
|  |    * @description | ||
|  |    * Opt-in to looking for pre-compressed files | ||
|  |    */ | ||
|  |   preCompressed?: boolean; | ||
|  | 
 | ||
|  |   // Passed on to `send`
 | ||
|  |   acceptRanges?: boolean; | ||
|  |   cacheControl?: boolean; | ||
|  |   dotfiles?: 'allow' | 'deny' | 'ignore'; | ||
|  |   etag?: boolean; | ||
|  |   extensions?: string[]; | ||
|  |   immutable?: boolean; | ||
|  |   index?: string[] | false; | ||
|  |   lastModified?: boolean; | ||
|  |   maxAge?: string | number; | ||
|  | } | ||
|  | 
 | ||
|  | declare const fastifyStatic: FastifyPluginCallback<FastifyStaticOptions> | ||
|  | 
 | ||
|  | export default fastifyStatic; |