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
						
					
					
				| // 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;
 |