@shuvi/platform-web 0.0.1-rc.32 → 1.0.0-rc.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 (233) hide show
  1. package/esm/shared/appTypes.d.ts +15 -0
  2. package/esm/shared/appTypes.js +1 -0
  3. package/esm/shared/index.d.ts +4 -0
  4. package/esm/shared/index.js +4 -0
  5. package/esm/shared/renderTypes.d.ts +44 -0
  6. package/esm/shared/renderTypes.js +1 -0
  7. package/esm/shared/routeTypes.d.ts +47 -0
  8. package/esm/shared/routeTypes.js +1 -0
  9. package/esm/shared/serverTypes.d.ts +6 -0
  10. package/esm/shared/serverTypes.js +1 -0
  11. package/esm/shuvi-app/app/client.d.ts +2 -0
  12. package/esm/shuvi-app/app/client.js +125 -0
  13. package/esm/shuvi-app/app/server.d.ts +2 -0
  14. package/esm/shuvi-app/app/server.js +67 -0
  15. package/{shuvi-app → esm/shuvi-app}/dev/webpackHotDevClient.d.ts +0 -0
  16. package/{shuvi-app → esm/shuvi-app}/dev/webpackHotDevClient.js +0 -0
  17. package/esm/shuvi-app/entry/client/app.d.ts +2 -0
  18. package/esm/shuvi-app/entry/client/app.js +57 -0
  19. package/esm/shuvi-app/entry/client/index.d.ts +2 -0
  20. package/esm/shuvi-app/entry/client/index.js +12 -0
  21. package/{shuvi-app → esm/shuvi-app}/entry/client/run.dev.d.ts +0 -0
  22. package/{shuvi-app → esm/shuvi-app}/entry/client/run.dev.js +2 -2
  23. package/{shuvi-app → esm/shuvi-app}/entry/client/run.prod.d.ts +0 -0
  24. package/esm/shuvi-app/entry/client/run.prod.js +3 -0
  25. package/{shuvi-app → esm/shuvi-app}/entry/client/setup-env.d.ts +1 -1
  26. package/esm/shuvi-app/entry/client/setup-env.js +17 -0
  27. package/esm/shuvi-app/entry/server/index.d.ts +6 -0
  28. package/esm/shuvi-app/entry/server/index.js +7 -0
  29. package/esm/shuvi-app/react/AppComponent.d.ts +4 -0
  30. package/esm/shuvi-app/react/AppComponent.jsx +6 -0
  31. package/esm/shuvi-app/react/AppContainer.d.ts +6 -0
  32. package/esm/shuvi-app/react/AppContainer.jsx +23 -0
  33. package/esm/shuvi-app/react/Error.d.ts +5 -0
  34. package/esm/shuvi-app/react/Error.jsx +38 -0
  35. package/esm/shuvi-app/react/ErrorBoundary.d.ts +16 -0
  36. package/esm/shuvi-app/react/ErrorBoundary.jsx +25 -0
  37. package/esm/shuvi-app/react/ErrorPage.d.ts +5 -0
  38. package/esm/shuvi-app/react/ErrorPage.jsx +7 -0
  39. package/esm/shuvi-app/react/Link.d.ts +7 -0
  40. package/esm/shuvi-app/react/Link.jsx +115 -0
  41. package/esm/shuvi-app/react/applicationContext.d.ts +7 -0
  42. package/esm/shuvi-app/react/applicationContext.jsx +10 -0
  43. package/esm/shuvi-app/react/dynamic.d.ts +31 -0
  44. package/esm/shuvi-app/react/dynamic.jsx +62 -0
  45. package/esm/shuvi-app/react/getRoutes.d.ts +2 -0
  46. package/esm/shuvi-app/react/getRoutes.js +31 -0
  47. package/esm/shuvi-app/react/head/head-manager-context.d.ts +2 -0
  48. package/esm/shuvi-app/react/head/head-manager-context.js +2 -0
  49. package/esm/shuvi-app/react/head/head-manager.d.ts +10 -0
  50. package/esm/shuvi-app/react/head/head-manager.js +93 -0
  51. package/esm/shuvi-app/react/head/head.d.ts +33 -0
  52. package/esm/shuvi-app/react/head/head.jsx +178 -0
  53. package/esm/shuvi-app/react/head/index.d.ts +4 -0
  54. package/esm/shuvi-app/react/head/index.js +4 -0
  55. package/esm/shuvi-app/react/head/side-effect.d.ts +30 -0
  56. package/esm/shuvi-app/react/head/side-effect.jsx +44 -0
  57. package/esm/shuvi-app/react/head/types.d.ts +15 -0
  58. package/esm/shuvi-app/react/head/types.js +1 -0
  59. package/esm/shuvi-app/react/index.d.ts +4 -0
  60. package/esm/shuvi-app/react/index.js +4 -0
  61. package/esm/shuvi-app/react/loadRouteComponent.d.ts +4 -0
  62. package/esm/shuvi-app/react/loadRouteComponent.jsx +9 -0
  63. package/esm/shuvi-app/react/loadable/index.d.ts +2 -0
  64. package/esm/shuvi-app/react/loadable/index.js +2 -0
  65. package/esm/shuvi-app/react/loadable/loadable-context.d.ts +4 -0
  66. package/esm/shuvi-app/react/loadable/loadable-context.js +3 -0
  67. package/esm/shuvi-app/react/loadable/loadable.d.ts +30 -0
  68. package/esm/shuvi-app/react/loadable/loadable.js +277 -0
  69. package/esm/shuvi-app/react/shuvi-runtime-api.d.ts +5 -0
  70. package/esm/shuvi-app/react/shuvi-runtime-api.js +5 -0
  71. package/esm/shuvi-app/react/types.d.ts +14 -0
  72. package/esm/shuvi-app/react/types.js +1 -0
  73. package/esm/shuvi-app/react/useLoaderData.d.ts +2 -0
  74. package/esm/shuvi-app/react/useLoaderData.js +27 -0
  75. package/esm/shuvi-app/react/utils/getDisplayName.d.ts +2 -0
  76. package/esm/shuvi-app/react/utils/getDisplayName.js +3 -0
  77. package/esm/shuvi-app/react/utils/requestIdleCallback.d.ts +2 -0
  78. package/esm/shuvi-app/react/utils/requestIdleCallback.js +20 -0
  79. package/esm/shuvi-app/react/utils/useIntersection.d.ts +8 -0
  80. package/esm/shuvi-app/react/utils/useIntersection.jsx +91 -0
  81. package/esm/shuvi-app/react/view/ReactView.client.d.ts +5 -0
  82. package/esm/shuvi-app/react/view/ReactView.client.jsx +64 -0
  83. package/esm/shuvi-app/react/view/ReactView.server.d.ts +4 -0
  84. package/esm/shuvi-app/react/view/ReactView.server.jsx +109 -0
  85. package/esm/shuvi-app/react/view/clientView.d.ts +3 -0
  86. package/esm/shuvi-app/react/view/clientView.js +2 -0
  87. package/esm/shuvi-app/react/view/index.d.ts +2 -0
  88. package/esm/shuvi-app/react/view/index.js +7 -0
  89. package/esm/shuvi-app/react/view/render-action.d.ts +10 -0
  90. package/esm/shuvi-app/react/view/render-action.js +29 -0
  91. package/esm/shuvi-app/react/view/serverView.d.ts +3 -0
  92. package/esm/shuvi-app/react/view/serverView.js +2 -0
  93. package/esm/shuvi-app/react/view/transformRoutes.d.ts +2 -0
  94. package/esm/shuvi-app/react/view/transformRoutes.js +3 -0
  95. package/esm/shuvi-app/shuvi-runtime-index.d.ts +4 -0
  96. package/esm/shuvi-app/shuvi-runtime-index.js +2 -0
  97. package/esm/shuvi-app/shuvi-runtime-server.d.ts +6 -0
  98. package/esm/shuvi-app/shuvi-runtime-server.js +1 -0
  99. package/lib/node/features/custom-server/hooks.d.ts +9 -0
  100. package/lib/node/features/custom-server/hooks.js +13 -0
  101. package/lib/node/features/custom-server/index.d.ts +17 -0
  102. package/lib/node/features/custom-server/index.js +28 -0
  103. package/lib/node/features/custom-server/server.d.ts +2 -0
  104. package/lib/node/features/custom-server/server.js +32 -0
  105. package/lib/node/features/custom-server/shuvi-app.d.ts +11 -0
  106. package/lib/node/features/custom-server/shuvi-app.js +2 -0
  107. package/lib/node/features/filesystem-routes/api/apiRouteHandler.d.ts +50 -0
  108. package/lib/node/features/filesystem-routes/api/apiRouteHandler.js +237 -0
  109. package/lib/node/features/filesystem-routes/api/apiRoutes.d.ts +7 -0
  110. package/lib/node/features/filesystem-routes/api/apiRoutes.js +35 -0
  111. package/lib/node/features/filesystem-routes/api/index.d.ts +3 -0
  112. package/lib/node/features/filesystem-routes/api/index.js +7 -0
  113. package/lib/node/features/filesystem-routes/api/middleware.d.ts +2 -0
  114. package/lib/node/features/filesystem-routes/api/middleware.js +46 -0
  115. package/lib/node/features/filesystem-routes/hooks.d.ts +3 -0
  116. package/lib/node/features/filesystem-routes/hooks.js +6 -0
  117. package/lib/node/features/filesystem-routes/index.d.ts +20 -0
  118. package/lib/node/features/filesystem-routes/index.js +182 -0
  119. package/lib/node/features/filesystem-routes/middleware/index.d.ts +2 -0
  120. package/lib/node/features/filesystem-routes/middleware/index.js +7 -0
  121. package/lib/node/features/filesystem-routes/middleware/middleware.d.ts +2 -0
  122. package/lib/node/features/filesystem-routes/middleware/middleware.js +42 -0
  123. package/lib/node/features/filesystem-routes/middleware/routes.d.ts +9 -0
  124. package/lib/node/features/filesystem-routes/middleware/routes.js +34 -0
  125. package/lib/node/features/filesystem-routes/page/index.d.ts +2 -0
  126. package/lib/node/features/filesystem-routes/page/index.js +21 -0
  127. package/lib/node/features/filesystem-routes/page/routes.d.ts +8 -0
  128. package/lib/node/features/filesystem-routes/page/routes.js +83 -0
  129. package/lib/node/features/filesystem-routes/page/store.d.ts +3 -0
  130. package/lib/node/features/filesystem-routes/page/store.js +10 -0
  131. package/lib/node/features/filesystem-routes/shuvi-app.d.ts +7 -0
  132. package/lib/node/features/filesystem-routes/shuvi-app.js +2 -0
  133. package/lib/node/features/html-render/index.d.ts +16 -0
  134. package/lib/node/features/html-render/index.js +21 -0
  135. package/lib/node/features/html-render/lib/generateFilesByRoutId.d.ts +3 -0
  136. package/lib/node/features/html-render/lib/generateFilesByRoutId.js +13 -0
  137. package/lib/node/features/html-render/lib/getPageMiddleware.d.ts +2 -0
  138. package/lib/node/features/html-render/lib/getPageMiddleware.js +56 -0
  139. package/lib/node/features/html-render/lib/index.d.ts +4 -0
  140. package/lib/node/features/html-render/lib/index.js +23 -0
  141. package/lib/node/features/html-render/lib/pageLoader.d.ts +1 -0
  142. package/lib/node/features/html-render/lib/pageLoader.js +42 -0
  143. package/lib/node/features/html-render/lib/renderToHTML.d.ts +6 -0
  144. package/lib/node/features/html-render/lib/renderToHTML.js +81 -0
  145. package/lib/node/features/html-render/lib/renderer/base.d.ts +17 -0
  146. package/lib/node/features/html-render/lib/renderer/base.js +70 -0
  147. package/lib/node/features/html-render/lib/renderer/htmlTag.d.ts +4 -0
  148. package/lib/node/features/html-render/lib/renderer/htmlTag.js +70 -0
  149. package/lib/node/features/html-render/lib/renderer/index.d.ts +15 -0
  150. package/lib/node/features/html-render/lib/renderer/index.js +48 -0
  151. package/lib/node/features/html-render/lib/renderer/spa.d.ts +5 -0
  152. package/lib/node/features/html-render/lib/renderer/spa.js +26 -0
  153. package/lib/node/features/html-render/lib/renderer/ssr.d.ts +5 -0
  154. package/lib/node/features/html-render/lib/renderer/ssr.js +70 -0
  155. package/lib/node/features/html-render/lib/renderer/types.d.ts +20 -0
  156. package/lib/node/features/html-render/lib/renderer/types.js +2 -0
  157. package/lib/node/features/html-render/lib/viewTemplate.d.ts +5 -0
  158. package/lib/node/features/html-render/lib/viewTemplate.js +37 -0
  159. package/lib/node/features/index.d.ts +28 -0
  160. package/lib/node/features/index.js +25 -0
  161. package/lib/node/features/main/buildHtml.d.ts +8 -0
  162. package/lib/node/features/main/buildHtml.js +64 -0
  163. package/lib/node/features/main/generateResource.d.ts +3 -0
  164. package/lib/node/features/main/generateResource.js +58 -0
  165. package/lib/node/features/main/index.d.ts +3 -0
  166. package/lib/node/features/main/index.js +103 -0
  167. package/lib/node/features/middlewares.d.ts +4 -0
  168. package/lib/node/features/middlewares.js +22 -0
  169. package/lib/node/features/model/index.d.ts +20 -0
  170. package/lib/node/features/model/index.js +54 -0
  171. package/lib/node/features/model/runtime.d.ts +8 -0
  172. package/lib/node/features/model/runtime.js +47 -0
  173. package/lib/node/features/model/server.d.ts +3 -0
  174. package/lib/node/features/model/server.js +12 -0
  175. package/lib/node/features/model/shuvi-app.d.ts +6 -0
  176. package/lib/node/features/model/shuvi-app.js +2 -0
  177. package/lib/node/features/on-demand-compile-page/emptyComponent.d.ts +1 -0
  178. package/lib/node/features/on-demand-compile-page/emptyComponent.js +7 -0
  179. package/lib/node/features/on-demand-compile-page/index.d.ts +14 -0
  180. package/lib/node/features/on-demand-compile-page/index.js +36 -0
  181. package/lib/node/features/on-demand-compile-page/onDemandRouteManager.d.ts +11 -0
  182. package/lib/node/features/on-demand-compile-page/onDemandRouteManager.js +104 -0
  183. package/lib/node/index.d.ts +4 -0
  184. package/lib/node/index.js +39 -0
  185. package/lib/{paths.d.ts → node/paths.d.ts} +1 -2
  186. package/lib/node/paths.js +16 -0
  187. package/lib/node/shuvi-node-extensions.d.ts +17 -0
  188. package/lib/node/shuvi-node-extensions.js +2 -0
  189. package/lib/node/targets/react/bundler/index.d.ts +15 -0
  190. package/lib/node/targets/react/bundler/index.js +102 -0
  191. package/lib/node/targets/react/index.d.ts +30 -0
  192. package/lib/node/targets/react/index.js +28 -0
  193. package/lib/node/targets/react/redox-react/RedoxWrapper.d.ts +8 -0
  194. package/lib/node/targets/react/redox-react/RedoxWrapper.js +37 -0
  195. package/lib/node/targets/react/redox-react/index.d.ts +17 -0
  196. package/lib/node/targets/react/redox-react/index.js +50 -0
  197. package/lib/node/targets/react/redox-react/runtime.d.ts +2 -0
  198. package/lib/node/targets/react/redox-react/runtime.js +18 -0
  199. package/lib/shared/appTypes.d.ts +15 -0
  200. package/lib/shared/appTypes.js +2 -0
  201. package/lib/shared/index.d.ts +4 -0
  202. package/lib/shared/index.js +20 -0
  203. package/lib/shared/renderTypes.d.ts +44 -0
  204. package/lib/shared/renderTypes.js +2 -0
  205. package/lib/shared/routeTypes.d.ts +47 -0
  206. package/lib/shared/routeTypes.js +2 -0
  207. package/lib/shared/serverTypes.d.ts +6 -0
  208. package/lib/shared/serverTypes.js +2 -0
  209. package/package.json +71 -17
  210. package/shuvi-app-extensions.d.ts +36 -0
  211. package/lib/index.d.ts +0 -3
  212. package/lib/index.js +0 -44
  213. package/lib/paths.js +0 -7
  214. package/shuvi-app/application/client/create-application-factory.d.ts +0 -3
  215. package/shuvi-app/application/client/create-application-factory.js +0 -70
  216. package/shuvi-app/application/client/create-application-history-browser.d.ts +0 -1
  217. package/shuvi-app/application/client/create-application-history-browser.js +0 -3
  218. package/shuvi-app/application/client/create-application-history-hash.d.ts +0 -1
  219. package/shuvi-app/application/client/create-application-history-hash.js +0 -3
  220. package/shuvi-app/application/client/create-application-history-memory.d.ts +0 -1
  221. package/shuvi-app/application/client/create-application-history-memory.js +0 -3
  222. package/shuvi-app/application/server/create-application-spa.d.ts +0 -2
  223. package/shuvi-app/application/server/create-application-spa.js +0 -8
  224. package/shuvi-app/application/server/create-application.d.ts +0 -2
  225. package/shuvi-app/application/server/create-application.js +0 -25
  226. package/shuvi-app/entry/client/index.d.ts +0 -1
  227. package/shuvi-app/entry/client/index.js +0 -11
  228. package/shuvi-app/entry/client/run.prod.js +0 -3
  229. package/shuvi-app/entry/client/setup-app.d.ts +0 -3
  230. package/shuvi-app/entry/client/setup-app.js +0 -38
  231. package/shuvi-app/entry/client/setup-env.js +0 -27
  232. package/shuvi-app/entry/server/index.d.ts +0 -6
  233. package/shuvi-app/entry/server/index.js +0 -7
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateRoutesContent = exports.normalizeApiRoutes = exports.serializeApiRoutes = void 0;
4
+ const file_1 = require("@shuvi/utils/lib/file");
5
+ function serializeApiRoutes(apiRoutes) {
6
+ let res = '';
7
+ for (let index = 0; index < apiRoutes.length; index++) {
8
+ const { api, path } = apiRoutes[index];
9
+ let strRoute = `\n{
10
+ path: "${path}",
11
+ ${api ? `api: require("${api}"),` : ''}
12
+ },`;
13
+ res += strRoute;
14
+ }
15
+ return `[${res}]`;
16
+ }
17
+ exports.serializeApiRoutes = serializeApiRoutes;
18
+ function normalizeApiRoutes(apiRoutes, option) {
19
+ const res = [];
20
+ for (let index = 0; index < apiRoutes.length; index++) {
21
+ const apiRoute = Object.assign({}, apiRoutes[index]);
22
+ if (apiRoute.api) {
23
+ apiRoute.api = (0, file_1.normalizePath)(apiRoute.api, option.apisDir);
24
+ }
25
+ res.push(apiRoute);
26
+ }
27
+ return res;
28
+ }
29
+ exports.normalizeApiRoutes = normalizeApiRoutes;
30
+ const generateRoutesContent = (apiRoutes, apisDir) => {
31
+ const normalizedRoutes = normalizeApiRoutes(apiRoutes, { apisDir });
32
+ const serialized = serializeApiRoutes(normalizedRoutes);
33
+ return `export default ${serialized}`;
34
+ };
35
+ exports.generateRoutesContent = generateRoutesContent;
@@ -0,0 +1,3 @@
1
+ export { middleware } from './middleware';
2
+ export { generateRoutesContent, IApiRouteConfig } from './apiRoutes';
3
+ export { IApiRequestHandler } from './apiRouteHandler';
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateRoutesContent = exports.middleware = void 0;
4
+ var middleware_1 = require("./middleware");
5
+ Object.defineProperty(exports, "middleware", { enumerable: true, get: function () { return middleware_1.middleware; } });
6
+ var apiRoutes_1 = require("./apiRoutes");
7
+ Object.defineProperty(exports, "generateRoutesContent", { enumerable: true, get: function () { return apiRoutes_1.generateRoutesContent; } });
@@ -0,0 +1,2 @@
1
+ import { IServerPluginContext, IRequestHandlerWithNext } from '@shuvi/service';
2
+ export declare function middleware(ctx: IServerPluginContext): IRequestHandlerWithNext;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.middleware = void 0;
13
+ const router_1 = require("@shuvi/router");
14
+ const resources_1 = require("@shuvi/service/lib/resources");
15
+ const apiRouteHandler_1 = require("./apiRouteHandler");
16
+ function middleware(ctx) {
17
+ return function (req, res, next) {
18
+ return __awaiter(this, void 0, void 0, function* () {
19
+ const { apiRoutes } = resources_1.server;
20
+ const commonApiConfig = ctx.config.apiConfig || {};
21
+ let tempApiModule;
22
+ for (const { path, api } of apiRoutes) {
23
+ const match = (0, router_1.matchPathname)(path, req.pathname);
24
+ if (match) {
25
+ req.params = match.params;
26
+ tempApiModule = api;
27
+ break;
28
+ }
29
+ }
30
+ if (tempApiModule) {
31
+ try {
32
+ const { config: { apiConfig = {} } = {}, default: resolver } = tempApiModule;
33
+ let overridesConfig = Object.assign(Object.assign({}, commonApiConfig), apiConfig);
34
+ yield (0, apiRouteHandler_1.apiRouteHandler)(req, res, resolver, overridesConfig);
35
+ }
36
+ catch (error) {
37
+ next(error);
38
+ }
39
+ }
40
+ else {
41
+ next();
42
+ }
43
+ });
44
+ };
45
+ }
46
+ exports.middleware = middleware;
@@ -0,0 +1,3 @@
1
+ import { IUserRouteConfig, IMiddlewareRouteConfig } from '@shuvi/service';
2
+ export declare const addRoutes: import("@shuvi/hook").AsyncParallelHook<void, void, IUserRouteConfig[]>;
3
+ export declare const addMiddlewareRoutes: import("@shuvi/hook").AsyncParallelHook<void, void, IMiddlewareRouteConfig[]>;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addMiddlewareRoutes = exports.addRoutes = void 0;
4
+ const hook_1 = require("@shuvi/hook");
5
+ exports.addRoutes = (0, hook_1.createAsyncParallelHook)();
6
+ exports.addMiddlewareRoutes = (0, hook_1.createAsyncParallelHook)();
@@ -0,0 +1,20 @@
1
+ import { getRoutes } from './page';
2
+ import { middleware as getMiddlewareMiddleware } from './middleware';
3
+ import { IApiRequestHandler, middleware as getApiMiddleware } from './api';
4
+ export { IApiRequestHandler, getRoutes, getMiddlewareMiddleware, getApiMiddleware };
5
+ declare const _default: {
6
+ core: import("@shuvi/hook").IPluginInstance<{
7
+ afterInit: import("@shuvi/hook").AsyncParallelHook<void, void, void>;
8
+ afterBuild: import("@shuvi/hook").AsyncParallelHook<void, void, void>;
9
+ afterDestroy: import("@shuvi/hook").AsyncParallelHook<void, void, void>;
10
+ afterBundlerDone: import("@shuvi/hook").AsyncParallelHook<import("@shuvi/service/lib/core/lifecycleTypes").BundlerDoneExtra, void, void>;
11
+ afterBundlerTargetDone: import("@shuvi/hook").AsyncParallelHook<import("@shuvi/service/lib/core/lifecycleTypes").BundlerTargetDoneExtra, void, void>;
12
+ configWebpack: import("@shuvi/hook").AsyncSeriesWaterfallHook<import("@shuvi/service/lib/core/lifecycleTypes").WebpackChainType, import("@shuvi/service/lib/core/lifecycleTypes").ConfigWebpackAssistant>;
13
+ addExtraTarget: import("@shuvi/hook").AsyncParallelHook<import("@shuvi/service/lib/core/lifecycleTypes").ExtraTargetAssistant, void, import("@shuvi/service/lib/core/lifecycleTypes").TargetChain>;
14
+ addResource: import("@shuvi/hook").AsyncParallelHook<void, void, import("@shuvi/service/lib/core/lifecycleTypes").Resources | import("@shuvi/service/lib/core/lifecycleTypes").Resources[]>;
15
+ addRuntimeFile: import("@shuvi/hook").AsyncParallelHook<void, import("@shuvi/service/lib/core/lifecycleTypes").AddRuntimeFileUtils, import("@shuvi/service/lib/project/index").FileOptions<any, any> | import("@shuvi/service/lib/project/index").FileOptions<any, any>[]>;
16
+ addRuntimeService: import("@shuvi/hook").AsyncParallelHook<void, void, import("@shuvi/service/lib/core/lifecycleTypes").RuntimeService | import("@shuvi/service/lib/core/lifecycleTypes").RuntimeService[]>;
17
+ } & import("@shuvi/runtime").CustomCorePluginHooks, import("@shuvi/service").IPluginContext>;
18
+ types: string;
19
+ };
20
+ export default _default;
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ Object.defineProperty(exports, "__esModule", { value: true });
35
+ exports.getApiMiddleware = exports.getMiddlewareMiddleware = exports.getRoutes = void 0;
36
+ const fs = __importStar(require("fs"));
37
+ const path = __importStar(require("path"));
38
+ const build_loaders_1 = require("@shuvi/toolpack/lib/utils/build-loaders");
39
+ const service_1 = require("@shuvi/service");
40
+ const node_1 = require("@shuvi/platform-shared/node");
41
+ const paths_1 = require("../../paths");
42
+ const lib_1 = require("../html-render/lib");
43
+ const hooks_1 = require("./hooks");
44
+ const page_1 = require("./page");
45
+ Object.defineProperty(exports, "getRoutes", { enumerable: true, get: function () { return page_1.getRoutes; } });
46
+ const middleware_1 = require("./middleware");
47
+ Object.defineProperty(exports, "getMiddlewareMiddleware", { enumerable: true, get: function () { return middleware_1.middleware; } });
48
+ const api_1 = require("./api");
49
+ Object.defineProperty(exports, "getApiMiddleware", { enumerable: true, get: function () { return api_1.middleware; } });
50
+ const plugin = (0, service_1.createPlugin)({
51
+ setup: ({ addHooks }) => {
52
+ addHooks({ addRoutes: hooks_1.addRoutes, addMiddlewareRoutes: hooks_1.addMiddlewareRoutes });
53
+ },
54
+ addRuntimeFile: ({ defineFile }, context) => __awaiter(void 0, void 0, void 0, function* () {
55
+ const { config: { routes: pageRoutes, middlewareRoutes, apiRoutes }, paths, pluginRunner, phase } = context;
56
+ const isBuildPhase = phase === 'PHASE_PRODUCTION_BUILD';
57
+ const pageRoutesFile = defineFile({
58
+ name: 'routes.js',
59
+ content: () => __awaiter(void 0, void 0, void 0, function* () {
60
+ let routes;
61
+ const hasConfigRoutes = Array.isArray(pageRoutes);
62
+ if (hasConfigRoutes) {
63
+ routes = pageRoutes;
64
+ }
65
+ else {
66
+ const { routes: _routes, warnings } = yield (0, node_1.getPageRoutes)(paths.routesDir);
67
+ if (isBuildPhase) {
68
+ warnings.forEach(warning => {
69
+ console.warn(warning.msg);
70
+ });
71
+ }
72
+ routes = _routes;
73
+ }
74
+ const extraRoutes = (yield pluginRunner.addRoutes()).flat();
75
+ const normalizedRoutes = (0, page_1.normalizeRoutes)(
76
+ // user routes come later
77
+ extraRoutes.concat(routes), paths.routesDir);
78
+ (0, page_1.setRoutes)(normalizedRoutes);
79
+ return (0, page_1.generateRoutesContent)(normalizedRoutes);
80
+ }),
81
+ dependencies: [paths.routesDir]
82
+ });
83
+ const apiRoutesFile = defineFile({
84
+ name: 'apiRoutes.js',
85
+ content: () => __awaiter(void 0, void 0, void 0, function* () {
86
+ let routes = [];
87
+ const hasConfigRoutes = Array.isArray(apiRoutes);
88
+ if (hasConfigRoutes) {
89
+ routes = apiRoutes;
90
+ }
91
+ else {
92
+ const { routes: _routes, warnings } = yield (0, node_1.getApiRoutes)(paths.routesDir);
93
+ if (isBuildPhase) {
94
+ warnings.forEach(warning => {
95
+ console.warn(warning);
96
+ });
97
+ }
98
+ routes = _routes;
99
+ }
100
+ return (0, api_1.generateRoutesContent)(routes, paths.routesDir);
101
+ }),
102
+ dependencies: [paths.routesDir]
103
+ });
104
+ const middlewareRoutesFile = defineFile({
105
+ name: 'middlewareRoutes.js',
106
+ content: () => __awaiter(void 0, void 0, void 0, function* () {
107
+ let routes;
108
+ const hasConfigRoutes = Array.isArray(middlewareRoutes);
109
+ if (hasConfigRoutes) {
110
+ routes = middlewareRoutes;
111
+ }
112
+ else {
113
+ const { routes: _routes, warnings } = yield (0, node_1.getMiddlewareRoutes)(paths.routesDir);
114
+ if (isBuildPhase) {
115
+ warnings.forEach(warning => {
116
+ console.warn(warning);
117
+ });
118
+ }
119
+ routes = _routes;
120
+ }
121
+ const extraRoutes = (yield pluginRunner.addMiddlewareRoutes()).flat();
122
+ return (0, middleware_1.generateRoutesContent)(extraRoutes.concat(routes), {
123
+ baseDir: paths.routesDir
124
+ });
125
+ }),
126
+ dependencies: [paths.routesDir]
127
+ });
128
+ const loadersFile = defineFile({
129
+ name: 'loaders.js',
130
+ content: () => __awaiter(void 0, void 0, void 0, function* () {
131
+ const routes = (0, page_1.getRoutes)();
132
+ const loaders = {};
133
+ const traverseRoutes = (routes) => {
134
+ routes.forEach(r => {
135
+ const { component, id, children } = r;
136
+ if (component && id) {
137
+ const hasLoader = (0, lib_1.ifComponentHasLoader)(component);
138
+ if (hasLoader) {
139
+ loaders[id] = component;
140
+ }
141
+ }
142
+ if (children) {
143
+ traverseRoutes(children);
144
+ }
145
+ });
146
+ };
147
+ traverseRoutes(routes);
148
+ let imports = '';
149
+ let exports = '';
150
+ Object.entries(loaders).forEach((loader, index) => {
151
+ const [id, component] = loader;
152
+ imports += `import { loader as loader_${index} } from '${component}'\n`;
153
+ exports += `'${id}': loader_${index},\n`;
154
+ });
155
+ return `${imports} export default {\n ${exports}\n}`;
156
+ }),
157
+ dependencies: [pageRoutesFile]
158
+ });
159
+ const loadersFileName = path.join(context.paths.appDir, 'files', 'loaders.js');
160
+ const pageLoadersFile = defineFile({
161
+ name: 'page-loaders.js',
162
+ content: () => __awaiter(void 0, void 0, void 0, function* () {
163
+ if (fs.existsSync(loadersFileName)) {
164
+ return yield (0, build_loaders_1.buildToString)(loadersFileName);
165
+ }
166
+ return '';
167
+ }),
168
+ dependencies: [loadersFile]
169
+ });
170
+ return [
171
+ pageRoutesFile,
172
+ apiRoutesFile,
173
+ middlewareRoutesFile,
174
+ loadersFile,
175
+ pageLoadersFile
176
+ ];
177
+ })
178
+ });
179
+ exports.default = {
180
+ core: plugin,
181
+ types: (0, paths_1.resolvePkgFile)('lib/node/features/filesystem-routes/shuvi-app.d.ts')
182
+ };
@@ -0,0 +1,2 @@
1
+ export { middleware } from './middleware';
2
+ export { generateRoutesContent, IMiddlewareRouteConfig } from './routes';
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateRoutesContent = exports.middleware = void 0;
4
+ var middleware_1 = require("./middleware");
5
+ Object.defineProperty(exports, "middleware", { enumerable: true, get: function () { return middleware_1.middleware; } });
6
+ var routes_1 = require("./routes");
7
+ Object.defineProperty(exports, "generateRoutesContent", { enumerable: true, get: function () { return routes_1.generateRoutesContent; } });
@@ -0,0 +1,2 @@
1
+ import { IServerPluginContext, IRequestHandlerWithNext } from '@shuvi/service';
2
+ export declare function middleware(_api: IServerPluginContext): IRequestHandlerWithNext;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.middleware = void 0;
13
+ const router_1 = require("@shuvi/router");
14
+ const resources_1 = require("@shuvi/service/lib/resources");
15
+ function middleware(_api) {
16
+ return function (req, res, next) {
17
+ return __awaiter(this, void 0, void 0, function* () {
18
+ const { middlewareRoutes = [] } = resources_1.server;
19
+ // match path for get middlewares
20
+ let middlewares = [];
21
+ for (let i = 0; i < middlewareRoutes.length; i++) {
22
+ const middlewareRoute = middlewareRoutes[i];
23
+ const match = (0, router_1.matchPathname)(middlewareRoute.path, req.pathname);
24
+ if (match) {
25
+ req.params = match.params;
26
+ middlewares.push(middlewareRoutes[i].middleware.default);
27
+ }
28
+ }
29
+ // run middlewares
30
+ let i = 0;
31
+ const runNext = () => runMiddleware(middlewares[++i]);
32
+ const runMiddleware = (middleware) => __awaiter(this, void 0, void 0, function* () {
33
+ if (i === middlewares.length) {
34
+ return next();
35
+ }
36
+ yield middleware(req, res, runNext);
37
+ });
38
+ return yield runMiddleware(middlewares[i]);
39
+ });
40
+ };
41
+ }
42
+ exports.middleware = middleware;
@@ -0,0 +1,9 @@
1
+ import { IMiddlewareRouteConfig } from '@shuvi/platform-shared/node';
2
+ export { IMiddlewareRouteConfig };
3
+ export declare function normalizeMiddlewareRoutes(middlewareRoutes: IMiddlewareRouteConfig[], option: {
4
+ baseDir: string;
5
+ }): IMiddlewareRouteConfig[];
6
+ export declare function serializeMiddlewareRoutes(middlewareRoutes: IMiddlewareRouteConfig[]): string;
7
+ export declare function generateRoutesContent(rawRoutes: IMiddlewareRouteConfig[], { baseDir }: {
8
+ baseDir: string;
9
+ }): string;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateRoutesContent = exports.serializeMiddlewareRoutes = exports.normalizeMiddlewareRoutes = void 0;
4
+ const file_1 = require("@shuvi/utils/lib/file");
5
+ function normalizeMiddlewareRoutes(middlewareRoutes, option) {
6
+ const res = [];
7
+ for (let index = 0; index < middlewareRoutes.length; index++) {
8
+ const middlewareRoute = Object.assign({}, middlewareRoutes[index]);
9
+ if (middlewareRoute.middleware) {
10
+ middlewareRoute.middleware = (0, file_1.normalizePath)(middlewareRoute.middleware, option.baseDir);
11
+ }
12
+ res.push(middlewareRoute);
13
+ }
14
+ return res;
15
+ }
16
+ exports.normalizeMiddlewareRoutes = normalizeMiddlewareRoutes;
17
+ function serializeMiddlewareRoutes(middlewareRoutes) {
18
+ let res = '';
19
+ for (let index = 0; index < middlewareRoutes.length; index++) {
20
+ const { middleware, path } = middlewareRoutes[index];
21
+ let strRoute = `\n{
22
+ path: "${path}",
23
+ ${middleware ? `middleware: require("${middleware}"),` : ''}
24
+ },`;
25
+ res += strRoute;
26
+ }
27
+ return `[${res}]`;
28
+ }
29
+ exports.serializeMiddlewareRoutes = serializeMiddlewareRoutes;
30
+ function generateRoutesContent(rawRoutes, { baseDir }) {
31
+ const serialized = serializeMiddlewareRoutes(normalizeMiddlewareRoutes(rawRoutes, { baseDir }));
32
+ return `export default ${serialized}`;
33
+ }
34
+ exports.generateRoutesContent = generateRoutesContent;
@@ -0,0 +1,2 @@
1
+ export { normalizeRoutes, generateRoutesContent, IUserRouteConfig } from './routes';
2
+ export * from './store';
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.generateRoutesContent = exports.normalizeRoutes = void 0;
18
+ var routes_1 = require("./routes");
19
+ Object.defineProperty(exports, "normalizeRoutes", { enumerable: true, get: function () { return routes_1.normalizeRoutes; } });
20
+ Object.defineProperty(exports, "generateRoutesContent", { enumerable: true, get: function () { return routes_1.generateRoutesContent; } });
21
+ __exportStar(require("./store"), exports);
@@ -0,0 +1,8 @@
1
+ import { IUserRouteConfig, IRouteConfig } from '@shuvi/service';
2
+ export { IUserRouteConfig };
3
+ /**
4
+ * returns JSON string of IRawPageRouteRecord
5
+ */
6
+ export declare function serializeRoutes(routes: IRouteConfig[]): string;
7
+ export declare function normalizeRoutes(routes: (IUserRouteConfig | IUserRouteConfig)[], componentDir: string, parentPath?: string): IRouteConfig[];
8
+ export declare const generateRoutesContent: (routes: IRouteConfig[]) => string;
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.generateRoutesContent = exports.normalizeRoutes = exports.serializeRoutes = void 0;
15
+ const crypto_1 = require("crypto");
16
+ const constants_1 = require("@shuvi/shared/lib/constants");
17
+ const file_1 = require("@shuvi/utils/lib/file");
18
+ function genRouteId(filepath) {
19
+ return (0, crypto_1.createHash)('md4').update(filepath).digest('hex').substr(0, 4);
20
+ }
21
+ /**
22
+ * returns JSON string of IRawPageRouteRecord
23
+ */
24
+ function serializeRoutes(routes) {
25
+ let res = '';
26
+ for (let index = 0; index < routes.length; index++) {
27
+ const _a = routes[index], { children: childRoutes } = _a, route = __rest(_a, ["children"]);
28
+ const id = route.id;
29
+ let strRoute = '';
30
+ const keys = Object.keys(route);
31
+ for (let index = 0; index < keys.length; index++) {
32
+ const key = keys[index];
33
+ if (key === 'component') {
34
+ const { component } = route;
35
+ const componentSource = component;
36
+ const componentSourceWithAffix = `${componentSource}?${constants_1.ROUTE_RESOURCE_QUERYSTRING}`;
37
+ // `webpackExports` works with production and optimization.minimize, check compiled dist
38
+ strRoute +=
39
+ `__componentSourceWithAffix__: "${componentSourceWithAffix}",
40
+ __componentSource__: "${componentSource}",
41
+ __import__: () => import(
42
+ /* webpackChunkName: "page-${id}" */
43
+ /* webpackExports: "default" */
44
+ "${componentSourceWithAffix}"),
45
+ __resolveWeak__: () => [require.resolveWeak("${componentSourceWithAffix}")]`.trim();
46
+ }
47
+ else {
48
+ strRoute += `${key}: ${JSON.stringify(route[key])}`;
49
+ }
50
+ strRoute += `,\n`;
51
+ }
52
+ if (childRoutes && childRoutes.length > 0) {
53
+ strRoute += `children: ${serializeRoutes(childRoutes)},\n`;
54
+ }
55
+ res += `{${strRoute}},\n`;
56
+ }
57
+ return `[${res}]`;
58
+ }
59
+ exports.serializeRoutes = serializeRoutes;
60
+ function normalizeRoutes(routes, componentDir, parentPath = '') {
61
+ const res = [];
62
+ for (let index = 0; index < routes.length; index++) {
63
+ const route = Object.assign({}, routes[index]);
64
+ const pathWithoutSlash = route.path.replace(/^\//, '').replace(/\/$/, '');
65
+ const fullpath = parentPath + '/' + pathWithoutSlash;
66
+ if (route.component) {
67
+ route.component = (0, file_1.normalizePath)(route.component, componentDir);
68
+ }
69
+ // todo: add origin file to gen id
70
+ route.id = genRouteId(`${fullpath}@${route.component}`);
71
+ if (route.children && route.children.length > 0) {
72
+ route.children = normalizeRoutes(route.children, componentDir, fullpath);
73
+ }
74
+ res.push(route);
75
+ }
76
+ return res;
77
+ }
78
+ exports.normalizeRoutes = normalizeRoutes;
79
+ const generateRoutesContent = (routes) => {
80
+ const serialized = serializeRoutes(routes);
81
+ return `export default ${serialized}`;
82
+ };
83
+ exports.generateRoutesContent = generateRoutesContent;
@@ -0,0 +1,3 @@
1
+ import { IRouteConfig } from '@shuvi/service';
2
+ export declare const setRoutes: (newRoutes: IRouteConfig[]) => void;
3
+ export declare const getRoutes: () => IRouteConfig[];
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRoutes = exports.setRoutes = void 0;
4
+ let routes = [];
5
+ const setRoutes = (newRoutes) => {
6
+ routes = newRoutes;
7
+ };
8
+ exports.setRoutes = setRoutes;
9
+ const getRoutes = () => routes;
10
+ exports.getRoutes = getRoutes;
@@ -0,0 +1,7 @@
1
+ import { addRoutes, addMiddlewareRoutes } from './hooks';
2
+ declare module '@shuvi/runtime' {
3
+ interface CustomCorePluginHooks {
4
+ addRoutes: typeof addRoutes;
5
+ addMiddlewareRoutes: typeof addMiddlewareRoutes;
6
+ }
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,16 @@
1
+ export { getPageMiddleware, IHtmlDocument, ITemplateData, IViewServer, IViewClient } from './lib';
2
+ declare const _default: {
3
+ core: import("@shuvi/hook").IPluginInstance<{
4
+ afterInit: import("@shuvi/hook").AsyncParallelHook<void, void, void>;
5
+ afterBuild: import("@shuvi/hook").AsyncParallelHook<void, void, void>;
6
+ afterDestroy: import("@shuvi/hook").AsyncParallelHook<void, void, void>;
7
+ afterBundlerDone: import("@shuvi/hook").AsyncParallelHook<import("@shuvi/service/lib/core/lifecycleTypes").BundlerDoneExtra, void, void>;
8
+ afterBundlerTargetDone: import("@shuvi/hook").AsyncParallelHook<import("@shuvi/service/lib/core/lifecycleTypes").BundlerTargetDoneExtra, void, void>;
9
+ configWebpack: import("@shuvi/hook").AsyncSeriesWaterfallHook<import("@shuvi/service/lib/core/lifecycleTypes").WebpackChainType, import("@shuvi/service/lib/core/lifecycleTypes").ConfigWebpackAssistant>;
10
+ addExtraTarget: import("@shuvi/hook").AsyncParallelHook<import("@shuvi/service/lib/core/lifecycleTypes").ExtraTargetAssistant, void, import("@shuvi/service/lib/core/lifecycleTypes").TargetChain>;
11
+ addResource: import("@shuvi/hook").AsyncParallelHook<void, void, import("@shuvi/service/lib/core/lifecycleTypes").Resources | import("@shuvi/service/lib/core/lifecycleTypes").Resources[]>;
12
+ addRuntimeFile: import("@shuvi/hook").AsyncParallelHook<void, import("@shuvi/service/lib/core/lifecycleTypes").AddRuntimeFileUtils, import("@shuvi/service/lib/project/index").FileOptions<any, any> | import("@shuvi/service/lib/project/index").FileOptions<any, any>[]>;
13
+ addRuntimeService: import("@shuvi/hook").AsyncParallelHook<void, void, import("@shuvi/service/lib/core/lifecycleTypes").RuntimeService | import("@shuvi/service/lib/core/lifecycleTypes").RuntimeService[]>;
14
+ } & import("@shuvi/runtime").CustomCorePluginHooks, import("@shuvi/service").IPluginContext>;
15
+ };
16
+ export default _default;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPageMiddleware = void 0;
4
+ const service_1 = require("@shuvi/service");
5
+ var lib_1 = require("./lib");
6
+ Object.defineProperty(exports, "getPageMiddleware", { enumerable: true, get: function () { return lib_1.getPageMiddleware; } });
7
+ const core = (0, service_1.createPlugin)({
8
+ addRuntimeFile: ({ defineFile }, context) => {
9
+ const { config: { router: { history } } } = context;
10
+ const routerConfigFile = defineFile({
11
+ name: 'routerConfig.js',
12
+ content: () => {
13
+ return `export const historyMode = "${history}";`;
14
+ }
15
+ });
16
+ return [routerConfigFile];
17
+ }
18
+ });
19
+ exports.default = {
20
+ core
21
+ };
@@ -0,0 +1,3 @@
1
+ import { IManifest } from '@shuvi/toolpack/lib/webpack/types';
2
+ import { IRouteRecord } from '@shuvi/router';
3
+ export default function generateFilesByRoutId(assetMap: IManifest, routes: IRouteRecord[]): Record<string, string[]>;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function generateFilesByRoutId(assetMap, routes) {
4
+ let filesByRoutId = {};
5
+ const loadable = assetMap.loadble;
6
+ routes.forEach(({ id, __componentSourceWithAffix__ }) => {
7
+ if (id && __componentSourceWithAffix__) {
8
+ filesByRoutId[id] = loadable[__componentSourceWithAffix__].files;
9
+ }
10
+ });
11
+ return filesByRoutId;
12
+ }
13
+ exports.default = generateFilesByRoutId;
@@ -0,0 +1,2 @@
1
+ import { IRequestHandlerWithNext, IServerPluginContext } from '@shuvi/service';
2
+ export declare function getPageMiddleware(api: IServerPluginContext): IRequestHandlerWithNext;