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