next
Version:
The React Framework
136 lines (135 loc) • 4.44 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.store = void 0;
var _unistore = _interopRequireDefault(require("next/dist/compiled/unistore"));
var _stripAnsi = _interopRequireDefault(require("next/dist/compiled/strip-ansi"));
var _trace = require("../../trace");
var _utils = require("../utils");
var Log = _interopRequireWildcard(require("./log"));
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
function _interopRequireWildcard(obj) {
if (obj && obj.__esModule) {
return obj;
} else {
var newObj = {};
if (obj != null) {
for(var key in obj){
if (Object.prototype.hasOwnProperty.call(obj, key)) {
var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
if (desc.get || desc.set) {
Object.defineProperty(newObj, key, desc);
} else {
newObj[key] = obj[key];
}
}
}
}
newObj.default = obj;
return newObj;
}
}
const store = (0, _unistore).default({
appUrl: null,
bindAddr: null,
bootstrap: true
});
exports.store = store;
let lastStore = {
appUrl: null,
bindAddr: null,
bootstrap: true
};
function hasStoreChanged(nextStore) {
if ([
...new Set([
...Object.keys(lastStore),
...Object.keys(nextStore)
]),
].every((key)=>Object.is(lastStore[key], nextStore[key])
)) {
return false;
}
lastStore = nextStore;
return true;
}
let startTime = 0;
store.subscribe((state)=>{
if (!hasStoreChanged(state)) {
return;
}
if (state.bootstrap) {
if (state.appUrl) {
Log.ready(`started server on ${state.bindAddr}, url: ${state.appUrl}`);
}
return;
}
if (state.loading) {
if (state.trigger) {
if (state.trigger !== 'initial') {
Log.wait(`compiling ${state.trigger}...`);
}
} else {
Log.wait('compiling...');
}
if (startTime === 0) {
startTime = Date.now();
}
return;
}
if (state.errors) {
Log.error(state.errors[0]);
const cleanError = (0, _stripAnsi).default(state.errors[0]);
if (cleanError.indexOf('SyntaxError') > -1) {
const matches = cleanError.match(/\[.*\]=/);
if (matches) {
for (const match of matches){
const prop = (match.split(']').shift() || '').slice(1);
console.log(`AMP bind syntax [${prop}]='' is not supported in JSX, use 'data-amp-bind-${prop}' instead. https://nextjs.org/docs/messages/amp-bind-jsx-alt`);
}
return;
}
}
const moduleName = (0, _utils).getUnresolvedModuleFromError(cleanError);
if (state.hasEdgeServer && moduleName) {
console.error(`Native Node.js APIs are not supported in the Edge Runtime. Found \`${moduleName}\` imported.\n`);
return;
}
// Ensure traces are flushed after each compile in development mode
(0, _trace).flushAllTraces();
return;
}
let timeMessage = '';
if (startTime) {
const time = Date.now() - startTime;
startTime = 0;
timeMessage = time > 2000 ? ` in ${Math.round(time / 100) / 10}s` : ` in ${time} ms`;
}
let modulesMessage = '';
if (state.modules) {
modulesMessage = ` (${state.modules} modules)`;
}
let partialMessage = '';
if (state.partial) {
partialMessage = ` ${state.partial}`;
}
if (state.warnings) {
Log.warn(state.warnings.join('\n\n'));
// Ensure traces are flushed after each compile in development mode
(0, _trace).flushAllTraces();
return;
}
if (state.typeChecking) {
Log.info(`bundled${partialMessage} successfully${timeMessage}${modulesMessage}, waiting for typecheck results...`);
return;
}
Log.event(`compiled${partialMessage} successfully${timeMessage}${modulesMessage}`);
// Ensure traces are flushed after each compile in development mode
(0, _trace).flushAllTraces();
});
//# sourceMappingURL=store.js.map
;