Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | import type { Certificate } from '@https-enable/mkcert' import type { AppType, MiddlewareType, SamePortOptions, ServerInstance, ServerOptions } from './type' import { samePortSSL } from './same-port-ssl' export abstract class HttpsAdapter<App extends AppType, Middleware = MiddlewareType> { public serverInstance: ServerInstance | null = null constructor(public app?: App | null) {} /** * 创建框架特定的中间件 */ abstract createMiddleware?: (options: ServerOptions) => Middleware /** * 重置证书时通知 */ abstract onCertRenewed?: (certificate: Certificate) => any /** 特殊后端框架可以使用这个自定义返回 app */ abstract init?: () => Promise<App> /** * 启动 HTTPS 服务(可选,部分框架需要自定义逻辑) */ async createServer(options: SamePortOptions, app?: App) { let tempApp = app ?? this.app if (this.init && typeof this.init === 'function') { tempApp = await this.init() } if (!tempApp && !this.app) { throw new Error('`app` is no found') } this.serverInstance = await samePortSSL((tempApp ?? this.app)!, options) return this.serverInstance } } |