@modern-js/prod-server 2.47.0 → 2.47.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/README.md +20 -16
  2. package/dist/cjs/{libs/hook-api/route.js → error.js} +16 -25
  3. package/dist/cjs/index.js +46 -24
  4. package/dist/esm/error.js +15 -0
  5. package/dist/esm/index.js +105 -19
  6. package/dist/esm-node/error.js +14 -0
  7. package/dist/esm-node/index.js +44 -17
  8. package/dist/types/error.d.ts +6 -0
  9. package/dist/types/index.d.ts +21 -11
  10. package/package.json +18 -92
  11. package/dist/cjs/constants.js +0 -72
  12. package/dist/cjs/libs/context/context.js +0 -240
  13. package/dist/cjs/libs/context/index.js +0 -31
  14. package/dist/cjs/libs/hook-api/afterRenderForStream.js +0 -34
  15. package/dist/cjs/libs/hook-api/base.js +0 -107
  16. package/dist/cjs/libs/hook-api/index.js +0 -85
  17. package/dist/cjs/libs/hook-api/index.worker.js +0 -119
  18. package/dist/cjs/libs/hook-api/template.js +0 -74
  19. package/dist/cjs/libs/hook-api/templateForStream.js +0 -52
  20. package/dist/cjs/libs/loadConfig.js +0 -70
  21. package/dist/cjs/libs/metrics.js +0 -33
  22. package/dist/cjs/libs/preload/flushServerHeader.js +0 -49
  23. package/dist/cjs/libs/preload/index.js +0 -24
  24. package/dist/cjs/libs/preload/parseLinks.js +0 -124
  25. package/dist/cjs/libs/preload/shouldFlushServerHeader.js +0 -52
  26. package/dist/cjs/libs/preload/transformLinks2String.js +0 -150
  27. package/dist/cjs/libs/proxy.js +0 -99
  28. package/dist/cjs/libs/render/index.js +0 -109
  29. package/dist/cjs/libs/render/measure.js +0 -74
  30. package/dist/cjs/libs/render/ssr.js +0 -126
  31. package/dist/cjs/libs/render/ssrCache/cacheMod.js +0 -56
  32. package/dist/cjs/libs/render/ssrCache/index.js +0 -83
  33. package/dist/cjs/libs/render/ssrCache/manager.js +0 -106
  34. package/dist/cjs/libs/render/static.js +0 -72
  35. package/dist/cjs/libs/render/type.js +0 -33
  36. package/dist/cjs/libs/render/utils.js +0 -41
  37. package/dist/cjs/libs/reporter.js +0 -39
  38. package/dist/cjs/libs/route/index.js +0 -85
  39. package/dist/cjs/libs/route/matcher.js +0 -117
  40. package/dist/cjs/libs/route/route.js +0 -49
  41. package/dist/cjs/libs/serveFile.js +0 -84
  42. package/dist/cjs/libs/serverTiming.js +0 -44
  43. package/dist/cjs/renderHtml.js +0 -72
  44. package/dist/cjs/server/index.js +0 -229
  45. package/dist/cjs/server/modernServer.js +0 -532
  46. package/dist/cjs/server/modernServerSplit.js +0 -67
  47. package/dist/cjs/type.js +0 -16
  48. package/dist/cjs/utils.js +0 -164
  49. package/dist/cjs/workerServer.js +0 -264
  50. package/dist/esm/constants.js +0 -43
  51. package/dist/esm/libs/context/context.js +0 -292
  52. package/dist/esm/libs/context/index.js +0 -8
  53. package/dist/esm/libs/hook-api/afterRenderForStream.js +0 -33
  54. package/dist/esm/libs/hook-api/base.js +0 -108
  55. package/dist/esm/libs/hook-api/index.js +0 -55
  56. package/dist/esm/libs/hook-api/index.worker.js +0 -113
  57. package/dist/esm/libs/hook-api/route.js +0 -41
  58. package/dist/esm/libs/hook-api/template.js +0 -84
  59. package/dist/esm/libs/hook-api/templateForStream.js +0 -35
  60. package/dist/esm/libs/loadConfig.js +0 -36
  61. package/dist/esm/libs/metrics.js +0 -9
  62. package/dist/esm/libs/preload/flushServerHeader.js +0 -50
  63. package/dist/esm/libs/preload/index.js +0 -2
  64. package/dist/esm/libs/preload/parseLinks.js +0 -172
  65. package/dist/esm/libs/preload/shouldFlushServerHeader.js +0 -27
  66. package/dist/esm/libs/preload/transformLinks2String.js +0 -140
  67. package/dist/esm/libs/proxy.js +0 -160
  68. package/dist/esm/libs/render/index.js +0 -175
  69. package/dist/esm/libs/render/measure.js +0 -69
  70. package/dist/esm/libs/render/ssr.js +0 -129
  71. package/dist/esm/libs/render/ssrCache/cacheMod.js +0 -33
  72. package/dist/esm/libs/render/ssrCache/index.js +0 -151
  73. package/dist/esm/libs/render/ssrCache/manager.js +0 -170
  74. package/dist/esm/libs/render/static.js +0 -100
  75. package/dist/esm/libs/render/type.js +0 -9
  76. package/dist/esm/libs/render/utils.js +0 -16
  77. package/dist/esm/libs/reporter.js +0 -15
  78. package/dist/esm/libs/route/index.js +0 -116
  79. package/dist/esm/libs/route/matcher.js +0 -128
  80. package/dist/esm/libs/route/route.js +0 -26
  81. package/dist/esm/libs/serveFile.js +0 -68
  82. package/dist/esm/libs/serverTiming.js +0 -30
  83. package/dist/esm/renderHtml.js +0 -150
  84. package/dist/esm/server/index.js +0 -426
  85. package/dist/esm/server/modernServer.js +0 -1018
  86. package/dist/esm/server/modernServerSplit.js +0 -138
  87. package/dist/esm/type.js +0 -0
  88. package/dist/esm/utils.js +0 -103
  89. package/dist/esm/workerServer.js +0 -347
  90. package/dist/esm-node/constants.js +0 -43
  91. package/dist/esm-node/libs/context/context.js +0 -206
  92. package/dist/esm-node/libs/context/index.js +0 -6
  93. package/dist/esm-node/libs/hook-api/afterRenderForStream.js +0 -10
  94. package/dist/esm-node/libs/hook-api/base.js +0 -72
  95. package/dist/esm-node/libs/hook-api/index.js +0 -57
  96. package/dist/esm-node/libs/hook-api/index.worker.js +0 -92
  97. package/dist/esm-node/libs/hook-api/route.js +0 -24
  98. package/dist/esm-node/libs/hook-api/template.js +0 -49
  99. package/dist/esm-node/libs/hook-api/templateForStream.js +0 -28
  100. package/dist/esm-node/libs/loadConfig.js +0 -34
  101. package/dist/esm-node/libs/metrics.js +0 -9
  102. package/dist/esm-node/libs/preload/flushServerHeader.js +0 -25
  103. package/dist/esm-node/libs/preload/index.js +0 -2
  104. package/dist/esm-node/libs/preload/parseLinks.js +0 -90
  105. package/dist/esm-node/libs/preload/shouldFlushServerHeader.js +0 -27
  106. package/dist/esm-node/libs/preload/transformLinks2String.js +0 -126
  107. package/dist/esm-node/libs/proxy.js +0 -74
  108. package/dist/esm-node/libs/render/index.js +0 -75
  109. package/dist/esm-node/libs/render/measure.js +0 -49
  110. package/dist/esm-node/libs/render/ssr.js +0 -92
  111. package/dist/esm-node/libs/render/ssrCache/cacheMod.js +0 -22
  112. package/dist/esm-node/libs/render/ssrCache/index.js +0 -59
  113. package/dist/esm-node/libs/render/ssrCache/manager.js +0 -82
  114. package/dist/esm-node/libs/render/static.js +0 -38
  115. package/dist/esm-node/libs/render/type.js +0 -9
  116. package/dist/esm-node/libs/render/utils.js +0 -16
  117. package/dist/esm-node/libs/reporter.js +0 -15
  118. package/dist/esm-node/libs/route/index.js +0 -60
  119. package/dist/esm-node/libs/route/matcher.js +0 -93
  120. package/dist/esm-node/libs/route/route.js +0 -25
  121. package/dist/esm-node/libs/serveFile.js +0 -49
  122. package/dist/esm-node/libs/serverTiming.js +0 -20
  123. package/dist/esm-node/renderHtml.js +0 -80
  124. package/dist/esm-node/server/index.js +0 -195
  125. package/dist/esm-node/server/modernServer.js +0 -498
  126. package/dist/esm-node/server/modernServerSplit.js +0 -43
  127. package/dist/esm-node/type.js +0 -0
  128. package/dist/esm-node/utils.js +0 -132
  129. package/dist/esm-node/workerServer.js +0 -239
  130. package/dist/types/constants.d.ts +0 -30
  131. package/dist/types/libs/context/context.d.ts +0 -62
  132. package/dist/types/libs/context/index.d.ts +0 -7
  133. package/dist/types/libs/hook-api/afterRenderForStream.d.ts +0 -4
  134. package/dist/types/libs/hook-api/base.d.ts +0 -53
  135. package/dist/types/libs/hook-api/index.d.ts +0 -6
  136. package/dist/types/libs/hook-api/index.worker.d.ts +0 -19
  137. package/dist/types/libs/hook-api/route.d.ts +0 -9
  138. package/dist/types/libs/hook-api/template.d.ts +0 -22
  139. package/dist/types/libs/hook-api/templateForStream.d.ts +0 -8
  140. package/dist/types/libs/loadConfig.d.ts +0 -13
  141. package/dist/types/libs/metrics.d.ts +0 -3
  142. package/dist/types/libs/preload/flushServerHeader.d.ts +0 -14
  143. package/dist/types/libs/preload/index.d.ts +0 -2
  144. package/dist/types/libs/preload/parseLinks.d.ts +0 -13
  145. package/dist/types/libs/preload/shouldFlushServerHeader.d.ts +0 -3
  146. package/dist/types/libs/preload/transformLinks2String.d.ts +0 -3
  147. package/dist/types/libs/proxy.d.ts +0 -13
  148. package/dist/types/libs/render/index.d.ts +0 -21
  149. package/dist/types/libs/render/measure.d.ts +0 -10
  150. package/dist/types/libs/render/ssr.d.ts +0 -12
  151. package/dist/types/libs/render/ssrCache/cacheMod.d.ts +0 -8
  152. package/dist/types/libs/render/ssrCache/index.d.ts +0 -7
  153. package/dist/types/libs/render/ssrCache/manager.d.ts +0 -14
  154. package/dist/types/libs/render/static.d.ts +0 -3
  155. package/dist/types/libs/render/type.d.ts +0 -36
  156. package/dist/types/libs/render/utils.d.ts +0 -5
  157. package/dist/types/libs/reporter.d.ts +0 -2
  158. package/dist/types/libs/route/index.d.ts +0 -15
  159. package/dist/types/libs/route/matcher.d.ts +0 -15
  160. package/dist/types/libs/route/route.d.ts +0 -14
  161. package/dist/types/libs/serveFile.d.ts +0 -9
  162. package/dist/types/libs/serverTiming.d.ts +0 -13
  163. package/dist/types/renderHtml.d.ts +0 -23
  164. package/dist/types/server/index.d.ts +0 -55
  165. package/dist/types/server/modernServer.d.ts +0 -71
  166. package/dist/types/server/modernServerSplit.d.ts +0 -2
  167. package/dist/types/type.d.ts +0 -77
  168. package/dist/types/utils.d.ts +0 -24
  169. package/dist/types/workerServer.d.ts +0 -59
@@ -1,36 +0,0 @@
1
- /// <reference types="react" />
2
- /// <reference types="node" />
3
- import { Writable, Readable } from 'stream';
4
- import { BaseSSRServerContext } from '@modern-js/types';
5
- type MetaKeyMap = {
6
- header?: string[];
7
- query?: string[];
8
- };
9
- type MetaKeyMatch = {
10
- header?: MatchMap;
11
- query?: MatchMap;
12
- };
13
- type MatchMap = Record<string, Record<string, string>>;
14
- export type CacheConfig = {
15
- interval: number;
16
- staleLimit: number | boolean;
17
- level: number;
18
- includes?: MetaKeyMap | null;
19
- excludes?: MetaKeyMap | null;
20
- matches?: MetaKeyMatch | null;
21
- };
22
- export declare enum RenderLevel {
23
- CLIENT_RENDER = 0,
24
- SERVER_PREFETCH = 1,
25
- SERVER_RENDER = 2
26
- }
27
- export type SSRServerContext = BaseSSRServerContext & {
28
- cacheConfig?: CacheConfig;
29
- staticGenerate?: boolean;
30
- };
31
- export type ModernSSRReactComponent = React.ComponentType<any> & {
32
- init: (context: SSRServerContext) => Promise<void>;
33
- prefetch: (context: SSRServerContext) => Promise<Record<string, any>>;
34
- };
35
- export type RenderFunction = (context: SSRServerContext) => Promise<string | ((writable: Writable) => Promise<Readable>) | undefined>;
36
- export {};
@@ -1,5 +0,0 @@
1
- /// <reference types="node" />
2
- import { Readable } from 'stream';
3
- import type { ModernServerContext } from '@modern-js/types';
4
- export declare const injectServerData: (content: string, context: ModernServerContext) => string;
5
- export declare const injectServerDataStream: (content: Readable, context: ModernServerContext) => import("stream").Transform;
@@ -1,2 +0,0 @@
1
- import { Reporter } from '@modern-js/types/server';
2
- export declare const defaultReporter: Reporter;
@@ -1,15 +0,0 @@
1
- import { RouteMatcher } from './matcher';
2
- import { ModernRoute, ModernRouteInterface } from './route';
3
- export declare class RouteMatchManager {
4
- matchers: RouteMatcher[];
5
- private specs;
6
- constructor();
7
- private filter;
8
- private best;
9
- reset(specs: ModernRouteInterface[]): void;
10
- match(pathname: string): RouteMatcher | undefined;
11
- matchEntry(entryname: string): RouteMatcher | undefined;
12
- getBundles(): (string | undefined)[];
13
- }
14
- export type { ModernRouteInterface, ModernRoute };
15
- export { RouteMatcher };
@@ -1,15 +0,0 @@
1
- import { MatchFunction } from 'path-to-regexp';
2
- import { ModernRoute, ModernRouteInterface } from './route';
3
- export declare class RouteMatcher {
4
- spec: ModernRouteInterface;
5
- urlPath: string;
6
- urlMatcher?: MatchFunction;
7
- urlReg?: RegExp;
8
- constructor(spec: ModernRouteInterface);
9
- generate(url: string): ModernRoute;
10
- parseURLParams(pathname: string): Record<string, string>;
11
- matchLength(pathname: string): number | null;
12
- matchUrlPath(requestUrl: string): boolean;
13
- matchEntry(entryName: string): boolean;
14
- private setupUrlPath;
15
- }
@@ -1,14 +0,0 @@
1
- import { ServerRoute as ModernRouteInterface } from '@modern-js/types';
2
- export type { ModernRouteInterface };
3
- export declare class ModernRoute implements ModernRouteInterface {
4
- entryName: string;
5
- urlPath: string;
6
- entryPath: string;
7
- bundle: string;
8
- isApi: boolean;
9
- isSSR: boolean;
10
- isSPA: boolean;
11
- params: Record<string, any>;
12
- responseHeaders?: Record<string, any>;
13
- constructor(routeSpec: ModernRouteInterface);
14
- }
@@ -1,9 +0,0 @@
1
- import type { ModernServerContext } from '@modern-js/types';
2
- import { NextFunction, ModernServerHandler } from '../type';
3
- type Rule = {
4
- path: string | RegExp;
5
- target: string;
6
- };
7
- export declare const faviconFallbackHandler: ModernServerHandler;
8
- export declare const createStaticFileHandler: (rules: Rule[], assetPrefix?: string) => (context: ModernServerContext, next: NextFunction) => Promise<void>;
9
- export {};
@@ -1,13 +0,0 @@
1
- import { ServerTiming as IServerTiming } from '@modern-js/types';
2
- interface Res {
3
- getHeader: (name: string) => number | string | string[] | undefined;
4
- setHeader: (name: string, value: string) => void;
5
- set: (name: string, value: any) => this;
6
- }
7
- export declare class ServerTiming implements IServerTiming {
8
- meta: string;
9
- res: Res;
10
- constructor(res: Res, meta: string);
11
- addServeTiming(name: string, dur: number, desc?: string): this;
12
- }
13
- export {};
@@ -1,23 +0,0 @@
1
- /// <reference path="type.d.ts" />
2
- /// <reference types="node" />
3
- /// <reference types="node/http" />
4
- import { IncomingHttpHeaders, OutgoingHttpHeaders } from 'http';
5
- import { ModernServerOptions } from './type';
6
- export interface RenderHtmlOptions {
7
- /** request url */
8
- url: string;
9
- /** request method */
10
- method?: string;
11
- /** request headers */
12
- headers?: IncomingHttpHeaders;
13
- /** request body */
14
- body?: string;
15
- serverOptions: ModernServerOptions;
16
- }
17
- export interface ReturnResponse {
18
- headers: OutgoingHttpHeaders;
19
- redirected: boolean;
20
- status: number;
21
- url: string;
22
- body: string;
23
- }
@@ -1,55 +0,0 @@
1
- /// <reference path="../type.d.ts" />
2
- /// <reference types="node" />
3
- /// <reference types="node" />
4
- /// <reference types="node" />
5
- /// <reference types="node/http" />
6
- import { IncomingMessage, ServerResponse } from 'http';
7
- import type { ListenOptions } from 'net';
8
- import { ModernServerOptions, ServerConstructor } from '../type';
9
- export declare class Server {
10
- options: ModernServerOptions;
11
- protected serverImpl: ServerConstructor;
12
- private server;
13
- private app;
14
- private runner;
15
- private serverConfig;
16
- constructor(options: ModernServerOptions);
17
- /**
18
- * 初始化顺序
19
- * - 读取 .env.{process.env.MODERN_ENV} 文件,加载环境变量
20
- * - 获取 server runtime config
21
- * - 设置 context
22
- * - 创建 hooksRunner
23
- * - 合并插件,内置插件和 serverConfig 中配置的插件
24
- * - 执行 config hook
25
- * - 获取最终的配置
26
- * - 设置配置到 context
27
- * - 初始化 server
28
- * - 执行 prepare hook
29
- * - 执行 server init
30
- */
31
- init({ disableHttpServer }?: {
32
- disableHttpServer: boolean;
33
- }): Promise<this>;
34
- /**
35
- * Execute config hooks
36
- * @param runner
37
- * @param options
38
- */
39
- private runConfigHook;
40
- private runPrepareHook;
41
- private initServerConfig;
42
- /**
43
- *
44
- * merge cliConfig and serverConfig
45
- */
46
- private initConfig;
47
- close(): Promise<void>;
48
- listen<T extends number | ListenOptions | undefined>(options: T, listener: any): void;
49
- getRequestHandler(): (req: IncomingMessage, res: ServerResponse, next?: () => void) => void;
50
- render(req: IncomingMessage, res: ServerResponse, url?: string): Promise<string | import("stream").Readable | null>;
51
- private createHookRunner;
52
- private injectContext;
53
- private initAppContext;
54
- private loadServerEnv;
55
- }
@@ -1,71 +0,0 @@
1
- /// <reference path="../type.d.ts" />
2
- /// <reference types="node" />
3
- /// <reference types="node" />
4
- /// <reference types="node/http" />
5
- import { IncomingMessage, ServerResponse, Server } from 'http';
6
- import { Adapter, WebAdapter, APIServerStartInput, ServerOptions } from '@modern-js/server-core';
7
- import { type ModernServerContext, type ServerRoute } from '@modern-js/types';
8
- import { Logger } from '@modern-js/utils/logger';
9
- import type { ContextOptions } from '../libs/context';
10
- import { ModernServerOptions, NextFunction, ServerHookRunner, Metrics, ModernServerInterface, BuildOptions, ModernServerHandler } from '../type';
11
- import { RouteMatchManager, ModernRouteInterface, ModernRoute } from '../libs/route';
12
- import { RenderHandler } from '../libs/render';
13
- import { mergeExtension } from '../utils';
14
- type ModernServerAsyncHandler = (context: ModernServerContext, next: NextFunction) => Promise<void>;
15
- export declare class ModernServer implements ModernServerInterface {
16
- pwd: string;
17
- distDir: string;
18
- protected workDir: string;
19
- protected router: RouteMatchManager;
20
- protected conf: ServerOptions;
21
- protected handlers: ModernServerAsyncHandler[];
22
- protected presetRoutes?: ModernRouteInterface[];
23
- protected runner: ServerHookRunner;
24
- protected readonly logger: Logger;
25
- protected readonly metrics: Metrics;
26
- protected readonly runMode: string;
27
- protected readonly proxyTarget: ModernServerOptions['proxyTarget'];
28
- protected routeRenderHandler: RenderHandler;
29
- protected readonly staticGenerate: boolean;
30
- protected readonly metaName?: string;
31
- private loaderHandler;
32
- private frameWebHandler;
33
- private frameAPIHandler;
34
- private _handler;
35
- constructor({ pwd, config, routes, staticGenerate, logger, metrics, runMode, proxyTarget, appContext, }: ModernServerOptions);
36
- onInit(runner: ServerHookRunner, app: Server): Promise<void>;
37
- getRenderHandler(): RenderHandler;
38
- onRepack(_: BuildOptions): void;
39
- getRequestHandler(): (req: IncomingMessage, res: ServerResponse, next?: () => void) => void | ServerResponse;
40
- render(req: IncomingMessage, res: ServerResponse, url?: string): Promise<string | import("stream").Readable | null>;
41
- createHTTPServer(handler: (req: IncomingMessage, res: ServerResponse, next?: () => void) => void): Promise<Server<typeof IncomingMessage, typeof ServerResponse>>;
42
- protected onServerChange({ filepath }: {
43
- filepath: string;
44
- }): Promise<void>;
45
- protected getRoutes(): ServerRoute[];
46
- protected addHandler(handler: ModernServerHandler): void;
47
- protected render404(context: ModernServerContext): void;
48
- protected prepareLoaderHandler(specs: ServerRoute[], distDir: string): Promise<void>;
49
- protected prepareFrameHandler(options?: {
50
- onlyApi: boolean;
51
- onlyWeb: boolean;
52
- }): Promise<void>;
53
- protected prepareWebHandler(extension: ReturnType<typeof mergeExtension>): Promise<WebAdapter>;
54
- protected prepareAPIHandler(extension: APIServerStartInput['config']): Promise<Adapter>;
55
- protected filterRoutes(routes: ModernRouteInterface[]): ServerRoute[];
56
- protected setupBeforeProdMiddleware(): Promise<void>;
57
- protected setupStaticMiddleware(prefix?: string): (context: ModernServerContext, next: NextFunction) => Promise<void>;
58
- protected handleAPI(context: ModernServerContext): Promise<void>;
59
- protected handleWeb(context: ModernServerContext, route: ModernRoute): Promise<import("../type").RenderResult | null>;
60
- protected proxy(): Promise<any>;
61
- protected warmupSSRBundle(): void;
62
- protected createContext(req: IncomingMessage, res: ServerResponse, options?: ContextOptions): import("../libs/context").ModernServerContext;
63
- private routeHandler;
64
- private isSend;
65
- private compose;
66
- private requestHandler;
67
- private redirect;
68
- private onError;
69
- private renderErrorPage;
70
- }
71
- export {};
@@ -1,2 +0,0 @@
1
- import { ModernServerOptions, ModernServerInterface } from '../type';
2
- export declare const createProdServer: (options: ModernServerOptions) => ModernServerInterface;
@@ -1,77 +0,0 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- /// <reference types="node" />
4
- /// <reference types="node/http" />
5
- import { IncomingMessage, Server, ServerResponse } from 'http';
6
- import { Readable } from 'stream';
7
- import { serverManager, ServerOptions } from '@modern-js/server-core';
8
- import type { ServerPlugin } from '@modern-js/server-core';
9
- import type { Metrics, Logger, NextFunction, ModernServerContext, InternalPlugins, Reporter } from '@modern-js/types';
10
- import { Logger as LocalLogger } from '@modern-js/utils/logger';
11
- import type { ModernRouteInterface } from './libs/route';
12
- declare module 'http' {
13
- interface IncomingMessage {
14
- logger: Logger;
15
- metrics: Metrics;
16
- reporter?: Reporter;
17
- body?: any;
18
- }
19
- interface OutgoingMessage {
20
- set: (key: string, value: any) => this;
21
- modernFlushedHeaders?: boolean;
22
- }
23
- }
24
- export type ModernServerOptions = {
25
- pwd: string;
26
- config: ServerOptions;
27
- plugins?: ServerPlugin[];
28
- internalPlugins?: InternalPlugins;
29
- routes?: ModernRouteInterface[];
30
- staticGenerate?: boolean;
31
- logger?: LocalLogger;
32
- metrics?: Metrics;
33
- apiOnly?: boolean;
34
- ssrOnly?: boolean;
35
- webOnly?: boolean;
36
- runMode?: string;
37
- appContext?: {
38
- appDirectory?: string;
39
- sharedDirectory: string;
40
- apiDirectory: string;
41
- lambdaDirectory: string;
42
- metaName: string;
43
- };
44
- serverConfigFile?: string;
45
- proxyTarget?: any;
46
- };
47
- export type RenderResult = {
48
- content: string | Buffer;
49
- contentType: string;
50
- contentStream?: Readable;
51
- statusCode?: number;
52
- redirect?: boolean;
53
- };
54
- export type ConfWithBFF = {
55
- bff?: {
56
- prefix: string;
57
- } & ServerOptions['bff'];
58
- };
59
- export type Then<T> = T extends PromiseLike<infer U> ? U : T;
60
- export type ServerHookRunner = Then<ReturnType<typeof serverManager.init>>;
61
- export type BuildOptions = {
62
- routes?: ModernRouteInterface[];
63
- };
64
- export type { Metrics, Logger, NextFunction };
65
- export type HookNames = 'afterMatch' | 'afterRender';
66
- export interface ModernServerInterface {
67
- pwd: string;
68
- distDir: string;
69
- onInit: (runner: ServerHookRunner, app: Server) => Promise<void>;
70
- onRepack: (options: BuildOptions) => void;
71
- getRequestHandler: () => (req: IncomingMessage, res: ServerResponse, next?: () => void) => void;
72
- createHTTPServer: (handler: (req: IncomingMessage, res: ServerResponse, next?: () => void) => void) => Promise<Server>;
73
- render: (req: IncomingMessage, res: ServerResponse, url?: string) => Promise<string | Readable | null>;
74
- close?: () => Promise<void>;
75
- }
76
- export type ServerConstructor = (options: ModernServerOptions) => ModernServerInterface;
77
- export type ModernServerHandler = (context: ModernServerContext, next: NextFunction) => Promise<void> | void;
@@ -1,24 +0,0 @@
1
- /// <reference path="type.d.ts" />
2
- /// <reference types="node" />
3
- /// <reference types="node/http" />
4
- import { IncomingMessage } from 'http';
5
- import type { OutputNormalizedConfig, HtmlNormalizedConfig } from '@modern-js/server-core';
6
- export declare const debug: any;
7
- export declare const mergeExtension: (users: any[]) => {
8
- middleware: any[];
9
- };
10
- export declare const noop: () => void;
11
- export declare const createErrorDocument: (status: number, text: string) => string;
12
- export type CollectMiddlewaresResult = {
13
- web: any[];
14
- api: any[];
15
- };
16
- export declare const createMiddlewareCollecter: () => {
17
- getMiddlewares: () => CollectMiddlewaresResult;
18
- addWebMiddleware: (input: any) => void;
19
- addAPIMiddleware: (input: any) => void;
20
- };
21
- export declare const getStaticReg: (output?: OutputNormalizedConfig, html?: HtmlNormalizedConfig, prefix?: string) => RegExp;
22
- export declare const prepareFavicons: (favicon: string | undefined, faviconByEntries?: Record<string, string | undefined>) => string[];
23
- export declare const headersWithoutCookie: (headers: IncomingMessage['headers']) => import("http").IncomingHttpHeaders;
24
- export declare const isRedirect: (code: number) => boolean;
@@ -1,59 +0,0 @@
1
- import type { AfterMatchContext, AfterRenderContext, MiddlewareContext, NextFunction } from '@modern-js/types';
2
- import { ModernRouteInterface } from './libs/route';
3
- export type Context = Record<string, any>;
4
- export interface HandlerOptions {
5
- request: Request;
6
- loadableStats: Record<string, any>;
7
- routeManifest: Record<string, any>;
8
- }
9
- export declare class ReturnResponse {
10
- body: string;
11
- status: number;
12
- headers: Headers;
13
- constructor(body: string, status: number, headers?: Record<string, any>);
14
- /**
15
- * Iterate a Object
16
- * 1. adds the value if the key does not already exist.
17
- * 2. append the value if the key does already exist.
18
- *
19
- * more detail follow: https://developer.mozilla.org/en-US/docs/Web/API/Headers/append
20
- * @param headers
21
- * @returns
22
- */
23
- appendHeaders(headers: Record<string, any>): this;
24
- /**
25
- * Iterate a Object
26
- * 1. adds the value if the key does not already exist.
27
- * 2. modify the value if the key does already exist.
28
- *
29
- * more detail follow: https://developer.mozilla.org/en-US/docs/Web/API/Headers/set
30
- * @param headers
31
- * @returns
32
- */
33
- setHeaders(headers: Record<string, any>): this;
34
- }
35
- type Middleware = (context: MiddlewareContext<'worker'>, next: NextFunction) => Promise<void> | void;
36
- type ServerHooks = {
37
- middleware?: Middleware | Middleware[];
38
- afterRender?: (ctx: AfterRenderContext, next: unknown) => Promise<void> | void;
39
- afterMatch?: (ctx: AfterMatchContext, next: unknown) => Promise<void> | void;
40
- };
41
- type Page = {
42
- entryName: string;
43
- template: string;
44
- serverHooks?: ServerHooks;
45
- serverRender?: (ctx: Record<string, any>) => Promise<string>;
46
- };
47
- export type Manifest = {
48
- /**
49
- * @param key - path
50
- */
51
- pages: Record<string, Page>;
52
- routes: ModernRouteInterface[];
53
- options?: {
54
- forceCSR?: boolean;
55
- metaName?: string;
56
- };
57
- };
58
- export declare const createHandler: (manifest: Manifest) => (options: HandlerOptions) => Promise<ReturnResponse>;
59
- export {};