@modern-js/server-core 2.48.6 → 2.49.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 (209) hide show
  1. package/dist/cjs/base/adapters/node/bff.js +70 -0
  2. package/dist/cjs/base/adapters/node/hono.js +63 -0
  3. package/dist/cjs/base/adapters/node/index.js +56 -0
  4. package/dist/cjs/base/adapters/node/loadServer.js +56 -0
  5. package/dist/cjs/base/adapters/node/middlewares/index.js +28 -0
  6. package/dist/cjs/base/adapters/node/middlewares/mock.js +113 -0
  7. package/dist/cjs/base/adapters/node/middlewares/serverManifest.js +90 -0
  8. package/dist/cjs/base/adapters/node/middlewares/serverPublic.js +67 -0
  9. package/dist/cjs/base/adapters/node/middlewares/serverStatic.js +109 -0
  10. package/dist/cjs/base/adapters/node/middlewares/templates.js +67 -0
  11. package/dist/cjs/base/adapters/node/node.js +127 -0
  12. package/dist/cjs/base/adapters/node/polyfills/index.js +24 -0
  13. package/dist/cjs/base/adapters/node/polyfills/install.js +72 -0
  14. package/dist/cjs/base/adapters/node/polyfills/stream.js +153 -0
  15. package/dist/cjs/base/constants.js +58 -0
  16. package/dist/cjs/base/index.js +49 -0
  17. package/dist/cjs/base/middlewares/customServer/base.js +171 -0
  18. package/dist/cjs/base/middlewares/customServer/context.js +73 -0
  19. package/dist/cjs/base/middlewares/customServer/index.js +136 -0
  20. package/dist/cjs/base/middlewares/customServer/routerApi.js +44 -0
  21. package/dist/cjs/base/middlewares/customServer/template.js +58 -0
  22. package/dist/cjs/base/middlewares/faviconFallback.js +34 -0
  23. package/dist/cjs/base/middlewares/frameworkHeader.js +31 -0
  24. package/dist/cjs/base/middlewares/index.js +30 -0
  25. package/dist/cjs/base/middlewares/logger.js +77 -0
  26. package/dist/cjs/base/middlewares/monitor.js +90 -0
  27. package/dist/cjs/base/middlewares/renderHandler/dataHandler.js +46 -0
  28. package/dist/cjs/base/middlewares/renderHandler/index.js +108 -0
  29. package/dist/cjs/base/middlewares/renderHandler/render.js +132 -0
  30. package/dist/cjs/base/middlewares/renderHandler/serverTiming.js +40 -0
  31. package/dist/cjs/base/middlewares/renderHandler/ssrCache.js +197 -0
  32. package/dist/cjs/base/middlewares/renderHandler/ssrRender.js +212 -0
  33. package/dist/cjs/base/serverBase.js +203 -0
  34. package/dist/cjs/base/utils/debug.js +29 -0
  35. package/dist/cjs/base/utils/entry.js +30 -0
  36. package/dist/cjs/base/utils/env.js +45 -0
  37. package/dist/cjs/base/utils/error.js +65 -0
  38. package/dist/cjs/base/utils/index.js +34 -0
  39. package/dist/cjs/base/utils/middlewareCollector.js +54 -0
  40. package/dist/cjs/base/utils/request.js +65 -0
  41. package/dist/cjs/base/utils/serverConfig.js +70 -0
  42. package/dist/cjs/base/utils/transformStream.js +61 -0
  43. package/dist/cjs/base/utils/warmup.js +43 -0
  44. package/dist/cjs/core/index.js +22 -0
  45. package/dist/cjs/{loadPlugins.js → core/loadPlugins.js} +4 -7
  46. package/dist/cjs/{plugin.js → core/plugin.js} +1 -42
  47. package/dist/cjs/core/render.js +16 -0
  48. package/dist/cjs/core/server.js +16 -0
  49. package/dist/cjs/index.js +6 -4
  50. package/dist/esm/base/adapters/node/bff.js +128 -0
  51. package/dist/esm/base/adapters/node/hono.js +83 -0
  52. package/dist/esm/base/adapters/node/index.js +20 -0
  53. package/dist/esm/base/adapters/node/loadServer.js +73 -0
  54. package/dist/esm/base/adapters/node/middlewares/index.js +4 -0
  55. package/dist/esm/base/adapters/node/middlewares/mock.js +198 -0
  56. package/dist/esm/base/adapters/node/middlewares/serverManifest.js +139 -0
  57. package/dist/esm/base/adapters/node/middlewares/serverPublic.js +85 -0
  58. package/dist/esm/base/adapters/node/middlewares/serverStatic.js +119 -0
  59. package/dist/esm/base/adapters/node/middlewares/templates.js +114 -0
  60. package/dist/esm/base/adapters/node/node.js +197 -0
  61. package/dist/esm/base/adapters/node/polyfills/index.js +2 -0
  62. package/dist/esm/base/adapters/node/polyfills/install.js +48 -0
  63. package/dist/esm/base/adapters/node/polyfills/stream.js +316 -0
  64. package/dist/esm/base/constants.js +31 -0
  65. package/dist/esm/base/index.js +16 -0
  66. package/dist/esm/base/middlewares/customServer/base.js +199 -0
  67. package/dist/esm/base/middlewares/customServer/context.js +68 -0
  68. package/dist/esm/base/middlewares/customServer/index.js +220 -0
  69. package/dist/esm/base/middlewares/customServer/routerApi.js +26 -0
  70. package/dist/esm/base/middlewares/customServer/template.js +47 -0
  71. package/dist/esm/base/middlewares/faviconFallback.js +28 -0
  72. package/dist/esm/base/middlewares/frameworkHeader.js +27 -0
  73. package/dist/esm/base/middlewares/index.js +5 -0
  74. package/dist/esm/base/middlewares/logger.js +75 -0
  75. package/dist/esm/base/middlewares/monitor.js +157 -0
  76. package/dist/esm/base/middlewares/renderHandler/dataHandler.js +45 -0
  77. package/dist/esm/base/middlewares/renderHandler/index.js +167 -0
  78. package/dist/esm/base/middlewares/renderHandler/render.js +225 -0
  79. package/dist/esm/base/middlewares/renderHandler/serverTiming.js +21 -0
  80. package/dist/esm/base/middlewares/renderHandler/ssrCache.js +306 -0
  81. package/dist/esm/base/middlewares/renderHandler/ssrRender.js +269 -0
  82. package/dist/esm/base/serverBase.js +383 -0
  83. package/dist/esm/base/utils/debug.js +5 -0
  84. package/dist/esm/base/utils/entry.js +6 -0
  85. package/dist/esm/base/utils/env.js +20 -0
  86. package/dist/esm/base/utils/error.js +12 -0
  87. package/dist/esm/base/utils/index.js +7 -0
  88. package/dist/esm/base/utils/middlewareCollector.js +31 -0
  89. package/dist/esm/base/utils/request.js +39 -0
  90. package/dist/esm/base/utils/serverConfig.js +58 -0
  91. package/dist/esm/base/utils/transformStream.js +90 -0
  92. package/dist/esm/base/utils/warmup.js +9 -0
  93. package/dist/esm/core/index.js +1 -0
  94. package/dist/esm/core/loadPlugins.js +26 -0
  95. package/dist/esm/core/plugin.js +59 -0
  96. package/dist/esm/core/render.js +0 -0
  97. package/dist/esm/core/server.js +0 -0
  98. package/dist/esm/index.js +3 -2
  99. package/dist/esm-node/base/adapters/node/bff.js +46 -0
  100. package/dist/esm-node/base/adapters/node/hono.js +38 -0
  101. package/dist/esm-node/base/adapters/node/index.js +20 -0
  102. package/dist/esm-node/base/adapters/node/loadServer.js +22 -0
  103. package/dist/esm-node/base/adapters/node/middlewares/index.js +4 -0
  104. package/dist/esm-node/base/adapters/node/middlewares/mock.js +79 -0
  105. package/dist/esm-node/base/adapters/node/middlewares/serverManifest.js +55 -0
  106. package/dist/esm-node/base/adapters/node/middlewares/serverPublic.js +33 -0
  107. package/dist/esm-node/base/adapters/node/middlewares/serverStatic.js +75 -0
  108. package/dist/esm-node/base/adapters/node/middlewares/templates.js +32 -0
  109. package/dist/esm-node/base/adapters/node/node.js +101 -0
  110. package/dist/esm-node/base/adapters/node/polyfills/index.js +2 -0
  111. package/dist/esm-node/base/adapters/node/polyfills/install.js +48 -0
  112. package/dist/esm-node/base/adapters/node/polyfills/stream.js +126 -0
  113. package/dist/esm-node/base/constants.js +31 -0
  114. package/dist/esm-node/base/index.js +16 -0
  115. package/dist/esm-node/base/middlewares/customServer/base.js +147 -0
  116. package/dist/esm-node/base/middlewares/customServer/context.js +46 -0
  117. package/dist/esm-node/base/middlewares/customServer/index.js +112 -0
  118. package/dist/esm-node/base/middlewares/customServer/routerApi.js +20 -0
  119. package/dist/esm-node/base/middlewares/customServer/template.js +34 -0
  120. package/dist/esm-node/base/middlewares/faviconFallback.js +10 -0
  121. package/dist/esm-node/base/middlewares/frameworkHeader.js +7 -0
  122. package/dist/esm-node/base/middlewares/index.js +5 -0
  123. package/dist/esm-node/base/middlewares/logger.js +53 -0
  124. package/dist/esm-node/base/middlewares/monitor.js +63 -0
  125. package/dist/esm-node/base/middlewares/renderHandler/dataHandler.js +22 -0
  126. package/dist/esm-node/base/middlewares/renderHandler/index.js +73 -0
  127. package/dist/esm-node/base/middlewares/renderHandler/render.js +108 -0
  128. package/dist/esm-node/base/middlewares/renderHandler/serverTiming.js +16 -0
  129. package/dist/esm-node/base/middlewares/renderHandler/ssrCache.js +162 -0
  130. package/dist/esm-node/base/middlewares/renderHandler/ssrRender.js +177 -0
  131. package/dist/esm-node/base/serverBase.js +168 -0
  132. package/dist/esm-node/base/utils/debug.js +5 -0
  133. package/dist/esm-node/base/utils/entry.js +6 -0
  134. package/dist/esm-node/base/utils/env.js +20 -0
  135. package/dist/esm-node/base/utils/error.js +41 -0
  136. package/dist/esm-node/base/utils/index.js +7 -0
  137. package/dist/esm-node/base/utils/middlewareCollector.js +29 -0
  138. package/dist/esm-node/base/utils/request.js +38 -0
  139. package/dist/esm-node/base/utils/serverConfig.js +34 -0
  140. package/dist/esm-node/base/utils/transformStream.js +36 -0
  141. package/dist/esm-node/base/utils/warmup.js +9 -0
  142. package/dist/esm-node/core/index.js +1 -0
  143. package/dist/{esm → esm-node/core}/loadPlugins.js +4 -7
  144. package/dist/{esm → esm-node/core}/plugin.js +1 -42
  145. package/dist/esm-node/core/render.js +0 -0
  146. package/dist/esm-node/core/server.js +0 -0
  147. package/dist/esm-node/index.js +5 -0
  148. package/dist/esm-node/types/config/bff.js +0 -0
  149. package/dist/esm-node/types/config/dev.js +0 -0
  150. package/dist/esm-node/types/config/html.js +0 -0
  151. package/dist/esm-node/types/config/index.js +6 -0
  152. package/dist/esm-node/types/config/output.js +0 -0
  153. package/dist/esm-node/types/config/security.js +0 -0
  154. package/dist/esm-node/types/config/server.js +0 -0
  155. package/dist/esm-node/types/config/share.js +0 -0
  156. package/dist/esm-node/types/config/source.js +0 -0
  157. package/dist/esm-node/types/config/tools.js +0 -0
  158. package/dist/types/base/adapters/node/bff.d.ts +3 -0
  159. package/dist/types/base/adapters/node/hono.d.ts +22 -0
  160. package/dist/types/base/adapters/node/index.d.ts +6 -0
  161. package/dist/types/base/adapters/node/loadServer.d.ts +3 -0
  162. package/dist/types/base/adapters/node/middlewares/index.d.ts +4 -0
  163. package/dist/types/base/adapters/node/middlewares/mock.d.ts +5 -0
  164. package/dist/types/base/adapters/node/middlewares/serverManifest.d.ts +4 -0
  165. package/dist/types/base/adapters/node/middlewares/serverPublic.d.ts +7 -0
  166. package/dist/types/base/adapters/node/middlewares/serverStatic.d.ts +11 -0
  167. package/dist/types/base/adapters/node/middlewares/templates.d.ts +4 -0
  168. package/dist/types/base/adapters/node/node.d.ts +13 -0
  169. package/dist/types/base/adapters/node/polyfills/index.d.ts +2 -0
  170. package/dist/types/base/adapters/node/polyfills/install.d.ts +1 -0
  171. package/dist/types/base/adapters/node/polyfills/stream.d.ts +18 -0
  172. package/dist/types/base/constants.d.ts +24 -0
  173. package/dist/types/base/index.d.ts +7 -0
  174. package/dist/types/base/middlewares/customServer/base.d.ts +3 -0
  175. package/dist/types/base/middlewares/customServer/context.d.ts +7 -0
  176. package/dist/types/base/middlewares/customServer/index.d.ts +13 -0
  177. package/dist/types/base/middlewares/customServer/routerApi.d.ts +9 -0
  178. package/dist/types/base/middlewares/customServer/template.d.ts +11 -0
  179. package/dist/types/base/middlewares/faviconFallback.d.ts +2 -0
  180. package/dist/types/base/middlewares/frameworkHeader.d.ts +2 -0
  181. package/dist/types/base/middlewares/index.d.ts +5 -0
  182. package/dist/types/base/middlewares/logger.d.ts +2 -0
  183. package/dist/types/base/middlewares/monitor.d.ts +6 -0
  184. package/dist/types/base/middlewares/renderHandler/dataHandler.d.ts +5 -0
  185. package/dist/types/base/middlewares/renderHandler/index.d.ts +9 -0
  186. package/dist/types/base/middlewares/renderHandler/render.d.ts +12 -0
  187. package/dist/types/base/middlewares/renderHandler/serverTiming.d.ts +7 -0
  188. package/dist/types/base/middlewares/renderHandler/ssrCache.d.ts +28 -0
  189. package/dist/types/base/middlewares/renderHandler/ssrRender.d.ts +21 -0
  190. package/dist/types/base/serverBase.d.ts +70 -0
  191. package/dist/types/base/utils/debug.d.ts +1 -0
  192. package/dist/types/base/utils/entry.d.ts +2 -0
  193. package/dist/types/base/utils/env.d.ts +2 -0
  194. package/dist/types/base/utils/error.d.ts +1 -0
  195. package/dist/types/base/utils/index.d.ts +7 -0
  196. package/dist/types/base/utils/middlewareCollector.d.ts +12 -0
  197. package/dist/types/base/utils/request.d.ts +12 -0
  198. package/dist/types/base/utils/serverConfig.d.ts +14 -0
  199. package/dist/types/base/utils/transformStream.d.ts +5 -0
  200. package/dist/types/base/utils/warmup.d.ts +1 -0
  201. package/dist/types/core/index.d.ts +1 -0
  202. package/dist/types/core/loadPlugins.d.ts +3 -0
  203. package/dist/types/core/plugin.d.ts +202 -0
  204. package/dist/types/core/render.d.ts +17 -0
  205. package/dist/types/core/server.d.ts +44 -0
  206. package/dist/types/index.d.ts +3 -2
  207. package/package.json +44 -6
  208. package/dist/types/loadPlugins.d.ts +0 -5
  209. package/dist/types/plugin.d.ts +0 -493
@@ -0,0 +1,18 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ /**
4
+ * The following code is modified based on
5
+ * https://github.com/remix-run/remix/blob/f7defe0b46c50947f6269d5ab5b6e3fe59339054/packages/remix-node/stream.ts#L3
6
+ *
7
+ * MIT Licensed
8
+ * Author Michael Jackson
9
+ * Copyright 2021 Remix Software Inc.
10
+ * https://github.com/remix-run/remix/blob/f7defe0b46c50947f6269d5ab5b6e3fe59339054/LICENSE.md
11
+ */
12
+ import type { Readable, Writable } from 'node:stream';
13
+ export declare function writeReadableStreamToWritable(stream: ReadableStream, writable: Writable): Promise<void>;
14
+ export declare function writeAsyncIterableToWritable(iterable: AsyncIterable<Uint8Array>, writable: Writable): Promise<void>;
15
+ export declare function readableStreamToString(stream: ReadableStream<Uint8Array>, encoding?: BufferEncoding): Promise<string>;
16
+ export declare const createReadableStreamFromReadable: (source: Readable & {
17
+ readableHighWaterMark?: number;
18
+ }) => ReadableStream<Uint8Array>;
@@ -0,0 +1,24 @@
1
+ export declare const AGGRED_DIR: {
2
+ mock: string;
3
+ server: string;
4
+ api: string;
5
+ shared: string;
6
+ lambda: string;
7
+ };
8
+ export declare const REPLACE_REG: {
9
+ before: {
10
+ head: string;
11
+ body: string;
12
+ };
13
+ after: {
14
+ head: string;
15
+ body: string;
16
+ };
17
+ };
18
+ export declare enum ServerReportTimings {
19
+ SERVER_HANDLE_REQUEST = "server-handle-request",
20
+ SERVER_MIDDLEWARE = "server-middleware",
21
+ SERVER_HOOK_AFTER_RENDER = "server-hook-after-render",
22
+ SERVER_HOOK_AFTER_MATCH = "server-hook-after-match"
23
+ }
24
+ export declare const X_RENDER_CACHE = "x-render-cache";
@@ -0,0 +1,7 @@
1
+ export { createErrorHtml } from './utils';
2
+ export { AGGRED_DIR } from './constants';
3
+ export { favionFallbackMiddleware, injectReporter, injectLogger, getRenderHandler, bindRenderHandler, logHandler, processedBy, } from './middlewares';
4
+ export type { BindRenderHandleOptions } from './middlewares';
5
+ export type { ServerBase, ServerBaseOptions } from './serverBase';
6
+ export { createServerBase } from './serverBase';
7
+ export type { Middleware, Context, Next, HonoRequest, ServerEnv, ServerManifest, } from '../core/server';
@@ -0,0 +1,3 @@
1
+ import { HookContext } from '@modern-js/types';
2
+ import type { Context, ServerEnv } from '../../../core/server';
3
+ export declare function createBaseHookContext(c: Context<ServerEnv>): HookContext;
@@ -0,0 +1,7 @@
1
+ import { AfterMatchContext, AfterRenderContext, MiddlewareContext, AfterStreamingRenderContext, ServerRoute, HookContext } from '@modern-js/types';
2
+ import { Context, ServerEnv } from '../../../core/server';
3
+ import type { ServerNodeEnv } from '../../adapters/node/hono';
4
+ export declare function getAfterMatchCtx(entryName: string, baseHookCtx: HookContext): AfterMatchContext;
5
+ export declare function getAfterRenderCtx(c: Context, baseHookCtx: HookContext, route: Partial<ServerRoute>): Promise<AfterRenderContext>;
6
+ export declare function createCustomMiddlewaresCtx(c: Context<ServerNodeEnv & ServerEnv>, locals: Record<string, any>): MiddlewareContext;
7
+ export declare function createAfterStreamingRenderContext(baseHookCtx: HookContext, route: Partial<ServerRoute>): (chunk: string) => AfterStreamingRenderContext;
@@ -0,0 +1,13 @@
1
+ import { ServerRoute } from '@modern-js/types';
2
+ import { ServerBase } from '../../serverBase';
3
+ import { ServerHookRunner } from '../../../core/plugin';
4
+ import { Middleware, ServerEnv } from '../../../core/server';
5
+ import type { ServerNodeEnv } from '../../adapters/node/hono';
6
+ export declare class CustomServer {
7
+ private runner;
8
+ private serverMiddlewarePromise;
9
+ private serverBase;
10
+ constructor(runner: ServerHookRunner, serverBase: ServerBase, pwd: string);
11
+ getHookMiddleware(entryName: string, routes: ServerRoute[]): Middleware<ServerEnv>;
12
+ getServerMiddleware(): Middleware<ServerNodeEnv & ServerEnv>;
13
+ }
@@ -0,0 +1,9 @@
1
+ export declare class RouterAPI {
2
+ current: string;
3
+ status: number;
4
+ url: string;
5
+ constructor(entryName: string);
6
+ redirect(url: string, status?: number): void;
7
+ rewrite(entryName: string): void;
8
+ use(entryName: string): void;
9
+ }
@@ -0,0 +1,11 @@
1
+ export declare class TemplateApi {
2
+ private body;
3
+ constructor(body: string);
4
+ set(content: string): void;
5
+ get(): string;
6
+ prependHead(fragment: string): void;
7
+ appendHead(fragment: string): void;
8
+ prependBody(fragment: string): void;
9
+ appendBody(fragment: string): void;
10
+ private replaceBody;
11
+ }
@@ -0,0 +1,2 @@
1
+ import { Middleware } from '../../core/server';
2
+ export declare const favionFallbackMiddleware: Middleware;
@@ -0,0 +1,2 @@
1
+ import { Middleware } from '../../core/server';
2
+ export declare const processedBy: Middleware;
@@ -0,0 +1,5 @@
1
+ export * from './faviconFallback';
2
+ export * from './monitor';
3
+ export * from './renderHandler';
4
+ export * from './logger';
5
+ export * from './frameworkHeader';
@@ -0,0 +1,2 @@
1
+ import type { Middleware, ServerEnv } from '../../core/server';
2
+ export declare function logHandler(): Middleware<ServerEnv>;
@@ -0,0 +1,6 @@
1
+ import type { Logger, Metrics } from '@modern-js/types';
2
+ import type { Context, Next, ServerEnv } from '../../core/server';
3
+ export declare function injectReporter(): (c: Context<ServerEnv>, next: Next) => Promise<void>;
4
+ export declare function initReporter(entryName: string): (c: Context<ServerEnv>, next: Next) => Promise<void>;
5
+ export declare function injectLogger(inputLogger: Logger): (c: Context<ServerEnv>, next: Next) => Promise<void>;
6
+ export declare function injectMetrics(inputMetrics: Metrics): (c: Context<ServerEnv>, next: Next) => Promise<void>;
@@ -0,0 +1,5 @@
1
+ import type { ServerRoute } from '@modern-js/types';
2
+ import { SSRRenderOptions } from './ssrRender';
3
+ export declare const dataHandler: (request: Request, { routeInfo, serverRoutes, reporter, logger, serverManifest, }: SSRRenderOptions & {
4
+ serverRoutes: ServerRoute[];
5
+ }) => Promise<Response | void>;
@@ -0,0 +1,9 @@
1
+ import { Render } from '../../../core/render';
2
+ import { ServerBase, type ServerBaseOptions } from '../../serverBase';
3
+ export type BindRenderHandleOptions = {
4
+ metaName?: string;
5
+ staticGenerate?: boolean;
6
+ disableCustomHook?: boolean;
7
+ };
8
+ export declare function getRenderHandler(options: ServerBaseOptions & BindRenderHandleOptions): Promise<Render | null>;
9
+ export declare function bindRenderHandler(server: ServerBase, options: ServerBaseOptions & BindRenderHandleOptions): Promise<void>;
@@ -0,0 +1,12 @@
1
+ import { ServerRoute } from '@modern-js/types';
2
+ import { Render } from '../../../core/render';
3
+ interface CreateRenderOptions {
4
+ routes: ServerRoute[];
5
+ pwd: string;
6
+ staticGenerate?: boolean;
7
+ metaName?: string;
8
+ forceCSR?: boolean;
9
+ nonce?: string;
10
+ }
11
+ export declare function createRender({ routes, pwd, metaName, staticGenerate, forceCSR, nonce, }: CreateRenderOptions): Promise<Render>;
12
+ export {};
@@ -0,0 +1,7 @@
1
+ import { ServerTiming as ServerTimingInterafce } from '@modern-js/types';
2
+ export declare class ServerTiming implements ServerTimingInterafce {
3
+ private headers;
4
+ private meta;
5
+ constructor(headers: Headers, meta: string);
6
+ addServeTiming(name: string, dur: number, desc?: string): this;
7
+ }
@@ -0,0 +1,28 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import type { IncomingMessage } from 'http';
4
+ import { Readable } from 'stream';
5
+ import type { CacheControl, CacheOption, Container } from '@modern-js/types';
6
+ import type { SSRServerContext, ServerRender } from '../../../core/server';
7
+ export type CacheStatus = 'hit' | 'stale' | 'expired' | 'miss';
8
+ export type CacheResult = {
9
+ data: string | Readable | ReadableStream;
10
+ status?: CacheStatus;
11
+ };
12
+ export declare class CacheManager {
13
+ private container;
14
+ constructor(container: Container<string, string>);
15
+ getCacheResult(req: Request, cacheControl: CacheControl, render: ServerRender, ssrContext: SSRServerContext): Promise<CacheResult>;
16
+ private processCache;
17
+ private computedKey;
18
+ }
19
+ declare class ServerCache {
20
+ customContainer?: Container;
21
+ cacheOption?: CacheOption;
22
+ private cacheManger?;
23
+ loadCacheMod(pwd?: string): Promise<void>;
24
+ matchCacheControl(req?: IncomingMessage): CacheControl | Promise<CacheControl> | undefined;
25
+ getCache(req: Request, cacheControl: CacheControl, render: ServerRender, ssrContext: SSRServerContext): Promise<CacheResult>;
26
+ }
27
+ export declare const ssrCache: ServerCache;
28
+ export {};
@@ -0,0 +1,21 @@
1
+ /// <reference types="node" />
2
+ import type { IncomingMessage } from 'http';
3
+ import type { Logger, Metrics, Reporter, ServerRoute } from '@modern-js/types';
4
+ import { ServerManifest } from '../../../core/server';
5
+ export interface SSRRenderOptions {
6
+ pwd: string;
7
+ html: string;
8
+ routeInfo: ServerRoute;
9
+ staticGenerate: boolean;
10
+ metaName: string;
11
+ logger: Logger;
12
+ serverManifest: ServerManifest;
13
+ /** Produce by custom server hook */
14
+ locals?: Record<string, any>;
15
+ reporter?: Reporter;
16
+ metrics?: Metrics;
17
+ nodeReq?: IncomingMessage;
18
+ nonce?: string;
19
+ }
20
+ export declare function ssrRender(request: Request, { routeInfo, html, staticGenerate, nonce, metaName, reporter, logger, nodeReq, serverManifest, locals, metrics, }: SSRRenderOptions): Promise<Response>;
21
+ export declare function getPathnameFromNodeReq(nodeReq: IncomingMessage): string;
@@ -0,0 +1,70 @@
1
+ import { InternalPlugins, ServerRoute } from '@modern-js/types';
2
+ import { Hono } from 'hono';
3
+ import { ServerHookRunner, ServerPlugin } from '../core';
4
+ import type { Env } from '../core/server';
5
+ import type { ServerOptions } from '../types/config';
6
+ declare module '@modern-js/types' {
7
+ interface ISAppContext {
8
+ serverBase?: ServerBase;
9
+ }
10
+ }
11
+ export type ServerBaseOptions = {
12
+ /** server working directory, and then also dist directory */
13
+ pwd: string;
14
+ config: ServerOptions;
15
+ serverConfigFile?: string;
16
+ routes?: ServerRoute[];
17
+ plugins?: ServerPlugin[];
18
+ internalPlugins?: InternalPlugins;
19
+ appContext: {
20
+ appDirectory?: string;
21
+ sharedDirectory?: string;
22
+ apiDirectory?: string;
23
+ lambdaDirectory?: string;
24
+ };
25
+ runMode?: 'apiOnly' | 'ssrOnly' | 'webOnly';
26
+ };
27
+ export declare class ServerBase<E extends Env = any> {
28
+ options: ServerBaseOptions;
29
+ runner: ServerHookRunner;
30
+ private app;
31
+ private serverConfig;
32
+ constructor(options: ServerBaseOptions);
33
+ /**
34
+ * 初始化顺序
35
+ * - 获取 server runtime config
36
+ * - 设置 context
37
+ * - 创建 hooksRunner
38
+ * - 合并插件,内置插件和 serverConfig 中配置的插件
39
+ * - 执行 config hook
40
+ * - 获取最终的配置
41
+ * - 设置配置到 context
42
+ * - 执行 prepare hook
43
+ */
44
+ init(): Promise<this>;
45
+ private createHookRunner;
46
+ private loadInternalPlugins;
47
+ private loadExternalPlugins;
48
+ private initServerConfig;
49
+ private injectContext;
50
+ private initAppContext;
51
+ /**
52
+ * Execute config hooks
53
+ * @param runner
54
+ * @param options
55
+ */
56
+ private runConfigHook;
57
+ private initConfig;
58
+ get all(): import("hono/types").HandlerInterface<E, "all", {}, "/">;
59
+ get use(): import("hono/types").MiddlewareHandlerInterface<E, {}, "/">;
60
+ get get(): import("hono/types").HandlerInterface<E, "get", {}, "/">;
61
+ get post(): import("hono/types").HandlerInterface<E, "post", {}, "/">;
62
+ get put(): import("hono/types").HandlerInterface<E, "put", {}, "/">;
63
+ get delete(): import("hono/types").HandlerInterface<E, "delete", {}, "/">;
64
+ get patch(): import("hono/types").HandlerInterface<E, "patch", {}, "/">;
65
+ get handle(): (request: Request, Env?: {} | E["Bindings"] | undefined, executionCtx?: import("hono/dist/types/context").ExecutionContext | undefined) => Response | Promise<Response>;
66
+ get request(): (input: RequestInfo | URL, requestInit?: RequestInit | undefined, Env?: {} | E["Bindings"] | undefined, executionCtx?: import("hono/dist/types/context").ExecutionContext | undefined) => Response | Promise<Response>;
67
+ get notFound(): (handler: import("hono").NotFoundHandler<E>) => Hono<E, {}, "/">;
68
+ get onError(): (handler: import("hono").ErrorHandler<E>) => Hono<E, {}, "/">;
69
+ }
70
+ export declare function createServerBase<E extends Env>(options: ServerBaseOptions): ServerBase<E>;
@@ -0,0 +1 @@
1
+ export declare const debug: import("@modern-js/utils/compiled/debug").Debugger;
@@ -0,0 +1,2 @@
1
+ import { ServerRoute } from '@modern-js/types';
2
+ export declare const sortRoutes: (route1: ServerRoute, route2: ServerRoute) => number;
@@ -0,0 +1,2 @@
1
+ export declare const getRuntimeEnv: () => "node" | "other";
2
+ export declare const checkIsProd: () => boolean;
@@ -0,0 +1 @@
1
+ export declare const createErrorHtml: (status: number) => string;
@@ -0,0 +1,7 @@
1
+ export * from './env';
2
+ export * from './request';
3
+ export * from './transformStream';
4
+ export * from './middlewareCollector';
5
+ export * from './error';
6
+ export * from './warmup';
7
+ export * from './entry';
@@ -0,0 +1,12 @@
1
+ export type CollectMiddlewaresResult = {
2
+ web: any[];
3
+ api: any[];
4
+ };
5
+ export declare const mergeExtension: (users: any[]) => {
6
+ middleware: any[];
7
+ };
8
+ export declare const createMiddlewareCollecter: () => {
9
+ getMiddlewares: () => CollectMiddlewaresResult;
10
+ addWebMiddleware: (input: any) => void;
11
+ addAPIMiddleware: (input: any) => void;
12
+ };
@@ -0,0 +1,12 @@
1
+ export declare function parseQuery(request: Request): Record<string, string>;
2
+ export declare function parseHeaders(request: Request): Record<string, string | undefined>;
3
+ /**
4
+ * The function is modified based on
5
+ * https://github.com/honojs/hono/blob/main/src/utils/url.ts
6
+ *
7
+ * MIT Licensed
8
+ * https://github.com/honojs/hono/blob/main/LICENSE
9
+ *
10
+ */
11
+ export declare function getPathname(request: Request): string;
12
+ export declare function getHost(request: Request): string;
@@ -0,0 +1,14 @@
1
+ import { ServerConfig } from '../../core/plugin';
2
+ import { ServerOptions } from '../../types/config';
3
+ export declare const getServerConfigPath: (distDirectory: string, serverConfigFile?: string) => Promise<string>;
4
+ export declare const requireConfig: (serverConfigPath: string) => any;
5
+ /**
6
+ * 对配置进行合并,开发环境下,cliConfig 与 serverConfig 进行深合并
7
+ * 生产环境下,resolvedConfig 与 serverConfig 进行深合并
8
+ * resolvedConfigPath: 构建序列化后的 modern.config.js 文件路径
9
+ */
10
+ export declare const loadConfig: ({ cliConfig, serverConfig, resolvedConfigPath, }: {
11
+ cliConfig: ServerOptions;
12
+ serverConfig: ServerConfig;
13
+ resolvedConfigPath: string;
14
+ }) => any;
@@ -0,0 +1,5 @@
1
+ import { MaybeAsync } from '@modern-js/plugin';
2
+ type TransformCb = (tempalte: string) => MaybeAsync<string>;
3
+ export declare function createTransformStream(fn: TransformCb): TransformStream<any, any>;
4
+ export declare function transformResponse(response: Response, transformCb: Array<TransformCb> | TransformCb): Response;
5
+ export {};
@@ -0,0 +1 @@
1
+ export declare function warmup(bundles: Array<string | undefined>): void;
@@ -0,0 +1 @@
1
+ export * from './plugin';
@@ -0,0 +1,3 @@
1
+ import { InternalPlugins } from '@modern-js/types';
2
+ import { createPlugin } from '../core/plugin';
3
+ export declare const loadPlugins: (appDirectory: string, internalPlugins: InternalPlugins) => ReturnType<typeof createPlugin>[];
@@ -0,0 +1,202 @@
1
+ /// <reference types="node" />
2
+ import type { IncomingMessage, ServerResponse } from 'node:http';
3
+ import { CommonAPI, ToThreads, AsyncSetup, PluginOptions, ToRunners } from '@modern-js/plugin';
4
+ import type { ModernServerContext, AfterMatchContext, AfterRenderContext, MiddlewareContext, ISAppContext, HttpMethodDecider, ServerInitHookContext, AfterStreamingRenderContext } from '@modern-js/types';
5
+ import { MiddlewareHandler as Middleware } from 'hono';
6
+ import type { BffUserConfig, UserConfig } from '../types/config';
7
+ import { Render } from './render';
8
+ export type WebAdapter = (ctx: MiddlewareContext) => void | Promise<void>;
9
+ export type NodeRequest = IncomingMessage;
10
+ export type NodeResponse = ServerResponse;
11
+ export type Adapter = (req: NodeRequest, res: NodeResponse) => void | Promise<void>;
12
+ export type WebServerStartInput = {
13
+ pwd: string;
14
+ config: Record<string, any>;
15
+ };
16
+ export type LoaderHandler = (context: ModernServerContext) => Promise<void>;
17
+ export type APIServerStartInput = {
18
+ pwd: string;
19
+ prefix?: string;
20
+ httpMethodDecider?: HttpMethodDecider;
21
+ config?: {
22
+ middleware?: Array<any>;
23
+ };
24
+ render?: Render | null;
25
+ };
26
+ type Change = {
27
+ filename: string;
28
+ event: 'add' | 'change' | 'unlink';
29
+ };
30
+ export type Route = Record<string, unknown>;
31
+ export type RequestResult = {
32
+ isfinish: boolean;
33
+ };
34
+ export type SSRServerContext = Record<string, unknown>;
35
+ export type RenderContext = Record<string, unknown>;
36
+ export declare const AppContext: import("@modern-js/plugin").Context<ISAppContext>;
37
+ export declare const setAppContext: (value: ISAppContext) => void;
38
+ export declare const ConfigContext: import("@modern-js/plugin").Context<UserConfig>;
39
+ /**
40
+ * Get original content of user config.
41
+ */
42
+ export declare const useConfigContext: () => UserConfig;
43
+ /**
44
+ * Get app context, including directories, plugins and some static infos.
45
+ */
46
+ export declare const useAppContext: () => ISAppContext;
47
+ declare const pluginAPI: {
48
+ useAppContext: () => ISAppContext;
49
+ useConfigContext: () => UserConfig;
50
+ setAppContext: (value: ISAppContext) => void;
51
+ };
52
+ declare const serverHooks: {
53
+ gather: import("@modern-js/plugin").ParallelWorkflow<{
54
+ addWebMiddleware: (_input: any) => void;
55
+ addAPIMiddleware: (_input: any) => void;
56
+ }, unknown>;
57
+ config: import("@modern-js/plugin").Waterfall<ServerConfig>;
58
+ prepare: import("@modern-js/plugin").Waterfall<void>;
59
+ prepareWebServer: import("@modern-js/plugin").AsyncPipeline<WebServerStartInput, WebAdapter | null>;
60
+ prepareApiServer: import("@modern-js/plugin").AsyncPipeline<APIServerStartInput, Middleware>;
61
+ repack: import("@modern-js/plugin").Waterfall<void>;
62
+ onApiChange: import("@modern-js/plugin").AsyncWaterfall<Change[]>;
63
+ beforeServerInit: import("@modern-js/plugin").AsyncWaterfall<ServerInitHookContext>;
64
+ afterMatch: import("@modern-js/plugin").AsyncPipeline<AfterMatchContext, any>;
65
+ afterRender: import("@modern-js/plugin").AsyncPipeline<AfterRenderContext, any>;
66
+ afterStreamingRender: import("@modern-js/plugin").AsyncPipeline<AfterStreamingRenderContext, string>;
67
+ reset: import("@modern-js/plugin").ParallelWorkflow<void, unknown>;
68
+ };
69
+ /** All hooks of server plugin. */
70
+ export type ServerHooks = typeof serverHooks;
71
+ /** All hook callbacks of server plugin. */
72
+ export type ServerHookCallbacks = ToThreads<ServerHooks>;
73
+ /** The ServerHook Runner type */
74
+ export type ServerHookRunner = ToRunners<ServerHooks>;
75
+ /** All apis for server plugin. */
76
+ export type PluginAPI = typeof pluginAPI & CommonAPI<ServerHooks>;
77
+ export declare const createServerManager: () => import("@modern-js/plugin").AsyncManager<{
78
+ gather: import("@modern-js/plugin").ParallelWorkflow<{
79
+ addWebMiddleware: (_input: any) => void;
80
+ addAPIMiddleware: (_input: any) => void;
81
+ }, unknown>;
82
+ config: import("@modern-js/plugin").Waterfall<ServerConfig>;
83
+ prepare: import("@modern-js/plugin").Waterfall<void>;
84
+ prepareWebServer: import("@modern-js/plugin").AsyncPipeline<WebServerStartInput, WebAdapter | null>;
85
+ prepareApiServer: import("@modern-js/plugin").AsyncPipeline<APIServerStartInput, Middleware>;
86
+ repack: import("@modern-js/plugin").Waterfall<void>;
87
+ onApiChange: import("@modern-js/plugin").AsyncWaterfall<Change[]>;
88
+ beforeServerInit: import("@modern-js/plugin").AsyncWaterfall<ServerInitHookContext>;
89
+ afterMatch: import("@modern-js/plugin").AsyncPipeline<AfterMatchContext, any>;
90
+ afterRender: import("@modern-js/plugin").AsyncPipeline<AfterRenderContext, any>;
91
+ afterStreamingRender: import("@modern-js/plugin").AsyncPipeline<AfterStreamingRenderContext, string>;
92
+ reset: import("@modern-js/plugin").ParallelWorkflow<void, unknown>;
93
+ }, {
94
+ useAppContext: () => ISAppContext;
95
+ useConfigContext: () => UserConfig;
96
+ setAppContext: (value: ISAppContext) => void;
97
+ }>;
98
+ export declare const serverManager: import("@modern-js/plugin").AsyncManager<{
99
+ gather: import("@modern-js/plugin").ParallelWorkflow<{
100
+ addWebMiddleware: (_input: any) => void;
101
+ addAPIMiddleware: (_input: any) => void;
102
+ }, unknown>;
103
+ config: import("@modern-js/plugin").Waterfall<ServerConfig>;
104
+ prepare: import("@modern-js/plugin").Waterfall<void>;
105
+ prepareWebServer: import("@modern-js/plugin").AsyncPipeline<WebServerStartInput, WebAdapter | null>;
106
+ prepareApiServer: import("@modern-js/plugin").AsyncPipeline<APIServerStartInput, Middleware>;
107
+ repack: import("@modern-js/plugin").Waterfall<void>;
108
+ onApiChange: import("@modern-js/plugin").AsyncWaterfall<Change[]>;
109
+ beforeServerInit: import("@modern-js/plugin").AsyncWaterfall<ServerInitHookContext>;
110
+ afterMatch: import("@modern-js/plugin").AsyncPipeline<AfterMatchContext, any>;
111
+ afterRender: import("@modern-js/plugin").AsyncPipeline<AfterRenderContext, any>;
112
+ afterStreamingRender: import("@modern-js/plugin").AsyncPipeline<AfterStreamingRenderContext, string>;
113
+ reset: import("@modern-js/plugin").ParallelWorkflow<void, unknown>;
114
+ }, {
115
+ useAppContext: () => ISAppContext;
116
+ useConfigContext: () => UserConfig;
117
+ setAppContext: (value: ISAppContext) => void;
118
+ }>;
119
+ /** Plugin options of a server plugin. */
120
+ export type ServerPlugin = PluginOptions<ServerHooks, AsyncSetup<ServerHooks, PluginAPI>>;
121
+ export type ServerConfig = {
122
+ bff?: BffUserConfig;
123
+ plugins?: ServerPlugin[];
124
+ };
125
+ export declare const createPlugin: (setup?: AsyncSetup<{
126
+ gather: import("@modern-js/plugin").ParallelWorkflow<{
127
+ addWebMiddleware: (_input: any) => void;
128
+ addAPIMiddleware: (_input: any) => void;
129
+ }, unknown>;
130
+ config: import("@modern-js/plugin").Waterfall<ServerConfig>;
131
+ prepare: import("@modern-js/plugin").Waterfall<void>;
132
+ prepareWebServer: import("@modern-js/plugin").AsyncPipeline<WebServerStartInput, WebAdapter | null>;
133
+ prepareApiServer: import("@modern-js/plugin").AsyncPipeline<APIServerStartInput, Middleware>;
134
+ repack: import("@modern-js/plugin").Waterfall<void>;
135
+ onApiChange: import("@modern-js/plugin").AsyncWaterfall<Change[]>;
136
+ beforeServerInit: import("@modern-js/plugin").AsyncWaterfall<ServerInitHookContext>;
137
+ afterMatch: import("@modern-js/plugin").AsyncPipeline<AfterMatchContext, any>;
138
+ afterRender: import("@modern-js/plugin").AsyncPipeline<AfterRenderContext, any>;
139
+ afterStreamingRender: import("@modern-js/plugin").AsyncPipeline<AfterStreamingRenderContext, string>;
140
+ reset: import("@modern-js/plugin").ParallelWorkflow<void, unknown>;
141
+ }, {
142
+ useAppContext: () => ISAppContext;
143
+ useConfigContext: () => UserConfig;
144
+ setAppContext: (value: ISAppContext) => void;
145
+ }> | undefined, options?: PluginOptions<{
146
+ gather: import("@modern-js/plugin").ParallelWorkflow<{
147
+ addWebMiddleware: (_input: any) => void;
148
+ addAPIMiddleware: (_input: any) => void;
149
+ }, unknown>;
150
+ config: import("@modern-js/plugin").Waterfall<ServerConfig>;
151
+ prepare: import("@modern-js/plugin").Waterfall<void>;
152
+ prepareWebServer: import("@modern-js/plugin").AsyncPipeline<WebServerStartInput, WebAdapter | null>;
153
+ prepareApiServer: import("@modern-js/plugin").AsyncPipeline<APIServerStartInput, Middleware>;
154
+ repack: import("@modern-js/plugin").Waterfall<void>;
155
+ onApiChange: import("@modern-js/plugin").AsyncWaterfall<Change[]>;
156
+ beforeServerInit: import("@modern-js/plugin").AsyncWaterfall<ServerInitHookContext>;
157
+ afterMatch: import("@modern-js/plugin").AsyncPipeline<AfterMatchContext, any>;
158
+ afterRender: import("@modern-js/plugin").AsyncPipeline<AfterRenderContext, any>;
159
+ afterStreamingRender: import("@modern-js/plugin").AsyncPipeline<AfterStreamingRenderContext, string>;
160
+ reset: import("@modern-js/plugin").ParallelWorkflow<void, unknown>;
161
+ }, AsyncSetup<{
162
+ gather: import("@modern-js/plugin").ParallelWorkflow<{
163
+ addWebMiddleware: (_input: any) => void;
164
+ addAPIMiddleware: (_input: any) => void;
165
+ }, unknown>;
166
+ config: import("@modern-js/plugin").Waterfall<ServerConfig>;
167
+ prepare: import("@modern-js/plugin").Waterfall<void>;
168
+ prepareWebServer: import("@modern-js/plugin").AsyncPipeline<WebServerStartInput, WebAdapter | null>;
169
+ prepareApiServer: import("@modern-js/plugin").AsyncPipeline<APIServerStartInput, Middleware>;
170
+ repack: import("@modern-js/plugin").Waterfall<void>;
171
+ onApiChange: import("@modern-js/plugin").AsyncWaterfall<Change[]>;
172
+ beforeServerInit: import("@modern-js/plugin").AsyncWaterfall<ServerInitHookContext>;
173
+ afterMatch: import("@modern-js/plugin").AsyncPipeline<AfterMatchContext, any>;
174
+ afterRender: import("@modern-js/plugin").AsyncPipeline<AfterRenderContext, any>;
175
+ afterStreamingRender: import("@modern-js/plugin").AsyncPipeline<AfterStreamingRenderContext, string>;
176
+ reset: import("@modern-js/plugin").ParallelWorkflow<void, unknown>;
177
+ }, {
178
+ useAppContext: () => ISAppContext;
179
+ useConfigContext: () => UserConfig;
180
+ setAppContext: (value: ISAppContext) => void;
181
+ }>> | undefined) => import("@modern-js/plugin").AsyncPlugin<{
182
+ gather: import("@modern-js/plugin").ParallelWorkflow<{
183
+ addWebMiddleware: (_input: any) => void;
184
+ addAPIMiddleware: (_input: any) => void;
185
+ }, unknown>;
186
+ config: import("@modern-js/plugin").Waterfall<ServerConfig>;
187
+ prepare: import("@modern-js/plugin").Waterfall<void>;
188
+ prepareWebServer: import("@modern-js/plugin").AsyncPipeline<WebServerStartInput, WebAdapter | null>;
189
+ prepareApiServer: import("@modern-js/plugin").AsyncPipeline<APIServerStartInput, Middleware>;
190
+ repack: import("@modern-js/plugin").Waterfall<void>;
191
+ onApiChange: import("@modern-js/plugin").AsyncWaterfall<Change[]>;
192
+ beforeServerInit: import("@modern-js/plugin").AsyncWaterfall<ServerInitHookContext>;
193
+ afterMatch: import("@modern-js/plugin").AsyncPipeline<AfterMatchContext, any>;
194
+ afterRender: import("@modern-js/plugin").AsyncPipeline<AfterRenderContext, any>;
195
+ afterStreamingRender: import("@modern-js/plugin").AsyncPipeline<AfterStreamingRenderContext, string>;
196
+ reset: import("@modern-js/plugin").ParallelWorkflow<void, unknown>;
197
+ }, {
198
+ useAppContext: () => ISAppContext;
199
+ useConfigContext: () => UserConfig;
200
+ setAppContext: (value: ISAppContext) => void;
201
+ }>;
202
+ export {};
@@ -0,0 +1,17 @@
1
+ /// <reference types="node" />
2
+ import type { IncomingMessage } from 'node:http';
3
+ import type { Logger, Metrics, Reporter } from '@modern-js/types';
4
+ import type { ServerManifest } from './server';
5
+ export interface RenderOptions {
6
+ logger: Logger;
7
+ /** ssr render html templates */
8
+ templates: Record<string, string>;
9
+ /** Communicating with custom server hook & modern ssr runtime. */
10
+ locals?: Record<string, any>;
11
+ /** Metrics */
12
+ metrics?: Metrics;
13
+ serverManifest: ServerManifest;
14
+ reporter?: Reporter;
15
+ nodeReq?: IncomingMessage;
16
+ }
17
+ export type Render = (request: Request, options: RenderOptions) => Promise<Response>;