You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			123 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			JavaScript
		
	
			
		
		
	
	
			123 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			JavaScript
		
	
| "use strict";
 | |
| Object.defineProperty(exports, "__esModule", {
 | |
|     value: true
 | |
| });
 | |
| 0 && (module.exports = {
 | |
|     loadManifestWithRetries: null,
 | |
|     evalManifestWithRetries: null,
 | |
|     loadComponents: null
 | |
| });
 | |
| function _export(target, all) {
 | |
|     for(var name in all)Object.defineProperty(target, name, {
 | |
|         enumerable: true,
 | |
|         get: all[name]
 | |
|     });
 | |
| }
 | |
| _export(exports, {
 | |
|     loadManifestWithRetries: function() {
 | |
|         return loadManifestWithRetries;
 | |
|     },
 | |
|     evalManifestWithRetries: function() {
 | |
|         return evalManifestWithRetries;
 | |
|     },
 | |
|     loadComponents: function() {
 | |
|         return loadComponents;
 | |
|     }
 | |
| });
 | |
| const _constants = require("../shared/lib/constants");
 | |
| const _path = require("path");
 | |
| const _require = require("./require");
 | |
| const _interopdefault = require("../lib/interop-default");
 | |
| const _tracer = require("./lib/trace/tracer");
 | |
| const _constants1 = require("./lib/trace/constants");
 | |
| const _loadmanifest = require("./load-manifest");
 | |
| const _wait = require("../lib/wait");
 | |
| const _actionencryptionutils = require("./app-render/action-encryption-utils");
 | |
| const _actionutils = require("./app-render/action-utils");
 | |
| async function loadManifestWithRetries(manifestPath, attempts = 3) {
 | |
|     while(true){
 | |
|         try {
 | |
|             return (0, _loadmanifest.loadManifest)(manifestPath);
 | |
|         } catch (err) {
 | |
|             attempts--;
 | |
|             if (attempts <= 0) throw err;
 | |
|             await (0, _wait.wait)(100);
 | |
|         }
 | |
|     }
 | |
| }
 | |
| async function evalManifestWithRetries(manifestPath, attempts = 3) {
 | |
|     while(true){
 | |
|         try {
 | |
|             return (0, _loadmanifest.evalManifest)(manifestPath);
 | |
|         } catch (err) {
 | |
|             attempts--;
 | |
|             if (attempts <= 0) throw err;
 | |
|             await (0, _wait.wait)(100);
 | |
|         }
 | |
|     }
 | |
| }
 | |
| async function loadClientReferenceManifest(manifestPath, entryName) {
 | |
|     try {
 | |
|         const context = await evalManifestWithRetries(manifestPath);
 | |
|         return context.__RSC_MANIFEST[entryName];
 | |
|     } catch (err) {
 | |
|         return undefined;
 | |
|     }
 | |
| }
 | |
| async function loadComponentsImpl({ distDir, page, isAppPath }) {
 | |
|     let DocumentMod = {};
 | |
|     let AppMod = {};
 | |
|     if (!isAppPath) {
 | |
|         [DocumentMod, AppMod] = await Promise.all([
 | |
|             Promise.resolve().then(()=>(0, _require.requirePage)("/_document", distDir, false)),
 | |
|             Promise.resolve().then(()=>(0, _require.requirePage)("/_app", distDir, false))
 | |
|         ]);
 | |
|     }
 | |
|     // Make sure to avoid loading the manifest for Route Handlers
 | |
|     const hasClientManifest = isAppPath && (page.endsWith("/page") || page === "/not-found" || page === "/_not-found");
 | |
|     // Load the manifest files first
 | |
|     const [buildManifest, reactLoadableManifest, clientReferenceManifest, serverActionsManifest] = await Promise.all([
 | |
|         loadManifestWithRetries((0, _path.join)(distDir, _constants.BUILD_MANIFEST)),
 | |
|         loadManifestWithRetries((0, _path.join)(distDir, _constants.REACT_LOADABLE_MANIFEST)),
 | |
|         hasClientManifest ? loadClientReferenceManifest((0, _path.join)(distDir, "server", "app", page.replace(/%5F/g, "_") + "_" + _constants.CLIENT_REFERENCE_MANIFEST + ".js"), page.replace(/%5F/g, "_")) : undefined,
 | |
|         isAppPath ? loadManifestWithRetries((0, _path.join)(distDir, "server", _constants.SERVER_REFERENCE_MANIFEST + ".json")).catch(()=>null) : null
 | |
|     ]);
 | |
|     // Before requring the actual page module, we have to set the reference manifests
 | |
|     // to our global store so Server Action's encryption util can access to them
 | |
|     // at the top level of the page module.
 | |
|     if (serverActionsManifest && clientReferenceManifest) {
 | |
|         (0, _actionencryptionutils.setReferenceManifestsSingleton)({
 | |
|             clientReferenceManifest,
 | |
|             serverActionsManifest,
 | |
|             serverModuleMap: (0, _actionutils.createServerModuleMap)({
 | |
|                 serverActionsManifest,
 | |
|                 pageName: page
 | |
|             })
 | |
|         });
 | |
|     }
 | |
|     const ComponentMod = await Promise.resolve().then(()=>(0, _require.requirePage)(page, distDir, isAppPath));
 | |
|     const Component = (0, _interopdefault.interopDefault)(ComponentMod);
 | |
|     const Document = (0, _interopdefault.interopDefault)(DocumentMod);
 | |
|     const App = (0, _interopdefault.interopDefault)(AppMod);
 | |
|     const { getServerSideProps, getStaticProps, getStaticPaths, routeModule } = ComponentMod;
 | |
|     return {
 | |
|         App,
 | |
|         Document,
 | |
|         Component,
 | |
|         buildManifest,
 | |
|         reactLoadableManifest,
 | |
|         pageConfig: ComponentMod.config || {},
 | |
|         ComponentMod,
 | |
|         getServerSideProps,
 | |
|         getStaticProps,
 | |
|         getStaticPaths,
 | |
|         clientReferenceManifest,
 | |
|         serverActionsManifest,
 | |
|         isAppPath,
 | |
|         page,
 | |
|         routeModule
 | |
|     };
 | |
| }
 | |
| const loadComponents = (0, _tracer.getTracer)().wrap(_constants1.LoadComponentsSpan.loadComponents, loadComponentsImpl);
 | |
| 
 | |
| //# sourceMappingURL=load-components.js.map
 |