@modern-js/runtime 2.15.0 → 2.15.1-alpha.1

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 (233) hide show
  1. package/dist/cjs/router/runtime/index.js +58 -53
  2. package/dist/esm/router/runtime/index.js +6 -1
  3. package/dist/esm-node/router/runtime/index.js +5 -1
  4. package/dist/js/modern/cli/index.js +72 -0
  5. package/dist/js/modern/common.js +4 -0
  6. package/dist/js/modern/config.js +0 -0
  7. package/dist/js/modern/core/app-config.js +10 -0
  8. package/dist/js/modern/core/compatible.js +285 -0
  9. package/dist/js/modern/core/index.js +16 -0
  10. package/dist/js/modern/core/loader/index.js +4 -0
  11. package/dist/js/modern/core/loader/loaderManager.js +165 -0
  12. package/dist/js/modern/core/loader/useLoader.js +114 -0
  13. package/dist/js/modern/core/plugin.js +58 -0
  14. package/dist/js/modern/document/Body.js +23 -0
  15. package/dist/js/modern/document/DocumentContext.js +9 -0
  16. package/dist/js/modern/document/DocumentStructrueContext.js +11 -0
  17. package/dist/js/modern/document/Head.js +27 -0
  18. package/dist/js/modern/document/Html.js +78 -0
  19. package/dist/js/modern/document/Links.js +10 -0
  20. package/dist/js/modern/document/Root.js +33 -0
  21. package/dist/js/modern/document/Script.js +20 -0
  22. package/dist/js/modern/document/Scripts.js +10 -0
  23. package/dist/js/modern/document/cli/index.js +228 -0
  24. package/dist/js/modern/document/constants.js +49 -0
  25. package/dist/js/modern/document/index.js +10 -0
  26. package/dist/js/modern/exports/head.js +6 -0
  27. package/dist/js/modern/exports/loadable.js +6 -0
  28. package/dist/js/modern/exports/server.js +4 -0
  29. package/dist/js/modern/exports/styled.js +6 -0
  30. package/dist/js/modern/index.js +22 -0
  31. package/dist/js/modern/router/cli/index.js +120 -0
  32. package/dist/js/modern/router/index.js +7 -0
  33. package/dist/js/modern/router/runtime/DefaultNotFound.js +14 -0
  34. package/dist/js/modern/router/runtime/index.js +9 -0
  35. package/dist/js/modern/router/runtime/plugin.js +104 -0
  36. package/dist/js/modern/router/runtime/plugin.node.js +149 -0
  37. package/dist/js/modern/router/runtime/server.js +1 -0
  38. package/dist/js/modern/router/runtime/types.js +0 -0
  39. package/dist/js/modern/router/runtime/utils.js +196 -0
  40. package/dist/js/modern/router/runtime/withRouter.js +36 -0
  41. package/dist/js/modern/runtime-context.js +7 -0
  42. package/dist/js/modern/ssr/cli/babel-plugin-ssr-loader-id.js +130 -0
  43. package/dist/js/modern/ssr/cli/index.js +172 -0
  44. package/dist/js/modern/ssr/index.js +159 -0
  45. package/dist/js/modern/ssr/index.node.js +79 -0
  46. package/dist/js/modern/ssr/prefetch.js +69 -0
  47. package/dist/js/modern/ssr/react/index.js +6 -0
  48. package/dist/js/modern/ssr/react/nossr/index.js +14 -0
  49. package/dist/js/modern/ssr/react/prerender/index.js +108 -0
  50. package/dist/js/modern/ssr/react/prerender/type.js +0 -0
  51. package/dist/js/modern/ssr/react/prerender/util.js +96 -0
  52. package/dist/js/modern/ssr/react/withCallback/index.js +15 -0
  53. package/dist/js/modern/ssr/serverRender/helmet.js +44 -0
  54. package/dist/js/modern/ssr/serverRender/index.js +35 -0
  55. package/dist/js/modern/ssr/serverRender/renderToStream/buildTemplate.after.js +36 -0
  56. package/dist/js/modern/ssr/serverRender/renderToStream/buildTemplate.share.js +11 -0
  57. package/dist/js/modern/ssr/serverRender/renderToStream/bulidTemplate.before.js +61 -0
  58. package/dist/js/modern/ssr/serverRender/renderToStream/index.js +58 -0
  59. package/dist/js/modern/ssr/serverRender/renderToStream/loadable.js +24 -0
  60. package/dist/js/modern/ssr/serverRender/renderToStream/renderToPipe.js +94 -0
  61. package/dist/js/modern/ssr/serverRender/renderToStream/styledComponent.js +12 -0
  62. package/dist/js/modern/ssr/serverRender/renderToStream/template.js +22 -0
  63. package/dist/js/modern/ssr/serverRender/renderToStream/type.js +0 -0
  64. package/dist/js/modern/ssr/serverRender/renderToString/entry.js +171 -0
  65. package/dist/js/modern/ssr/serverRender/renderToString/index.js +52 -0
  66. package/dist/js/modern/ssr/serverRender/renderToString/loadable.js +48 -0
  67. package/dist/js/modern/ssr/serverRender/renderToString/reduce.js +8 -0
  68. package/dist/js/modern/ssr/serverRender/renderToString/styledComponent.js +11 -0
  69. package/dist/js/modern/ssr/serverRender/renderToString/template.js +58 -0
  70. package/dist/js/modern/ssr/serverRender/renderToString/type.js +9 -0
  71. package/dist/js/modern/ssr/serverRender/types.js +4 -0
  72. package/dist/js/modern/ssr/serverRender/utils.js +22 -0
  73. package/dist/js/modern/ssr/utils.js +81 -0
  74. package/dist/js/modern/state/cli/index.js +83 -0
  75. package/dist/js/modern/state/index.js +7 -0
  76. package/dist/js/modern/state/plugins.js +13 -0
  77. package/dist/js/modern/state/runtime/index.js +9 -0
  78. package/dist/js/modern/state/runtime/plugin.js +97 -0
  79. package/dist/js/modern/state/types.js +0 -0
  80. package/dist/js/node/cli/index.js +99 -0
  81. package/dist/js/node/common.js +27 -0
  82. package/dist/js/node/config.js +15 -0
  83. package/dist/js/node/core/app-config.js +34 -0
  84. package/dist/js/node/core/compatible.js +312 -0
  85. package/dist/js/node/core/index.js +47 -0
  86. package/dist/js/node/core/loader/index.js +33 -0
  87. package/dist/js/node/core/loader/loaderManager.js +195 -0
  88. package/dist/js/node/core/loader/useLoader.js +132 -0
  89. package/dist/js/node/core/plugin.js +80 -0
  90. package/dist/js/node/document/Body.js +43 -0
  91. package/dist/js/node/document/DocumentContext.js +38 -0
  92. package/dist/js/node/document/DocumentStructrueContext.js +40 -0
  93. package/dist/js/node/document/Head.js +51 -0
  94. package/dist/js/node/document/Html.js +101 -0
  95. package/dist/js/node/document/Links.js +33 -0
  96. package/dist/js/node/document/Root.js +57 -0
  97. package/dist/js/node/document/Script.js +40 -0
  98. package/dist/js/node/document/Scripts.js +33 -0
  99. package/dist/js/node/document/cli/index.js +240 -0
  100. package/dist/js/node/document/constants.js +86 -0
  101. package/dist/js/node/document/index.js +26 -0
  102. package/dist/js/node/exports/head.js +34 -0
  103. package/dist/js/node/exports/loadable.js +34 -0
  104. package/dist/js/node/exports/server.js +27 -0
  105. package/dist/js/node/exports/styled.js +34 -0
  106. package/dist/js/node/index.js +44 -0
  107. package/dist/js/node/router/cli/index.js +135 -0
  108. package/dist/js/node/router/index.js +37 -0
  109. package/dist/js/node/router/runtime/DefaultNotFound.js +37 -0
  110. package/dist/js/node/router/runtime/index.js +33 -0
  111. package/dist/js/node/router/runtime/plugin.js +127 -0
  112. package/dist/js/node/router/runtime/plugin.node.js +175 -0
  113. package/dist/js/node/router/runtime/server.js +17 -0
  114. package/dist/js/node/router/runtime/types.js +15 -0
  115. package/dist/js/node/router/runtime/utils.js +221 -0
  116. package/dist/js/node/router/runtime/withRouter.js +57 -0
  117. package/dist/js/node/runtime-context.js +31 -0
  118. package/dist/js/node/ssr/cli/babel-plugin-ssr-loader-id.js +139 -0
  119. package/dist/js/node/ssr/cli/index.js +190 -0
  120. package/dist/js/node/ssr/index.js +185 -0
  121. package/dist/js/node/ssr/index.node.js +107 -0
  122. package/dist/js/node/ssr/prefetch.js +90 -0
  123. package/dist/js/node/ssr/react/index.js +30 -0
  124. package/dist/js/node/ssr/react/nossr/index.js +43 -0
  125. package/dist/js/node/ssr/react/prerender/index.js +130 -0
  126. package/dist/js/node/ssr/react/prerender/type.js +15 -0
  127. package/dist/js/node/ssr/react/prerender/util.js +123 -0
  128. package/dist/js/node/ssr/react/withCallback/index.js +38 -0
  129. package/dist/js/node/ssr/serverRender/helmet.js +65 -0
  130. package/dist/js/node/ssr/serverRender/index.js +56 -0
  131. package/dist/js/node/ssr/serverRender/renderToStream/buildTemplate.after.js +65 -0
  132. package/dist/js/node/ssr/serverRender/renderToStream/buildTemplate.share.js +35 -0
  133. package/dist/js/node/ssr/serverRender/renderToStream/bulidTemplate.before.js +87 -0
  134. package/dist/js/node/ssr/serverRender/renderToStream/index.js +87 -0
  135. package/dist/js/node/ssr/serverRender/renderToStream/loadable.js +47 -0
  136. package/dist/js/node/ssr/serverRender/renderToStream/renderToPipe.js +111 -0
  137. package/dist/js/node/ssr/serverRender/renderToStream/styledComponent.js +35 -0
  138. package/dist/js/node/ssr/serverRender/renderToStream/template.js +45 -0
  139. package/dist/js/node/ssr/serverRender/renderToStream/type.js +15 -0
  140. package/dist/js/node/ssr/serverRender/renderToString/entry.js +196 -0
  141. package/dist/js/node/ssr/serverRender/renderToString/index.js +81 -0
  142. package/dist/js/node/ssr/serverRender/renderToString/loadable.js +71 -0
  143. package/dist/js/node/ssr/serverRender/renderToString/reduce.js +31 -0
  144. package/dist/js/node/ssr/serverRender/renderToString/styledComponent.js +34 -0
  145. package/dist/js/node/ssr/serverRender/renderToString/template.js +82 -0
  146. package/dist/js/node/ssr/serverRender/renderToString/type.js +32 -0
  147. package/dist/js/node/ssr/serverRender/types.js +27 -0
  148. package/dist/js/node/ssr/serverRender/utils.js +46 -0
  149. package/dist/js/node/ssr/utils.js +106 -0
  150. package/dist/js/node/state/cli/index.js +100 -0
  151. package/dist/js/node/state/index.js +37 -0
  152. package/dist/js/node/state/plugins.js +45 -0
  153. package/dist/js/node/state/runtime/index.js +40 -0
  154. package/dist/js/node/state/runtime/plugin.js +121 -0
  155. package/dist/js/node/state/types.js +15 -0
  156. package/dist/js/treeshaking/cli/index.js +186 -0
  157. package/dist/js/treeshaking/common.js +4 -0
  158. package/dist/js/treeshaking/config.js +1 -0
  159. package/dist/js/treeshaking/core/app-config.js +9 -0
  160. package/dist/js/treeshaking/core/compatible.js +485 -0
  161. package/dist/js/treeshaking/core/index.js +7 -0
  162. package/dist/js/treeshaking/core/loader/index.js +2 -0
  163. package/dist/js/treeshaking/core/loader/loaderManager.js +406 -0
  164. package/dist/js/treeshaking/core/loader/useLoader.js +188 -0
  165. package/dist/js/treeshaking/core/plugin.js +176 -0
  166. package/dist/js/treeshaking/document/Body.js +18 -0
  167. package/dist/js/treeshaking/document/DocumentContext.js +7 -0
  168. package/dist/js/treeshaking/document/DocumentStructrueContext.js +9 -0
  169. package/dist/js/treeshaking/document/Head.js +24 -0
  170. package/dist/js/treeshaking/document/Html.js +99 -0
  171. package/dist/js/treeshaking/document/Links.js +8 -0
  172. package/dist/js/treeshaking/document/Root.js +26 -0
  173. package/dist/js/treeshaking/document/Script.js +15 -0
  174. package/dist/js/treeshaking/document/Scripts.js +8 -0
  175. package/dist/js/treeshaking/document/cli/index.js +393 -0
  176. package/dist/js/treeshaking/document/constants.js +35 -0
  177. package/dist/js/treeshaking/document/index.js +10 -0
  178. package/dist/js/treeshaking/exports/head.js +4 -0
  179. package/dist/js/treeshaking/exports/loadable.js +4 -0
  180. package/dist/js/treeshaking/exports/server.js +4 -0
  181. package/dist/js/treeshaking/exports/styled.js +4 -0
  182. package/dist/js/treeshaking/index.js +3 -0
  183. package/dist/js/treeshaking/router/cli/index.js +148 -0
  184. package/dist/js/treeshaking/router/index.js +4 -0
  185. package/dist/js/treeshaking/router/runtime/DefaultNotFound.js +14 -0
  186. package/dist/js/treeshaking/router/runtime/index.js +6 -0
  187. package/dist/js/treeshaking/router/runtime/plugin.js +132 -0
  188. package/dist/js/treeshaking/router/runtime/plugin.node.js +390 -0
  189. package/dist/js/treeshaking/router/runtime/server.js +1 -0
  190. package/dist/js/treeshaking/router/runtime/types.js +1 -0
  191. package/dist/js/treeshaking/router/runtime/utils.js +260 -0
  192. package/dist/js/treeshaking/router/runtime/withRouter.js +67 -0
  193. package/dist/js/treeshaking/runtime-context.js +4 -0
  194. package/dist/js/treeshaking/ssr/cli/babel-plugin-ssr-loader-id.js +122 -0
  195. package/dist/js/treeshaking/ssr/cli/index.js +217 -0
  196. package/dist/js/treeshaking/ssr/index.js +315 -0
  197. package/dist/js/treeshaking/ssr/index.node.js +240 -0
  198. package/dist/js/treeshaking/ssr/prefetch.js +199 -0
  199. package/dist/js/treeshaking/ssr/react/index.js +3 -0
  200. package/dist/js/treeshaking/ssr/react/nossr/index.js +58 -0
  201. package/dist/js/treeshaking/ssr/react/prerender/index.js +237 -0
  202. package/dist/js/treeshaking/ssr/react/prerender/type.js +1 -0
  203. package/dist/js/treeshaking/ssr/react/prerender/util.js +108 -0
  204. package/dist/js/treeshaking/ssr/react/withCallback/index.js +16 -0
  205. package/dist/js/treeshaking/ssr/serverRender/helmet.js +42 -0
  206. package/dist/js/treeshaking/ssr/serverRender/index.js +169 -0
  207. package/dist/js/treeshaking/ssr/serverRender/renderToStream/buildTemplate.after.js +34 -0
  208. package/dist/js/treeshaking/ssr/serverRender/renderToStream/buildTemplate.share.js +7 -0
  209. package/dist/js/treeshaking/ssr/serverRender/renderToStream/bulidTemplate.before.js +115 -0
  210. package/dist/js/treeshaking/ssr/serverRender/renderToStream/index.js +165 -0
  211. package/dist/js/treeshaking/ssr/serverRender/renderToStream/loadable.js +22 -0
  212. package/dist/js/treeshaking/ssr/serverRender/renderToStream/renderToPipe.js +119 -0
  213. package/dist/js/treeshaking/ssr/serverRender/renderToStream/styledComponent.js +11 -0
  214. package/dist/js/treeshaking/ssr/serverRender/renderToStream/template.js +63 -0
  215. package/dist/js/treeshaking/ssr/serverRender/renderToStream/type.js +1 -0
  216. package/dist/js/treeshaking/ssr/serverRender/renderToString/entry.js +393 -0
  217. package/dist/js/treeshaking/ssr/serverRender/renderToString/index.js +165 -0
  218. package/dist/js/treeshaking/ssr/serverRender/renderToString/loadable.js +56 -0
  219. package/dist/js/treeshaking/ssr/serverRender/renderToString/reduce.js +10 -0
  220. package/dist/js/treeshaking/ssr/serverRender/renderToString/styledComponent.js +9 -0
  221. package/dist/js/treeshaking/ssr/serverRender/renderToString/template.js +156 -0
  222. package/dist/js/treeshaking/ssr/serverRender/renderToString/type.js +7 -0
  223. package/dist/js/treeshaking/ssr/serverRender/types.js +2 -0
  224. package/dist/js/treeshaking/ssr/serverRender/utils.js +69 -0
  225. package/dist/js/treeshaking/ssr/utils.js +134 -0
  226. package/dist/js/treeshaking/state/cli/index.js +71 -0
  227. package/dist/js/treeshaking/state/index.js +4 -0
  228. package/dist/js/treeshaking/state/plugins.js +14 -0
  229. package/dist/js/treeshaking/state/runtime/index.js +5 -0
  230. package/dist/js/treeshaking/state/runtime/plugin.js +198 -0
  231. package/dist/js/treeshaking/state/types.js +1 -0
  232. package/dist/types/router/runtime/index.d.ts +3 -1
  233. package/package.json +4 -4
@@ -0,0 +1,165 @@
1
+ var __async = (__this, __arguments, generator) => {
2
+ return new Promise((resolve, reject) => {
3
+ var fulfilled = (value) => {
4
+ try {
5
+ step(generator.next(value));
6
+ } catch (e) {
7
+ reject(e);
8
+ }
9
+ };
10
+ var rejected = (value) => {
11
+ try {
12
+ step(generator.throw(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ };
17
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
+ step((generator = generator.apply(__this, __arguments)).next());
19
+ });
20
+ };
21
+ import invariant from "invariant";
22
+ const createGetId = () => {
23
+ const idCache = /* @__PURE__ */ new Map();
24
+ return (objectId) => {
25
+ const cachedId = idCache.get(objectId);
26
+ if (cachedId) {
27
+ return cachedId;
28
+ }
29
+ const id = JSON.stringify(objectId);
30
+ invariant(id, "params should be not null value");
31
+ idCache.set(objectId, id);
32
+ return id;
33
+ };
34
+ };
35
+ var LoaderStatus = /* @__PURE__ */ ((LoaderStatus2) => {
36
+ LoaderStatus2[LoaderStatus2["idle"] = 0] = "idle";
37
+ LoaderStatus2[LoaderStatus2["loading"] = 1] = "loading";
38
+ LoaderStatus2[LoaderStatus2["fulfilled"] = 2] = "fulfilled";
39
+ LoaderStatus2[LoaderStatus2["rejected"] = 3] = "rejected";
40
+ return LoaderStatus2;
41
+ })(LoaderStatus || {});
42
+ const createLoader = (id, initialData = {
43
+ loading: false,
44
+ reloading: false,
45
+ data: void 0,
46
+ error: void 0
47
+ }, loaderFn, skip = false) => {
48
+ let promise;
49
+ let status = 0 /* idle */;
50
+ let { data, error } = initialData;
51
+ let hasLoaded = false;
52
+ const handlers = /* @__PURE__ */ new Set();
53
+ const load = () => __async(void 0, null, function* () {
54
+ if (skip) {
55
+ return promise;
56
+ }
57
+ if (status === 1 /* loading */) {
58
+ return promise;
59
+ }
60
+ status = 1 /* loading */;
61
+ notify();
62
+ promise = loaderFn().then((value) => {
63
+ data = value;
64
+ error = null;
65
+ status = 2 /* fulfilled */;
66
+ }).catch((e) => {
67
+ error = e;
68
+ data = null;
69
+ status = 3 /* rejected */;
70
+ }).finally(() => {
71
+ promise = null;
72
+ hasLoaded = true;
73
+ notify();
74
+ });
75
+ return promise;
76
+ });
77
+ const getResult = () => ({
78
+ loading: !hasLoaded && status === 1 /* loading */,
79
+ reloading: hasLoaded && status === 1 /* loading */,
80
+ data,
81
+ error: error instanceof Error ? `${error.message}` : error,
82
+ _error: error
83
+ });
84
+ const notify = () => {
85
+ [...handlers].forEach((handler) => {
86
+ handler(status, getResult());
87
+ });
88
+ };
89
+ const onChange = (handler) => {
90
+ handlers.add(handler);
91
+ return () => {
92
+ handlers.delete(handler);
93
+ };
94
+ };
95
+ return {
96
+ get result() {
97
+ return getResult();
98
+ },
99
+ get promise() {
100
+ return promise;
101
+ },
102
+ onChange,
103
+ load
104
+ };
105
+ };
106
+ const createLoaderManager = (initialDataMap, managerOptions = {}) => {
107
+ const { skipStatic = false, skipNonStatic = false } = managerOptions;
108
+ const loadersMap = /* @__PURE__ */ new Map();
109
+ const getId = createGetId();
110
+ const add = (loaderFn, loaderOptions) => {
111
+ const id = getId(loaderOptions.params);
112
+ let loader = loadersMap.get(id);
113
+ const cache = loaderOptions._cache;
114
+ if (!loader || cache === false) {
115
+ const ignoreNonStatic = skipNonStatic && !loaderOptions.static;
116
+ const ignoreStatic = skipStatic && loaderOptions.static;
117
+ const skipExec = ignoreNonStatic || ignoreStatic;
118
+ loader = createLoader(
119
+ id,
120
+ typeof initialDataMap[id] !== "undefined" ? initialDataMap[id] : { data: loaderOptions.initialData },
121
+ loaderFn,
122
+ skipExec
123
+ );
124
+ loadersMap.set(id, loader);
125
+ }
126
+ return id;
127
+ };
128
+ const get = (id) => loadersMap.get(id);
129
+ const hasPendingLoaders = () => {
130
+ for (const loader of loadersMap.values()) {
131
+ const { promise } = loader;
132
+ if (promise instanceof Promise) {
133
+ return true;
134
+ }
135
+ }
136
+ return false;
137
+ };
138
+ const awaitPendingLoaders = () => __async(void 0, null, function* () {
139
+ const pendingLoaders = [];
140
+ for (const [id, loader] of loadersMap) {
141
+ const { promise } = loader;
142
+ if (promise instanceof Promise) {
143
+ pendingLoaders.push([id, loader]);
144
+ }
145
+ }
146
+ yield Promise.all(pendingLoaders.map((item) => item[1].promise));
147
+ return pendingLoaders.reduce(
148
+ (res, [id, loader]) => {
149
+ res[id] = loader.result;
150
+ return res;
151
+ },
152
+ {}
153
+ );
154
+ });
155
+ return {
156
+ hasPendingLoaders,
157
+ awaitPendingLoaders,
158
+ add,
159
+ get
160
+ };
161
+ };
162
+ export {
163
+ LoaderStatus,
164
+ createLoaderManager
165
+ };
@@ -0,0 +1,114 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ import {
21
+ useContext,
22
+ useRef,
23
+ useMemo,
24
+ useState,
25
+ useCallback,
26
+ useEffect
27
+ } from "react";
28
+ import invariant from "invariant";
29
+ import { RuntimeReactContext } from "../../runtime-context";
30
+ import { LoaderStatus } from "./loaderManager";
31
+ const useLoader = (loaderFn, options = { params: void 0 }) => {
32
+ const context = useContext(RuntimeReactContext);
33
+ const isSSRRender = Boolean(context.ssr);
34
+ const { loaderManager } = context;
35
+ const loaderRef = useRef();
36
+ const unlistenLoaderChangeRef = useRef(null);
37
+ if (isSSRRender && Object.prototype.hasOwnProperty.call(options, "_cache")) {
38
+ delete options._cache;
39
+ }
40
+ const load = useCallback(
41
+ (params) => {
42
+ var _a, _b, _c, _d, _e, _f;
43
+ if (typeof params === "undefined") {
44
+ return (_a = loaderRef.current) == null ? void 0 : _a.load();
45
+ }
46
+ const id = loaderManager.add(
47
+ () => {
48
+ try {
49
+ const res2 = loaderFn(context, params);
50
+ if (res2 instanceof Promise) {
51
+ return res2;
52
+ }
53
+ return Promise.resolve(res2);
54
+ } catch (e) {
55
+ return Promise.reject(e);
56
+ }
57
+ },
58
+ __spreadProps(__spreadValues({}, options), {
59
+ params
60
+ })
61
+ );
62
+ loaderRef.current = loaderManager.get(id);
63
+ (_b = unlistenLoaderChangeRef.current) == null ? void 0 : _b.call(unlistenLoaderChangeRef);
64
+ if (isSSRRender) {
65
+ return void 0;
66
+ }
67
+ if (options.skip) {
68
+ return void 0;
69
+ }
70
+ if (context._hydration && ((_e = (_d = (_c = window == null ? void 0 : window._SSR_DATA) == null ? void 0 : _c.data) == null ? void 0 : _d.loadersData[id]) == null ? void 0 : _e.error) === null) {
71
+ return void 0;
72
+ }
73
+ const res = loaderRef.current.load();
74
+ unlistenLoaderChangeRef.current = (_f = loaderRef.current) == null ? void 0 : _f.onChange(
75
+ (_status, _result) => {
76
+ var _a2, _b2;
77
+ setResult(_result);
78
+ if (_status === LoaderStatus.fulfilled) {
79
+ (_a2 = options == null ? void 0 : options.onSuccess) == null ? void 0 : _a2.call(options, _result.data);
80
+ }
81
+ if (_status === LoaderStatus.rejected) {
82
+ (_b2 = options == null ? void 0 : options.onError) == null ? void 0 : _b2.call(options, _result.error);
83
+ }
84
+ }
85
+ );
86
+ return res;
87
+ },
88
+ [options.skip]
89
+ );
90
+ useEffect(
91
+ () => () => {
92
+ var _a;
93
+ (_a = unlistenLoaderChangeRef.current) == null ? void 0 : _a.call(unlistenLoaderChangeRef);
94
+ },
95
+ []
96
+ );
97
+ useMemo(() => {
98
+ var _a;
99
+ const p = (_a = options.params) != null ? _a : loaderFn.id;
100
+ invariant(
101
+ typeof p !== "undefined" && p !== null,
102
+ "Params is required in useLoader"
103
+ );
104
+ load(p);
105
+ }, [options.params]);
106
+ const [result, setResult] = useState(loaderRef.current.result);
107
+ return __spreadProps(__spreadValues({}, result), {
108
+ reload: load
109
+ });
110
+ };
111
+ var useLoader_default = useLoader;
112
+ export {
113
+ useLoader_default as default
114
+ };
@@ -0,0 +1,58 @@
1
+ var __async = (__this, __arguments, generator) => {
2
+ return new Promise((resolve, reject) => {
3
+ var fulfilled = (value) => {
4
+ try {
5
+ step(generator.next(value));
6
+ } catch (e) {
7
+ reject(e);
8
+ }
9
+ };
10
+ var rejected = (value) => {
11
+ try {
12
+ step(generator.throw(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ };
17
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
+ step((generator = generator.apply(__this, __arguments)).next());
19
+ });
20
+ };
21
+ import {
22
+ createManager,
23
+ createPipeline,
24
+ createAsyncPipeline
25
+ } from "@modern-js/plugin";
26
+ import { createLoaderManager } from "./loader/loaderManager";
27
+ const hoc = createPipeline();
28
+ const provide = createPipeline();
29
+ const client = createAsyncPipeline();
30
+ const server = createAsyncPipeline();
31
+ const init = createAsyncPipeline();
32
+ const pickContext = createPipeline();
33
+ const runtimeHooks = {
34
+ hoc,
35
+ provide,
36
+ client,
37
+ server,
38
+ init,
39
+ pickContext
40
+ };
41
+ const createRuntime = () => createManager(runtimeHooks);
42
+ const registerInit = (App, _init) => {
43
+ const originalInit = App.init;
44
+ App.init = (context) => __async(void 0, null, function* () {
45
+ if (!context.loaderManager) {
46
+ context.loaderManager = createLoaderManager({});
47
+ }
48
+ yield Promise.all([originalInit == null ? void 0 : originalInit(context), _init == null ? void 0 : _init(context)]);
49
+ });
50
+ };
51
+ const runtime = createRuntime();
52
+ const { createPlugin } = runtime;
53
+ export {
54
+ createPlugin,
55
+ createRuntime,
56
+ registerInit,
57
+ runtime
58
+ };
@@ -0,0 +1,23 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { useContext } from "react";
3
+ import {
4
+ DOCUMENT_CHUNKSMAP_PLACEHOLDER,
5
+ DOCUMENT_SSRDATASCRIPT_PLACEHOLDER
6
+ } from "./constants";
7
+ import { DocumentStructrueContext } from "./DocumentStructrueContext";
8
+ import { DefaultRoot } from "./Root";
9
+ function Body(props) {
10
+ const { hasSetRoot } = useContext(DocumentStructrueContext);
11
+ const { children } = props;
12
+ return /* @__PURE__ */ jsxs("body", {
13
+ children: [
14
+ hasSetRoot ? null : /* @__PURE__ */ jsx(DefaultRoot, {}),
15
+ children,
16
+ `${DOCUMENT_CHUNKSMAP_PLACEHOLDER}`,
17
+ `${DOCUMENT_SSRDATASCRIPT_PLACEHOLDER}`
18
+ ]
19
+ });
20
+ }
21
+ export {
22
+ Body
23
+ };
@@ -0,0 +1,9 @@
1
+ import React from "react";
2
+ const DocumentContext = React.createContext({
3
+ config: {},
4
+ templateParams: {},
5
+ processEnv: {}
6
+ });
7
+ export {
8
+ DocumentContext
9
+ };
@@ -0,0 +1,11 @@
1
+ import React from "react";
2
+ const DocumentStructrueContext = React.createContext({
3
+ hasSetHead: false,
4
+ hasSetScripts: false,
5
+ hasSetBody: false,
6
+ hasSetRoot: false,
7
+ hasSetLinks: false
8
+ });
9
+ export {
10
+ DocumentStructrueContext
11
+ };
@@ -0,0 +1,27 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { useContext } from "react";
3
+ import { DocumentStructrueContext } from "./DocumentStructrueContext";
4
+ import { Scripts } from "./Scripts";
5
+ import { Links } from "./Links";
6
+ import { DOCUMENT_META_PLACEHOLDER } from "./constants";
7
+ function Head(props) {
8
+ const { hasSetScripts, hasSetLinks } = useContext(DocumentStructrueContext);
9
+ const { children } = props;
10
+ return /* @__PURE__ */ jsxs("head", {
11
+ children: [
12
+ `${DOCUMENT_META_PLACEHOLDER}`,
13
+ !hasSetLinks && /* @__PURE__ */ jsx(Links, {}),
14
+ !hasSetScripts && /* @__PURE__ */ jsx(Scripts, {}),
15
+ children
16
+ ]
17
+ });
18
+ }
19
+ function DefaultHead() {
20
+ return /* @__PURE__ */ jsx("head", {
21
+ children: `${DOCUMENT_META_PLACEHOLDER}`
22
+ });
23
+ }
24
+ export {
25
+ DefaultHead,
26
+ Head
27
+ };
@@ -0,0 +1,78 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { Body } from "./Body";
3
+ import { DocumentStructrueContext } from "./DocumentStructrueContext";
4
+ import { Head } from "./Head";
5
+ function findTargetChild(tag, children) {
6
+ return children.find((item) => getEleType(item) === tag);
7
+ }
8
+ function getEleType(ele) {
9
+ return typeof (ele == null ? void 0 : ele.type) === "function" ? ele.type.name : ele == null ? void 0 : ele.type;
10
+ }
11
+ function findTargetElement(tag, children) {
12
+ var _a;
13
+ if (children.length === 0) {
14
+ return null;
15
+ }
16
+ let nextChildren = [];
17
+ for (const item of children) {
18
+ if (tag === getEleType(item)) {
19
+ return item;
20
+ }
21
+ if ((_a = item == null ? void 0 : item.props) == null ? void 0 : _a.children) {
22
+ nextChildren = nextChildren.concat(item.props.children);
23
+ }
24
+ }
25
+ return findTargetElement(tag, nextChildren);
26
+ }
27
+ function Html(props) {
28
+ const { children } = props;
29
+ const hasSetHead = Boolean(findTargetChild("Head", children));
30
+ const hasSetScripts = Boolean(findTargetElement("Scripts", children));
31
+ const hasSetLinks = Boolean(findTargetElement("Links", children));
32
+ const hasSetBody = Boolean(findTargetChild("Body", children));
33
+ const hasSetRoot = Boolean(findTargetElement("Root", children));
34
+ const notMissMustChild = [
35
+ hasSetHead,
36
+ hasSetBody
37
+ ].every((item) => item);
38
+ if (!notMissMustChild) {
39
+ return /* @__PURE__ */ jsx("html", {
40
+ children: /* @__PURE__ */ jsxs("body", {
41
+ style: { color: "red" },
42
+ children: [
43
+ `Miss the `,
44
+ [
45
+ hasSetHead,
46
+ hasSetBody
47
+ ].map((item, index) => {
48
+ return item ? null : [
49
+ "Head",
50
+ "Body"
51
+ ][index];
52
+ }),
53
+ ` Element`
54
+ ]
55
+ })
56
+ });
57
+ }
58
+ return /* @__PURE__ */ jsx("html", {
59
+ children: /* @__PURE__ */ jsxs(DocumentStructrueContext.Provider, {
60
+ value: {
61
+ hasSetHead,
62
+ hasSetScripts,
63
+ hasSetLinks,
64
+ hasSetRoot,
65
+ hasSetBody,
66
+ docChild: children
67
+ },
68
+ children: [
69
+ !hasSetHead && /* @__PURE__ */ jsx(Head, {}),
70
+ !hasSetBody && /* @__PURE__ */ jsx(Body, {}),
71
+ children
72
+ ]
73
+ })
74
+ });
75
+ }
76
+ export {
77
+ Html
78
+ };
@@ -0,0 +1,10 @@
1
+ import { Fragment, jsx } from "react/jsx-runtime";
2
+ import { DOCUMENT_LINKS_PLACEHOLDER } from "./constants";
3
+ function Links() {
4
+ return /* @__PURE__ */ jsx(Fragment, {
5
+ children: DOCUMENT_LINKS_PLACEHOLDER
6
+ });
7
+ }
8
+ export {
9
+ Links
10
+ };
@@ -0,0 +1,33 @@
1
+ import { jsxs } from "react/jsx-runtime";
2
+ import { useContext } from "react";
3
+ import { DocumentContext } from "./DocumentContext";
4
+ import { DOCUMENT_SSR_PLACEHOLDER } from "./constants";
5
+ function Root(props) {
6
+ const { rootId, children } = props;
7
+ const {
8
+ templateParams: { mountId = "root" }
9
+ } = useContext(DocumentContext);
10
+ return /* @__PURE__ */ jsxs("div", {
11
+ id: `${rootId || mountId}`,
12
+ children: [
13
+ `${DOCUMENT_SSR_PLACEHOLDER}`,
14
+ children
15
+ ]
16
+ });
17
+ }
18
+ function DefaultRoot(props) {
19
+ const {
20
+ templateParams: { mountId = "root" }
21
+ } = useContext(DocumentContext);
22
+ return /* @__PURE__ */ jsxs("div", {
23
+ id: `${mountId}`,
24
+ children: [
25
+ `${DOCUMENT_SSR_PLACEHOLDER}`,
26
+ props.children
27
+ ]
28
+ });
29
+ }
30
+ export {
31
+ DefaultRoot,
32
+ Root
33
+ };
@@ -0,0 +1,20 @@
1
+ import { Fragment, jsxs } from "react/jsx-runtime";
2
+ import {
3
+ DOCUMENT_SCRIPT_PLACEHOLDER_START,
4
+ DOCUMENT_SCRIPT_PLACEHOLDER_END
5
+ } from "./constants";
6
+ function Script(props) {
7
+ const { content } = props;
8
+ const contentStr = content.toString();
9
+ const contentIIFE = encodeURIComponent(`(${contentStr})()`);
10
+ return /* @__PURE__ */ jsxs(Fragment, {
11
+ children: [
12
+ `${DOCUMENT_SCRIPT_PLACEHOLDER_START}`,
13
+ `${contentIIFE}`,
14
+ `${DOCUMENT_SCRIPT_PLACEHOLDER_END}`
15
+ ]
16
+ });
17
+ }
18
+ export {
19
+ Script
20
+ };
@@ -0,0 +1,10 @@
1
+ import { Fragment, jsx } from "react/jsx-runtime";
2
+ import { DOCUMENT_SCRIPTS_PLACEHOLDER } from "./constants";
3
+ function Scripts() {
4
+ return /* @__PURE__ */ jsx(Fragment, {
5
+ children: `${DOCUMENT_SCRIPTS_PLACEHOLDER}`
6
+ });
7
+ }
8
+ export {
9
+ Scripts
10
+ };