UNPKG

226 kBSource Map (JSON)View Raw
1{"version":3,"file":"nuxt.js","sources":["../lib/common/utils.js","../lib/core/module.js","../lib/common/modes.js","../lib/common/nuxt.config.js","../lib/common/options.js","../lib/core/meta.js","../lib/core/middleware/error.js","../lib/core/middleware/nuxt.js","../lib/core/renderer.js","../lib/core/nuxt.js","../lib/core/index.js","../lib/builder/webpack/utils/perf-loader.js","../lib/builder/webpack/plugins/vue/util.js","../lib/builder/webpack/plugins/vue/client.js","../lib/builder/webpack/utils/postcss.js","../lib/builder/webpack/utils/style-loader.js","../lib/builder/webpack/plugins/warnfix.js","../lib/builder/webpack/plugins/stats.js","../lib/builder/webpack/base.js","../lib/builder/webpack/client.js","../lib/builder/webpack/plugins/vue/server.js","../lib/builder/webpack/server.js","../lib/builder/builder.js","../lib/builder/generator.js","../lib/builder/index.js","../lib/index.js"],"sourcesContent":["import path from 'path'\nimport _ from 'lodash'\nimport consola from 'consola'\n\nexport const encodeHtml = function encodeHtml(str) {\n return str.replace(/</g, '&lt;').replace(/>/g, '&gt;')\n}\n\nexport const getContext = function getContext(req, res) {\n return { req, res }\n}\n\nexport const waitFor = function waitFor(ms) {\n return new Promise(resolve => setTimeout(resolve, ms || 0))\n}\n\nasync function promiseFinally(fn, finalFn) {\n let result\n try {\n if (typeof fn === 'function') {\n result = await fn()\n } else {\n result = await fn\n }\n } finally {\n finalFn()\n }\n return result\n}\n\nexport const timeout = function timeout(fn, ms, msg) {\n let timerId\n const warpPromise = promiseFinally(fn, () => clearTimeout(timerId))\n const timerPromise = new Promise((resolve, reject) => {\n timerId = setTimeout(() => reject(new Error(msg)), ms)\n })\n return Promise.race([warpPromise, timerPromise])\n}\n\nexport const urlJoin = function urlJoin() {\n return [].slice\n .call(arguments)\n .join('/')\n .replace(/\\/+/g, '/')\n .replace(':/', '://')\n}\n\nexport const isUrl = function isUrl(url) {\n return url.indexOf('http') === 0 || url.indexOf('//') === 0\n}\n\nexport const promisifyRoute = function promisifyRoute(fn, ...args) {\n // If routes is an array\n if (Array.isArray(fn)) {\n return Promise.resolve(fn)\n }\n // If routes is a function expecting a callback\n if (fn.length === arguments.length) {\n return new Promise((resolve, reject) => {\n fn((err, routeParams) => {\n if (err) {\n reject(err)\n }\n resolve(routeParams)\n }, ...args)\n })\n }\n let promise = fn(...args)\n if (\n !promise ||\n (!(promise instanceof Promise) && typeof promise.then !== 'function')\n ) {\n promise = Promise.resolve(promise)\n }\n return promise\n}\n\nexport const sequence = function sequence(tasks, fn) {\n return tasks.reduce(\n (promise, task) => promise.then(() => fn(task)),\n Promise.resolve()\n )\n}\n\nexport const parallel = function parallel(tasks, fn) {\n return Promise.all(tasks.map(fn))\n}\n\nexport const chainFn = function chainFn(base, fn) {\n /* istanbul ignore if */\n if (typeof fn !== 'function') {\n return base\n }\n return function () {\n if (typeof base !== 'function') {\n return fn.apply(this, arguments)\n }\n let baseResult = base.apply(this, arguments)\n // Allow function to mutate the first argument instead of returning the result\n if (baseResult === undefined) {\n baseResult = arguments[0]\n }\n const fnResult = fn.call(\n this,\n baseResult,\n ...Array.prototype.slice.call(arguments, 1)\n )\n // Return mutated argument if no result was returned\n if (fnResult === undefined) {\n return baseResult\n }\n return fnResult\n }\n}\n\nexport const isPureObject = function isPureObject(o) {\n return !Array.isArray(o) && typeof o === 'object'\n}\n\nexport const isWindows = /^win/.test(process.platform)\n\nexport const wp = function wp(p = '') {\n /* istanbul ignore if */\n if (isWindows) {\n return p.replace(/\\\\/g, '\\\\\\\\')\n }\n return p\n}\n\nexport const wChunk = function wChunk(p = '') {\n /* istanbul ignore if */\n if (isWindows) {\n return p.replace(/\\//g, '_')\n }\n return p\n}\n\nconst reqSep = /\\//g\nconst sysSep = _.escapeRegExp(path.sep)\nconst normalize = string => string.replace(reqSep, sysSep)\n\nexport const r = function r() {\n const args = Array.prototype.slice.apply(arguments)\n const lastArg = _.last(args)\n\n if (lastArg.indexOf('@') === 0 || lastArg.indexOf('~') === 0) {\n return wp(lastArg)\n }\n\n return wp(path.resolve(...args.map(normalize)))\n}\n\nexport const relativeTo = function relativeTo() {\n const args = Array.prototype.slice.apply(arguments)\n const dir = args.shift()\n\n // Keep webpack inline loader intact\n if (args[0].indexOf('!') !== -1) {\n const loaders = args.shift().split('!')\n\n return loaders.concat(relativeTo(dir, loaders.pop(), ...args)).join('!')\n }\n\n // Resolve path\n const _path = r(...args)\n\n // Check if path is an alias\n if (_path.indexOf('@') === 0 || _path.indexOf('~') === 0) {\n return _path\n }\n\n // Make correct relative path\n let rp = path.relative(dir, _path)\n if (rp[0] !== '.') {\n rp = './' + rp\n }\n\n return wp(rp)\n}\n\nexport const flatRoutes = function flatRoutes(router, _path = '', routes = []) {\n router.forEach((r) => {\n if (!r.path.includes(':') && !r.path.includes('*')) {\n /* istanbul ignore if */\n if (r.children) {\n if (_path === '' && r.path === '/') {\n routes.push('/')\n }\n flatRoutes(r.children, _path + r.path + '/', routes)\n } else {\n _path = _path.replace(/^\\/+$/, '/')\n routes.push(\n (r.path === '' && _path[_path.length - 1] === '/'\n ? _path.slice(0, -1)\n : _path) + r.path\n )\n }\n }\n })\n return routes\n}\n\nfunction cleanChildrenRoutes(routes, isChild = false) {\n let start = -1\n const routesIndex = []\n routes.forEach((route) => {\n if (/-index$/.test(route.name) || route.name === 'index') {\n // Save indexOf 'index' key in name\n const res = route.name.split('-')\n const s = res.indexOf('index')\n start = start === -1 || s < start ? s : start\n routesIndex.push(res)\n }\n })\n routes.forEach((route) => {\n route.path = isChild ? route.path.replace('/', '') : route.path\n if (route.path.indexOf('?') > -1) {\n const names = route.name.split('-')\n const paths = route.path.split('/')\n if (!isChild) {\n paths.shift()\n } // clean first / for parents\n routesIndex.forEach((r) => {\n const i = r.indexOf('index') - start // children names\n if (i < paths.length) {\n for (let a = 0; a <= i; a++) {\n if (a === i) {\n paths[a] = paths[a].replace('?', '')\n }\n if (a < i && names[a] !== r[a]) {\n break\n }\n }\n }\n })\n route.path = (isChild ? '' : '/') + paths.join('/')\n }\n route.name = route.name.replace(/-index$/, '')\n if (route.children) {\n if (route.children.find(child => child.path === '')) {\n delete route.name\n }\n route.children = cleanChildrenRoutes(route.children, true)\n }\n })\n return routes\n}\n\nexport const createRoutes = function createRoutes(files, srcDir, pagesDir) {\n const routes = []\n files.forEach((file) => {\n const keys = file\n .replace(RegExp(`^${pagesDir}`), '')\n .replace(/\\.(vue|js)$/, '')\n .replace(/\\/{2,}/g, '/')\n .split('/')\n .slice(1)\n const route = { name: '', path: '', component: r(srcDir, file) }\n let parent = routes\n keys.forEach((key, i) => {\n // remove underscore only, if its the prefix\n const sanitizedKey = key.indexOf('_') === 0\n ? key.replace('_', '')\n : key\n route.name = route.name\n ? route.name + '-' + sanitizedKey\n : sanitizedKey\n route.name += key === '_' ? 'all' : ''\n route.chunkName = file.replace(/\\.(vue|js)$/, '')\n const child = _.find(parent, { name: route.name })\n if (child) {\n child.children = child.children || []\n parent = child.children\n route.path = ''\n } else if (key === 'index' && i + 1 === keys.length) {\n route.path += i > 0 ? '' : '/'\n } else {\n route.path += '/' +\n (key === '_'\n ? '*'\n : key.indexOf('_') === 0\n ? key.replace('_', ':')\n : key)\n if (key !== '_' && key.indexOf('_') === 0) {\n route.path += '?'\n }\n }\n })\n // Order Routes path\n parent.push(route)\n parent.sort((a, b) => {\n if (!a.path.length) {\n return -1\n }\n if (!b.path.length) {\n return 1\n }\n // Order: /static, /index, /:dynamic\n // Match exact route before index: /login before /index/_slug\n if (a.path === '/') {\n return /^\\/(:|\\*)/.test(b.path) ? -1 : 1\n }\n if (b.path === '/') {\n return /^\\/(:|\\*)/.test(a.path) ? 1 : -1\n }\n let i = 0\n let res = 0\n let y = 0\n let z = 0\n const _a = a.path.split('/')\n const _b = b.path.split('/')\n for (i = 0; i < _a.length; i++) {\n if (res !== 0) {\n break\n }\n y = _a[i] === '*' ? 2 : _a[i].indexOf(':') > -1 ? 1 : 0\n z = _b[i] === '*' ? 2 : _b[i].indexOf(':') > -1 ? 1 : 0\n res = y - z\n // If a.length >= b.length\n if (i === _b.length - 1 && res === 0) {\n // change order if * found\n res = _a[i] === '*' ? -1 : 1\n }\n }\n return res === 0 ? (_a[i - 1] === '*' && _b[i] ? 1 : -1) : res\n })\n })\n return cleanChildrenRoutes(routes)\n}\n\n// Guard dir1 from dir2 which can be indiscriminately removed\nexport const guardDir = function guardDir(options, key1, key2) {\n const dir1 = _.get(options, key1, false)\n const dir2 = _.get(options, key2, false)\n\n if (\n dir1 &&\n dir2 &&\n (\n dir1 === dir2 ||\n (\n dir1.startsWith(dir2) &&\n !path.basename(dir1).startsWith(path.basename(dir2))\n )\n )\n ) {\n const errorMessage = `options.${key2} cannot be a parent of or same as ${key1}`\n consola.fatal(errorMessage)\n throw new Error(errorMessage)\n }\n}\n","import path from 'path'\nimport fs from 'fs'\nimport hash from 'hash-sum'\nimport consola from 'consola'\nimport { chainFn, sequence } from '../common/utils'\n\nexport default class ModuleContainer {\n constructor(nuxt) {\n this.nuxt = nuxt\n this.options = nuxt.options\n this.requiredModules = {}\n }\n\n async ready() {\n // Call before hook\n await this.nuxt.callHook('modules:before', this, this.options.modules)\n\n // Load every module in sequence\n await sequence(this.options.modules, this.addModule.bind(this))\n\n // Call done hook\n await this.nuxt.callHook('modules:done', this)\n }\n\n addVendor() {\n consola.warn('addVendor has been deprecated due to webpack4 optimization')\n }\n\n addTemplate(template) {\n /* istanbul ignore if */\n if (!template) {\n throw new Error('Invalid template:' + JSON.stringify(template))\n }\n\n // Validate & parse source\n const src = template.src || template\n const srcPath = path.parse(src)\n /* istanbul ignore if */\n if (typeof src !== 'string' || !fs.existsSync(src)) {\n throw new Error('Template src not found:' + src)\n }\n\n // Generate unique and human readable dst filename\n const dst =\n template.fileName ||\n path.basename(srcPath.dir) + `.${srcPath.name}.${hash(src)}` + srcPath.ext\n\n // Add to templates list\n const templateObj = {\n src,\n dst,\n options: template.options\n }\n\n this.options.build.templates.push(templateObj)\n return templateObj\n }\n\n addPlugin(template) {\n const { dst } = this.addTemplate(template)\n\n // Add to nuxt plugins\n this.options.plugins.unshift({\n src: path.join(this.options.buildDir, dst),\n ssr: template.ssr\n })\n }\n\n addLayout(template, name) {\n const { dst, src } = this.addTemplate(template)\n\n // Add to nuxt layouts\n this.options.layouts[name || path.parse(src).name] = `./${dst}`\n\n // If error layout, set ErrorPage\n if (name === 'error') {\n this.addErrorLayout(dst)\n }\n }\n\n addErrorLayout(dst) {\n const relativeBuildDir = path.relative(this.options.rootDir, this.options.buildDir)\n this.options.ErrorPage = `~/${relativeBuildDir}/${dst}`\n }\n\n addServerMiddleware(middleware) {\n this.options.serverMiddleware.push(middleware)\n }\n\n extendBuild(fn) {\n this.options.build.extend = chainFn(this.options.build.extend, fn)\n }\n\n extendRoutes(fn) {\n this.options.router.extendRoutes = chainFn(\n this.options.router.extendRoutes,\n fn\n )\n }\n\n requireModule(moduleOpts) {\n return this.addModule(moduleOpts, true /* require once */)\n }\n\n addModule(moduleOpts, requireOnce) {\n let src\n let options\n let handler\n\n // Type 1: String\n if (typeof moduleOpts === 'string') {\n src = moduleOpts\n } else if (Array.isArray(moduleOpts)) {\n // Type 2: Babel style array\n src = moduleOpts[0]\n options = moduleOpts[1]\n } else if (typeof moduleOpts === 'object') {\n // Type 3: Pure object\n src = moduleOpts.src\n options = moduleOpts.options\n handler = moduleOpts.handler\n }\n\n // Resolve handler\n if (!handler) {\n handler = this.nuxt.requireModule(src)\n }\n\n // Validate handler\n /* istanbul ignore if */\n if (typeof handler !== 'function') {\n throw new Error('Module should export a function: ' + src)\n }\n\n // Resolve module meta\n const key = (handler.meta && handler.meta.name) || handler.name || src\n\n // Update requiredModules\n if (typeof key === 'string') {\n if (requireOnce && this.requiredModules[key]) {\n return\n }\n this.requiredModules[key] = { src, options, handler }\n }\n\n // Default module options to empty object\n if (options === undefined) {\n options = {}\n }\n\n return new Promise((resolve) => {\n // Call module with `this` context and pass options\n const result = handler.call(this, options)\n\n // If module send back a promise\n if (result && result.then) {\n return resolve(result)\n }\n\n // synchronous\n return resolve()\n })\n }\n}\n","export default {\n universal: {\n build: {\n ssr: true\n },\n render: {\n ssr: true\n }\n },\n spa: {\n build: {\n ssr: false\n },\n render: {\n ssr: false\n }\n }\n}\n","import path from 'path'\nimport fs from 'fs'\nimport env from 'std-env'\n\nconst nuxtDir = fs.existsSync(path.resolve(__dirname, '..', 'package.json'))\n ? path.resolve(__dirname, '..') // dist\n : path.resolve(__dirname, '..', '..') // src\n\nexport default {\n // Information about running environment\n dev: Boolean(env.dev),\n debug: undefined, // = dev\n\n // Mode\n mode: 'universal',\n\n // Server options\n server: {\n https: false,\n port: process.env.NUXT_PORT ||\n process.env.PORT ||\n process.env.npm_package_config_nuxt_port,\n host: process.env.NUXT_HOST ||\n process.env.HOST ||\n process.env.npm_package_config_nuxt_host\n },\n\n // Dirs\n srcDir: undefined,\n buildDir: '.nuxt',\n nuxtDir,\n nuxtAppDir: path.resolve(nuxtDir, 'lib', 'app'),\n modulesDir: ['node_modules'], // ~> relative to options.rootDir\n\n // Ignore\n ignorePrefix: '-',\n ignore: [\n '**/*.test.*',\n '**/*.spec.*'\n ],\n\n extensions: [],\n\n build: {\n quiet: Boolean(env.ci || env.test),\n analyze: false,\n profile: process.argv.includes('--profile'),\n extractCSS: false,\n cssSourceMap: undefined,\n ssr: undefined,\n parallel: false,\n cache: false,\n publicPath: '/_nuxt/',\n filenames: {\n // { isDev, isClient, isServer }\n app: ({ isDev }) => isDev ? '[name].js' : '[chunkhash].js',\n chunk: ({ isDev }) => isDev ? '[name].js' : '[chunkhash].js',\n css: ({ isDev }) => isDev ? '[name].js' : '[contenthash].css',\n img: ({ isDev }) => isDev ? '[path][name].[ext]' : 'img/[hash:7].[ext]',\n font: ({ isDev }) => isDev ? '[path][name].[ext]' : 'fonts/[hash:7].[ext]',\n video: ({ isDev }) => isDev ? '[path][name].[ext]' : 'videos/[hash:7].[ext]'\n },\n loaders: {\n file: {},\n fontUrl: { limit: 1000 },\n imgUrl: { limit: 1000 },\n pugPlain: {},\n vue: {\n transformAssetUrls: {\n video: 'src',\n source: 'src',\n object: 'src',\n embed: 'src'\n }\n },\n css: {},\n cssModules: {\n localIdentName: '[local]_[hash:base64:5]'\n },\n less: {},\n sass: {\n indentedSyntax: true\n },\n scss: {},\n stylus: {},\n vueStyle: {}\n },\n styleResources: {},\n plugins: [],\n optimization: {\n runtimeChunk: 'single',\n splitChunks: {\n chunks: 'all',\n automaticNameDelimiter: '.',\n name: undefined,\n cacheGroups: {}\n }\n },\n splitChunks: {\n layouts: false,\n pages: true,\n commons: true\n },\n babel: {\n babelrc: false,\n cacheDirectory: undefined\n },\n transpile: [], // Name of NPM packages to be transpiled\n postcss: {\n preset: {\n // https://cssdb.org/#staging-process\n stage: 2\n }\n },\n templates: [],\n watch: [],\n devMiddleware: {},\n hotMiddleware: {},\n stats: {\n chunks: false,\n children: false,\n modules: false,\n colors: true,\n warnings: true,\n errors: true,\n excludeAssets: [\n /.map$/,\n /index\\..+\\.html$/,\n /vue-ssr-client-manifest.json/\n ]\n }\n },\n generate: {\n dir: 'dist',\n routes: [],\n concurrency: 500,\n interval: 0,\n subFolders: true,\n fallback: '200.html',\n minify: {\n collapseBooleanAttributes: true,\n collapseWhitespace: false,\n decodeEntities: true,\n minifyCSS: true,\n minifyJS: true,\n processConditionalComments: true,\n removeAttributeQuotes: false,\n removeComments: false,\n removeEmptyAttributes: true,\n removeOptionalTags: false,\n removeRedundantAttributes: true,\n removeScriptTypeAttributes: false,\n removeStyleLinkTypeAttributes: false,\n removeTagWhitespace: false,\n sortAttributes: true,\n sortClassName: false,\n trimCustomFragments: true,\n useShortDoctype: true\n }\n },\n env: {},\n head: {\n meta: [],\n link: [],\n style: [],\n script: []\n },\n plugins: [],\n css: [],\n modules: [],\n layouts: {},\n serverMiddleware: [],\n ErrorPage: null,\n loading: {\n color: 'black',\n failedColor: 'red',\n height: '2px',\n duration: 5000,\n rtl: false\n },\n loadingIndicator: 'default',\n transition: {\n name: 'page',\n mode: 'out-in',\n appear: false,\n appearClass: 'appear',\n appearActiveClass: 'appear-active',\n appearToClass: 'appear-to'\n },\n layoutTransition: {\n name: 'layout',\n mode: 'out-in'\n },\n dir: {\n assets: 'assets',\n layouts: 'layouts',\n middleware: 'middleware',\n pages: 'pages',\n static: 'static',\n store: 'store'\n },\n vue: {\n config: {\n silent: undefined, // = !dev\n performance: undefined // = dev\n }\n },\n router: {\n mode: 'history',\n base: '/',\n routes: [],\n middleware: [],\n linkActiveClass: 'nuxt-link-active',\n linkExactActiveClass: 'nuxt-link-exact-active',\n extendRoutes: null,\n scrollBehavior: null,\n parseQuery: false,\n stringifyQuery: false,\n fallback: false\n },\n render: {\n bundleRenderer: {\n shouldPrefetch: () => false\n },\n resourceHints: true,\n ssr: undefined,\n http2: {\n push: false,\n shouldPush: null\n },\n static: {\n prefix: true\n },\n compressor: {\n threshold: 0\n },\n etag: {\n weak: false\n },\n csp: false,\n dist: {\n // Don't serve index.html template\n index: false,\n // 1 year in production\n maxAge: '1y'\n }\n },\n // User-defined changes\n watch: [],\n watchers: {\n webpack: {},\n chokidar: {\n ignoreInitial: true\n }\n },\n editor: undefined,\n hooks: null,\n messages: {\n loading: 'Loading...',\n error_404: 'This page could not be found',\n server_error: 'Server error',\n nuxtjs: 'Nuxt.js',\n back_to_home: 'Back to the home page',\n server_error_details:\n 'An error occurred in the application and your page could not be served. If you are the application owner, check your logs for details.',\n client_error: 'Error',\n client_error_details:\n 'An error occurred while rendering the page. Check developer tools console for details.'\n }\n}\n","import path from 'path'\nimport fs from 'fs'\n\nimport _ from 'lodash'\nimport consola from 'consola'\nimport { isPureObject, isUrl, guardDir } from '../common/utils'\n\nimport modes from './modes'\nimport defaults from './nuxt.config'\n\n// hasValue utility\nconst hasValue = v => typeof v === 'string' && v\n\nconst Options = {}\n\nexport default Options\n\nOptions.from = function (_options) {\n // Clone options to prevent unwanted side-effects\n const options = Object.assign({}, _options)\n\n // Normalize options\n if (options.loading === true) {\n delete options.loading\n }\n if (\n options.router &&\n options.router.middleware &&\n !Array.isArray(options.router.middleware)\n ) {\n options.router.middleware = [options.router.middleware]\n }\n if (options.router && typeof options.router.base === 'string') {\n options._routerBaseSpecified = true\n }\n if (typeof options.transition === 'string') {\n options.transition = { name: options.transition }\n }\n if (typeof options.layoutTransition === 'string') {\n options.layoutTransition = { name: options.layoutTransition }\n }\n if (typeof options.extensions === 'string') {\n options.extensions = [options.extensions]\n }\n\n // Resolve rootDir\n options.rootDir = hasValue(options.rootDir) ? path.resolve(options.rootDir) : process.cwd()\n\n // Apply defaults by ${buildDir}/dist/build.config.js\n // TODO: Unsafe operation.\n // const buildDir = options.buildDir || defaults.buildDir\n // const buildConfig = resolve(options.rootDir, buildDir, 'build.config.js')\n // if (existsSync(buildConfig)) {\n // _.defaultsDeep(options, require(buildConfig))\n // }\n\n // Apply defaults\n _.defaultsDeep(options, defaults)\n\n // Check srcDir and generate.dir excistence\n const hasSrcDir = hasValue(options.srcDir)\n const hasGenerateDir = hasValue(options.generate.dir)\n\n // Resolve srcDir\n options.srcDir = hasSrcDir\n ? path.resolve(options.rootDir, options.srcDir)\n : options.rootDir\n\n // Resolve buildDir\n options.buildDir = path.resolve(options.rootDir, options.buildDir)\n\n // Protect rootDir against buildDir\n guardDir(options, 'rootDir', 'buildDir')\n\n if (hasGenerateDir) {\n // Resolve generate.dir\n options.generate.dir = path.resolve(options.rootDir, options.generate.dir)\n\n // Protect rootDir against buildDir\n guardDir(options, 'rootDir', 'generate.dir')\n }\n\n if (hasSrcDir) {\n // Protect srcDir against buildDir\n guardDir(options, 'srcDir', 'buildDir')\n\n if (hasGenerateDir) {\n // Protect srcDir against generate.dir\n guardDir(options, 'srcDir', 'generate.dir')\n }\n }\n\n // Populate modulesDir\n options.modulesDir = []\n .concat(options.modulesDir)\n .concat(path.join(options.nuxtDir, 'node_modules'))\n .filter(hasValue)\n .map(dir => path.resolve(options.rootDir, dir))\n\n // Sanitize extensions\n if (options.extensions.indexOf('js') === -1) {\n options.extensions.unshift('js')\n }\n\n if (options.extensions.indexOf('mjs') === -1) {\n options.extensions.unshift('mjs')\n }\n\n // If app.html is defined, set the template path to the user template\n if (options.appTemplatePath === undefined) {\n options.appTemplatePath = path.resolve(options.buildDir, 'views/app.template.html')\n if (fs.existsSync(path.join(options.srcDir, 'app.html'))) {\n options.appTemplatePath = path.join(options.srcDir, 'app.html')\n }\n } else {\n options.appTemplatePath = path.resolve(options.srcDir, options.appTemplatePath)\n }\n\n // Ignore publicPath on dev\n /* istanbul ignore if */\n if (options.dev && isUrl(options.build.publicPath)) {\n options.build.publicPath = defaults.build.publicPath\n }\n\n // If store defined, update store options to true unless explicitly disabled\n if (\n options.store !== false &&\n fs.existsSync(path.join(options.srcDir, options.dir.store)) &&\n fs.readdirSync(path.join(options.srcDir, options.dir.store))\n .find(filename => filename !== 'README.md' && filename[0] !== '.')\n ) {\n options.store = true\n }\n\n // SPA loadingIndicator\n if (options.loadingIndicator) {\n // Normalize loadingIndicator\n if (!isPureObject(options.loadingIndicator)) {\n options.loadingIndicator = { name: options.loadingIndicator }\n }\n\n // Apply defaults\n options.loadingIndicator = Object.assign(\n {\n name: 'default',\n color: (options.loading && options.loading.color) || '#D3D3D3',\n color2: '#F5F5F5',\n background: (options.manifest && options.manifest.theme_color) || 'white',\n dev: options.dev,\n loading: options.messages.loading\n },\n options.loadingIndicator\n )\n }\n\n // Debug errors\n if (options.debug === undefined) {\n options.debug = options.dev\n }\n\n // Apply default hash to CSP option\n const csp = options.render.csp\n const cspDefaults = {\n hashAlgorithm: 'sha256',\n allowedSources: undefined,\n policies: undefined,\n reportOnly: options.debug\n }\n if (csp) {\n options.render.csp = _.defaults(_.isObject(csp) ? csp : {}, cspDefaults)\n }\n\n // cssSourceMap\n if (options.build.cssSourceMap === undefined) {\n options.build.cssSourceMap = options.dev\n }\n\n // babel cacheDirectory\n if (options.build.babel.cacheDirectory === undefined) {\n options.build.babel.cacheDirectory = options.dev\n }\n\n // vue config\n const vueConfig = options.vue.config\n\n if (vueConfig.silent === undefined) {\n vueConfig.silent = !options.dev\n }\n if (vueConfig.performance === undefined) {\n vueConfig.performance = options.dev\n }\n\n // merge custom env with variables\n const eligibleEnvVariables = _.pick(process.env, Object.keys(process.env).filter(k => k.startsWith('NUXT_ENV_')))\n Object.assign(options.env, eligibleEnvVariables)\n\n // Normalize ignore\n options.ignore = options.ignore ? [].concat(options.ignore) : []\n\n // Append ignorePrefix glob to ignore\n if (typeof options.ignorePrefix === 'string') {\n options.ignore.push(`**/${options.ignorePrefix}*.*`)\n }\n\n // Compression middleware legacy\n if (options.render.gzip) {\n consola.warn('render.gzip is deprecated and will be removed in a future version! Please switch to render.compressor')\n options.render.compressor = options.render.gzip\n delete options.render.gzip\n }\n\n // Apply mode preset\n const modePreset = modes[options.mode || 'universal'] || modes.universal\n _.defaultsDeep(options, modePreset)\n\n // If no server-side rendering, add appear true transition\n /* istanbul ignore if */\n if (options.render.ssr === false && options.transition) {\n options.transition.appear = true\n }\n\n // We assume the SPA fallback path is 404.html (for GitHub Pages, Surge, etc.)\n if (options.generate.fallback === true) {\n options.generate.fallback = '404.html'\n }\n\n if (options.build.stats === 'none' || options.build.quiet === true) {\n options.build.stats = false\n }\n\n // Vendor backward compatibility with nuxt 1.x\n if (typeof options.build.vendor !== 'undefined') {\n delete options.build.vendor\n consola.warn('vendor has been deprecated due to webpack4 optimization')\n }\n\n // TODO: remove when mini-css-extract-plugin supports HMR\n if (options.dev) {\n options.build.extractCSS = false\n }\n\n const loaders = options.build.loaders\n const vueLoader = loaders.vue\n if (vueLoader.productionMode === undefined) {\n vueLoader.productionMode = !options.dev\n }\n const styleLoaders = [\n 'css', 'cssModules', 'less',\n 'sass', 'scss', 'stylus', 'vueStyle'\n ]\n for (const name of styleLoaders) {\n const loader = loaders[name]\n if (loader && loader.sourceMap === undefined) {\n loader.sourceMap = Boolean(options.build.cssSourceMap)\n }\n }\n\n // include SFCs in node_modules\n options.build.transpile = [].concat(options.build.transpile || [])\n .map(module => module instanceof RegExp ? module : new RegExp(module))\n\n if (options.build.quiet === true) {\n consola.level = 0\n }\n\n return options\n}\n","import Vue from 'vue'\nimport VueMeta from 'vue-meta'\nimport { createRenderer } from 'vue-server-renderer'\nimport LRU from 'lru-cache'\n\nexport default class MetaRenderer {\n constructor(nuxt, renderer) {\n this.nuxt = nuxt\n this.renderer = renderer\n this.options = nuxt.options\n this.vueRenderer = createRenderer()\n this.cache = LRU({})\n\n // Add VueMeta to Vue (this is only for SPA mode)\n // See lib/app/index.js\n Vue.use(VueMeta, {\n keyName: 'head',\n attribute: 'data-n-head',\n ssrAttribute: 'data-n-head-ssr',\n tagIDKeyName: 'hid'\n })\n }\n\n async getMeta(url) {\n const vm = new Vue({\n render: h => h(), // Render empty html tag\n head: this.options.head || {}\n })\n await this.vueRenderer.renderToString(vm)\n return vm.$meta().inject()\n }\n\n async render({ url = '/' }) {\n let meta = this.cache.get(url)\n\n if (meta) {\n return meta\n }\n\n meta = {\n HTML_ATTRS: '',\n BODY_ATTRS: '',\n HEAD: '',\n BODY_SCRIPTS: ''\n }\n\n // Get vue-meta context\n const m = await this.getMeta(url)\n\n // HTML_ATTRS\n meta.HTML_ATTRS = m.htmlAttrs.text()\n\n // BODY_ATTRS\n meta.BODY_ATTRS = m.bodyAttrs.text()\n\n // HEAD tags\n meta.HEAD =\n m.title.text() +\n m.meta.text() +\n m.link.text() +\n m.style.text() +\n m.script.text() +\n m.noscript.text()\n\n // BODY_SCRIPTS\n meta.BODY_SCRIPTS = m.script.text({ body: true }) + m.noscript.text({ body: true })\n\n // Resources Hints\n\n meta.resourceHints = ''\n\n const clientManifest = this.renderer.resources.clientManifest\n\n const shouldPreload = this.options.render.bundleRenderer.shouldPreload || (() => true)\n const shouldPrefetch = this.options.render.bundleRenderer.shouldPrefetch || (() => true)\n\n if (this.options.render.resourceHints && clientManifest) {\n const publicPath = clientManifest.publicPath || '/_nuxt/'\n\n // Preload initial resources\n if (Array.isArray(clientManifest.initial)) {\n meta.resourceHints += clientManifest.initial\n .filter(file => shouldPreload(file))\n .map(\n r => `<link rel=\"preload\" href=\"${publicPath}${r}\" as=\"script\" />`\n )\n .join('')\n }\n\n // Prefetch async resources\n if (Array.isArray(clientManifest.async)) {\n meta.resourceHints += clientManifest.async\n .filter(file => shouldPrefetch(file))\n .map(r => `<link rel=\"prefetch\" href=\"${publicPath}${r}\" />`)\n .join('')\n }\n\n // Add them to HEAD\n if (meta.resourceHints) {\n meta.HEAD += meta.resourceHints\n }\n }\n\n // Emulate getPreloadFiles from vue-server-renderer (works for JS chunks only)\n meta.getPreloadFiles = () =>\n clientManifest.initial\n .filter(file => shouldPreload(file))\n .map(r => ({\n file: r,\n fileWithoutQuery: r,\n asType: 'script',\n extension: 'js'\n }))\n\n // Set meta tags inside cache\n this.cache.set(url, meta)\n\n return meta\n }\n}\n","import path from 'path'\nimport consola from 'consola'\n\nimport Youch from '@nuxtjs/youch'\nimport fs from 'fs-extra'\n\nexport default function errorMiddleware(err, req, res, next) {\n // ensure statusCode, message and name fields\n err.statusCode = err.statusCode || 500\n err.message = err.message || 'Nuxt Server Error'\n err.name = !err.name || err.name === 'Error' ? 'NuxtServerError' : err.name\n\n // We hide actual errors from end users, so show them on server logs\n if (err.statusCode !== 404) {\n consola.error(err)\n }\n\n const sendResponse = (content, type = 'text/html') => {\n // Set Headers\n res.statusCode = err.statusCode\n res.statusMessage = err.name\n res.setHeader('Content-Type', type + '; charset=utf-8')\n res.setHeader('Content-Length', Buffer.byteLength(content))\n\n // Send Response\n res.end(content, 'utf-8')\n }\n\n // Check if request accepts JSON\n const hasReqHeader = (header, includes) =>\n req.headers[header] && req.headers[header].toLowerCase().includes(includes)\n const isJson =\n hasReqHeader('accept', 'application/json') ||\n hasReqHeader('user-agent', 'curl/')\n\n // Use basic errors when debug mode is disabled\n if (!this.options.debug) {\n // Json format is compatible with Youch json responses\n const json = {\n status: err.statusCode,\n message: err.message,\n name: err.name\n }\n if (isJson) {\n sendResponse(JSON.stringify(json, undefined, 2), 'text/json')\n return\n }\n const html = this.resources.errorTemplate(json)\n sendResponse(html)\n return\n }\n\n // Show stack trace\n const youch = new Youch(\n err,\n req,\n readSource.bind(this),\n this.options.router.base,\n true\n )\n if (isJson) {\n youch.toJSON().then((json) => {\n sendResponse(JSON.stringify(json, undefined, 2), 'text/json')\n })\n } else {\n youch.toHTML().then(html => sendResponse(html))\n }\n}\n\nasync function readSource(frame) {\n // Remove webpack:/// & query string from the end\n const sanitizeName = name =>\n name ? name.replace('webpack:///', '').split('?')[0] : null\n frame.fileName = sanitizeName(frame.fileName)\n\n // Return if fileName is unknown\n /* istanbul ignore if */\n if (!frame.fileName) {\n return\n }\n\n // Possible paths for file\n const searchPath = [\n this.options.srcDir,\n this.options.rootDir,\n path.join(this.options.buildDir, 'dist', 'server'),\n this.options.buildDir,\n process.cwd()\n ]\n\n // Scan filesystem for real source\n for (const pathDir of searchPath) {\n const fullPath = path.resolve(pathDir, frame.fileName)\n const source = await fs.readFile(fullPath, 'utf-8').catch(() => null)\n if (source) {\n frame.contents = source\n frame.fullPath = fullPath\n if (path.isAbsolute(frame.fileName)) {\n frame.fileName = path.relative(this.options.rootDir, fullPath)\n }\n return\n }\n }\n\n // Fallback: use server bundle\n // TODO: restore to if after https://github.com/istanbuljs/nyc/issues/595 fixed\n /* istanbul ignore next */\n if (!frame.contents) {\n frame.contents = this.resources.serverBundle.files[frame.fileName]\n }\n}\n","import generateETag from 'etag'\nimport fresh from 'fresh'\nimport consola from 'consola'\n\nimport { getContext } from '../../common/utils'\n\nexport default async function nuxtMiddleware(req, res, next) {\n // Get context\n const context = getContext(req, res)\n\n res.statusCode = 200\n try {\n const result = await this.renderRoute(req.url, context)\n await this.nuxt.callHook('render:route', req.url, result, context)\n const {\n html,\n cspScriptSrcHashSet,\n error,\n redirected,\n getPreloadFiles\n } = result\n\n if (redirected) {\n this.nuxt.callHook('render:routeDone', req.url, result, context)\n return html\n }\n if (error) {\n res.statusCode = context.nuxt.error.statusCode || 500\n }\n\n // Add ETag header\n if (!error && this.options.render.etag) {\n const etag = generateETag(html, this.options.render.etag)\n if (fresh(req.headers, { etag })) {\n res.statusCode = 304\n res.end()\n this.nuxt.callHook('render:routeDone', req.url, result, context)\n return\n }\n res.setHeader('ETag', etag)\n }\n\n // HTTP2 push headers for preload assets\n if (!error && this.options.render.http2.push) {\n // Parse resourceHints to extract HTTP.2 prefetch/push headers\n // https://w3c.github.io/preload/#server-push-http-2\n const pushAssets = []\n const preloadFiles = getPreloadFiles()\n const { shouldPush } = this.options.render.http2\n const { publicPath } = this.resources.clientManifest\n\n preloadFiles.forEach(({ file, asType, fileWithoutQuery }) => {\n // By default, we only preload scripts or css\n /* istanbul ignore if */\n if (!shouldPush && asType !== 'script' && asType !== 'style') {\n return\n }\n\n // User wants to explicitly control what to preload\n if (shouldPush && !shouldPush(fileWithoutQuery, asType)) {\n return\n }\n\n pushAssets.push(`<${publicPath}${file}>; rel=preload; as=${asType}`)\n })\n\n // Pass with single Link header\n // https://blog.cloudflare.com/http-2-server-push-with-multiple-assets-per-link-header\n // https://www.w3.org/Protocols/9707-link-header.html\n res.setHeader('Link', pushAssets.join(','))\n }\n\n if (this.options.render.csp) {\n const { allowedSources, policies } = this.options.render.csp\n const cspHeader = this.options.render.csp.reportOnly ? 'Content-Security-Policy-Report-Only' : 'Content-Security-Policy'\n\n res.setHeader(cspHeader, getCspString({ cspScriptSrcHashSet, allowedSources, policies, isDev: this.options.dev }))\n }\n\n // Send response\n res.setHeader('Content-Type', 'text/html; charset=utf-8')\n res.setHeader('Content-Length', Buffer.byteLength(html))\n res.end(html, 'utf8')\n this.nuxt.callHook('render:routeDone', req.url, result, context)\n return html\n } catch (err) {\n /* istanbul ignore if */\n if (context && context.redirected) {\n consola.error(err)\n return err\n }\n\n next(err)\n }\n}\n\nconst getCspString = ({ cspScriptSrcHashSet, allowedSources, policies, isDev }) => {\n const joinedHashSet = Array.from(cspScriptSrcHashSet).join(' ')\n const baseCspStr = `script-src 'self'${isDev ? ` 'unsafe-eval'` : ''} ${joinedHashSet}`\n\n if (Array.isArray(allowedSources)) {\n return `${baseCspStr} ${allowedSources.join(' ')}`\n }\n\n const policyObjectAvailable = typeof policies === 'object' && policies !== null && !Array.isArray(policies)\n\n if (policyObjectAvailable) {\n const transformedPolicyObject = transformPolicyObject(policies, cspScriptSrcHashSet)\n\n return Object.entries(transformedPolicyObject).map(([k, v]) => `${k} ${v.join(' ')}`).join('; ')\n }\n\n return baseCspStr\n}\n\nconst transformPolicyObject = (policies, cspScriptSrcHashSet) => {\n const userHasDefinedScriptSrc = policies['script-src'] && Array.isArray(policies['script-src'])\n\n // Self is always needed for inline-scripts, so add it, no matter if the user specified script-src himself.\n\n const hashAndPolicySet = cspScriptSrcHashSet\n hashAndPolicySet.add(`'self'`)\n\n if (!userHasDefinedScriptSrc) {\n policies['script-src'] = Array.from(hashAndPolicySet)\n return policies\n }\n\n new Set(policies['script-src']).forEach(src => hashAndPolicySet.add(src))\n\n policies['script-src'] = Array.from(hashAndPolicySet)\n\n return policies\n}\n","import path from 'path'\nimport crypto from 'crypto'\n\nimport serialize from 'serialize-javascript'\nimport serveStatic from 'serve-static'\nimport _ from 'lodash'\nimport fs from 'fs-extra'\nimport { createBundleRenderer } from 'vue-server-renderer'\nimport connect from 'connect'\nimport launchMiddleware from 'launch-editor-middleware'\nimport consola from 'consola'\n\nimport { isUrl, timeout, waitFor } from '../common/utils'\nimport defaults from '../common/nuxt.config'\n\nimport MetaRenderer from './meta'\nimport errorMiddleware from './middleware/error'\nimport nuxtMiddleware from './middleware/nuxt'\n\nlet jsdom = null\n\nexport default class Renderer {\n constructor(nuxt) {\n this.nuxt = nuxt\n this.options = nuxt.options\n\n // Will be set by createRenderer\n this.bundleRenderer = null\n this.metaRenderer = null\n\n // Will be available on dev\n this.webpackDevMiddleware = null\n this.webpackHotMiddleware = null\n\n // Create new connect instance\n this.app = connect()\n\n // Renderer runtime resources\n this.resources = {\n clientManifest: null,\n serverBundle: null,\n ssrTemplate: null,\n spaTemplate: null,\n errorTemplate: parseTemplate('Nuxt.js Internal Server Error')\n }\n }\n\n async ready() {\n await this.nuxt.callHook('render:before', this, this.options.render)\n // Setup nuxt middleware\n await this.setupMiddleware()\n\n // Production: Load SSR resources from fs\n if (!this.options.dev) {\n await this.loadResources()\n }\n\n // Call done hook\n await this.nuxt.callHook('render:done', this)\n }\n\n async loadResources(_fs = fs) {\n const distPath = path.resolve(this.options.buildDir, 'dist', 'server')\n const updated = []\n\n resourceMap.forEach(({ key, fileName, transform }) => {\n const rawKey = '$$' + key\n const _path = path.join(distPath, fileName)\n\n if (!_fs.existsSync(_path)) {\n return // Resource not exists\n }\n const rawData = _fs.readFileSync(_path, 'utf8')\n if (!rawData || rawData === this.resources[rawKey]) {\n return // No changes\n }\n this.resources[rawKey] = rawData\n const data = transform(rawData)\n /* istanbul ignore if */\n if (!data) {\n return // Invalid data ?\n }\n this.resources[key] = data\n updated.push(key)\n })\n\n // Reload error template\n const errorTemplatePath = path.resolve(this.options.buildDir, 'views/error.html')\n if (fs.existsSync(errorTemplatePath)) {\n this.resources.errorTemplate = parseTemplate(\n fs.readFileSync(errorTemplatePath, 'utf8')\n )\n }\n\n // Load loading template\n const loadingHTMLPath = path.resolve(this.options.buildDir, 'loading.html')\n if (fs.existsSync(loadingHTMLPath)) {\n this.resources.loadingHTML = fs.readFileSync(loadingHTMLPath, 'utf8')\n this.resources.loadingHTML = this.resources.loadingHTML\n .replace(/\\r|\\n|[\\t\\s]{3,}/g, '')\n } else {\n this.resources.loadingHTML = ''\n }\n\n // Call resourcesLoaded plugin\n await this.nuxt.callHook('render:resourcesLoaded', this.resources)\n\n if (updated.length > 0) {\n this.createRenderer()\n }\n }\n\n get noSSR() {\n return this.options.render.ssr === false\n }\n\n get isReady() {\n if (this.noSSR) {\n return Boolean(this.resources.spaTemplate)\n }\n\n return Boolean(this.bundleRenderer && this.resources.ssrTemplate)\n }\n\n get isResourcesAvailable() {\n // Required for both\n /* istanbul ignore if */\n if (!this.resources.clientManifest) {\n return false\n }\n\n // Required for SPA rendering\n if (this.noSSR) {\n return Boolean(this.resources.spaTemplate)\n }\n\n // Required for bundle renderer\n return Boolean(this.resources.ssrTemplate && this.resources.serverBundle)\n }\n\n createRenderer() {\n // Ensure resources are available\n if (!this.isResourcesAvailable) {\n return\n }\n\n // Create Meta Renderer\n this.metaRenderer = new MetaRenderer(this.nuxt, this)\n\n // Skip following steps if noSSR mode\n if (this.noSSR) {\n return\n }\n\n const hasModules = fs.existsSync(path.resolve(this.options.rootDir, 'node_modules'))\n // Create bundle renderer for SSR\n this.bundleRenderer = createBundleRenderer(\n this.resources.serverBundle,\n Object.assign(\n {\n clientManifest: this.resources.clientManifest,\n runInNewContext: false,\n // for globally installed nuxt command, search dependencies in global dir\n basedir: hasModules ? this.options.rootDir : __dirname\n },\n this.options.render.bundleRenderer\n )\n )\n }\n\n useMiddleware(m) {\n // Resolve\n const $m = m\n if (typeof m === 'string') {\n m = this.nuxt.requireModule(m)\n }\n if (typeof m.handler === 'string') {\n m.handler = this.nuxt.requireModule(m.handler)\n }\n\n const handler = m.handler || m\n const path = (\n (m.prefix !== false ? this.options.router.base : '') +\n (typeof m.path === 'string' ? m.path : '')\n ).replace(/\\/\\//g, '/')\n\n handler.$m = $m\n\n // Use middleware\n this.app.use(path, handler)\n }\n\n get publicPath() {\n return isUrl(this.options.build.publicPath)\n ? defaults.build.publicPath\n : this.options.build.publicPath\n }\n\n async setupMiddleware() {\n // Apply setupMiddleware from modules first\n await this.nuxt.callHook('render:setupMiddleware', this.app)\n\n // Compression middleware for production\n if (!this.options.dev) {\n const compressor = this.options.render.compressor\n if (typeof compressor === 'object') {\n // If only setting for `compression` are provided, require the module and insert\n // Prefer require instead of requireModule to keep dependency in nuxt-start\n const compression = require('compression')\n this.useMiddleware(compression(compressor))\n } else {\n // Else, require own compression middleware\n this.useMiddleware(compressor)\n }\n }\n\n // Add webpack middleware only for development\n if (this.options.dev) {\n this.useMiddleware(async (req, res, next) => {\n if (this.webpackDevMiddleware) {\n await this.webpackDevMiddleware(req, res)\n }\n if (this.webpackHotMiddleware) {\n await this.webpackHotMiddleware(req, res)\n }\n next()\n })\n }\n\n // open in editor for debug mode only\n if (this.options.debug && this.options.dev) {\n this.useMiddleware({\n path: '__open-in-editor',\n handler: launchMiddleware(this.options.editor)\n })\n }\n\n // For serving static/ files to /\n const staticMiddleware = serveStatic(\n path.resolve(this.options.srcDir, this.options.dir.static),\n this.options.render.static\n )\n staticMiddleware.prefix = this.options.render.static.prefix\n this.useMiddleware(staticMiddleware)\n\n // Serve .nuxt/dist/ files only for production\n // For dev they will be served with devMiddleware\n if (!this.options.dev) {\n const distDir = path.resolve(this.options.buildDir, 'dist', 'client')\n this.useMiddleware({\n path: this.publicPath,\n handler: serveStatic(\n distDir,\n this.options.render.dist\n )\n })\n }\n\n // Add User provided middleware\n this.options.serverMiddleware.forEach((m) => {\n this.useMiddleware(m)\n })\n\n // Finally use nuxtMiddleware\n this.useMiddleware(nuxtMiddleware.bind(this))\n\n // Error middleware for errors that occurred in middleware that declared above\n // Middleware should exactly take 4 arguments\n // https://github.com/senchalabs/connect#error-middleware\n\n // Apply errorMiddleware from modules first\n await this.nuxt.callHook('render:errorMiddleware', this.app)\n\n // Apply errorMiddleware from Nuxt\n this.useMiddleware(errorMiddleware.bind(this))\n }\n\n renderTemplate(ssr, opts) {\n // Fix problem with HTMLPlugin's minify option (#3392)\n opts.html_attrs = opts.HTML_ATTRS\n opts.body_attrs = opts.BODY_ATTRS\n\n const fn = ssr ? this.resources.ssrTemplate : this.resources.spaTemplate\n\n return fn(opts)\n }\n\n async renderRoute(url, context = {}) {\n /* istanbul ignore if */\n if (!this.isReady) {\n await waitFor(1000)\n return this.renderRoute(url, context)\n }\n\n // Log rendered url\n consola.debug(`Rendering url ${url}`)\n\n // Add url and isSever to the context\n context.url = url\n\n // Basic response if SSR is disabled or spa data provided\n const spa = context.spa || (context.res && context.res.spa)\n const ENV = this.options.env\n\n if (this.noSSR || spa) {\n const {\n HTML_ATTRS,\n BODY_ATTRS,\n HEAD,\n BODY_SCRIPTS,\n getPreloadFiles\n } = await this.metaRenderer.render(context)\n const APP =\n `<div id=\"__nuxt\">${this.resources.loadingHTML}</div>` + BODY_SCRIPTS\n\n // Detect 404 errors\n if (\n url.includes(this.options.build.publicPath) ||\n url.includes('__webpack')\n ) {\n const err = {\n statusCode: 404,\n message: this.options.messages.error_404,\n name: 'ResourceNotFound'\n }\n throw err\n }\n\n const html = this.renderTemplate(false, {\n HTML_ATTRS,\n BODY_ATTRS,\n HEAD,\n APP,\n ENV\n })\n\n return { html, getPreloadFiles }\n }\n\n // Call renderToString from the bundleRenderer and generate the HTML (will update the context as well)\n let APP = await this.bundleRenderer.renderToString(context)\n\n if (!context.nuxt.serverRendered) {\n APP = '<div id=\"__nuxt\"></div>'\n }\n const m = context.meta.inject()\n let HEAD =\n m.title.text() +\n m.meta.text() +\n m.link.text() +\n m.style.text() +\n m.script.text() +\n m.noscript.text()\n if (this.options._routerBaseSpecified) {\n HEAD += `<base href=\"${this.options.router.base}\">`\n }\n\n if (this.options.render.resourceHints) {\n HEAD += context.renderResourceHints()\n }\n\n await this.nuxt.callHook('render:routeContext', context.nuxt)\n\n const serializedSession = `window.__NUXT__=${serialize(context.nuxt, {\n isJSON: true\n })};`\n\n const cspScriptSrcHashSet = new Set()\n if (this.options.render.csp) {\n const { hashAlgorithm } = this.options.render.csp\n const hash = crypto.createHash(hashAlgorithm)\n hash.update(serializedSession)\n cspScriptSrcHashSet.add(`'${hashAlgorithm}-${hash.digest('base64')}'`)\n }\n\n APP += `<script>${serializedSession}</script>`\n APP += context.renderScripts()\n APP += m.script.text({ body: true })\n APP += m.noscript.text({ body: true })\n\n HEAD += context.renderStyles()\n\n const html = this.renderTemplate(true, {\n HTML_ATTRS: 'data-n-head-ssr ' + m.htmlAttrs.text(),\n BODY_ATTRS: m.bodyAttrs.text(),\n HEAD,\n APP,\n ENV\n })\n\n return {\n html,\n cspScriptSrcHashSet,\n getPreloadFiles: context.getPreloadFiles,\n error: context.nuxt.error,\n redirected: context.redirected\n }\n }\n\n async renderAndGetWindow(url, opts = {}) {\n /* istanbul ignore if */\n if (!jsdom) {\n try {\n jsdom = require('jsdom')\n } catch (e) /* istanbul ignore next */ {\n consola.error(`\n Fail when calling nuxt.renderAndGetWindow(url)\n jsdom module is not installed\n Please install jsdom with: npm install --save-dev jsdom\n `)\n throw e\n }\n }\n const options = Object.assign({\n resources: 'usable', // load subresources (https://github.com/tmpvar/jsdom#loading-subresources)\n runScripts: 'dangerously',\n virtualConsole: true,\n beforeParse(window) {\n // Mock window.scrollTo\n window.scrollTo = () => {}\n }\n }, opts)\n const jsdomErrHandler = (err) => { throw err }\n if (options.virtualConsole) {\n if (options.virtualConsole === true) {\n options.virtualConsole = new jsdom.VirtualConsole().sendTo(consola)\n }\n // throw error when window creation failed\n options.virtualConsole.on('jsdomError', jsdomErrHandler)\n }\n url = url || 'http://localhost:3000'\n const { window } = await jsdom.JSDOM.fromURL(url, options)\n // If Nuxt could not be loaded (error from the server-side)\n const nuxtExists = window.document.body.innerHTML.includes(\n this.options.render.ssr ? 'window.__NUXT__' : '<div id=\"__nuxt\">'\n )\n /* istanbul ignore if */\n if (!nuxtExists) {\n const error = new Error('Could not load the nuxt app')\n error.body = window.document.body.innerHTML\n throw error\n }\n // Used by nuxt.js to say when the components are loaded and the app ready\n await timeout(new Promise((resolve) => {\n window._onNuxtLoaded = () => resolve(window)\n }), 20000, 'Components loading in renderAndGetWindow was not completed in 20s')\n if (options.virtualConsole) {\n // after window initialized successfully\n options.virtualConsole.removeListener('jsdomError', jsdomErrHandler)\n }\n // Send back window object\n return window\n }\n}\n\nconst parseTemplate = templateStr =>\n _.template(templateStr, {\n interpolate: /{{([\\s\\S]+?)}}/g\n })\n\nexport const resourceMap = [\n {\n key: 'clientManifest',\n fileName: 'vue-ssr-client-manifest.json',\n transform: JSON.parse\n },\n {\n key: 'serverBundle',\n fileName: 'server-bundle.json',\n transform: JSON.parse\n },\n {\n key: 'ssrTemplate',\n fileName: 'index.ssr.html',\n transform: parseTemplate\n },\n {\n key: 'spaTemplate',\n fileName: 'index.spa.html',\n transform: parseTemplate\n }\n]\n","import Module from 'module'\nimport { resolve, join } from 'path'\nimport https from 'https'\n\nimport enableDestroy from 'server-destroy'\nimport _ from 'lodash'\nimport fs from 'fs-extra'\nimport consola from 'consola'\nimport chalk from 'chalk'\nimport esm from 'esm'\nimport ip from 'ip'\n\nimport Options from '../common/options'\nimport { sequence } from '../common/utils'\nimport packageJSON from '../../package.json'\n\nimport ModuleContainer from './module'\nimport Renderer from './renderer'\n\nexport default class Nuxt {\n constructor(options = {}) {\n this.options = Options.from(options)\n\n this.readyMessage = null\n this.initialized = false\n\n // Hooks\n this._hooks = {}\n this.hook = this.hook.bind(this)\n\n // Create instance of core components\n this.moduleContainer = new ModuleContainer(this)\n this.renderer = new Renderer(this)\n\n // Backward compatibility\n this.render = this.renderer.app\n this.renderRoute = this.renderer.renderRoute.bind(this.renderer)\n this.renderAndGetWindow = this.renderer.renderAndGetWindow.bind(\n this.renderer\n )\n this.resolvePath = this.resolvePath.bind(this)\n this.resolveAlias = this.resolveAlias.bind(this)\n\n // ESM Loader\n this.esm = esm(module, {})\n\n this._ready = this.ready().catch((err) => {\n consola.fatal(err)\n })\n }\n\n static get version() {\n return packageJSON.version\n }\n\n async ready() {\n if (this._ready) {\n return this._ready\n }\n\n // Add hooks\n if (_.isPlainObject(this.options.hooks)) {\n this.addHooks(this.options.hooks)\n } else if (typeof this.options.hooks === 'function') {\n this.options.hooks(this.hook)\n }\n\n // Await for modules\n await this.moduleContainer.ready()\n\n // Await for renderer to be ready\n await this.renderer.ready()\n\n this.initialized = true\n\n // Call ready hook\n await this.callHook('ready', this)\n\n return this\n }\n\n hook(name, fn) {\n if (!name || typeof fn !== 'function') {\n return\n }\n if (name === 'render:context') {\n name = 'render:routeContext'\n consola.warn('render:context hook has been deprecated, please use render:routeContext')\n }\n this._hooks[name] = this._hooks[name] || []\n this._hooks[name].push(fn)\n }\n\n async callHook(name, ...args) {\n if (!this._hooks[name]) {\n return\n }\n consola.debug(`Call ${name} hooks (${this._hooks[name].length})`)\n try {\n await sequence(this._hooks[name], fn => fn(...args))\n } catch (err) {\n consola.error(err)\n this.callHook('error', err)\n }\n }\n\n clearHook(name) {\n if (name) {\n delete this._hooks[name]\n }\n }\n\n flatHooks(configHooks, hooks = {}, parentName) {\n Object.keys(configHooks).forEach((key) => {\n const subHook = configHooks[key]\n const name = parentName ? `${parentName}:${key}` : key\n if (typeof subHook === 'object' && subHook !== null) {\n this.flatHooks(subHook, hooks, name)\n } else {\n hooks[name] = subHook\n }\n })\n return hooks\n }\n\n addHooks(configHooks) {\n const hooks = this.flatHooks(configHooks)\n Object.keys(hooks).filter(Boolean).forEach((key) => {\n [].concat(hooks[key]).forEach(h => this.hook(key, h))\n })\n }\n\n showReady(clear = true) {\n if (!this.readyMessage) {\n return\n }\n consola.ready({\n message: this.readyMessage,\n badge: true,\n clear\n })\n this.readyMessage = null\n }\n\n listen(port = 3000, host = 'localhost', socket = null) {\n return this.ready().then(() => new Promise((resolve, reject) => {\n if (!socket && typeof this.options.server.socket === 'string') {\n socket = this.options.server.socket\n }\n\n const args = { exclusive: false }\n\n if (socket) {\n args.path = socket\n } else {\n args.port = port\n args.host = host\n }\n\n let appServer\n const isHttps = Boolean(this.options.server.https)\n\n if (isHttps) {\n let httpsOptions\n\n if (this.options.server.https === true) {\n httpsOptions = {}\n } else {\n httpsOptions = this.options.server.https\n }\n\n appServer = https.createServer(httpsOptions, this.renderer.app)\n } else {\n appServer = this.renderer.app\n }\n\n const server = appServer.listen(\n args,\n (err) => {\n /* istanbul ignore if */\n if (err) {\n return reject(err)\n }\n\n let listenURL\n\n if (!socket) {\n ({ address: host, port } = server.address())\n if (host === '127.0.0.1') {\n host = 'localhost'\n } else if (host === '0.0.0.0') {\n host = ip.address()\n }\n\n listenURL = chalk.underline.blue(`http${isHttps ? 's' : ''}://${host}:${port}`)\n this.readyMessage = `Listening on ${listenURL}`\n } else {\n listenURL = chalk.underline.blue(`unix+http://${socket}`)\n this.readyMessage = `Listening on ${listenURL}`\n }\n\n // Close server on nuxt close\n this.hook(\n 'close',\n () =>\n new Promise((resolve, reject) => {\n // Destroy server by forcing every connection to be closed\n server.listening && server.destroy((err) => {\n consola.debug('server closed')\n /* istanbul ignore if */\n if (err) {\n return reject(err)\n }\n resolve()\n })\n })\n )\n\n if (socket) {\n this.callHook('listen', server, { path: socket }).then(resolve)\n } else {\n this.callHook('listen', server, { port, host }).then(resolve)\n }\n }\n )\n\n // Add server.destroy(cb) method\n enableDestroy(server)\n }))\n }\n\n resolveModule(path) {\n try {\n const resolvedPath = Module._resolveFilename(path, {\n paths: this.options.modulesDir\n })\n\n return resolvedPath\n } catch (error) {\n if (error.code === 'MODULE_NOT_FOUND') {\n return null\n } else {\n throw error\n }\n }\n }\n\n resolveAlias(path) {\n const modulePath = this.resolveModule(path)\n\n // Try to resolve it as if it were a regular node_module\n // Package first. Fixes issue with @<org> scoped packages\n if (modulePath != null) {\n return modulePath\n }\n\n if (path.indexOf('@@') === 0 || path.indexOf('~~') === 0) {\n return join(this.options.rootDir, path.substr(2))\n }\n\n if (path.indexOf('@') === 0 || path.indexOf('~') === 0) {\n return join(this.options.srcDir, path.substr(1))\n }\n\n return resolve(this.options.srcDir, path)\n }\n\n resolvePath(path) {\n const _path = this.resolveAlias(path)\n\n if (fs.existsSync(_path)) {\n return _path\n }\n\n for (const ext of this.options.extensions) {\n if (fs.existsSync(_path + '.' + ext)) {\n return _path + '.' + ext\n }\n }\n\n throw new Error(`Cannot resolve \"${path}\" from \"${_path}\"`)\n }\n\n requireModule(_path, opts = {}) {\n const _resolvedPath = this.resolvePath(_path)\n const m = opts.esm === false ? require(_resolvedPath) : this.esm(_resolvedPath)\n return (m && m.default) || m\n }\n\n async close(callback) {\n await this.callHook('close', this)\n\n /* istanbul ignore if */\n if (typeof callback === 'function') {\n await callback()\n }\n }\n}\n","import Module from './module'\nimport Nuxt from './nuxt'\nimport Renderer from './renderer'\n\nexport default {\n Nuxt,\n Module,\n Renderer\n}\n","import path from 'path'\n\nimport { warmup } from 'thread-loader'\n\n// https://github.com/webpack-contrib/thread-loader\n// https://github.com/webpack-contrib/cache-loader\n\nexport default class PerfLoader {\n constructor(options) {\n this.options = options\n this.warmup = warmup\n this.workerPools = {\n js: {\n name: 'js',\n poolTimeout: this.options.dev ? Infinity : 2000\n },\n css: {\n name: 'css',\n poolTimeout: this.options.dev ? Infinity : 2000\n }\n }\n }\n\n warmupAll() {\n this.warmup(this.workerPools.js, ['babel-loader', '@babel/preset-env'])\n this.warmup(this.workerPools.css, ['css-loader'])\n }\n\n pool(poolName, _loaders) {\n const loaders = [].concat(_loaders)\n\n if (this.options.build.parallel) {\n const pool = this.workerPools[poolName]\n\n if (pool) {\n loaders.unshift({\n loader: 'thread-loader',\n options: pool\n })\n }\n }\n\n if (this.options.build.cache) {\n loaders.unshift({\n loader: 'cache-loader',\n options: {\n cacheDirectory: path.resolve('node_modules/.cache/cache-loader')\n }\n })\n }\n\n return loaders\n }\n\n poolOneOf(poolName, oneOfRules) {\n return oneOfRules.map(rule => Object.assign({}, rule, {\n use: this.pool(poolName, rule.use)\n }))\n }\n}\n","import chalk from 'chalk'\n\nconst prefix = `[vue-server-renderer-webpack-plugin]`\nexport const warn = msg => console.error(chalk.red(`${prefix} ${msg}\\n`)) // eslint-disable-line no-console\nexport const tip = msg => console.log(chalk.yellow(`${prefix} ${msg}\\n`)) // eslint-disable-line no-console\n\nexport const validate = (compiler) => {\n if (compiler.options.target !== 'node') {\n warn('webpack config `target` should be \"node\".')\n }\n\n if (compiler.options.output && compiler.options.output.libraryTarget !== 'commonjs2') {\n warn('webpack config `output.libraryTarget` should be \"commonjs2\".')\n }\n\n if (!compiler.options.externals) {\n tip(\n 'It is recommended to externalize dependencies in the server build for ' +\n 'better build performance.'\n )\n }\n}\n\nexport const onEmit = (compiler, name, hook) => {\n if (compiler.hooks) {\n // Webpack >= 4.0.0\n compiler.hooks.emit.tapAsync(name, hook)\n } else {\n // Webpack < 4.0.0\n compiler.plugin('emit', hook)\n }\n}\n\nexport const isJS = file => /\\.js(\\?[^.]+)?$/.test(file)\n\nexport const isCSS = file => /\\.css(\\?[^.]+)?$/.test(file)\n","import hash from 'hash-sum'\nimport { uniq } from 'lodash'\nimport { isJS, isCSS, onEmit } from './util'\n\nexport default class VueSSRClientPlugin {\n constructor(options = {}) {\n this.options = Object.assign({\n filename: 'vue-ssr-client-manifest.json'\n }, options)\n }\n\n apply(compiler) {\n onEmit(compiler, 'vue-client-plugin', (compilation, cb) => {\n const stats = compilation.getStats().toJson()\n\n const allFiles = uniq(stats.assets\n .map(a => a.name))\n\n const initialFiles = uniq(Object.keys(stats.entrypoints)\n .map(name => stats.entrypoints[name].assets)\n .reduce((assets, all) => all.concat(assets), [])\n .filter(file => isJS(file) || isCSS(file)))\n\n const asyncFiles = allFiles\n .filter(file => isJS(file) || isCSS(file))\n .filter(file => initialFiles.indexOf(file) < 0)\n\n const manifest = {\n publicPath: stats.publicPath,\n all: allFiles,\n initial: initialFiles,\n async: asyncFiles,\n modules: { /* [identifier: string]: Array<index: number> */ }\n }\n\n const assetModules = stats.modules.filter(m => m.assets.length)\n const fileToIndex = file => manifest.all.indexOf(file)\n stats.modules.forEach((m) => {\n // ignore modules duplicated in multiple chunks\n if (m.chunks.length === 1) {\n const cid = m.chunks[0]\n const chunk = stats.chunks.find(c => c.id === cid)\n if (!chunk || !chunk.files) {\n return\n }\n const id = m.identifier.replace(/\\s\\w+$/, '') // remove appended hash\n const files = manifest.modules[hash(id)] = chunk.files.map(fileToIndex)\n // find all asset modules associated with the same chunk\n assetModules.forEach((m) => {\n if (m.chunks.some(id => id === cid)) {\n files.push.apply(files, m.assets.map(fileToIndex))\n }\n })\n }\n })\n\n // const debug = (file, obj) => {\n // require('fs').writeFileSync(__dirname + '/' + file, JSON.stringify(obj, null, 2))\n // }\n // debug('stats.json', stats)\n // debug('client-manifest.json', manifest)\n\n const json = JSON.stringify(manifest, null, 2)\n compilation.assets[this.options.filename] = {\n source: () => json,\n size: () => json.length\n }\n cb()\n })\n }\n}\n","import fs from 'fs'\nimport path from 'path'\n\nimport _ from 'lodash'\nimport createResolver from 'postcss-import-resolver'\n\nimport { isPureObject } from '../../../common/utils'\n\nexport default class PostcssConfig {\n constructor(options, nuxt) {\n this.nuxt = nuxt\n this.dev = options.dev\n this.postcss = options.build.postcss\n this.srcDir = options.srcDir\n this.rootDir = options.rootDir\n this.cssSourceMap = options.build.cssSourceMap\n this.modulesDir = options.modulesDir\n }\n\n get defaultConfig() {\n return {\n useConfigFile: false,\n sourceMap: this.cssSourceMap,\n plugins: {\n // https://github.com/postcss/postcss-import\n 'postcss-import': {\n resolve: createResolver({\n alias: {\n '~': path.join(this.srcDir),\n '~~': path.join(this.rootDir),\n '@': path.join(this.srcDir),\n '@@': path.join(this.rootDir)\n },\n modules: [\n this.srcDir,\n this.rootDir,\n ...this.modulesDir\n ]\n })\n },\n\n // https://github.com/postcss/postcss-url\n 'postcss-url': {},\n\n // https://github.com/csstools/postcss-preset-env\n 'postcss-preset-env': this.preset || {},\n 'cssnano': this.dev ? false : { preset: 'default' }\n }\n }\n }\n\n configFromFile() {\n // Search for postCSS config file and use it if exists\n // https://github.com/michael-ciniawsky/postcss-load-config\n for (const dir of [this.srcDir, this.rootDir]) {\n for (const file of [\n 'postcss.config.js',\n '.postcssrc.js',\n '.postcssrc',\n '.postcssrc.json',\n '.postcssrc.yaml'\n ]) {\n if (fs.existsSync(path.resolve(dir, file))) {\n const postcssConfigPath = path.resolve(dir, file)\n return {\n sourceMap: this.cssSourceMap,\n config: {\n path: postcssConfigPath\n }\n }\n }\n }\n }\n }\n\n normalize(config) {\n if (Array.isArray(config)) {\n config = { plugins: config }\n }\n return config\n }\n\n loadPlugins(config) {\n const plugins = config.plugins\n if (isPureObject(plugins)) {\n // Map postcss plugins into instances on object mode once\n config.plugins = Object.keys(plugins)\n .map((p) => {\n const plugin = require(p)\n const opts = plugins[p]\n if (opts === false) return // Disabled\n const instance = plugin(opts)\n return instance\n })\n .filter(e => e)\n }\n }\n\n config() {\n /* istanbul ignore if */\n if (!this.postcss) {\n return false\n }\n\n let config = this.configFromFile()\n if (config) {\n return config\n }\n\n config = this.normalize(_.cloneDeep(this.postcss))\n\n // Apply default plugins\n if (isPureObject(config)) {\n if (config.preset) {\n this.preset = config.preset\n delete config.preset\n }\n _.defaults(config, this.defaultConfig)\n\n this.loadPlugins(config)\n }\n\n return config\n }\n}\n","import MiniCssExtractPlugin from 'mini-css-extract-plugin'\nimport PostcssConfig from './postcss'\n\nexport default class StyleLoader {\n constructor(options, nuxt, { isServer }) {\n this.isServer = isServer\n this.dev = options.dev\n this.srcDir = options.srcDir\n this.assetsDir = options.dir.assets\n this.staticDir = options.dir.static\n this.loaders = options.build.loaders\n this.extractCSS = options.build.extractCSS\n this.resources = options.build.styleResources\n this.sourceMap = Boolean(options.build.cssSourceMap)\n\n if (options.build.postcss) {\n this.postcssConfig = new PostcssConfig(options, nuxt)\n }\n }\n\n normalize(loaders) {\n loaders = Array.isArray(loaders) ? loaders : [loaders]\n return loaders.map(loader => (typeof loader === 'string' ? { loader } : loader))\n }\n\n styleResource(ext) {\n const extResource = this.resources[ext]\n // style-resources-loader\n // https://github.com/yenshih/style-resources-loader\n if (extResource) {\n const patterns = Array.isArray(extResource)\n ? extResource\n : [extResource]\n\n return {\n loader: 'style-resources-loader',\n options: Object.assign(\n { patterns },\n this.resources.options || {}\n )\n }\n }\n }\n\n postcss() {\n // postcss-loader\n // https://github.com/postcss/postcss-loader\n if (this.postcssConfig) {\n const config = this.postcssConfig.config()\n if (config) {\n return {\n loader: 'postcss-loader',\n options: Object.assign({ sourceMap: this.sourceMap }, config)\n }\n }\n }\n }\n\n css(options) {\n return {\n loader: (this.isServer && this.extractCSS) ? 'css-loader/locals' : 'css-loader',\n options\n }\n }\n\n cssModules(options) {\n options.modules = true\n return this.css(options)\n }\n\n extract() {\n if (this.extractCSS && !this.isServer) {\n return MiniCssExtractPlugin.loader\n }\n }\n\n vueStyle() {\n // https://github.com/vuejs/vue-style-loader\n return {\n loader: 'vue-style-loader',\n options: this.loaders.vueStyle\n }\n }\n\n apply(ext, loaders = []) {\n const customLoaders = [].concat(\n this.postcss(loaders),\n this.normalize(loaders),\n this.styleResource(ext)\n ).filter(Boolean)\n\n const { css: cssOptions, cssModules: cssModulesOptions } = this.loaders\n cssOptions.importLoaders = cssModulesOptions.importLoaders = customLoaders.length\n\n const styleLoader = this.extract() || this.vueStyle()\n\n return [\n // This matches <style module>\n {\n resourceQuery: /module/,\n use: [].concat(\n styleLoader,\n this.cssModules(cssModulesOptions),\n customLoaders\n )\n },\n // This matches plain <style> or <style scoped>\n {\n use: [].concat(\n styleLoader,\n this.css(cssOptions),\n customLoaders\n )\n }\n ]\n }\n}\n","export default class WarnFixPlugin {\n apply(compiler) /* istanbul ignore next */ {\n compiler.hooks.done.tap('warnfix-plugin', (stats) => {\n stats.compilation.warnings = stats.compilation.warnings.filter((warn) => {\n if (\n warn.name === 'ModuleDependencyWarning' &&\n warn.message.includes(`export 'default'`) &&\n warn.message.includes('nuxt_plugin_')\n ) {\n return false\n }\n return true\n })\n })\n }\n}\n","\nexport default class StatsPlugin {\n constructor(statsOptions) {\n this.statsOptions = statsOptions\n }\n\n apply(compiler) {\n compiler.hooks.done.tap('stats-plugin', (stats) => {\n process.stdout.write(\n '\\n' +\n stats.toString(this.statsOptions) +\n '\\n'\n )\n })\n }\n}\n","import path from 'path'\nimport consola from 'consola'\n\nimport TimeFixPlugin from 'time-fix-plugin'\nimport _ from 'lodash'\nimport VueLoader from 'vue-loader'\nimport MiniCssExtractPlugin from 'mini-css-extract-plugin'\nimport WebpackBar from 'webpackbar'\n\nimport { isUrl, urlJoin } from '../../common/utils'\nimport StyleLoader from './utils/style-loader'\nimport WarnFixPlugin from './plugins/warnfix'\nimport StatsPlugin from './plugins/stats'\n\nexport default class WebpackBaseConfig {\n constructor(builder, options) {\n this.name = options.name\n this.isServer = options.isServer\n this.builder = builder\n this.nuxt = this.builder.nuxt\n this.isStatic = builder.isStatic\n this.options = builder.options\n this.spinner = builder.spinner\n this.loaders = this.options.build.loaders\n }\n\n get nuxtEnv() {\n return {\n isDev: this.options.dev,\n isServer: this.isServer,\n isClient: !this.isServer\n }\n }\n\n getBabelOptions() {\n const options = _.clone(this.options.build.babel)\n\n if (typeof options.presets === 'function') {\n options.presets = options.presets({ isServer: this.isServer })\n }\n\n if (!options.babelrc && !options.presets) {\n options.presets = [\n [\n require.resolve('@nuxtjs/babel-preset-app'),\n {\n buildTarget: this.isServer ? 'server' : 'client'\n }\n ]\n ]\n }\n\n return options\n }\n\n getFileName(key) {\n let fileName = this.options.build.filenames[key]\n if (typeof fileName === 'function') {\n fileName = fileName(this.nuxtEnv)\n }\n if (this.options.dev) {\n const hash = /\\[(chunkhash|contenthash|hash)(?::(\\d+))?\\]/.exec(fileName)\n if (hash) {\n consola.warn(`Notice: Please do not use ${hash[1]} in dev mode to prevent memory leak`)\n }\n }\n return fileName\n }\n\n devtool() {\n return false\n }\n\n env() {\n const env = {\n 'process.mode': JSON.stringify(this.options.mode),\n 'process.static': this.isStatic\n }\n _.each(this.options.env, (value, key) => {\n env['process.env.' + key] =\n ['boolean', 'number'].indexOf(typeof value) !== -1\n ? value\n : JSON.stringify(value)\n })\n return env\n }\n\n output() {\n return {\n path: path.resolve(this.options.buildDir, 'dist', this.isServer ? 'server' : 'client'),\n filename: this.getFileName('app'),\n chunkFilename: this.getFileName('chunk'),\n publicPath: isUrl(this.options.build.publicPath)\n ? this.options.build.publicPath\n : urlJoin(this.options.router.base, this.options.build.publicPath)\n }\n }\n\n optimization() {\n return this.options.build.optimization\n }\n\n alias() {\n const { srcDir, rootDir, dir: { assets: assetsDir, static: staticDir } } = this.options\n\n return {\n '~': path.join(srcDir),\n '~~': path.join(rootDir),\n '@': path.join(srcDir),\n '@@': path.join(rootDir),\n [assetsDir]: path.join(srcDir, assetsDir),\n [staticDir]: path.join(srcDir, staticDir)\n }\n }\n\n rules() {\n const styleLoader = new StyleLoader(\n this.options,\n this.builder.nuxt,\n { isServer: this.isServer }\n )\n\n const perfLoader = this.builder.perfLoader\n\n return [\n {\n test: /\\.vue$/,\n loader: 'vue-loader',\n options: this.loaders.vue\n },\n {\n test: /\\.pug$/,\n oneOf: [\n {\n resourceQuery: /^\\?vue/,\n use: [{\n loader: 'pug-plain-loader',\n options: this.loaders.pugPlain\n }]\n },\n {\n use: [\n 'raw-loader',\n {\n loader: 'pug-plain-loader',\n options: this.loaders.pugPlain\n }\n ]\n }\n ]\n },\n {\n test: /\\.jsx?$/,\n exclude: (file) => {\n // not exclude files outside node_modules\n if (/node_modules/.test(file)) {\n for (const module of [/\\.vue\\.js/].concat(this.options.build.transpile)) {\n // item in transpile can be string or regex object\n if (module.test(file)) {\n return false\n }\n }\n return true\n }\n },\n use: perfLoader.pool('js', {\n loader: 'babel-loader',\n options: this.getBabelOptions()\n })\n },\n {\n test: /\\.css$/,\n oneOf: perfLoader.poolOneOf('css', styleLoader.apply('css'))\n },\n {\n test: /\\.less$/,\n oneOf: perfLoader.poolOneOf('css', styleLoader.apply('less', {\n loader: 'less-loader',\n options: this.loaders.less\n }))\n },\n {\n test: /\\.sass$/,\n oneOf: perfLoader.poolOneOf('css', styleLoader.apply('sass', {\n loader: 'sass-loader',\n options: this.loaders.sass\n }))\n },\n {\n test: /\\.scss$/,\n oneOf: perfLoader.poolOneOf('css', styleLoader.apply('scss', {\n loader: 'sass-loader',\n options: this.loaders.scss\n }))\n },\n {\n test: /\\.styl(us)?$/,\n oneOf: perfLoader.poolOneOf('css', styleLoader.apply('stylus', {\n loader: 'stylus-loader',\n options: this.loaders.stylus\n }))\n },\n {\n test: /\\.(png|jpe?g|gif|svg|webp)$/,\n use: perfLoader.pool('assets', {\n loader: 'url-loader',\n options: Object.assign(\n this.loaders.imgUrl,\n { name: this.getFileName('img') }\n )\n })\n },\n {\n test: /\\.(woff2?|eot|ttf|otf)(\\?.*)?$/,\n use: perfLoader.pool('assets', {\n loader: 'url-loader',\n options: Object.assign(\n this.loaders.fontUrl,\n { name: this.getFileName('font') }\n )\n })\n },\n {\n test: /\\.(webm|mp4|ogv)$/,\n use: perfLoader.pool('assets', {\n loader: 'file-loader',\n options: Object.assign(\n this.loaders.file,\n { name: this.getFileName('video') }\n )\n })\n }\n ]\n }\n\n plugins() {\n const plugins = [ new VueLoader.VueLoaderPlugin() ]\n\n Array.prototype.push.apply(plugins, this.options.build.plugins || [])\n\n // Add timefix-plugin before others plugins\n if (this.options.dev) {\n plugins.unshift(new TimeFixPlugin())\n }\n\n // Hide warnings about plugins without a default export (#1179)\n plugins.push(new WarnFixPlugin())\n\n // Build progress indicator\n plugins.push(new WebpackBar({\n profile: this.options.build.profile,\n name: this.isServer ? 'server' : 'client',\n color: this.isServer ? 'orange' : 'green',\n compiledIn: false,\n done: (states) => {\n if (this.options.dev) {\n const hasErrors = Object.values(states).some(state => state.stats.hasErrors())\n\n if (!hasErrors) {\n this.nuxt.showReady(false)\n }\n }\n }\n }))\n\n // Add stats plugin\n if (!this.options.dev && this.options.build.stats) {\n plugins.push(new StatsPlugin(this.options.build.stats))\n }\n\n // CSS extraction\n // MiniCssExtractPlugin does not currently supports SSR\n // https://github.com/webpack-contrib/mini-css-extract-plugin/issues/48\n // So we use css-loader/locals as a fallback (utils/style-loader)\n if (this.options.build.extractCSS && !this.isServer) {\n plugins.push(new MiniCssExtractPlugin(Object.assign({\n filename: this.getFileName('css'),\n chunkFilename: this.getFileName('css')\n }, this.options.build.extractCSS)))\n }\n\n return plugins\n }\n\n extendConfig(config) {\n if (typeof this.options.build.extend === 'function') {\n const extendedConfig = this.options.build.extend.call(\n this.builder, config, { loaders: this.loaders, ...this.nuxtEnv }\n )\n // Only overwrite config when something is returned for backwards compatibility\n if (extendedConfig !== undefined) {\n return extendedConfig\n }\n }\n return config\n }\n\n config() {\n // Prioritize nested node_modules in webpack search path (#2558)\n const webpackModulesDir = ['node_modules'].concat(this.options.modulesDir)\n const config = {\n name: this.name,\n mode: this.options.dev ? 'development' : 'production',\n devtool: this.devtool(),\n optimization: this.optimization(),\n output: this.output(),\n performance: {\n maxEntrypointSize: 1000 * 1024,\n hints: this.options.dev ? false : 'warning'\n },\n resolve: {\n extensions: ['.wasm', '.mjs', '.js', '.json', '.vue', '.jsx'],\n alias: this.alias(),\n modules: webpackModulesDir\n },\n resolveLoader: {\n modules: webpackModulesDir\n },\n module: {\n rules: this.rules()\n },\n plugins: this.plugins()\n }\n\n const extendedConfig = this.extendConfig(config)\n\n // Clone deep avoid leaking config between Client and Server\n return _.cloneDeep(extendedConfig)\n }\n}\n","import path from 'path'\n\nimport webpack from 'webpack'\nimport HTMLPlugin from 'html-webpack-plugin'\nimport BundleAnalyzer from 'webpack-bundle-analyzer'\nimport TerserWebpackPlugin from 'terser-webpack-plugin'\nimport OptimizeCSSAssetsPlugin from 'optimize-css-assets-webpack-plugin'\nimport FriendlyErrorsWebpackPlugin from '@nuxtjs/friendly-errors-webpack-plugin'\n\nimport VueSSRClientPlugin from './plugins/vue/client'\nimport WebpackBaseConfig from './base'\n\nexport default class WebpackClientConfig extends WebpackBaseConfig {\n constructor(builder) {\n super(builder, { name: 'client', isServer: false })\n }\n\n env() {\n return Object.assign(super.env(), {\n 'process.env.VUE_ENV': JSON.stringify('client'),\n 'process.browser': true,\n 'process.client': true,\n 'process.server': false\n })\n }\n\n optimization() {\n const optimization = super.optimization()\n\n // Small, known and common modules which are usually used project-wise\n // Sum of them may not be more than 244 KiB\n if (\n this.options.build.splitChunks.commons === true &&\n optimization.splitChunks.cacheGroups.commons === undefined\n ) {\n optimization.splitChunks.cacheGroups.commons = {\n test: /node_modules[\\\\/](vue|vue-loader|vue-router|vuex|vue-meta|core-js|@babel\\/runtime|axios|webpack|setimmediate|timers-browserify|process|regenerator-runtime|cookie|js-cookie|is-buffer|dotprop|nuxt\\.js)[\\\\/]/,\n chunks: 'all',\n priority: 10,\n name: true\n }\n }\n\n return optimization\n }\n\n plugins() {\n const plugins = super.plugins()\n\n // Generate output HTML for SSR\n if (this.options.build.ssr) {\n plugins.push(\n new HTMLPlugin({\n filename: '../server/index.ssr.html',\n template: this.options.appTemplatePath,\n minify: true,\n inject: false // Resources will be injected using bundleRenderer\n })\n )\n }\n\n plugins.push(\n new HTMLPlugin({\n filename: '../server/index.spa.html',\n template: this.options.appTemplatePath,\n minify: true,\n inject: true,\n chunksSortMode: 'dependency'\n }),\n new VueSSRClientPlugin({\n filename: '../server/vue-ssr-client-manifest.json'\n }),\n new webpack.DefinePlugin(this.env())\n )\n\n if (this.options.dev) {\n // TODO: webpackHotUpdate is not defined: https://github.com/webpack/webpack/issues/6693\n plugins.push(new webpack.HotModuleReplacementPlugin())\n }\n\n // Webpack Bundle Analyzer\n // https://github.com/webpack-contrib/webpack-bundle-analyzer\n if (!this.options.dev && this.options.build.analyze) {\n const statsDir = path.resolve(this.options.buildDir, 'stats')\n\n plugins.push(new BundleAnalyzer.BundleAnalyzerPlugin(Object.assign({\n analyzerMode: 'static',\n defaultSizes: 'gzip',\n generateStatsFile: true,\n openAnalyzer: !this.options.build.quiet,\n reportFilename: path.resolve(statsDir, 'client.html'),\n statsFilename: path.resolve(statsDir, 'client.json')\n }, this.options.build.analyze)))\n }\n\n return plugins\n }\n\n extendConfig() {\n const config = super.extendConfig(...arguments)\n\n if (!this.options.dev && !config.optimization.minimizer) {\n config.optimization.minimizer = []\n\n // https://github.com/webpack-contrib/terser-webpack-plugin\n const terserJsPlugin = new TerserWebpackPlugin({\n parallel: true,\n cache: this.options.build.cache,\n sourceMap: config.devtool && /source-?map/.test(config.devtool),\n extractComments: {\n filename: 'LICENSES'\n },\n terserOptions: {\n output: {\n comments: /^\\**!|@preserve|@license|@cc_on/\n }\n }\n })\n config.optimization.minimizer.push(terserJsPlugin)\n\n // https://github.com/NMFR/optimize-css-assets-webpack-plugin\n // https://github.com/webpack-contrib/mini-css-extract-plugin#minimizing-for-production\n // TODO: Remove OptimizeCSSAssetsPlugin when upgrading to webpack 5\n if (this.options.build.extractCSS) {\n const optimizeCSSPlugin = new OptimizeCSSAssetsPlugin({})\n config.optimization.minimizer.push(optimizeCSSPlugin)\n }\n }\n\n return config\n }\n\n config() {\n const config = super.config()\n\n // Entry points\n config.entry = {\n app: [path.resolve(this.options.buildDir, 'client.js')]\n }\n\n // Add HMR support\n if (this.options.dev) {\n config.entry.app.unshift(\n // https://github.com/glenjamin/webpack-hot-middleware#config\n `webpack-hot-middleware/client?name=client&reload=true&timeout=30000&path=${\n this.options.router.base\n }/__webpack_hmr`.replace(/\\/\\//g, '/')\n )\n }\n\n // Add friendly error plugin\n if (this.options.dev && !this.options.build.quiet) {\n config.plugins.push(\n new FriendlyErrorsWebpackPlugin({\n clearConsole: true,\n logLevel: 'WARNING'\n })\n )\n }\n\n return config\n }\n}\n","import { validate, isJS, onEmit } from './util'\n\nexport default class VueSSRServerPlugin {\n constructor(options = {}) {\n this.options = Object.assign({\n filename: 'vue-ssr-server-bundle.json'\n }, options)\n }\n\n apply(compiler) {\n validate(compiler)\n\n onEmit(compiler, 'vue-server-plugin', (compilation, cb) => {\n const stats = compilation.getStats().toJson()\n const entryName = Object.keys(stats.entrypoints)[0]\n const entryInfo = stats.entrypoints[entryName]\n\n if (!entryInfo) {\n // #5553\n return cb()\n }\n\n const entryAssets = entryInfo.assets.filter(isJS)\n\n if (entryAssets.length > 1) {\n throw new Error(\n `Server-side bundle should have one single entry file. ` +\n `Avoid using CommonsChunkPlugin in the server config.`\n )\n }\n\n const entry = entryAssets[0]\n if (!entry || typeof entry !== 'string') {\n throw new Error(\n `Entry \"${entryName}\" not found. Did you specify the correct entry option?`\n )\n }\n\n const bundle = {\n entry,\n files: {},\n maps: {}\n }\n\n stats.assets.forEach((asset) => {\n if (asset.name.match(/\\.js$/)) {\n bundle.files[asset.name] = compilation.assets[asset.name].source()\n } else if (asset.name.match(/\\.js\\.map$/)) {\n bundle.maps[asset.name.replace(/\\.map$/, '')] = JSON.parse(compilation.assets[asset.name].source())\n }\n // do not emit anything else for server\n delete compilation.assets[asset.name]\n })\n\n const json = JSON.stringify(bundle, null, 2)\n const filename = this.options.filename\n\n compilation.assets[filename] = {\n source: () => json,\n size: () => json.length\n }\n\n cb()\n })\n }\n}\n","import path from 'path'\nimport fs from 'fs'\n\nimport webpack from 'webpack'\nimport nodeExternals from 'webpack-node-externals'\n\nimport BaseConfig from './base'\nimport VueSSRServerPlugin from './plugins/vue/server'\n\nexport default class WebpackServerConfig extends BaseConfig {\n constructor(builder) {\n super(builder, { name: 'server', isServer: true })\n }\n\n devtool() {\n return 'cheap-source-map'\n }\n\n env() {\n return Object.assign(super.env(), {\n 'process.env.VUE_ENV': JSON.stringify('server'),\n 'process.browser': false,\n 'process.client': false,\n 'process.server': true\n })\n }\n\n optimization() {\n return {\n splitChunks: false,\n minimizer: []\n }\n }\n\n plugins() {\n const plugins = super.plugins()\n plugins.push(\n new VueSSRServerPlugin({\n filename: 'server-bundle.json'\n }),\n new webpack.DefinePlugin(this.env())\n )\n return plugins\n }\n\n config() {\n const config = super.config()\n\n Object.assign(config, {\n target: 'node',\n node: false,\n entry: {\n app: [path.resolve(this.options.buildDir, 'server.js')]\n },\n output: Object.assign({}, config.output, {\n filename: 'server-bundle.js',\n libraryTarget: 'commonjs2'\n }),\n performance: {\n hints: false,\n maxAssetSize: Infinity\n },\n externals: []\n })\n\n // https://webpack.js.org/configuration/externals/#externals\n // https://github.com/liady/webpack-node-externals\n // https://vue-loader.vuejs.org/migrating.html#ssr-externals\n this.options.modulesDir.forEach((dir) => {\n if (fs.existsSync(dir)) {\n config.externals.push(\n nodeExternals({\n whitelist: [\n /\\.css$/,\n /\\?vue&type=style/,\n ...this.options.build.transpile\n ],\n modulesDir: dir\n })\n )\n }\n })\n\n return config\n }\n}\n","import path from 'path'\nimport fs from 'fs'\n\nimport pify from 'pify'\nimport _ from 'lodash'\nimport chokidar from 'chokidar'\nimport fsExtra from 'fs-extra'\nimport hash from 'hash-sum'\nimport webpack from 'webpack'\nimport serialize from 'serialize-javascript'\nimport MFS from 'memory-fs'\nimport webpackDevMiddleware from 'webpack-dev-middleware'\nimport webpackHotMiddleware from 'webpack-hot-middleware'\nimport Glob from 'glob'\nimport upath from 'upath'\nimport consola from 'consola'\n\nimport { r, wp, wChunk, createRoutes, parallel, sequence, relativeTo, waitFor } from '../common/utils'\nimport Options from '../common/options'\n\nimport PerfLoader from './webpack/utils/perf-loader'\nimport ClientWebpackConfig from './webpack/client'\nimport ServerWebpackConfig from './webpack/server'\n\nconst glob = pify(Glob)\n\nexport default class Builder {\n constructor(nuxt) {\n this.nuxt = nuxt\n this.isStatic = false // Flag to know if the build is for a generated app\n this.options = nuxt.options\n\n // Fields that set on build\n this.compilers = []\n this.compilersWatching = []\n this.webpackDevMiddleware = null\n this.webpackHotMiddleware = null\n this.watchers = {\n files: null,\n custom: null,\n restart: null\n }\n this.perfLoader = null\n\n // Helper to resolve build paths\n this.relativeToBuild = (...args) =>\n relativeTo(this.options.buildDir, ...args)\n\n this._buildStatus = STATUS.INITIAL\n\n // Stop watching on nuxt.close()\n if (this.options.dev) {\n this.nuxt.hook('close', () => this.unwatch())\n }\n\n // Initialize shared FS and Cache\n if (this.options.dev) {\n this.mfs = new MFS()\n }\n\n // if(!this.options.dev) {\n // TODO: enable again when unsafe concern resolved.(common/options.js:42)\n // this.nuxt.hook('build:done', () => this.generateConfig())\n // }\n }\n\n normalizePlugins() {\n return _.uniqBy(\n this.options.plugins.map((p) => {\n if (typeof p === 'string') p = { src: p }\n const pluginBaseName = path.basename(p.src, path.extname(p.src)).replace(\n /[^a-zA-Z?\\d\\s:]/g,\n ''\n )\n return {\n src: this.nuxt.resolveAlias(p.src),\n ssr: p.ssr !== false,\n name: 'nuxt_plugin_' + pluginBaseName + '_' + hash(p.src)\n }\n }),\n p => p.name\n )\n }\n\n forGenerate() {\n this.isStatic = true\n }\n\n async build() {\n // Avoid calling build() method multiple times when dev:true\n /* istanbul ignore if */\n if (this._buildStatus === STATUS.BUILD_DONE && this.options.dev) {\n return this\n }\n // If building\n /* istanbul ignore if */\n if (this._buildStatus === STATUS.BUILDING) {\n await waitFor(1000)\n return this.build()\n }\n this._buildStatus = STATUS.BUILDING\n\n consola.info({\n message: 'Building project',\n badge: true,\n clear: !this.options.dev\n })\n\n // Wait for nuxt ready\n await this.nuxt.ready()\n\n // Call before hook\n await this.nuxt.callHook('build:before', this, this.options.build)\n\n // Check if pages dir exists and warn if not\n this._nuxtPages = typeof this.options.build.createRoutes !== 'function'\n if (this._nuxtPages) {\n if (!fsExtra.existsSync(path.join(this.options.srcDir, this.options.dir.pages))) {\n const dir = this.options.srcDir\n if (fsExtra.existsSync(path.join(this.options.srcDir, '..', this.options.dir.pages))) {\n throw new Error(\n `No \\`${this.options.dir.pages}\\` directory found in ${dir}. Did you mean to run \\`nuxt\\` in the parent (\\`../\\`) directory?`\n )\n } else {\n this._defaultPage = true\n }\n }\n }\n\n consola.success('Builder initialized')\n\n consola.debug(`App root: ${this.options.srcDir}`)\n\n // Create .nuxt/, .nuxt/components and .nuxt/dist folders\n await fsExtra.remove(r(this.options.buildDir))\n const buildDirs = [r(this.options.buildDir, 'components')]\n if (!this.options.dev) {\n buildDirs.push(\n r(this.options.buildDir, 'dist', 'client'),\n r(this.options.buildDir, 'dist', 'server')\n )\n }\n await Promise.all(buildDirs.map(dir => fsExtra.mkdirp(dir)))\n\n // Generate routes and interpret the template files\n await this.generateRoutesAndFiles()\n\n // Start webpack build\n await this.webpackBuild()\n\n // Flag to set that building is done\n this._buildStatus = STATUS.BUILD_DONE\n\n // Call done hook\n await this.nuxt.callHook('build:done', this)\n\n return this\n }\n\n async generateRoutesAndFiles() {\n consola.debug(`Generating nuxt files`)\n\n this.plugins = this.normalizePlugins()\n\n // -- Templates --\n let templatesFiles = [\n 'App.js',\n 'client.js',\n 'index.js',\n 'middleware.js',\n 'router.js',\n 'server.js',\n 'utils.js',\n 'empty.js',\n 'components/nuxt-error.vue',\n 'components/nuxt-loading.vue',\n 'components/nuxt-child.js',\n 'components/nuxt-link.js',\n 'components/nuxt.js',\n 'components/no-ssr.js',\n 'views/app.template.html',\n 'views/error.html'\n ]\n const templateVars = {\n options: this.options,\n extensions: this.options.extensions\n .map(ext => ext.replace(/^\\./, ''))\n .join('|'),\n messages: this.options.messages,\n splitChunks: this.options.build.splitChunks,\n uniqBy: _.uniqBy,\n isDev: this.options.dev,\n debug: this.options.debug,\n vue: { config: this.options.vue.config },\n mode: this.options.mode,\n router: this.options.router,\n env: this.options.env,\n head: this.options.head,\n middleware: fsExtra.existsSync(path.join(this.options.srcDir, this.options.dir.middleware)),\n store: this.options.store,\n css: this.options.css,\n plugins: this.plugins,\n appPath: './App.js',\n ignorePrefix: this.options.ignorePrefix,\n layouts: Object.assign({}, this.options.layouts),\n loading:\n typeof this.options.loading === 'string'\n ? this.relativeToBuild(this.options.srcDir, this.options.loading)\n : this.options.loading,\n transition: this.options.transition,\n layoutTransition: this.options.layoutTransition,\n dir: this.options.dir,\n components: {\n ErrorPage: this.options.ErrorPage\n ? this.relativeToBuild(this.options.ErrorPage)\n : null\n }\n }\n\n // -- Layouts --\n if (fsExtra.existsSync(path.resolve(this.options.srcDir, this.options.dir.layouts))) {\n const layoutsFiles = await glob(`${this.options.dir.layouts}/**/*.{vue,js}`, {\n cwd: this.options.srcDir,\n ignore: this.options.ignore\n })\n layoutsFiles.forEach((file) => {\n const name = file\n .split('/')\n .slice(1)\n .join('/')\n .replace(/\\.(vue|js)$/, '')\n if (name === 'error') {\n if (!templateVars.components.ErrorPage) {\n templateVars.components.ErrorPage = this.relativeToBuild(\n this.options.srcDir,\n file\n )\n }\n return\n }\n if (!templateVars.layouts[name] || /\\.vue$/.test(file)) {\n templateVars.layouts[name] = this.relativeToBuild(\n this.options.srcDir,\n file\n )\n }\n })\n }\n // If no default layout, create its folder and add the default folder\n if (!templateVars.layouts.default) {\n await fsExtra.mkdirp(r(this.options.buildDir, 'layouts'))\n templatesFiles.push('layouts/default.vue')\n templateVars.layouts.default = './layouts/default.vue'\n }\n\n // -- Routes --\n consola.debug('Generating routes...')\n\n if (this._defaultPage) {\n templateVars.router.routes = createRoutes(\n ['index.vue'],\n this.options.nuxtAppDir + '/pages'\n )\n } else if (this._nuxtPages) { // If user defined a custom method to create routes\n // Use nuxt.js createRoutes bases on pages/\n const files = {}\n ;(await glob(`${this.options.dir.pages}/**/*.{vue,js}`, {\n cwd: this.options.srcDir,\n ignore: this.options.ignore\n })).forEach((f) => {\n const key = f.replace(/\\.(js|vue)$/, '')\n if (/\\.vue$/.test(f) || !files[key]) {\n files[key] = f.replace(/('|\")/g, '\\\\$1')\n }\n })\n templateVars.router.routes = createRoutes(\n Object.values(files),\n this.options.srcDir,\n this.options.dir.pages\n )\n } else {\n templateVars.router.routes = this.options.build.createRoutes(\n this.options.srcDir\n )\n }\n\n await this.nuxt.callHook(\n 'build:extendRoutes',\n templateVars.router.routes,\n r\n )\n\n // router.extendRoutes method\n if (typeof this.options.router.extendRoutes === 'function') {\n // let the user extend the routes\n const extendedRoutes = this.options.router.extendRoutes(\n templateVars.router.routes,\n r\n )\n // Only overwrite routes when something is returned for backwards compatibility\n if (extendedRoutes !== undefined) {\n templateVars.router.routes = extendedRoutes\n }\n }\n\n // Make routes accessible for other modules and webpack configs\n this.routes = templateVars.router.routes\n\n // -- Store --\n // Add store if needed\n if (this.options.store) {\n templatesFiles.push('store.js')\n }\n\n // Resolve template files\n const customTemplateFiles = this.options.build.templates.map(\n t => t.dst || path.basename(t.src || t)\n )\n\n templatesFiles = templatesFiles\n .map((file) => {\n // Skip if custom file was already provided in build.templates[]\n if (customTemplateFiles.indexOf(file) !== -1) {\n return\n }\n // Allow override templates using a file with same name in ${srcDir}/app\n const customPath = r(this.options.srcDir, 'app', file)\n const customFileExists = fsExtra.existsSync(customPath)\n\n return {\n src: customFileExists ? customPath : r(this.options.nuxtAppDir, file),\n dst: file,\n custom: customFileExists\n }\n })\n .filter(i => !!i)\n\n // -- Custom templates --\n // Add custom template files\n templatesFiles = templatesFiles.concat(\n this.options.build.templates.map((t) => {\n return Object.assign(\n {\n src: r(this.options.srcDir, t.src || t),\n dst: t.dst || path.basename(t.src || t),\n custom: true\n },\n t\n )\n })\n )\n\n // -- Loading indicator --\n if (this.options.loadingIndicator.name) {\n const indicatorPath1 = path.resolve(\n this.options.nuxtAppDir,\n 'views/loading',\n this.options.loadingIndicator.name + '.html'\n )\n const indicatorPath2 = this.nuxt.resolveAlias(\n this.options.loadingIndicator.name\n )\n const indicatorPath = fsExtra.existsSync(indicatorPath1)\n ? indicatorPath1\n : fsExtra.existsSync(indicatorPath2) ? indicatorPath2 : null\n if (indicatorPath) {\n templatesFiles.push({\n src: indicatorPath,\n dst: 'loading.html',\n options: this.options.loadingIndicator\n })\n } else {\n /* istanbul ignore next */\n // eslint-disable-next-line no-console\n console.error(\n `Could not fetch loading indicator: ${\n this.options.loadingIndicator.name\n }`\n )\n }\n }\n\n await this.nuxt.callHook('build:templates', {\n templatesFiles,\n templateVars,\n resolve: r\n })\n\n // Interpret and move template files to .nuxt/\n await Promise.all(\n templatesFiles.map(async ({ src, dst, options, custom }) => {\n // Add template to watchers\n this.options.build.watch.push(src)\n // Render template to dst\n const fileContent = await fsExtra.readFile(src, 'utf8')\n let content\n try {\n const template = _.template(fileContent, {\n imports: {\n serialize,\n hash,\n r,\n wp,\n wChunk,\n resolvePath: this.nuxt.resolvePath,\n resolveAlias: this.nuxt.resolveAlias,\n relativeToBuild: this.relativeToBuild\n },\n interpolate: /<%=([\\s\\S]+?)%>/g\n })\n content = template(\n Object.assign({}, templateVars, {\n options: options || {},\n custom,\n src,\n dst\n })\n )\n } catch (err) {\n /* istanbul ignore next */\n throw new Error(`Could not compile template ${src}: ${err.message}`)\n }\n const _path = r(this.options.buildDir, dst)\n // Ensure parent dir exits and write file\n await fsExtra.outputFile(_path, content, 'utf8')\n })\n )\n\n consola.success('Nuxt files generated')\n }\n\n async webpackBuild() {\n this.perfLoader = new PerfLoader(this.options)\n\n const compilersOptions = []\n\n // Client\n const clientConfig = new ClientWebpackConfig(this).config()\n compilersOptions.push(clientConfig)\n\n // Server\n let serverConfig = null\n if (this.options.build.ssr) {\n serverConfig = new ServerWebpackConfig(this).config()\n compilersOptions.push(serverConfig)\n }\n\n // Check plugins exist then set alias to their real path\n await Promise.all(this.plugins.map(async (p) => {\n const ext = path.extname(p.src) ? '' : '{.+([^.]),/index.+([^.])}'\n const pluginFiles = await glob(`${p.src}${ext}`)\n\n if (!pluginFiles || pluginFiles.length === 0) {\n throw new Error(`Plugin not found: ${p.src}`)\n } else if (pluginFiles.length > 1) {\n consola.warn({\n message: `Found ${pluginFiles.length} plugins that match the configuration, suggest to specify extension:`,\n additional: ` ${pluginFiles.join('\\n ')}`,\n badge: true\n })\n }\n\n const src = this.relativeToBuild(p.src)\n // Client config\n if (!clientConfig.resolve.alias[p.name]) {\n clientConfig.resolve.alias[p.name] = src\n }\n\n // Server config\n if (serverConfig && !serverConfig.resolve.alias[p.name]) {\n // Alias to noop for ssr:false plugins\n serverConfig.resolve.alias[p.name] = p.ssr ? src : './empty.js'\n }\n }))\n\n // Configure compilers\n this.compilers = compilersOptions.map((compilersOption) => {\n const compiler = webpack(compilersOption)\n\n // In dev, write files in memory FS\n if (this.options.dev) {\n compiler.outputFileSystem = this.mfs\n }\n\n return compiler\n })\n\n // Warmup perfLoader before build\n if (this.options.build.parallel) {\n consola.info('Warming up worker pools')\n this.perfLoader.warmupAll()\n consola.success('Worker pools ready')\n }\n\n // Start Builds\n const runner = this.options.dev ? parallel : sequence\n\n await runner(this.compilers, (compiler) => {\n return this.webpackCompile(compiler)\n })\n }\n\n webpackCompile(compiler) {\n return new Promise(async (resolve, reject) => {\n const name = compiler.options.name\n\n await this.nuxt.callHook('build:compile', { name, compiler })\n\n // Load renderer resources after build\n compiler.hooks.done.tap('load-resources', async (stats) => {\n await this.nuxt.callHook('build:compiled', {\n name,\n compiler,\n stats\n })\n\n // Reload renderer if available\n this.nuxt.renderer.loadResources(this.mfs || fs)\n\n // Resolve on next tick\n process.nextTick(resolve)\n })\n\n if (this.options.dev) {\n // --- Dev Build ---\n // Client Build, watch is started by dev-middleware\n if (compiler.options.name === 'client') {\n return this.webpackDev(compiler)\n }\n // Server, build and watch for changes\n this.compilersWatching.push(\n compiler.watch(this.options.watchers.webpack, (err) => {\n /* istanbul ignore if */\n if (err) return reject(err)\n })\n )\n } else {\n // --- Production Build ---\n compiler.run((err, stats) => {\n /* istanbul ignore next */\n if (err) {\n return reject(err)\n } else if (stats.hasErrors()) {\n if (this.options.build.quiet === true) {\n err = stats.toString(this.options.build.stats)\n }\n if (!err) {\n // actual errors will be printed by webpack itself\n err = 'Nuxt Build Error'\n }\n\n return reject(err)\n }\n\n resolve()\n })\n }\n })\n }\n\n webpackDev(compiler) {\n consola.debug('Adding webpack middleware...')\n\n // Create webpack dev middleware\n this.webpackDevMiddleware = pify(\n webpackDevMiddleware(\n compiler,\n Object.assign(\n {\n publicPath: this.options.build.publicPath,\n stats: false,\n logLevel: 'silent',\n watchOptions: this.options.watchers.webpack\n },\n this.options.build.devMiddleware\n )\n )\n )\n\n this.webpackDevMiddleware.close = pify(this.webpackDevMiddleware.close)\n\n this.webpackHotMiddleware = pify(\n webpackHotMiddleware(\n compiler,\n Object.assign(\n {\n log: false,\n heartbeat: 10000\n },\n this.options.build.hotMiddleware\n )\n )\n )\n\n // Inject to renderer instance\n if (this.nuxt.renderer) {\n this.nuxt.renderer.webpackDevMiddleware = this.webpackDevMiddleware\n this.nuxt.renderer.webpackHotMiddleware = this.webpackHotMiddleware\n }\n\n // Start watching client files\n this.watchClient()\n }\n\n watchClient() {\n const src = this.options.srcDir\n let patterns = [\n r(src, this.options.dir.layouts),\n r(src, this.options.dir.store),\n r(src, this.options.dir.middleware),\n r(src, `${this.options.dir.layouts}/*.{vue,js}`),\n r(src, `${this.options.dir.layouts}/**/*.{vue,js}`)\n ]\n if (this._nuxtPages) {\n patterns.push(\n r(src, this.options.dir.pages),\n r(src, `${this.options.dir.pages}/*.{vue,js}`),\n r(src, `${this.options.dir.pages}/**/*.{vue,js}`)\n )\n }\n patterns = _.map(patterns, upath.normalizeSafe)\n\n const options = this.options.watchers.chokidar\n /* istanbul ignore next */\n const refreshFiles = _.debounce(() => this.generateRoutesAndFiles(), 200)\n\n // Watch for src Files\n this.watchers.files = chokidar\n .watch(patterns, options)\n .on('add', refreshFiles)\n .on('unlink', refreshFiles)\n\n // Watch for custom provided files\n let customPatterns = _.concat(\n this.options.build.watch,\n ..._.values(_.omit(this.options.build.styleResources, ['options']))\n )\n customPatterns = _.map(_.uniq(customPatterns), upath.normalizeSafe)\n this.watchers.custom = chokidar\n .watch(customPatterns, options)\n .on('change', refreshFiles)\n }\n\n watchServer() {\n const nuxtRestartWatch = _.concat(\n this.options.serverMiddleware\n .filter(i => typeof i === 'string')\n .map(this.nuxt.resolveAlias),\n this.options.watch.map(this.nuxt.resolveAlias),\n path.join(this.options.rootDir, 'nuxt.config.js')\n )\n\n this.watchers.restart = chokidar\n .watch(nuxtRestartWatch, this.options.watchers.chokidar)\n .on('change', (_path) => {\n this.watchers.restart.close()\n const { name, ext } = path.parse(_path)\n this.nuxt.callHook('watch:fileChanged', this, `${name}${ext}`)\n })\n }\n\n async unwatch() {\n for (const watcher in this.watchers) {\n if (this.watchers[watcher]) {\n this.watchers[watcher].close()\n }\n }\n\n this.compilersWatching.forEach(watching => watching.close())\n\n // Stop webpack middleware\n if (this.webpackDevMiddleware) {\n await this.webpackDevMiddleware.close()\n }\n }\n\n // TODO: remove ignore when generateConfig enabled again\n async generateConfig() /* istanbul ignore next */ {\n const config = path.resolve(this.options.buildDir, 'build.config.js')\n const options = _.omit(this.options, Options.unsafeKeys)\n await fsExtra.writeFile(\n config,\n `export default ${JSON.stringify(options, null, ' ')}`,\n 'utf8'\n )\n }\n}\n\nconst STATUS = {\n INITIAL: 1,\n BUILD_DONE: 2,\n BUILDING: 3\n}\n","import path from 'path'\nimport _ from 'lodash'\nimport htmlMinifier from 'html-minifier'\nimport Chalk from 'chalk'\nimport fsExtra from 'fs-extra'\nimport consola from 'consola'\nimport { isUrl, promisifyRoute, waitFor, flatRoutes } from '../common/utils'\n\nexport default class Generator {\n constructor(nuxt, builder) {\n this.nuxt = nuxt\n this.options = nuxt.options\n this.builder = builder\n\n // Set variables\n this.staticRoutes = path.resolve(this.options.srcDir, this.options.dir.static)\n this.srcBuiltPath = path.resolve(this.options.buildDir, 'dist', 'client')\n this.distPath = this.options.generate.dir\n this.distNuxtPath = path.join(\n this.distPath,\n isUrl(this.options.build.publicPath) ? '' : this.options.build.publicPath\n )\n }\n\n async generate({ build = true, init = true } = {}) {\n consola.debug('Initializing generator...')\n\n await this.initiate({ build, init })\n\n consola.debug('Preparing routes for generate...')\n\n const routes = await this.initRoutes()\n\n consola.info({\n message: 'Generating pages',\n badge: true,\n clear: true\n })\n\n const errors = await this.generateRoutes(routes)\n\n await this.afterGenerate()\n\n // Done hook\n await this.nuxt.callHook('generate:done', this, errors)\n\n return { errors }\n }\n\n async initiate({ build = true, init = true } = {}) {\n // Wait for nuxt be ready\n await this.nuxt.ready()\n\n // Call before hook\n await this.nuxt.callHook('generate:before', this, this.options.generate)\n\n if (build) {\n // Add flag to set process.static\n this.builder.forGenerate()\n\n // Start build process\n await this.builder.build()\n }\n\n // Initialize dist directory\n if (init) {\n await this.initDist()\n }\n }\n\n async initRoutes(...args) {\n // Resolve config.generate.routes promises before generating the routes\n let generateRoutes = []\n if (this.options.router.mode !== 'hash') {\n try {\n generateRoutes = await promisifyRoute(\n this.options.generate.routes || [],\n ...args\n )\n } catch (e) {\n consola.error('Could not resolve routes')\n throw e // eslint-disable-line no-unreachable\n }\n }\n // Generate only index.html for router.mode = 'hash'\n let routes =\n this.options.router.mode === 'hash'\n ? ['/']\n : flatRoutes(this.options.router.routes)\n routes = this.decorateWithPayloads(routes, generateRoutes)\n\n // extendRoutes hook\n await this.nuxt.callHook('generate:extendRoutes', routes)\n\n return routes\n }\n\n async generateRoutes(routes) {\n const errors = []\n\n // Start generate process\n while (routes.length) {\n let n = 0\n await Promise.all(\n routes\n .splice(0, this.options.generate.concurrency)\n .map(async ({ route, payload }) => {\n await waitFor(n++ * this.options.generate.interval)\n await this.generateRoute({ route, payload, errors })\n })\n )\n }\n\n // Improve string representation for errors\n errors.toString = () => this._formatErrors(errors)\n\n return errors\n }\n\n _formatErrors(errors) {\n return errors\n .map(({ type, route, error }) => {\n const isHandled = type === 'handled'\n const bgColor = isHandled ? 'bgYellow' : 'bgRed'\n const color = isHandled ? 'yellow' : 'red'\n\n let line =\n Chalk.black[bgColor](' GEN ERR ') + Chalk[color](` ${route}\\n\\n`)\n\n if (isHandled) {\n line += Chalk.grey(JSON.stringify(error, undefined, 2) + '\\n')\n } else {\n line += Chalk.grey(error.stack)\n }\n\n return line\n })\n .join('\\n')\n }\n\n async afterGenerate() {\n const { fallback } = this.options.generate\n\n // Disable SPA fallback if value isn't a non-empty string\n if (typeof fallback !== 'string' || !fallback) return\n\n const fallbackPath = path.join(this.distPath, fallback)\n\n // Prevent conflicts\n if (fsExtra.existsSync(fallbackPath)) {\n consola.warn(`SPA fallback was configured, but the configured path (${fallbackPath}) already exists.`)\n return\n }\n\n // Render and write the SPA template to the fallback path\n const { html } = await this.nuxt.renderRoute('/', { spa: true })\n await fsExtra.writeFile(fallbackPath, html, 'utf8')\n }\n\n async initDist() {\n // Clean destination folder\n await fsExtra.remove(this.distPath)\n\n await this.nuxt.callHook('generate:distRemoved', this)\n\n // Copy static and built files\n /* istanbul ignore if */\n if (fsExtra.existsSync(this.staticRoutes)) {\n await fsExtra.copy(this.staticRoutes, this.distPath)\n }\n await fsExtra.copy(this.srcBuiltPath, this.distNuxtPath)\n\n // Add .nojekyll file to let GitHub Pages add the _nuxt/ folder\n // https://help.github.com/articles/files-that-start-with-an-underscore-are-missing/\n const nojekyllPath = path.resolve(this.distPath, '.nojekyll')\n fsExtra.writeFile(nojekyllPath, '')\n\n await this.nuxt.callHook('generate:distCopied', this)\n }\n\n decorateWithPayloads(routes, generateRoutes) {\n const routeMap = {}\n // Fill routeMap for known routes\n routes.forEach((route) => {\n routeMap[route] = { route, payload: null }\n })\n // Fill routeMap with given generate.routes\n generateRoutes.forEach((route) => {\n // route is either a string or like { route : '/my_route/1', payload: {} }\n const path = _.isString(route) ? route : route.route\n routeMap[path] = {\n route: path,\n payload: route.payload || null\n }\n })\n return _.values(routeMap)\n }\n\n async generateRoute({ route, payload = {}, errors = [] }) {\n let html\n const pageErrors = []\n\n try {\n const res = await this.nuxt.renderer.renderRoute(route, {\n _generate: true,\n payload\n })\n html = res.html\n if (res.error) {\n pageErrors.push({ type: 'handled', route, error: res.error })\n }\n } catch (err) {\n /* istanbul ignore next */\n pageErrors.push({ type: 'unhandled', route, error: err })\n Array.prototype.push.apply(errors, pageErrors)\n\n await this.nuxt.callHook('generate:routeFailed', {\n route,\n errors: pageErrors\n })\n consola.error(this._formatErrors(pageErrors))\n\n return false\n }\n\n if (this.options.generate.minify) {\n try {\n html = htmlMinifier.minify(html, this.options.generate.minify)\n } catch (err) /* istanbul ignore next */ {\n const minifyErr = new Error(\n `HTML minification failed. Make sure the route generates valid HTML. Failed HTML:\\n ${html}`\n )\n pageErrors.push({ type: 'unhandled', route, error: minifyErr })\n }\n }\n\n let _path\n\n if (this.options.generate.subFolders) {\n _path = path.join(route, path.sep, 'index.html') // /about -> /about/index.html\n _path = _path === '/404/index.html' ? '/404.html' : _path // /404 -> /404.html\n } else {\n _path = route.length > 1 ? path.join(path.sep, route + '.html') : path.join(path.sep, 'index.html')\n }\n\n // Call hook to let user update the path & html\n const page = { route, path: _path, html }\n await this.nuxt.callHook('generate:page', page)\n\n page.path = path.join(this.distPath, page.path)\n\n // Make sure the sub folders are created\n await fsExtra.mkdirp(path.dirname(page.path))\n await fsExtra.writeFile(page.path, page.html, 'utf8')\n\n await this.nuxt.callHook('generate:routeCreated', {\n route,\n path: page.path,\n errors: pageErrors\n })\n\n if (pageErrors.length) {\n consola.error('Error generating ' + route)\n Array.prototype.push.apply(errors, pageErrors)\n } else {\n consola.success('Generated ' + route)\n }\n\n return true\n }\n}\n","import Builder from './builder'\nimport Generator from './generator'\n\nexport default {\n Builder,\n Generator\n}\n","import core from './core'\nimport builder from './builder'\nimport * as Utils from './common/utils'\nimport Options from './common/options'\n\nexport default Object.assign({ Utils, Options }, core, builder)\n"],"names":["_","path","createRenderer","fs","createBundleRenderer","hash","name","chalk","join","resolve","Module","warmup","uniq","env","BaseConfig","ClientWebpackConfig","ServerWebpackConfig"],"mappings":"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"}
\No newline at end of file