@modern-js/runtime 2.0.0-beta.0 → 2.0.0-beta.2

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 (204) hide show
  1. package/CHANGELOG.md +158 -0
  2. package/dist/js/modern/cli/index.js +6 -6
  3. package/dist/js/modern/core/app-config.js +2 -1
  4. package/dist/js/modern/core/compatible.js +66 -48
  5. package/dist/js/modern/core/index.js +3 -2
  6. package/dist/js/modern/core/loader/loaderManager.js +12 -34
  7. package/dist/js/modern/core/loader/useLoader.js +8 -26
  8. package/dist/js/modern/core/plugin.js +6 -28
  9. package/dist/js/modern/document/Body.js +17 -0
  10. package/dist/js/modern/document/DocumentContext.js +6 -0
  11. package/dist/js/modern/document/DocumentStructrueContext.js +7 -0
  12. package/dist/js/modern/document/Head.js +24 -0
  13. package/dist/js/modern/document/Html.js +92 -0
  14. package/dist/js/modern/document/Root.js +31 -0
  15. package/dist/js/modern/document/Scripts.js +10 -0
  16. package/dist/js/modern/document/cli/index.js +132 -0
  17. package/dist/js/modern/document/constants.js +19 -0
  18. package/dist/js/modern/document/index.js +8 -0
  19. package/dist/js/modern/index.js +1 -1
  20. package/dist/js/modern/router/cli/index.js +0 -16
  21. package/dist/js/modern/router/runtime/plugin.js +0 -9
  22. package/dist/js/modern/router/runtime/plugin.node.js +18 -24
  23. package/dist/js/modern/router/runtime/root/index.js +19 -0
  24. package/dist/js/modern/router/runtime/root/load.js +61 -0
  25. package/dist/js/modern/router/runtime/utils.js +16 -35
  26. package/dist/js/modern/router/runtime/withRouter.js +1 -3
  27. package/dist/js/modern/ssr/cli/index.js +2 -23
  28. package/dist/js/modern/ssr/index.js +23 -34
  29. package/dist/js/modern/ssr/index.node.js +0 -13
  30. package/dist/js/modern/ssr/prefetch.js +0 -7
  31. package/dist/js/modern/ssr/react/prerender/index.js +2 -23
  32. package/dist/js/modern/ssr/react/prerender/util.js +2 -17
  33. package/dist/js/modern/ssr/react/withCallback/index.js +0 -1
  34. package/dist/js/modern/ssr/serverRender/helmet.js +12 -20
  35. package/dist/js/modern/ssr/serverRender/index.js +1 -2
  36. package/dist/js/modern/ssr/serverRender/renderToStream/buildTemplate.after.js +5 -5
  37. package/dist/js/modern/ssr/serverRender/renderToStream/bulidTemplate.before.js +45 -11
  38. package/dist/js/modern/ssr/serverRender/renderToStream/index.js +6 -39
  39. package/dist/js/modern/ssr/serverRender/renderToStream/loadable.js +0 -2
  40. package/dist/js/modern/ssr/serverRender/renderToStream/renderToPipe.js +26 -15
  41. package/dist/js/modern/ssr/serverRender/renderToStream/template.js +14 -18
  42. package/dist/js/modern/ssr/serverRender/renderToString/entry.js +2 -34
  43. package/dist/js/modern/ssr/serverRender/renderToString/index.js +0 -2
  44. package/dist/js/modern/ssr/serverRender/renderToString/loadable.js +0 -10
  45. package/dist/js/modern/ssr/serverRender/renderToString/reduce.js +0 -2
  46. package/dist/js/modern/ssr/serverRender/renderToString/template.js +0 -15
  47. package/dist/js/modern/ssr/serverRender/renderToString/type.js +0 -1
  48. package/dist/js/modern/ssr/serverRender/utils.js +2 -6
  49. package/dist/js/modern/ssr/utils.js +0 -11
  50. package/dist/js/modern/state/cli/index.js +0 -11
  51. package/dist/js/modern/state/runtime/plugin.js +1 -14
  52. package/dist/js/node/cli/index.js +6 -14
  53. package/dist/js/node/common.js +0 -2
  54. package/dist/js/node/core/app-config.js +2 -5
  55. package/dist/js/node/core/compatible.js +66 -66
  56. package/dist/js/node/core/index.js +0 -16
  57. package/dist/js/node/core/loader/index.js +0 -2
  58. package/dist/js/node/core/loader/loaderManager.js +12 -37
  59. package/dist/js/node/core/loader/useLoader.js +8 -31
  60. package/dist/js/node/core/plugin.js +5 -34
  61. package/dist/js/node/document/Body.js +26 -0
  62. package/dist/js/node/document/DocumentContext.js +14 -0
  63. package/dist/js/node/document/DocumentStructrueContext.js +15 -0
  64. package/dist/js/node/document/Head.js +33 -0
  65. package/dist/js/node/document/Html.js +98 -0
  66. package/dist/js/node/document/Root.js +41 -0
  67. package/dist/js/node/document/Scripts.js +17 -0
  68. package/dist/js/node/document/cli/index.js +142 -0
  69. package/dist/js/node/document/constants.js +36 -0
  70. package/dist/js/node/document/index.js +93 -0
  71. package/dist/js/node/exports/head.js +0 -5
  72. package/dist/js/node/exports/loadable.js +0 -5
  73. package/dist/js/node/exports/server.js +0 -2
  74. package/dist/js/node/exports/styled.js +0 -5
  75. package/dist/js/node/index.js +0 -8
  76. package/dist/js/node/router/cli/index.js +0 -20
  77. package/dist/js/node/router/index.js +0 -4
  78. package/dist/js/node/router/runtime/DefaultNotFound.js +1 -5
  79. package/dist/js/node/router/runtime/index.js +0 -5
  80. package/dist/js/node/router/runtime/plugin.js +0 -17
  81. package/dist/js/node/router/runtime/plugin.node.js +16 -38
  82. package/dist/js/node/router/runtime/root/index.js +26 -0
  83. package/dist/js/node/router/runtime/root/load.js +69 -0
  84. package/dist/js/node/router/runtime/utils.js +16 -44
  85. package/dist/js/node/router/runtime/withRouter.js +0 -9
  86. package/dist/js/node/runtime-context.js +0 -2
  87. package/dist/js/node/ssr/cli/index.js +2 -26
  88. package/dist/js/node/ssr/index.js +23 -45
  89. package/dist/js/node/ssr/index.node.js +0 -23
  90. package/dist/js/node/ssr/prefetch.js +0 -11
  91. package/dist/js/node/ssr/react/index.js +0 -2
  92. package/dist/js/node/ssr/react/nossr/index.js +0 -6
  93. package/dist/js/node/ssr/react/prerender/index.js +2 -30
  94. package/dist/js/node/ssr/react/prerender/util.js +2 -25
  95. package/dist/js/node/ssr/react/withCallback/index.js +1 -4
  96. package/dist/js/node/ssr/serverRender/helmet.js +13 -20
  97. package/dist/js/node/ssr/serverRender/index.js +1 -4
  98. package/dist/js/node/ssr/serverRender/renderToStream/buildTemplate.after.js +5 -9
  99. package/dist/js/node/ssr/serverRender/renderToStream/buildTemplate.share.js +0 -1
  100. package/dist/js/node/ssr/serverRender/renderToStream/bulidTemplate.before.js +43 -15
  101. package/dist/js/node/ssr/serverRender/renderToStream/index.js +6 -48
  102. package/dist/js/node/ssr/serverRender/renderToStream/loadable.js +0 -4
  103. package/dist/js/node/ssr/serverRender/renderToStream/renderToPipe.js +26 -17
  104. package/dist/js/node/ssr/serverRender/renderToStream/styledComponent.js +0 -2
  105. package/dist/js/node/ssr/serverRender/renderToStream/template.js +16 -23
  106. package/dist/js/node/ssr/serverRender/renderToString/entry.js +2 -51
  107. package/dist/js/node/ssr/serverRender/renderToString/index.js +0 -10
  108. package/dist/js/node/ssr/serverRender/renderToString/loadable.js +0 -14
  109. package/dist/js/node/ssr/serverRender/renderToString/reduce.js +0 -3
  110. package/dist/js/node/ssr/serverRender/renderToString/styledComponent.js +0 -3
  111. package/dist/js/node/ssr/serverRender/renderToString/template.js +0 -18
  112. package/dist/js/node/ssr/serverRender/renderToString/type.js +0 -1
  113. package/dist/js/node/ssr/serverRender/types.js +0 -1
  114. package/dist/js/node/ssr/serverRender/utils.js +2 -8
  115. package/dist/js/node/ssr/utils.js +0 -20
  116. package/dist/js/node/state/cli/index.js +0 -16
  117. package/dist/js/node/state/index.js +0 -4
  118. package/dist/js/node/state/plugins.js +0 -11
  119. package/dist/js/node/state/runtime/index.js +0 -7
  120. package/dist/js/node/state/runtime/plugin.js +1 -25
  121. package/dist/js/treeshaking/cli/index.js +6 -4
  122. package/dist/js/treeshaking/core/app-config.js +2 -1
  123. package/dist/js/treeshaking/core/compatible.js +74 -81
  124. package/dist/js/treeshaking/core/index.js +3 -2
  125. package/dist/js/treeshaking/core/loader/loaderManager.js +19 -51
  126. package/dist/js/treeshaking/core/loader/useLoader.js +11 -28
  127. package/dist/js/treeshaking/core/plugin.js +6 -51
  128. package/dist/js/treeshaking/document/Body.js +14 -0
  129. package/dist/js/treeshaking/document/DocumentContext.js +6 -0
  130. package/dist/js/treeshaking/document/DocumentStructrueContext.js +7 -0
  131. package/dist/js/treeshaking/document/Head.js +21 -0
  132. package/dist/js/treeshaking/document/Html.js +104 -0
  133. package/dist/js/treeshaking/document/Root.js +24 -0
  134. package/dist/js/treeshaking/document/Scripts.js +10 -0
  135. package/dist/js/treeshaking/document/cli/index.js +175 -0
  136. package/dist/js/treeshaking/document/constants.js +16 -0
  137. package/dist/js/treeshaking/document/index.js +8 -0
  138. package/dist/js/treeshaking/index.js +1 -1
  139. package/dist/js/treeshaking/router/cli/index.js +6 -18
  140. package/dist/js/treeshaking/router/runtime/plugin.js +5 -13
  141. package/dist/js/treeshaking/router/runtime/plugin.node.js +23 -36
  142. package/dist/js/treeshaking/router/runtime/root/index.js +17 -0
  143. package/dist/js/treeshaking/router/runtime/root/load.js +102 -0
  144. package/dist/js/treeshaking/router/runtime/utils.js +21 -39
  145. package/dist/js/treeshaking/router/runtime/withRouter.js +1 -0
  146. package/dist/js/treeshaking/ssr/cli/index.js +9 -31
  147. package/dist/js/treeshaking/ssr/index.js +26 -40
  148. package/dist/js/treeshaking/ssr/index.node.js +12 -29
  149. package/dist/js/treeshaking/ssr/prefetch.js +0 -13
  150. package/dist/js/treeshaking/ssr/react/nossr/index.js +3 -4
  151. package/dist/js/treeshaking/ssr/react/prerender/index.js +2 -21
  152. package/dist/js/treeshaking/ssr/react/prerender/util.js +3 -20
  153. package/dist/js/treeshaking/ssr/react/withCallback/index.js +1 -2
  154. package/dist/js/treeshaking/ssr/serverRender/helmet.js +12 -11
  155. package/dist/js/treeshaking/ssr/serverRender/index.js +1 -9
  156. package/dist/js/treeshaking/ssr/serverRender/renderToStream/buildTemplate.after.js +5 -6
  157. package/dist/js/treeshaking/ssr/serverRender/renderToStream/bulidTemplate.before.js +46 -15
  158. package/dist/js/treeshaking/ssr/serverRender/renderToStream/index.js +9 -79
  159. package/dist/js/treeshaking/ssr/serverRender/renderToStream/loadable.js +3 -5
  160. package/dist/js/treeshaking/ssr/serverRender/renderToStream/renderToPipe.js +46 -35
  161. package/dist/js/treeshaking/ssr/serverRender/renderToStream/template.js +17 -24
  162. package/dist/js/treeshaking/ssr/serverRender/renderToString/entry.js +20 -73
  163. package/dist/js/treeshaking/ssr/serverRender/renderToString/index.js +2 -6
  164. package/dist/js/treeshaking/ssr/serverRender/renderToString/loadable.js +5 -16
  165. package/dist/js/treeshaking/ssr/serverRender/renderToString/reduce.js +0 -2
  166. package/dist/js/treeshaking/ssr/serverRender/renderToString/template.js +2 -18
  167. package/dist/js/treeshaking/ssr/serverRender/renderToString/type.js +0 -1
  168. package/dist/js/treeshaking/ssr/serverRender/utils.js +5 -10
  169. package/dist/js/treeshaking/ssr/utils.js +8 -17
  170. package/dist/js/treeshaking/state/cli/index.js +3 -11
  171. package/dist/js/treeshaking/state/runtime/plugin.js +2 -10
  172. package/dist/types/cli/index.d.ts +2 -4
  173. package/dist/types/core/compatible.d.ts +8 -10
  174. package/dist/types/core/index.d.ts +1 -1
  175. package/dist/types/core/loader/loaderManager.d.ts +0 -1
  176. package/dist/types/core/loader/useLoader.d.ts +0 -5
  177. package/dist/types/core/plugin.d.ts +16 -28
  178. package/dist/types/document/Body.d.ts +4 -0
  179. package/dist/types/document/DocumentContext.d.ts +13 -0
  180. package/dist/types/document/DocumentStructrueContext.d.ts +10 -0
  181. package/dist/types/document/Head.d.ts +5 -0
  182. package/dist/types/document/Html.d.ts +4 -0
  183. package/dist/types/document/Root.d.ts +8 -0
  184. package/dist/types/document/Scripts.d.ts +2 -0
  185. package/dist/types/document/cli/index.d.ts +3 -0
  186. package/dist/types/document/constants.d.ts +14 -0
  187. package/dist/types/document/index.d.ts +8 -0
  188. package/dist/types/exports/server.d.ts +3 -3
  189. package/dist/types/index.d.ts +1 -1
  190. package/dist/types/router/cli/index.d.ts +2 -4
  191. package/dist/types/router/runtime/root/index.d.ts +8 -0
  192. package/dist/types/router/runtime/root/load.d.ts +22 -0
  193. package/dist/types/router/runtime/types.d.ts +0 -2
  194. package/dist/types/runtime-context.d.ts +1 -0
  195. package/dist/types/ssr/cli/index.d.ts +2 -4
  196. package/dist/types/ssr/prefetch.d.ts +2 -2
  197. package/dist/types/ssr/serverRender/renderToStream/buildTemplate.after.d.ts +3 -2
  198. package/dist/types/ssr/serverRender/renderToStream/bulidTemplate.before.d.ts +2 -1
  199. package/dist/types/ssr/serverRender/renderToStream/renderToPipe.d.ts +3 -3
  200. package/dist/types/ssr/serverRender/renderToStream/template.d.ts +2 -2
  201. package/dist/types/ssr/serverRender/types.d.ts +3 -6
  202. package/dist/types/state/cli/index.d.ts +2 -4
  203. package/dist/types/state/types.d.ts +0 -1
  204. package/package.json +24 -15
@@ -1,5 +1,3 @@
1
- import type { CliPlugin } from '@modern-js/core';
2
-
3
- declare const _default: () => CliPlugin;
4
-
1
+ import type { CliPlugin, AppTools } from '@modern-js/app-tools';
2
+ declare const _default: () => CliPlugin<AppTools>;
5
3
  export default _default;
@@ -1,5 +1,7 @@
1
1
  import React from 'react';
2
- import { TRuntimeContext } from '../runtime-context';
2
+ import type { Renderer } from 'react-dom';
3
+ import type { hydrateRoot, createRoot } from 'react-dom/client';
4
+ import { RuntimeContext, TRuntimeContext } from '../runtime-context';
3
5
  import { Plugin } from './plugin';
4
6
  export declare type CreateAppOptions = {
5
7
  plugins: Plugin[];
@@ -7,15 +9,11 @@ export declare type CreateAppOptions = {
7
9
  export declare const createApp: ({
8
10
  plugins
9
11
  }: CreateAppOptions) => (App?: React.ComponentType<any>) => React.ComponentType<any>;
10
- interface HydrateFunc {
11
- (container: Element | Document, initialChildren: React.ReactNode): void;
12
- (initialChildren: React.ReactNode, container: Element | Document, callback?: () => void): void;
13
- }
14
- declare type BootStrap<T = unknown> = (App: React.ComponentType, id: string | Record<string, any> | HTMLElement, root: any, ReactDOM: {
15
- render: (children: React.ReactNode, rootElement?: HTMLElement) => void;
16
- hydrate: HydrateFunc;
17
- createRoot?: (rootElement: HTMLElement) => any;
18
- hydrateRoot: HydrateFunc;
12
+ declare type BootStrap<T = unknown> = (App: React.ComponentType, id: string | HTMLElement | RuntimeContext, root?: any, ReactDOM?: {
13
+ render?: Renderer;
14
+ hydrate?: Renderer;
15
+ createRoot?: typeof createRoot;
16
+ hydrateRoot?: typeof hydrateRoot;
19
17
  }) => Promise<T>;
20
18
  export declare const bootstrap: BootStrap;
21
19
  export declare const useRuntimeContext: () => TRuntimeContext;
@@ -1,4 +1,4 @@
1
- export { createPlugin, createRuntime, runtime, registerInit, registerPrefetch } from './plugin';
1
+ export { createPlugin, createRuntime, runtime, registerInit } from './plugin';
2
2
  export type { Plugin } from './plugin';
3
3
  export { defineConfig, getConfig } from './app-config';
4
4
  export * from './compatible';
@@ -35,7 +35,6 @@ declare type ManagerOption = {
35
35
  * Create loaders manager. It's returned instance will add to context
36
36
  * @param initialDataMap used to initialing loader data
37
37
  */
38
-
39
38
  export declare const createLoaderManager: (initialDataMap: Record<string, LoaderResult>, managerOptions?: ManagerOption) => {
40
39
  hasPendingLoaders: () => boolean;
41
40
  awaitPendingLoaders: () => Promise<Record<string, LoaderResult>>;
@@ -20,28 +20,23 @@ export interface LoaderOptions<Params = any, TData = any, TError extends Error =
20
20
  /**
21
21
  * Revoke when loader ended with error
22
22
  */
23
-
24
23
  onError?: (error: TError) => void;
25
24
  /**
26
25
  * initialData to display once loader is ready.
27
26
  */
28
-
29
27
  initialData?: TData;
30
28
  /**
31
29
  * whether skip loader
32
30
  * if true, the loader will not exec.
33
31
  */
34
-
35
32
  skip?: boolean;
36
33
  /**
37
34
  * User params, it will pass to loader's second parameter.
38
35
  */
39
-
40
36
  params?: Params;
41
37
  /**
42
38
  * whether loader can exec on build phase.
43
39
  */
44
-
45
40
  static?: boolean;
46
41
  }
47
42
  declare type LoaderFn<P = any, T = any> = (context: any, params: P) => Promise<T>;
@@ -14,8 +14,8 @@ declare const runtimeHooks: {
14
14
  client: import("@modern-js/plugin").AsyncPipeline<{
15
15
  App: React.ComponentType<any>;
16
16
  readonly context?: RuntimeContext | undefined;
17
- ModernRender: (App: React.ReactNode) => void;
18
- ModernHydrate: (App: React.ReactNode, callback?: () => void) => void;
17
+ ModernRender: (App: React.ReactElement) => void;
18
+ ModernHydrate: (App: React.ReactElement, callback?: () => void) => void;
19
19
  }, void>;
20
20
  server: import("@modern-js/plugin").AsyncPipeline<{
21
21
  App: React.ComponentType<any>;
@@ -30,16 +30,12 @@ declare const runtimeHooks: {
30
30
  }, TRuntimeContext>;
31
31
  };
32
32
  /** All hooks of runtime plugin. */
33
-
34
33
  export declare type RuntimeHooks = typeof runtimeHooks;
35
34
  /** All hook callbacks of runtime plugin. */
36
-
37
35
  export declare type RuntimeHookCallbacks = ToThreads<RuntimeHooks>;
38
36
  /** All apis for runtime plugin. */
39
-
40
37
  export declare type PluginAPI = CommonAPI<RuntimeHooks>;
41
38
  /** Plugin options of a runtime plugin. */
42
-
43
39
  export declare type Plugin = PluginOptions<RuntimeHooks, Setup<RuntimeHooks>>;
44
40
  export declare const createRuntime: () => import("@modern-js/plugin").Manager<{
45
41
  hoc: import("@modern-js/plugin").Pipeline<{
@@ -53,8 +49,8 @@ export declare const createRuntime: () => import("@modern-js/plugin").Manager<{
53
49
  client: import("@modern-js/plugin").AsyncPipeline<{
54
50
  App: React.ComponentType<any>;
55
51
  readonly context?: RuntimeContext | undefined;
56
- ModernRender: (App: React.ReactNode) => void;
57
- ModernHydrate: (App: React.ReactNode, callback?: () => void) => void;
52
+ ModernRender: (App: React.ReactElement) => void;
53
+ ModernHydrate: (App: React.ReactElement, callback?: () => void) => void;
58
54
  }, void>;
59
55
  server: import("@modern-js/plugin").AsyncPipeline<{
60
56
  App: React.ComponentType<any>;
@@ -71,15 +67,7 @@ export declare const createRuntime: () => import("@modern-js/plugin").Manager<{
71
67
  /**
72
68
  * register init hook. It would be revoked both ssr and csr.
73
69
  */
74
-
75
70
  declare const registerInit: (App: React.ComponentType, _init: (context: RuntimeContext) => any | Promise<any>) => void;
76
- /**
77
- * register prefetch hook. It would be revoked both ssr and csr.
78
- * But if ssr success, It wont exec in csr again.
79
- * If ssr prefetch failed, It will fallback to exec in csr.
80
- */
81
-
82
- declare const registerPrefetch: (App: React.ComponentType, prefetch: (context: RuntimeContext) => Promise<any>) => void;
83
71
  export declare const runtime: import("@modern-js/plugin").Manager<{
84
72
  hoc: import("@modern-js/plugin").Pipeline<{
85
73
  App: React.ComponentType<any>;
@@ -92,8 +80,8 @@ export declare const runtime: import("@modern-js/plugin").Manager<{
92
80
  client: import("@modern-js/plugin").AsyncPipeline<{
93
81
  App: React.ComponentType<any>;
94
82
  readonly context?: RuntimeContext | undefined;
95
- ModernRender: (App: React.ReactNode) => void;
96
- ModernHydrate: (App: React.ReactNode, callback?: () => void) => void;
83
+ ModernRender: (App: React.ReactElement) => void;
84
+ ModernHydrate: (App: React.ReactElement, callback?: () => void) => void;
97
85
  }, void>;
98
86
  server: import("@modern-js/plugin").AsyncPipeline<{
99
87
  App: React.ComponentType<any>;
@@ -119,8 +107,8 @@ export declare const createPlugin: (setup?: Setup<{
119
107
  client: import("@modern-js/plugin").AsyncPipeline<{
120
108
  App: React.ComponentType<any>;
121
109
  readonly context?: RuntimeContext | undefined;
122
- ModernRender: (App: React.ReactNode) => void;
123
- ModernHydrate: (App: React.ReactNode, callback?: () => void) => void;
110
+ ModernRender: (App: React.ReactElement) => void;
111
+ ModernHydrate: (App: React.ReactElement, callback?: () => void) => void;
124
112
  }, void>;
125
113
  server: import("@modern-js/plugin").AsyncPipeline<{
126
114
  App: React.ComponentType<any>;
@@ -145,8 +133,8 @@ export declare const createPlugin: (setup?: Setup<{
145
133
  client: import("@modern-js/plugin").AsyncPipeline<{
146
134
  App: React.ComponentType<any>;
147
135
  readonly context?: RuntimeContext | undefined;
148
- ModernRender: (App: React.ReactNode) => void;
149
- ModernHydrate: (App: React.ReactNode, callback?: () => void) => void;
136
+ ModernRender: (App: React.ReactElement) => void;
137
+ ModernHydrate: (App: React.ReactElement, callback?: () => void) => void;
150
138
  }, void>;
151
139
  server: import("@modern-js/plugin").AsyncPipeline<{
152
140
  App: React.ComponentType<any>;
@@ -171,8 +159,8 @@ export declare const createPlugin: (setup?: Setup<{
171
159
  client: import("@modern-js/plugin").AsyncPipeline<{
172
160
  App: React.ComponentType<any>;
173
161
  readonly context?: RuntimeContext | undefined;
174
- ModernRender: (App: React.ReactNode) => void;
175
- ModernHydrate: (App: React.ReactNode, callback?: () => void) => void;
162
+ ModernRender: (App: React.ReactElement) => void;
163
+ ModernHydrate: (App: React.ReactElement, callback?: () => void) => void;
176
164
  }, void>;
177
165
  server: import("@modern-js/plugin").AsyncPipeline<{
178
166
  App: React.ComponentType<any>;
@@ -185,7 +173,7 @@ export declare const createPlugin: (setup?: Setup<{
185
173
  context: RuntimeContext;
186
174
  pickedContext: TRuntimeContext;
187
175
  }, TRuntimeContext>;
188
- }, Record<string, never>>, Record<string, unknown>> | undefined) => import("@modern-js/plugin").Plugin<{
176
+ }, Record<string, never>>, Record<string, unknown>, any, any> | undefined) => import("@modern-js/plugin").Plugin<{
189
177
  hoc: import("@modern-js/plugin").Pipeline<{
190
178
  App: React.ComponentType<any>;
191
179
  }, React.ComponentType<any>>;
@@ -197,8 +185,8 @@ export declare const createPlugin: (setup?: Setup<{
197
185
  client: import("@modern-js/plugin").AsyncPipeline<{
198
186
  App: React.ComponentType<any>;
199
187
  readonly context?: RuntimeContext | undefined;
200
- ModernRender: (App: React.ReactNode) => void;
201
- ModernHydrate: (App: React.ReactNode, callback?: () => void) => void;
188
+ ModernRender: (App: React.ReactElement) => void;
189
+ ModernHydrate: (App: React.ReactElement, callback?: () => void) => void;
202
190
  }, void>;
203
191
  server: import("@modern-js/plugin").AsyncPipeline<{
204
192
  App: React.ComponentType<any>;
@@ -212,4 +200,4 @@ export declare const createPlugin: (setup?: Setup<{
212
200
  pickedContext: TRuntimeContext;
213
201
  }, TRuntimeContext>;
214
202
  }, Record<string, never>>;
215
- export { registerInit, registerPrefetch };
203
+ export { registerInit };
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ export declare function Body(props: {
3
+ children?: any;
4
+ }): JSX.Element;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ declare type DocumentProps = {
3
+ [x: string]: any;
4
+ config?: any;
5
+ templateParams: {
6
+ [y: string]: any;
7
+ mountId?: string;
8
+ };
9
+ processEnv?: Record<string, string | undefined>;
10
+ children?: JSX.Element;
11
+ };
12
+ export declare const DocumentContext: React.Context<DocumentProps>;
13
+ export {};
@@ -0,0 +1,10 @@
1
+ import React, { ReactNode } from 'react';
2
+ declare type DocumentStructrueContextProps = {
3
+ hasSetHead?: boolean;
4
+ hasSetScripts?: boolean;
5
+ hasSetBody?: boolean;
6
+ hasSetRoot?: boolean;
7
+ docChild?: ReactNode;
8
+ };
9
+ export declare const DocumentStructrueContext: React.Context<DocumentStructrueContextProps>;
10
+ export {};
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ export declare function Head(props: {
3
+ children?: any;
4
+ }): JSX.Element;
5
+ export declare function DefaultHead(): JSX.Element;
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ export declare function Html(props: {
3
+ children: any[];
4
+ }): JSX.Element;
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ export declare function Root(props: {
3
+ children?: any;
4
+ rootId?: string;
5
+ }): JSX.Element;
6
+ export declare function DefaultRoot(props: {
7
+ children?: any;
8
+ }): JSX.Element;
@@ -0,0 +1,2 @@
1
+ /// <reference types="react" />
2
+ export declare function Scripts(): JSX.Element;
@@ -0,0 +1,3 @@
1
+ import type { CliPlugin, AppTools } from '@modern-js/app-tools';
2
+ declare const _default: () => CliPlugin<AppTools>;
3
+ export default _default;
@@ -0,0 +1,14 @@
1
+ export declare const DOC_EXT: string[];
2
+ export declare const DOCUMENT_META_PLACEHOLDER: string;
3
+ export declare const HTML_SEPARATOR = "<!--<?- html ?>-->";
4
+ export declare const HTML_CHUNKSMAP_SEPARATOR = "<!--<?- chunksMap.js ?>-->";
5
+ export declare const HTML_SSRDATASCRIPT_SEPARATOR = "<!--<?- SSRDataScript ?>-->";
6
+ export declare const DOCUMENT_SSR_PLACEHOLDER: string;
7
+ export declare const DOCUMENT_CHUNKSMAP_PLACEHOLDER: string;
8
+ export declare const DOCUMENT_SSRDATASCRIPT_PLACEHOLDER: string;
9
+ export declare const DOCUMENT_FILE_NAME = "Document";
10
+ export declare const DOCUMENT_SCRIPTS_PLACEHOLDER: string;
11
+ export declare const DOCUMENT_NO_SCRIPTE_PLACEHOLDER: string;
12
+ export declare const PLACEHOLDER_REPLACER_MAP: {
13
+ [x: string]: string;
14
+ };
@@ -0,0 +1,8 @@
1
+ export * from './Html';
2
+ export * from './DocumentContext';
3
+ export * from './DocumentStructrueContext';
4
+ export * from './Head';
5
+ export * from './Body';
6
+ export * from './Root';
7
+ export * from './Scripts';
8
+ export * from './constants';
@@ -4,7 +4,7 @@ export declare const hook: (attacher: ({
4
4
  afterMatch,
5
5
  afterRender
6
6
  }: {
7
- addMiddleware: (mid: RequestHandler) => void;
7
+ addMiddleware: (mid: Middleware) => void;
8
8
  afterRender: (hook: AfterRenderHook) => void;
9
9
  afterMatch: (hook: AfterMatchHook) => void;
10
10
  }) => void) => ({
@@ -12,10 +12,10 @@ export declare const hook: (attacher: ({
12
12
  afterMatch,
13
13
  afterRender
14
14
  }: {
15
- addMiddleware: (mid: RequestHandler) => void;
15
+ addMiddleware: (mid: Middleware) => void;
16
16
  afterRender: (hook: AfterRenderHook) => void;
17
17
  afterMatch: (hook: AfterMatchHook) => void;
18
18
  }) => void;
19
19
  export declare type AfterRenderHook = (context: AfterRenderContext, next: NextFunction) => void;
20
20
  export declare type AfterMatchHook = (context: AfterMatchContext, next: NextFunction) => void;
21
- export declare type RequestHandler = (context: MiddlewareContext, next: NextFunction) => Promise<void> | void;
21
+ export declare type Middleware = (context: MiddlewareContext, next: NextFunction) => Promise<void> | void;
@@ -4,5 +4,5 @@ export type { Plugin } from './core';
4
4
  export type { AppConfig } from './common';
5
5
  export { isBrowser } from './common';
6
6
  export type { BaseRuntimeContext, RuntimeContext, BaseTRuntimeContext, TRuntimeContext } from './runtime-context';
7
- export { createApp, createPlugin, useLoader, bootstrap, RuntimeReactContext, registerPrefetch, defineConfig, registerInit, useRuntimeContext } from './core';
7
+ export { createApp, createPlugin, useLoader, bootstrap, RuntimeReactContext, defineConfig, registerInit, useRuntimeContext } from './core';
8
8
  export { StateConfig, RouterConfig };
@@ -1,5 +1,3 @@
1
- import type { CliPlugin } from '@modern-js/core';
2
-
3
- declare const _default: () => CliPlugin;
4
-
1
+ import type { CliPlugin, AppTools } from '@modern-js/app-tools';
2
+ declare const _default: () => CliPlugin<AppTools>;
5
3
  export default _default;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import type { NestedRoute } from '@modern-js/types';
3
+ interface IProps {
4
+ children: React.ReactNode;
5
+ routes: NestedRoute[];
6
+ }
7
+ export declare function RootLayout(props: IProps): JSX.Element;
8
+ export {};
@@ -0,0 +1,22 @@
1
+ import { Location, Params } from 'react-router-dom';
2
+ import type { NestedRoute } from '@modern-js/types';
3
+ interface RouteAssets {
4
+ [routeId: string]: {
5
+ chunkIds?: (string | number)[];
6
+ assets?: string[];
7
+ };
8
+ }
9
+ interface RouteManifest {
10
+ routeAssets: RouteAssets;
11
+ enableFetchParallel?: boolean;
12
+ enableLogging?: boolean;
13
+ }
14
+ export interface RouteMatch<Route> {
15
+ params: Params;
16
+ pathname: string;
17
+ route: Route;
18
+ }
19
+ export declare function handleLoad(routes: NestedRoute[], location: Location, routeManifest: RouteManifest): void;
20
+ export declare function matchClientRoutes(routes: NestedRoute[], location: Location): RouteMatch<NestedRoute>[];
21
+ export declare function loadRouteModule(route: NestedRoute, routeAssets: RouteAssets): Promise<string[] | void>;
22
+ export {};
@@ -18,12 +18,10 @@ export declare type SingleRouteConfig = RouteProps & {
18
18
  /**
19
19
  * layout component
20
20
  */
21
-
22
21
  layout?: React.ComponentType;
23
22
  /**
24
23
  * component would be rendered when route macthed.
25
24
  */
26
-
27
25
  component?: React.ComponentType;
28
26
  };
29
27
  export declare type RouterConfig = {
@@ -4,6 +4,7 @@ import { createLoaderManager } from './core/loader/loaderManager';
4
4
  import { runtime } from './core/plugin';
5
5
  import { SSRServerContext } from './ssr/serverRender/types';
6
6
  export interface BaseRuntimeContext {
7
+ initialData?: Record<string, unknown>;
7
8
  loaderManager: ReturnType<typeof createLoaderManager>;
8
9
  runner: ReturnType<typeof runtime.init>;
9
10
  ssrContext?: SSRServerContext;
@@ -1,5 +1,3 @@
1
- import type { CliPlugin } from '@modern-js/core';
2
-
3
- declare const _default: () => CliPlugin;
4
-
1
+ import type { CliPlugin, AppTools } from '@modern-js/app-tools';
2
+ declare const _default: () => CliPlugin<AppTools>;
5
3
  export default _default;
@@ -1,12 +1,12 @@
1
1
  import { RuntimeContext } from '../core';
2
2
  declare const prefetch: (App: React.ComponentType<any>, context: RuntimeContext) => Promise<{
3
- initialData: any;
3
+ initialData: Record<string, unknown> | undefined;
4
4
  i18nData: any;
5
5
  loadersData?: undefined;
6
6
  storeState?: undefined;
7
7
  } | {
8
8
  loadersData: Record<string, import("../core/loader/loaderManager").LoaderResult>;
9
- initialData: any;
9
+ initialData: Record<string, unknown> | undefined;
10
10
  i18nData: any;
11
11
  storeState: any;
12
12
  }>;
@@ -1,6 +1,7 @@
1
- import { RuntimeContext } from 'src/runtime-context';
1
+ import { RenderLevel, SSRServerContext } from '../types';
2
2
  declare type BuildShellAfterTemplateOptions = {
3
- context: RuntimeContext;
3
+ ssrContext: SSRServerContext;
4
+ renderLevel: RenderLevel;
4
5
  };
5
6
  export declare function buildShellAfterTemplate(afterAppTemplate: string, options: BuildShellAfterTemplateOptions): string;
6
7
  export {};
@@ -1 +1,2 @@
1
- export declare function buildShellBeforeTemplate(beforeAppTemplate: string): string;
1
+ import { RuntimeContext } from '../types';
2
+ export declare function buildShellBeforeTemplate(beforeAppTemplate: string, context: RuntimeContext): string;
@@ -2,7 +2,7 @@
2
2
  /// <reference types="react" />
3
3
  import { Writable } from 'stream';
4
4
  import { RenderToPipeableStreamOptions } from 'react-dom/server';
5
- import { InjectTemplate } from './type';
6
- export declare type Pipe<T extends Writable> = (output: T) => Promise<T>;
7
- declare function renderToPipe(rootElement: React.ReactElement, getTemplates: () => InjectTemplate, options?: RenderToPipeableStreamOptions): Pipe<Writable>;
5
+ import { RuntimeContext } from '../types';
6
+ export declare type Pipe<T extends Writable> = (output: T) => Promise<T | string>;
7
+ declare function renderToPipe(rootElement: React.ReactElement, context: RuntimeContext, options?: RenderToPipeableStreamOptions): Pipe<Writable>;
8
8
  export default renderToPipe;
@@ -1,3 +1,3 @@
1
- import { RuntimeContext } from '../types';
1
+ import { RenderLevel, RuntimeContext } from '../types';
2
2
  import { InjectTemplate } from './type';
3
- export declare function createTemplates(context: RuntimeContext): () => InjectTemplate;
3
+ export declare const getTemplates: (context: RuntimeContext, renderLevel: RenderLevel) => InjectTemplate;
@@ -1,16 +1,13 @@
1
1
  /// <reference types="react" />
2
- import type { ServerConfig } from '@modern-js/core';
2
+ import { ServerUserConfig } from '@modern-js/app-tools';
3
3
  import type { RuntimeContext } from '../../core';
4
4
  import { RenderLevel } from './renderToString/type';
5
5
  export type { SSRServerContext } from './renderToString/type';
6
- export declare type ModernSSRReactComponent = React.ComponentType<any> & {
7
- init: (context: RuntimeContext) => Promise<void>;
8
- prefetch: (context: RuntimeContext) => Promise<Record<string, any>>;
9
- };
6
+ export declare type ModernSSRReactComponent = React.ComponentType<any>;
10
7
  export { RuntimeContext, RenderLevel };
11
8
  export declare type SSRPluginConfig = {
12
9
  crossorigin?: boolean | 'anonymous' | 'use-credentials';
13
- } & Exclude<ServerConfig['ssr'], boolean>;
10
+ } & Exclude<ServerUserConfig['ssr'], boolean>;
14
11
  export declare type ServerRenderOptions = {
15
12
  App: ModernSSRReactComponent;
16
13
  config: SSRPluginConfig;
@@ -1,5 +1,3 @@
1
- import type { CliPlugin } from '@modern-js/core';
2
-
3
- declare const _default: () => CliPlugin;
4
-
1
+ import type { CliPlugin, AppTools } from '@modern-js/app-tools';
2
+ declare const _default: () => CliPlugin<AppTools>;
5
3
  export default _default;
@@ -11,7 +11,6 @@ export declare type PluginOptions = Parameters<typeof createStore>[0] & {
11
11
  * Default: false
12
12
  * When it's true, will remove immer plugin
13
13
  */
14
-
15
14
  disableImmer?: boolean;
16
15
  devtools?: any;
17
16
  };
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "modern",
12
12
  "modern.js"
13
13
  ],
14
- "version": "2.0.0-beta.0",
14
+ "version": "2.0.0-beta.2",
15
15
  "engines": {
16
16
  "node": ">=14.17.6"
17
17
  },
@@ -48,6 +48,11 @@
48
48
  "node": "./dist/js/node/exports/server.js",
49
49
  "default": "./dist/js/treeshaking/exports/server.js"
50
50
  },
51
+ "./document": {
52
+ "jsnext:source": "./src/document/index.ts",
53
+ "node": "./dist/js/node/document/index.js",
54
+ "default": "./dist/js/treeshaking/document/index.js"
55
+ },
51
56
  "./ssr": {
52
57
  "jsnext:source": "./src/ssr/index.ts",
53
58
  "node": "./dist/js/node/ssr/index",
@@ -93,6 +98,9 @@
93
98
  "server": [
94
99
  "./dist/types/exports/server.d.ts"
95
100
  ],
101
+ "document": [
102
+ "./dist/types/document/index.d.ts"
103
+ ],
96
104
  "ssr": [
97
105
  "./dist/types/ssr/index.d.ts"
98
106
  ],
@@ -120,9 +128,6 @@
120
128
  "@modern-js-reduck/plugin-immutable": "^1.0.1",
121
129
  "@modern-js-reduck/react": "^1.0.1",
122
130
  "@modern-js-reduck/store": "^1.0.3",
123
- "@modern-js/plugin": "2.0.0-beta.0",
124
- "@modern-js/types": "2.0.0-beta.0",
125
- "@modern-js/utils": "2.0.0-beta.0",
126
131
  "@types/loadable__component": "^5.13.4",
127
132
  "@types/react-helmet": "^6.1.2",
128
133
  "@types/redux-logger": "^3.0.9",
@@ -137,18 +142,16 @@
137
142
  "react-side-effect": "^2.1.1",
138
143
  "redux-logger": "^3.0.6",
139
144
  "serialize-javascript": "^6.0.0",
140
- "styled-components": "^5.3.1"
145
+ "styled-components": "^5.3.1",
146
+ "@modern-js/plugin": "2.0.0-beta.2",
147
+ "@modern-js/types": "2.0.0-beta.2",
148
+ "@modern-js/utils": "2.0.0-beta.2"
141
149
  },
142
150
  "peerDependencies": {
143
151
  "react": ">=17",
144
152
  "react-dom": ">=17"
145
153
  },
146
154
  "devDependencies": {
147
- "@modern-js/core": "2.0.0-beta.0",
148
- "@modern-js/server-core": "2.0.0-beta.0",
149
- "@modern-js/utils": "2.0.0-beta.0",
150
- "@scripts/build": "2.0.0-beta.0",
151
- "@scripts/jest-config": "2.0.0-beta.0",
152
155
  "@testing-library/react": "^13.4.0",
153
156
  "@testing-library/react-hooks": "^8.0.1",
154
157
  "@remix-run/web-fetch": "^4.1.3",
@@ -162,7 +165,13 @@
162
165
  "react": "^18",
163
166
  "react-dom": "^18",
164
167
  "ts-jest": "^27.0.4",
165
- "typescript": "^4"
168
+ "typescript": "^4",
169
+ "@modern-js/core": "2.0.0-beta.2",
170
+ "@modern-js/server-core": "2.0.0-beta.2",
171
+ "@modern-js/utils": "2.0.0-beta.2",
172
+ "@scripts/build": "2.0.0-beta.2",
173
+ "@modern-js/app-tools": "2.0.0-beta.2",
174
+ "@scripts/jest-config": "2.0.0-beta.2"
166
175
  },
167
176
  "sideEffects": false,
168
177
  "modernConfig": {},
@@ -171,9 +180,9 @@
171
180
  "access": "public"
172
181
  },
173
182
  "scripts": {
174
- "dev": "modern build --watch",
175
- "new": "modern new",
176
- "build": "modern build",
177
- "test": "jest --passWithNoTests"
183
+ "dev": "modern-lib build --watch",
184
+ "new": "modern-lib new",
185
+ "build": "modern-lib build",
186
+ "test": "jest"
178
187
  }
179
188
  }