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.
		
		
		
		
		
			
		
			
	
	
		
			295 lines
		
	
	
		
			9.3 KiB
		
	
	
	
		
			JavaScript
		
	
		
		
			
		
	
	
			295 lines
		
	
	
		
			9.3 KiB
		
	
	
	
		
			JavaScript
		
	
| 
											9 months ago
										 | "use strict"; | ||
|  | Object.defineProperty(exports, "__esModule", { | ||
|  |     value: true | ||
|  | }); | ||
|  | 0 && (module.exports = { | ||
|  |     startedDevelopmentServer: null, | ||
|  |     formatAmpMessages: null, | ||
|  |     ampValidation: null, | ||
|  |     watchCompilers: null, | ||
|  |     reportTrigger: null | ||
|  | }); | ||
|  | function _export(target, all) { | ||
|  |     for(var name in all)Object.defineProperty(target, name, { | ||
|  |         enumerable: true, | ||
|  |         get: all[name] | ||
|  |     }); | ||
|  | } | ||
|  | _export(exports, { | ||
|  |     startedDevelopmentServer: function() { | ||
|  |         return startedDevelopmentServer; | ||
|  |     }, | ||
|  |     formatAmpMessages: function() { | ||
|  |         return formatAmpMessages; | ||
|  |     }, | ||
|  |     ampValidation: function() { | ||
|  |         return ampValidation; | ||
|  |     }, | ||
|  |     watchCompilers: function() { | ||
|  |         return watchCompilers; | ||
|  |     }, | ||
|  |     reportTrigger: function() { | ||
|  |         return reportTrigger; | ||
|  |     } | ||
|  | }); | ||
|  | const _picocolors = require("../../lib/picocolors"); | ||
|  | const _stripansi = /*#__PURE__*/ _interop_require_default(require("next/dist/compiled/strip-ansi")); | ||
|  | const _texttable = /*#__PURE__*/ _interop_require_default(require("next/dist/compiled/text-table")); | ||
|  | const _unistore = /*#__PURE__*/ _interop_require_default(require("next/dist/compiled/unistore")); | ||
|  | const _formatwebpackmessages = /*#__PURE__*/ _interop_require_default(require("../../client/dev/error-overlay/format-webpack-messages")); | ||
|  | const _store = require("./store"); | ||
|  | const _constants = require("../../shared/lib/constants"); | ||
|  | function _interop_require_default(obj) { | ||
|  |     return obj && obj.__esModule ? obj : { | ||
|  |         default: obj | ||
|  |     }; | ||
|  | } | ||
|  | function startedDevelopmentServer(appUrl, bindAddr) { | ||
|  |     _store.store.setState({ | ||
|  |         appUrl, | ||
|  |         bindAddr | ||
|  |     }); | ||
|  | } | ||
|  | function formatAmpMessages(amp) { | ||
|  |     let output = (0, _picocolors.bold)("Amp Validation") + "\n\n"; | ||
|  |     let messages = []; | ||
|  |     const chalkError = (0, _picocolors.red)("error"); | ||
|  |     function ampError(page, error) { | ||
|  |         messages.push([ | ||
|  |             page, | ||
|  |             chalkError, | ||
|  |             error.message, | ||
|  |             error.specUrl || "" | ||
|  |         ]); | ||
|  |     } | ||
|  |     const chalkWarn = (0, _picocolors.yellow)("warn"); | ||
|  |     function ampWarn(page, warn) { | ||
|  |         messages.push([ | ||
|  |             page, | ||
|  |             chalkWarn, | ||
|  |             warn.message, | ||
|  |             warn.specUrl || "" | ||
|  |         ]); | ||
|  |     } | ||
|  |     for(const page in amp){ | ||
|  |         let { errors, warnings } = amp[page]; | ||
|  |         const devOnlyFilter = (err)=>err.code !== "DEV_MODE_ONLY"; | ||
|  |         errors = errors.filter(devOnlyFilter); | ||
|  |         warnings = warnings.filter(devOnlyFilter); | ||
|  |         if (!(errors.length || warnings.length)) { | ||
|  |             continue; | ||
|  |         } | ||
|  |         if (errors.length) { | ||
|  |             ampError(page, errors[0]); | ||
|  |             for(let index = 1; index < errors.length; ++index){ | ||
|  |                 ampError("", errors[index]); | ||
|  |             } | ||
|  |         } | ||
|  |         if (warnings.length) { | ||
|  |             ampWarn(errors.length ? "" : page, warnings[0]); | ||
|  |             for(let index = 1; index < warnings.length; ++index){ | ||
|  |                 ampWarn("", warnings[index]); | ||
|  |             } | ||
|  |         } | ||
|  |         messages.push([ | ||
|  |             "", | ||
|  |             "", | ||
|  |             "", | ||
|  |             "" | ||
|  |         ]); | ||
|  |     } | ||
|  |     if (!messages.length) { | ||
|  |         return ""; | ||
|  |     } | ||
|  |     output += (0, _texttable.default)(messages, { | ||
|  |         align: [ | ||
|  |             "l", | ||
|  |             "l", | ||
|  |             "l", | ||
|  |             "l" | ||
|  |         ], | ||
|  |         stringLength (str) { | ||
|  |             return (0, _stripansi.default)(str).length; | ||
|  |         } | ||
|  |     }); | ||
|  |     return output; | ||
|  | } | ||
|  | const buildStore = (0, _unistore.default)({ | ||
|  |     // @ts-expect-error initial value
 | ||
|  |     client: {}, | ||
|  |     // @ts-expect-error initial value
 | ||
|  |     server: {}, | ||
|  |     // @ts-expect-error initial value
 | ||
|  |     edgeServer: {} | ||
|  | }); | ||
|  | let buildWasDone = false; | ||
|  | let clientWasLoading = true; | ||
|  | let serverWasLoading = true; | ||
|  | let edgeServerWasLoading = false; | ||
|  | buildStore.subscribe((state)=>{ | ||
|  |     const { amp, client, server, edgeServer, trigger, url } = state; | ||
|  |     const { appUrl } = _store.store.getState(); | ||
|  |     if (client.loading || server.loading || (edgeServer == null ? void 0 : edgeServer.loading)) { | ||
|  |         _store.store.setState({ | ||
|  |             bootstrap: false, | ||
|  |             appUrl: appUrl, | ||
|  |             // If it takes more than 3 seconds to compile, mark it as loading status
 | ||
|  |             loading: true, | ||
|  |             trigger, | ||
|  |             url | ||
|  |         }, true); | ||
|  |         clientWasLoading = !buildWasDone && clientWasLoading || client.loading; | ||
|  |         serverWasLoading = !buildWasDone && serverWasLoading || server.loading; | ||
|  |         edgeServerWasLoading = !buildWasDone && edgeServerWasLoading || edgeServer.loading; | ||
|  |         buildWasDone = false; | ||
|  |         return; | ||
|  |     } | ||
|  |     buildWasDone = true; | ||
|  |     let partialState = { | ||
|  |         bootstrap: false, | ||
|  |         appUrl: appUrl, | ||
|  |         loading: false, | ||
|  |         typeChecking: false, | ||
|  |         totalModulesCount: (clientWasLoading ? client.totalModulesCount : 0) + (serverWasLoading ? server.totalModulesCount : 0) + (edgeServerWasLoading ? (edgeServer == null ? void 0 : edgeServer.totalModulesCount) || 0 : 0), | ||
|  |         hasEdgeServer: !!edgeServer | ||
|  |     }; | ||
|  |     if (client.errors && clientWasLoading) { | ||
|  |         // Show only client errors
 | ||
|  |         _store.store.setState({ | ||
|  |             ...partialState, | ||
|  |             errors: client.errors, | ||
|  |             warnings: null | ||
|  |         }, true); | ||
|  |     } else if (server.errors && serverWasLoading) { | ||
|  |         _store.store.setState({ | ||
|  |             ...partialState, | ||
|  |             errors: server.errors, | ||
|  |             warnings: null | ||
|  |         }, true); | ||
|  |     } else if (edgeServer.errors && edgeServerWasLoading) { | ||
|  |         _store.store.setState({ | ||
|  |             ...partialState, | ||
|  |             errors: edgeServer.errors, | ||
|  |             warnings: null | ||
|  |         }, true); | ||
|  |     } else { | ||
|  |         // Show warnings from all of them
 | ||
|  |         const warnings = [ | ||
|  |             ...client.warnings || [], | ||
|  |             ...server.warnings || [], | ||
|  |             ...edgeServer.warnings || [] | ||
|  |         ].concat(formatAmpMessages(amp) || []); | ||
|  |         _store.store.setState({ | ||
|  |             ...partialState, | ||
|  |             errors: null, | ||
|  |             warnings: warnings.length === 0 ? null : warnings | ||
|  |         }, true); | ||
|  |     } | ||
|  | }); | ||
|  | function ampValidation(page, errors, warnings) { | ||
|  |     const { amp } = buildStore.getState(); | ||
|  |     if (!(errors.length || warnings.length)) { | ||
|  |         buildStore.setState({ | ||
|  |             amp: Object.keys(amp).filter((k)=>k !== page).sort()// eslint-disable-next-line no-sequences
 | ||
|  |             .reduce((a, c)=>(a[c] = amp[c], a), {}) | ||
|  |         }); | ||
|  |         return; | ||
|  |     } | ||
|  |     const newAmp = { | ||
|  |         ...amp, | ||
|  |         [page]: { | ||
|  |             errors, | ||
|  |             warnings | ||
|  |         } | ||
|  |     }; | ||
|  |     buildStore.setState({ | ||
|  |         amp: Object.keys(newAmp).sort()// eslint-disable-next-line no-sequences
 | ||
|  |         .reduce((a, c)=>(a[c] = newAmp[c], a), {}) | ||
|  |     }); | ||
|  | } | ||
|  | function watchCompilers(client, server, edgeServer) { | ||
|  |     buildStore.setState({ | ||
|  |         client: { | ||
|  |             loading: true | ||
|  |         }, | ||
|  |         server: { | ||
|  |             loading: true | ||
|  |         }, | ||
|  |         edgeServer: { | ||
|  |             loading: true | ||
|  |         }, | ||
|  |         trigger: "initial", | ||
|  |         url: undefined | ||
|  |     }); | ||
|  |     function tapCompiler(key, compiler, onEvent) { | ||
|  |         compiler.hooks.invalid.tap(`NextJsInvalid-${key}`, ()=>{ | ||
|  |             onEvent({ | ||
|  |                 loading: true | ||
|  |             }); | ||
|  |         }); | ||
|  |         compiler.hooks.done.tap(`NextJsDone-${key}`, (stats)=>{ | ||
|  |             buildStore.setState({ | ||
|  |                 amp: {} | ||
|  |             }); | ||
|  |             const { errors, warnings } = (0, _formatwebpackmessages.default)(stats.toJson({ | ||
|  |                 preset: "errors-warnings", | ||
|  |                 moduleTrace: true | ||
|  |             })); | ||
|  |             const hasErrors = !!(errors == null ? void 0 : errors.length); | ||
|  |             const hasWarnings = !!(warnings == null ? void 0 : warnings.length); | ||
|  |             onEvent({ | ||
|  |                 loading: false, | ||
|  |                 totalModulesCount: stats.compilation.modules.size, | ||
|  |                 errors: hasErrors ? errors : null, | ||
|  |                 warnings: hasWarnings ? warnings : null | ||
|  |             }); | ||
|  |         }); | ||
|  |     } | ||
|  |     tapCompiler(_constants.COMPILER_NAMES.client, client, (status)=>{ | ||
|  |         if (!status.loading && !buildStore.getState().server.loading && !buildStore.getState().edgeServer.loading && status.totalModulesCount > 0) { | ||
|  |             buildStore.setState({ | ||
|  |                 client: status, | ||
|  |                 trigger: undefined, | ||
|  |                 url: undefined | ||
|  |             }); | ||
|  |         } else { | ||
|  |             buildStore.setState({ | ||
|  |                 client: status | ||
|  |             }); | ||
|  |         } | ||
|  |     }); | ||
|  |     tapCompiler(_constants.COMPILER_NAMES.server, server, (status)=>{ | ||
|  |         if (!status.loading && !buildStore.getState().client.loading && !buildStore.getState().edgeServer.loading && status.totalModulesCount > 0) { | ||
|  |             buildStore.setState({ | ||
|  |                 server: status, | ||
|  |                 trigger: undefined, | ||
|  |                 url: undefined | ||
|  |             }); | ||
|  |         } else { | ||
|  |             buildStore.setState({ | ||
|  |                 server: status | ||
|  |             }); | ||
|  |         } | ||
|  |     }); | ||
|  |     tapCompiler(_constants.COMPILER_NAMES.edgeServer, edgeServer, (status)=>{ | ||
|  |         if (!status.loading && !buildStore.getState().client.loading && !buildStore.getState().server.loading && status.totalModulesCount > 0) { | ||
|  |             buildStore.setState({ | ||
|  |                 edgeServer: status, | ||
|  |                 trigger: undefined, | ||
|  |                 url: undefined | ||
|  |             }); | ||
|  |         } else { | ||
|  |             buildStore.setState({ | ||
|  |                 edgeServer: status | ||
|  |             }); | ||
|  |         } | ||
|  |     }); | ||
|  | } | ||
|  | function reportTrigger(trigger, url) { | ||
|  |     buildStore.setState({ | ||
|  |         trigger, | ||
|  |         url | ||
|  |     }); | ||
|  | } | ||
|  | 
 | ||
|  | //# sourceMappingURL=index.js.map
 |