UNPKG

3.1 kBTypeScriptView Raw
1import { IncomingMessage, ServerResponse, Server } from "http"
2import { MemoryTree } from "memory-tree"
3import * as net from 'net'
4
5type LessConfig = any
6type BabelConfig = any
7
8export interface F2Events {
9 /**
10 * on request begin
11 */
12 beforeRoute?: {
13 (pathname: string, req: IncomingMessage, resp: ServerResponse, mem: MemoryTree.Store): string | false | undefined
14 }
15 /**
16 * on request end
17 */
18 onRoute?: {
19 (pathname: string, req: IncomingMessage, resp: ServerResponse, mem: MemoryTree.Store): string | false | undefined
20 }
21 /**
22 * on file change
23 */
24 buildWatcher?: {
25 (pathname: string, eventType: string, build: MemoryTree.Build, store: MemoryTree.Store): void
26 }
27 /**
28 * on data save into memory
29 */
30 onSet?: {
31 (pathname: string, data: MemoryTree.DataBuffer, store: MemoryTree.Store): MemoryTree.DataBuffer|Promise<{
32 data: MemoryTree.DataBuffer;
33 outputPath: string;
34 originPath: string;
35 }>
36 }
37 /**
38 * get data from memory
39 */
40 onGet?: {
41 (pathname: string, data: MemoryTree.DataBuffer, store: MemoryTree.Store): MemoryTree.DataBuffer | Promise<MemoryTree.DataBuffer>
42 }
43 /**
44 * whether to build some path from disk
45 */
46 buildFilter?: {
47 (pathname: string, data: MemoryTree.DataBuffer): boolean
48 }
49 /**
50 * whether to persist data by outputPath
51 */
52 outputFilter?: {
53 (pathname: string, data: MemoryTree.DataBuffer): boolean
54 }
55}
56export interface Middleware extends F2Events{
57 /**
58 * turn of middle to execute
59 */
60 setBefore?: number
61}
62export interface MiddlewareCreater {
63 (conf: F2EConfig): Middleware
64}
65export interface MiddlewareRef {
66 /**
67 * middleware name
68 * > if you middleware named `f2e-middle-markdown` then use 'markdown' here
69 * > ## middleware should implements MiddlewareCreater
70 */
71 middleware: string
72 /**
73 * turn of middle to execute
74 */
75 setBefore?: number
76 /**
77 * support muti options for any middlewares
78 */
79 [x:string]: any
80}
81
82export interface PageRender<T = any, R = string> {
83 (req: IncomingMessage, resp: ServerResponse, data: T): R
84}
85
86export interface F2EConfig extends F2Events{
87 root?: string
88 port?: number
89 host?: string
90 /**
91 * no host valid
92 */
93 no_host?: boolean
94 livereload?: boolean
95 build?: boolean
96 gzip?: boolean
97 /**
98 * stream data output size per response
99 */
100 range_size?: number
101 useLess?: boolean | LessConfig
102 useBabel?: boolean | BabelConfig
103 middlewares?: (MiddlewareCreater | MiddlewareRef)[]
104 output?: string
105 /**
106 * after server create
107 * you can render websocket server via this
108 */
109 onServerCreate?: (server: net.Server) => void
110
111 /**
112 * pages config
113 */
114 page_404?: string | PageRender<{ pathname: string }>
115 page_50x?: string | PageRender<{ error: Error }>
116 page_dir?: string | PageRender<{ pathname: string, store: Object }>
117}
118
119export const config: F2EConfig
\No newline at end of file