expeditaea 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- package/.all-contributorsrc +135 -0
- package/.editorconfig +13 -0
- package/.eslintignore +16 -0
- package/.eslintrc.js +92 -0
- package/.github/FUNDING.yml +7 -0
- package/.github/ISSUE_TEMPLATE/bug-report.md +47 -0
- package/.github/ISSUE_TEMPLATE/config.yml +6 -0
- package/.github/ISSUE_TEMPLATE/feature-request.md +26 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +24 -0
- package/.github/lock.yml +9 -0
- package/.github/nuxt.png +0 -0
- package/.github/stale.yml +24 -0
- package/.github/workflows/nightly.yml +49 -0
- package/.github/workflows/test.yml +355 -0
- package/.github/workflows/windows.yml +165 -0
- package/.gitpod.yml +6 -0
- package/.ls-lint.yml +8 -0
- package/.yarnrc +1 -0
- package/babel.config.js +18 -0
- package/benchmarks/README.md +29 -0
- package/benchmarks/package.json +10 -0
- package/benchmarks/pages/stateless-big.vue +7 -0
- package/benchmarks/pages/stateless.vue +3 -0
- package/distributions/nuxt/README.md +153 -0
- package/distributions/nuxt/bin/nuxt.js +10 -0
- package/distributions/nuxt/package.js +29 -0
- package/distributions/nuxt/package.json +54 -0
- package/distributions/nuxt/src/index.js +5 -0
- package/distributions/nuxt/webpack.config.js +4 -0
- package/distributions/nuxt-start/README.md +42 -0
- package/distributions/nuxt-start/bin/nuxt-start.js +14 -0
- package/distributions/nuxt-start/package.js +42 -0
- package/distributions/nuxt-start/package.json +44 -0
- package/distributions/nuxt-start/src/index.js +1 -0
- package/examples/async-component-injection/README.md +3 -0
- package/examples/async-component-injection/assets/css/common.css +69 -0
- package/examples/async-component-injection/assets/css/index.css +57 -0
- package/examples/async-component-injection/assets/css/post.css +307 -0
- package/examples/async-component-injection/assets/img/github.png +0 -0
- package/examples/async-component-injection/assets/img/swimmer.jpg +0 -0
- package/examples/async-component-injection/assets/img/twitter.png +0 -0
- package/examples/async-component-injection/layouts/default.vue +20 -0
- package/examples/async-component-injection/nuxt.config.js +22 -0
- package/examples/async-component-injection/package.json +12 -0
- package/examples/async-component-injection/pages/_slug.vue +21 -0
- package/examples/async-component-injection/pages/index.vue +30 -0
- package/examples/async-component-injection/posts/404.vue +5 -0
- package/examples/async-component-injection/posts/deep-dive-into-ocean.vue +19 -0
- package/examples/async-component-injection/posts/welcome-to-my-blog.vue +12 -0
- package/examples/async-component-injection/static/favicon.ico +0 -0
- package/examples/async-data/README.md +3 -0
- package/examples/async-data/nuxt.config.js +15 -0
- package/examples/async-data/package.json +13 -0
- package/examples/async-data/pages/index.vue +35 -0
- package/examples/async-data/pages/posts/_id.vue +55 -0
- package/examples/async-data/pages/posts/index.vue +64 -0
- package/examples/auth-jwt/README.md +3 -0
- package/examples/auth-jwt/middleware/authenticated.js +6 -0
- package/examples/auth-jwt/middleware/notAuthenticated.js +6 -0
- package/examples/auth-jwt/package.json +14 -0
- package/examples/auth-jwt/pages/index.vue +34 -0
- package/examples/auth-jwt/pages/login.vue +37 -0
- package/examples/auth-jwt/pages/secret.vue +14 -0
- package/examples/auth-jwt/store/index.js +26 -0
- package/examples/auth-routes/README.md +3 -0
- package/examples/auth-routes/api/index.js +36 -0
- package/examples/auth-routes/middleware/auth.js +8 -0
- package/examples/auth-routes/nuxt.config.js +32 -0
- package/examples/auth-routes/package.json +16 -0
- package/examples/auth-routes/pages/index.vue +72 -0
- package/examples/auth-routes/pages/secret.vue +15 -0
- package/examples/auth-routes/store/index.js +37 -0
- package/examples/axios/README.md +38 -0
- package/examples/axios/nuxt.config.js +9 -0
- package/examples/axios/package.json +15 -0
- package/examples/axios/pages/index.vue +17 -0
- package/examples/cached-components/README.md +1 -0
- package/examples/cached-components/nuxt.config.js +10 -0
- package/examples/cached-components/package.json +13 -0
- package/examples/cached-components/pages/index.vue +20 -0
- package/examples/coffeescript/README.md +22 -0
- package/examples/coffeescript/components/Logo.vue +79 -0
- package/examples/coffeescript/layouts/default.vue +52 -0
- package/examples/coffeescript/modules/coffeescript.js +17 -0
- package/examples/coffeescript/nuxt.config.js +24 -0
- package/examples/coffeescript/package.json +20 -0
- package/examples/coffeescript/pages/README.md +7 -0
- package/examples/coffeescript/pages/index.vue +58 -0
- package/examples/coffeescript/static/favicon.ico +0 -0
- package/examples/coffeescript/store/index.coffee +2 -0
- package/examples/custom-build/README.md +1 -0
- package/examples/custom-build/assets/nuxt.png +0 -0
- package/examples/custom-build/nuxt.config.js +26 -0
- package/examples/custom-build/package.json +13 -0
- package/examples/custom-build/pages/index.vue +15 -0
- package/examples/custom-layouts/README.md +5 -0
- package/examples/custom-layouts/layouts/dark.vue +24 -0
- package/examples/custom-layouts/layouts/default.vue +15 -0
- package/examples/custom-layouts/layouts/error.vue +35 -0
- package/examples/custom-layouts/package.json +12 -0
- package/examples/custom-layouts/pages/about.vue +19 -0
- package/examples/custom-layouts/pages/index.vue +8 -0
- package/examples/custom-layouts/static/logo.png +0 -0
- package/examples/custom-loading/README.md +3 -0
- package/examples/custom-loading/components/loading.vue +36 -0
- package/examples/custom-loading/nuxt.config.js +3 -0
- package/examples/custom-loading/package.json +12 -0
- package/examples/custom-loading/pages/about.vue +28 -0
- package/examples/custom-loading/pages/index.vue +28 -0
- package/examples/custom-page-loading/README.md +5 -0
- package/examples/custom-page-loading/package.json +12 -0
- package/examples/custom-page-loading/pages/about.vue +53 -0
- package/examples/custom-page-loading/pages/final.vue +21 -0
- package/examples/custom-page-loading/pages/index.vue +28 -0
- package/examples/custom-port-host/README.md +3 -0
- package/examples/custom-port-host/nuxt.config.js +6 -0
- package/examples/custom-port-host/package.json +12 -0
- package/examples/custom-port-host/pages/index.vue +3 -0
- package/examples/custom-routes/README.md +3 -0
- package/examples/custom-routes/nuxt.config.js +2 -0
- package/examples/custom-routes/package.json +13 -0
- package/examples/custom-routes/pages/index.vue +46 -0
- package/examples/custom-routes/pages/users/_id.vue +38 -0
- package/examples/custom-server/README.md +3 -0
- package/examples/custom-server/nuxt.config.js +1 -0
- package/examples/custom-server/package.json +13 -0
- package/examples/custom-server/pages/index.vue +7 -0
- package/examples/custom-server/server.js +25 -0
- package/examples/custom-template/app.html +13 -0
- package/examples/custom-template/nuxt.config.js +5 -0
- package/examples/custom-template/package.json +12 -0
- package/examples/custom-template/pages/index.vue +5 -0
- package/examples/docker-build/.dockerignore +84 -0
- package/examples/docker-build/.yarnclean +5 -0
- package/examples/docker-build/Dockerfile +31 -0
- package/examples/docker-build/README.md +12 -0
- package/examples/docker-build/assets/README.md +1 -0
- package/examples/docker-build/components/README.md +1 -0
- package/examples/docker-build/layouts/README.md +1 -0
- package/examples/docker-build/layouts/default.vue +8 -0
- package/examples/docker-build/middleware/README.md +1 -0
- package/examples/docker-build/nuxt.config.js +54 -0
- package/examples/docker-build/package.json +15 -0
- package/examples/docker-build/pages/README.md +1 -0
- package/examples/docker-build/pages/index.vue +12 -0
- package/examples/docker-build/plugins/README.md +1 -0
- package/examples/docker-build/static/README.md +1 -0
- package/examples/docker-build/static/favicon.ico +0 -0
- package/examples/docker-build/store/README.md +1 -0
- package/examples/dynamic-components/README.md +5 -0
- package/examples/dynamic-components/components/chart.js +9 -0
- package/examples/dynamic-components/components/code.vue +23 -0
- package/examples/dynamic-components/components/image.vue +71 -0
- package/examples/dynamic-components/components/text.vue +22 -0
- package/examples/dynamic-components/js/messages.js +27 -0
- package/examples/dynamic-components/nuxt.config.js +9 -0
- package/examples/dynamic-components/package.json +15 -0
- package/examples/dynamic-components/pages/index.vue +71 -0
- package/examples/dynamic-components/pages/ssr.vue +63 -0
- package/examples/dynamic-layouts/README.md +3 -0
- package/examples/dynamic-layouts/layouts/error.vue +36 -0
- package/examples/dynamic-layouts/layouts/mobile.vue +39 -0
- package/examples/dynamic-layouts/middleware/mobile.js +4 -0
- package/examples/dynamic-layouts/nuxt.config.js +10 -0
- package/examples/dynamic-layouts/package.json +12 -0
- package/examples/dynamic-layouts/pages/about.vue +19 -0
- package/examples/dynamic-layouts/pages/index.vue +14 -0
- package/examples/dynamic-layouts/static/logo.png +0 -0
- package/examples/global-css/README.md +3 -0
- package/examples/global-css/assets/roboto.woff2 +0 -0
- package/examples/global-css/css/main.css +22 -0
- package/examples/global-css/nuxt.config.js +20 -0
- package/examples/global-css/package.json +13 -0
- package/examples/global-css/pages/about.vue +17 -0
- package/examples/global-css/pages/index.vue +17 -0
- package/examples/hello-world/README.md +3 -0
- package/examples/hello-world/nuxt.config.js +0 -0
- package/examples/hello-world/package.json +12 -0
- package/examples/hello-world/pages/about.vue +21 -0
- package/examples/hello-world/pages/index.vue +16 -0
- package/examples/i18n/README.md +5 -0
- package/examples/i18n/layouts/default.vue +95 -0
- package/examples/i18n/locales/en.json +16 -0
- package/examples/i18n/locales/fr.json +16 -0
- package/examples/i18n/middleware/i18n.js +21 -0
- package/examples/i18n/nuxt.config.js +10 -0
- package/examples/i18n/package.json +14 -0
- package/examples/i18n/pages/_lang/about.vue +18 -0
- package/examples/i18n/pages/_lang/index.vue +18 -0
- package/examples/i18n/pages/about.vue +4 -0
- package/examples/i18n/pages/index.vue +4 -0
- package/examples/i18n/plugins/i18n.js +25 -0
- package/examples/i18n/store/index.js +12 -0
- package/examples/jest-puppeteer/README.md +43 -0
- package/examples/jest-puppeteer/jest-puppeteer.config.js +10 -0
- package/examples/jest-puppeteer/jest.config.js +4 -0
- package/examples/jest-puppeteer/package.json +19 -0
- package/examples/jest-puppeteer/pages/about.vue +23 -0
- package/examples/jest-puppeteer/pages/index.vue +16 -0
- package/examples/jest-puppeteer/test/__snapshots__/index.spec.js.snap +5 -0
- package/examples/jest-puppeteer/test/index.spec.js +32 -0
- package/examples/jest-vtu-example/.eslintignore +1 -0
- package/examples/jest-vtu-example/README.md +13 -0
- package/examples/jest-vtu-example/babel.config.js +7 -0
- package/examples/jest-vtu-example/components/Btn/Btn.spec.js +34 -0
- package/examples/jest-vtu-example/components/Btn/Btn.vue +25 -0
- package/examples/jest-vtu-example/components/Btn/__snapshots__/Btn.spec.js.snap +7 -0
- package/examples/jest-vtu-example/layouts/default.vue +5 -0
- package/examples/jest-vtu-example/nuxt.config.js +3 -0
- package/examples/jest-vtu-example/package.json +47 -0
- package/examples/jest-vtu-example/pages/__snapshots__/index.spec.js.snap +12 -0
- package/examples/jest-vtu-example/pages/index.spec.js +14 -0
- package/examples/jest-vtu-example/pages/index.vue +20 -0
- package/examples/jsx/README.md +7 -0
- package/examples/jsx/components/test.vue +22 -0
- package/examples/jsx/package.json +12 -0
- package/examples/jsx/pages/about.js +21 -0
- package/examples/jsx/pages/index.js +20 -0
- package/examples/layout-transitions/README.md +3 -0
- package/examples/layout-transitions/assets/main.css +52 -0
- package/examples/layout-transitions/layouts/secondary.vue +6 -0
- package/examples/layout-transitions/nuxt.config.js +7 -0
- package/examples/layout-transitions/package.json +12 -0
- package/examples/layout-transitions/pages/about.vue +18 -0
- package/examples/layout-transitions/pages/index.vue +28 -0
- package/examples/layout-transitions/pages/users-2.vue +104 -0
- package/examples/layout-transitions/pages/users.vue +89 -0
- package/examples/markdownit/README.md +5 -0
- package/examples/markdownit/nuxt.config.js +8 -0
- package/examples/markdownit/package.json +18 -0
- package/examples/markdownit/pages/about.vue +6 -0
- package/examples/markdownit/pages/index.vue +19 -0
- package/examples/markdownit/pages/pug.vue +20 -0
- package/examples/markdownit/plugins/md-it.js +5 -0
- package/examples/meta-info/README.md +13 -0
- package/examples/meta-info/components/twitter-head-card.vue +22 -0
- package/examples/meta-info/nuxt.config.js +13 -0
- package/examples/meta-info/package.json +12 -0
- package/examples/meta-info/pages/about.vue +36 -0
- package/examples/meta-info/pages/index.vue +36 -0
- package/examples/meta-info/static/about.js +1 -0
- package/examples/meta-info/static/body.js +1 -0
- package/examples/meta-info/static/defer.js +1 -0
- package/examples/meta-info/static/head.js +1 -0
- package/examples/middleware/README.md +6 -0
- package/examples/middleware/components/Visits.vue +42 -0
- package/examples/middleware/layouts/default.vue +14 -0
- package/examples/middleware/middleware/user-agent.js +3 -0
- package/examples/middleware/middleware/visits.js +3 -0
- package/examples/middleware/nuxt.config.js +5 -0
- package/examples/middleware/package.json +12 -0
- package/examples/middleware/pages/_slug.vue +33 -0
- package/examples/middleware/store/index.js +12 -0
- package/examples/minimal-features/README.md +3 -0
- package/examples/minimal-features/nuxt.config.js +28 -0
- package/examples/minimal-features/package.json +12 -0
- package/examples/minimal-features/pages/about.vue +21 -0
- package/examples/minimal-features/pages/index.vue +16 -0
- package/examples/named-views/README.md +1 -0
- package/examples/named-views/components/childLeft.vue +15 -0
- package/examples/named-views/components/mainTop.vue +19 -0
- package/examples/named-views/layouts/default.vue +6 -0
- package/examples/named-views/nuxt.config.js +30 -0
- package/examples/named-views/package.json +12 -0
- package/examples/named-views/pages/index/child/_id/index.vue +24 -0
- package/examples/named-views/pages/index/section.vue +16 -0
- package/examples/named-views/pages/index.vue +73 -0
- package/examples/named-views/pages/main.vue +50 -0
- package/examples/nested-components/README.md +1 -0
- package/examples/nested-components/components/paragraph.vue +12 -0
- package/examples/nested-components/components/post.vue +32 -0
- package/examples/nested-components/package.json +12 -0
- package/examples/nested-components/pages/index.vue +54 -0
- package/examples/nested-routes/README.md +3 -0
- package/examples/nested-routes/nuxt.config.js +29 -0
- package/examples/nested-routes/package.json +13 -0
- package/examples/nested-routes/pages/index/_id.vue +34 -0
- package/examples/nested-routes/pages/index/index.vue +19 -0
- package/examples/nested-routes/pages/index.vue +77 -0
- package/examples/new-fetch/README.md +5 -0
- package/examples/new-fetch/components/Author.vue +30 -0
- package/examples/new-fetch/layouts/default.vue +28 -0
- package/examples/new-fetch/nuxt.config.js +18 -0
- package/examples/new-fetch/package.json +18 -0
- package/examples/new-fetch/pages/index.vue +43 -0
- package/examples/new-fetch/pages/posts/_id.vue +54 -0
- package/examples/new-fetch/plugins/vue-placeholders.js +4 -0
- package/examples/no-ssr/README.md +3 -0
- package/examples/no-ssr/package.json +12 -0
- package/examples/no-ssr/pages/index.vue +17 -0
- package/examples/nuxt-prefetch/README.md +3 -0
- package/examples/nuxt-prefetch/assets/check.svg +1 -0
- package/examples/nuxt-prefetch/layouts/default.vue +57 -0
- package/examples/nuxt-prefetch/nuxt.config.js +22 -0
- package/examples/nuxt-prefetch/package.json +12 -0
- package/examples/nuxt-prefetch/pages/accelerated.vue +17 -0
- package/examples/nuxt-prefetch/pages/active.vue +17 -0
- package/examples/nuxt-prefetch/pages/agile.vue +17 -0
- package/examples/nuxt-prefetch/pages/brisk.vue +17 -0
- package/examples/nuxt-prefetch/pages/dashing.vue +17 -0
- package/examples/nuxt-prefetch/pages/electric.vue +17 -0
- package/examples/nuxt-prefetch/pages/flashing.vue +17 -0
- package/examples/nuxt-prefetch/pages/fleet.vue +17 -0
- package/examples/nuxt-prefetch/pages/fleeting.vue +17 -0
- package/examples/nuxt-prefetch/pages/flying.vue +17 -0
- package/examples/nuxt-prefetch/pages/hot.vue +17 -0
- package/examples/nuxt-prefetch/pages/hurried.vue +17 -0
- package/examples/nuxt-prefetch/pages/index.vue +17 -0
- package/examples/nuxt-prefetch/pages/nimble.vue +17 -0
- package/examples/nuxt-prefetch/pages/quick.vue +17 -0
- package/examples/nuxt-prefetch/pages/racing.vue +17 -0
- package/examples/nuxt-prefetch/pages/rapid.vue +17 -0
- package/examples/nuxt-prefetch/pages/ready.vue +17 -0
- package/examples/nuxt-prefetch/pages/snap.vue +17 -0
- package/examples/nuxt-prefetch/pages/swift.vue +17 -0
- package/examples/nuxt-prefetch/pages/winged.vue +17 -0
- package/examples/nuxt-prefetch/store/index.js +25 -0
- package/examples/plugins-vendor/README.md +3 -0
- package/examples/plugins-vendor/nuxt.config.js +6 -0
- package/examples/plugins-vendor/package.json +15 -0
- package/examples/plugins-vendor/pages/about.vue +29 -0
- package/examples/plugins-vendor/pages/index.vue +42 -0
- package/examples/plugins-vendor/plugins/vue-notifications.js +23 -0
- package/examples/programmatic/nuxt.config.js +5 -0
- package/examples/programmatic/package.json +12 -0
- package/examples/programmatic/pages/index.vue +5 -0
- package/examples/programmatic/scripts/build.js +8 -0
- package/examples/programmatic/scripts/dev.js +9 -0
- package/examples/programmatic/scripts/start.js +8 -0
- package/examples/pug/README.md +3 -0
- package/examples/pug/package.json +14 -0
- package/examples/pug/pages/about.vue +18 -0
- package/examples/pug/pages/index.vue +13 -0
- package/examples/pug-stylus-coffee/README.md +20 -0
- package/examples/pug-stylus-coffee/components/Logo.vue +66 -0
- package/examples/pug-stylus-coffee/components/README.md +7 -0
- package/examples/pug-stylus-coffee/layouts/README.md +7 -0
- package/examples/pug-stylus-coffee/layouts/default.vue +46 -0
- package/examples/pug-stylus-coffee/middleware/README.md +8 -0
- package/examples/pug-stylus-coffee/modules/coffeescript.js +17 -0
- package/examples/pug-stylus-coffee/nuxt.config.coffee +48 -0
- package/examples/pug-stylus-coffee/nuxt.config.js +2 -0
- package/examples/pug-stylus-coffee/package.json +25 -0
- package/examples/pug-stylus-coffee/pages/README.md +7 -0
- package/examples/pug-stylus-coffee/pages/index.vue +55 -0
- package/examples/pug-stylus-coffee/plugins/README.md +7 -0
- package/examples/pug-stylus-coffee/static/README.md +10 -0
- package/examples/pug-stylus-coffee/static/favicon.ico +0 -0
- package/examples/pug-stylus-coffee/store/README.md +10 -0
- package/examples/pug-stylus-coffee/store/index.coffee +3 -0
- package/examples/routes-meta/README.md +5 -0
- package/examples/routes-meta/layouts/default.vue +73 -0
- package/examples/routes-meta/middleware/theme.js +5 -0
- package/examples/routes-meta/nuxt.config.js +6 -0
- package/examples/routes-meta/package.json +13 -0
- package/examples/routes-meta/pages/about.vue +32 -0
- package/examples/routes-meta/pages/index.vue +22 -0
- package/examples/routes-meta/pages/parent/blue.vue +20 -0
- package/examples/routes-meta/pages/parent.vue +18 -0
- package/examples/routes-meta/store/index.js +9 -0
- package/examples/routes-transitions/README.md +3 -0
- package/examples/routes-transitions/assets/main.css +45 -0
- package/examples/routes-transitions/nuxt.config.js +3 -0
- package/examples/routes-transitions/package.json +12 -0
- package/examples/routes-transitions/pages/about.vue +14 -0
- package/examples/routes-transitions/pages/index.vue +15 -0
- package/examples/routes-transitions/pages/users.vue +87 -0
- package/examples/scroll-behavior/README.md +3 -0
- package/examples/scroll-behavior/assets/main.css +69 -0
- package/examples/scroll-behavior/layouts/default2.vue +3 -0
- package/examples/scroll-behavior/nuxt.config.js +4 -0
- package/examples/scroll-behavior/package.json +14 -0
- package/examples/scroll-behavior/pages/about/contact.vue +13 -0
- package/examples/scroll-behavior/pages/about/profile.vue +12 -0
- package/examples/scroll-behavior/pages/about.vue +27 -0
- package/examples/scroll-behavior/pages/another-long.vue +16 -0
- package/examples/scroll-behavior/pages/index.vue +31 -0
- package/examples/scroll-behavior/pages/long.vue +42 -0
- package/examples/scroll-behavior/pages/users.vue +87 -0
- package/examples/spa/README.md +2 -0
- package/examples/spa/assets/main.css +6 -0
- package/examples/spa/nuxt.config.js +41 -0
- package/examples/spa/package.json +12 -0
- package/examples/spa/pages/about.vue +18 -0
- package/examples/spa/pages/index.vue +8 -0
- package/examples/spa/static/favicon.ico +0 -0
- package/examples/static-images/README.md +3 -0
- package/examples/static-images/package.json +12 -0
- package/examples/static-images/pages/about.vue +40 -0
- package/examples/static-images/pages/index.vue +19 -0
- package/examples/static-images/static/nuxt-black.png +0 -0
- package/examples/static-images/static/nuxt.png +0 -0
- package/examples/storybook/.storybook/addons.js +5 -0
- package/examples/storybook/.storybook/config.js +21 -0
- package/examples/storybook/.storybook/webpack.config.js +14 -0
- package/examples/storybook/README.md +44 -0
- package/examples/storybook/components/Button.vue +36 -0
- package/examples/storybook/components/Layout.vue +92 -0
- package/examples/storybook/components/LineChart.js +9 -0
- package/examples/storybook/components/Logo.vue +79 -0
- package/examples/storybook/components/VuetifyLogo.vue +16 -0
- package/examples/storybook/components/Welcome.vue +124 -0
- package/examples/storybook/layouts/default.vue +102 -0
- package/examples/storybook/nuxt.config.js +40 -0
- package/examples/storybook/package.json +35 -0
- package/examples/storybook/pages/index.vue +63 -0
- package/examples/storybook/pages/inspire.vue +15 -0
- package/examples/storybook/plugins/vuetify.js +15 -0
- package/examples/storybook/static/favicon.ico +0 -0
- package/examples/storybook/static/v.png +0 -0
- package/examples/storybook/store/README.md +10 -0
- package/examples/storybook/stories/LineChart.story.js +92 -0
- package/examples/storybook/stories/Logo.story.js +45 -0
- package/examples/storybook/stories/MyButton.story.js +14 -0
- package/examples/storybook/stories/Welcome.story.js +14 -0
- package/examples/storybook/stories/collection.story.js +227 -0
- package/examples/storybook/stories/storybase.js +82 -0
- package/examples/storybook/stories/vuetify.story.js +110 -0
- package/examples/style-resources/README.md +56 -0
- package/examples/style-resources/assets/resources.less +1 -0
- package/examples/style-resources/assets/variables.scss +1 -0
- package/examples/style-resources/nuxt.config.js +9 -0
- package/examples/style-resources/package.json +18 -0
- package/examples/style-resources/pages/index.vue +18 -0
- package/examples/style-resources/pages/less.vue +21 -0
- package/examples/styled-vue/README.md +5 -0
- package/examples/styled-vue/nuxt.config.js +5 -0
- package/examples/styled-vue/package.json +16 -0
- package/examples/styled-vue/pages/index.vue +35 -0
- package/examples/tailwindcss/README.md +5 -0
- package/examples/tailwindcss/assets/css/tailwind.css +57 -0
- package/examples/tailwindcss/layouts/default.vue +14 -0
- package/examples/tailwindcss/nuxt.config.js +3 -0
- package/examples/tailwindcss/package.json +17 -0
- package/examples/tailwindcss/pages/about.vue +21 -0
- package/examples/tailwindcss/pages/index.vue +29 -0
- package/examples/tailwindcss/postcss.config.js +6 -0
- package/examples/tailwindcss/tailwind.js +744 -0
- package/examples/tailwindcss-purgecss/.github/demo.png +0 -0
- package/examples/tailwindcss-purgecss/.github/pagespeed-desktop.png +0 -0
- package/examples/tailwindcss-purgecss/.github/pagespeed-mobile.png +0 -0
- package/examples/tailwindcss-purgecss/.github/tailwind-default.png +0 -0
- package/examples/tailwindcss-purgecss/.github/tailwind-purgecss.png +0 -0
- package/examples/tailwindcss-purgecss/README.md +27 -0
- package/examples/tailwindcss-purgecss/assets/css/tailwind.css +63 -0
- package/examples/tailwindcss-purgecss/components/MyComponent.vue +7 -0
- package/examples/tailwindcss-purgecss/layouts/default.vue +8 -0
- package/examples/tailwindcss-purgecss/nuxt.config.js +25 -0
- package/examples/tailwindcss-purgecss/package.json +25 -0
- package/examples/tailwindcss-purgecss/pages/index.vue +21 -0
- package/examples/tailwindcss-purgecss/tailwind.config.js +20 -0
- package/examples/uikit/README.md +7 -0
- package/examples/uikit/layouts/default.vue +5 -0
- package/examples/uikit/nuxt.config.js +6 -0
- package/examples/uikit/package.json +14 -0
- package/examples/uikit/pages/about.vue +21 -0
- package/examples/uikit/pages/index.vue +22 -0
- package/examples/uikit/plugins/uikit.js +5 -0
- package/examples/vue-apollo/README.md +9 -0
- package/examples/vue-apollo/apollo/queries/allCars.gql +8 -0
- package/examples/vue-apollo/apollo/queries/car.gql +8 -0
- package/examples/vue-apollo/nuxt.config.js +10 -0
- package/examples/vue-apollo/package.json +16 -0
- package/examples/vue-apollo/pages/car/_id.vue +49 -0
- package/examples/vue-apollo/pages/index.vue +44 -0
- package/examples/vue-chartjs/README.md +7 -0
- package/examples/vue-chartjs/components/bar-chart.js +9 -0
- package/examples/vue-chartjs/components/doughnut-chart.js +9 -0
- package/examples/vue-chartjs/layouts/default.vue +62 -0
- package/examples/vue-chartjs/nuxt.config.js +16 -0
- package/examples/vue-chartjs/package.json +16 -0
- package/examples/vue-chartjs/pages/contributors.vue +57 -0
- package/examples/vue-chartjs/pages/index.vue +44 -0
- package/examples/vue-class-component/README.md +3 -0
- package/examples/vue-class-component/components/Base.vue +49 -0
- package/examples/vue-class-component/components/Child.vue +30 -0
- package/examples/vue-class-component/package.json +13 -0
- package/examples/vue-class-component/pages/about.vue +10 -0
- package/examples/vue-class-component/pages/index.vue +19 -0
- package/examples/vuex-persistedstate/README.md +4 -0
- package/examples/vuex-persistedstate/nuxt.config.js +6 -0
- package/examples/vuex-persistedstate/package.json +13 -0
- package/examples/vuex-persistedstate/pages/index.vue +26 -0
- package/examples/vuex-persistedstate/store/index.js +14 -0
- package/examples/vuex-store/README.md +7 -0
- package/examples/vuex-store/package.json +12 -0
- package/examples/vuex-store/pages/about.vue +12 -0
- package/examples/vuex-store/pages/index.vue +44 -0
- package/examples/vuex-store/pages/todos.vue +45 -0
- package/examples/vuex-store/pages/website.vue +35 -0
- package/examples/vuex-store/store/articles/comments/mutations.js +5 -0
- package/examples/vuex-store/store/articles/comments.js +13 -0
- package/examples/vuex-store/store/articles.js +19 -0
- package/examples/vuex-store/store/index.js +9 -0
- package/examples/vuex-store/store/todos/getters.js +5 -0
- package/examples/vuex-store/store/todos/mutations.js +12 -0
- package/examples/vuex-store/store/todos/state.js +3 -0
- package/examples/web-worker/.eslintrc.js +19 -0
- package/examples/web-worker/README.md +26 -0
- package/examples/web-worker/assets/README.md +8 -0
- package/examples/web-worker/assets/js/Example.worker.js +19 -0
- package/examples/web-worker/components/AppLogo.vue +79 -0
- package/examples/web-worker/components/README.md +6 -0
- package/examples/web-worker/layouts/README.md +8 -0
- package/examples/web-worker/layouts/default.vue +58 -0
- package/examples/web-worker/nuxt.config.js +52 -0
- package/examples/web-worker/package.json +24 -0
- package/examples/web-worker/pages/README.md +7 -0
- package/examples/web-worker/pages/index.vue +185 -0
- package/examples/web-worker/plugins/README.md +8 -0
- package/examples/web-worker/plugins/inject-ww.js +9 -0
- package/examples/web-worker/static/README.md +11 -0
- package/examples/web-worker/static/favicon.ico +0 -0
- package/examples/with-amp/README.md +3 -0
- package/examples/with-amp/app.html +11 -0
- package/examples/with-amp/assets/main.css +23 -0
- package/examples/with-amp/components/Byline.vue +16 -0
- package/examples/with-amp/nuxt.config.js +39 -0
- package/examples/with-amp/package.json +14 -0
- package/examples/with-amp/pages/dog.vue +36 -0
- package/examples/with-amp/pages/index.vue +36 -0
- package/examples/with-amp/static/cat.jpg +0 -0
- package/examples/with-amp/static/dog.jpg +0 -0
- package/examples/with-ava/Readme.md +7 -0
- package/examples/with-ava/package.json +17 -0
- package/examples/with-ava/pages/index.vue +19 -0
- package/examples/with-ava/test/index.test.js +43 -0
- package/examples/with-buefy/README.md +3 -0
- package/examples/with-buefy/components/card.vue +42 -0
- package/examples/with-buefy/nuxt.config.js +12 -0
- package/examples/with-buefy/package.json +16 -0
- package/examples/with-buefy/pages/index.vue +43 -0
- package/examples/with-cookies/README.md +5 -0
- package/examples/with-cookies/nuxt.config.js +9 -0
- package/examples/with-cookies/package.json +14 -0
- package/examples/with-cookies/pages/index.vue +85 -0
- package/examples/with-cookies/plugins/cookies.js +34 -0
- package/examples/with-element-ui/README.md +3 -0
- package/examples/with-element-ui/layouts/default.vue +10 -0
- package/examples/with-element-ui/nuxt.config.js +15 -0
- package/examples/with-element-ui/package.json +19 -0
- package/examples/with-element-ui/pages/index.vue +108 -0
- package/examples/with-element-ui/plugins/element-ui.js +7 -0
- package/examples/with-feathers/.editorconfig +13 -0
- package/examples/with-feathers/.eslintrc.js +42 -0
- package/examples/with-feathers/.jshintrc +29 -0
- package/examples/with-feathers/LICENSE +22 -0
- package/examples/with-feathers/README.md +50 -0
- package/examples/with-feathers/config/default.json +11 -0
- package/examples/with-feathers/config/production.json +11 -0
- package/examples/with-feathers/nuxt.config.js +5 -0
- package/examples/with-feathers/package.json +47 -0
- package/examples/with-feathers/pages/about.vue +18 -0
- package/examples/with-feathers/pages/index.vue +8 -0
- package/examples/with-feathers/src/app.js +28 -0
- package/examples/with-feathers/src/hooks/index.js +11 -0
- package/examples/with-feathers/src/index.js +14 -0
- package/examples/with-feathers/src/middleware/index.js +10 -0
- package/examples/with-feathers/src/middleware/nuxt.js +23 -0
- package/examples/with-feathers/src/services/authentication/index.js +9 -0
- package/examples/with-feathers/src/services/index.js +9 -0
- package/examples/with-feathers/src/services/user/hooks/index.js +50 -0
- package/examples/with-feathers/src/services/user/index.js +33 -0
- package/examples/with-feathers/static/favicon.ico +0 -0
- package/examples/with-feathers/test/app.test.js +36 -0
- package/examples/with-feathers/test/services/user/index.test.js +8 -0
- package/examples/with-firebase/README.md +29 -0
- package/examples/with-firebase/layouts/default.vue +29 -0
- package/examples/with-firebase/nuxt.config.js +11 -0
- package/examples/with-firebase/package.json +21 -0
- package/examples/with-firebase/pages/index.vue +41 -0
- package/examples/with-firebase/pages/users/_key.vue +31 -0
- package/examples/with-firebase/plugins/axios.js +5 -0
- package/examples/with-keep-alive/README.md +15 -0
- package/examples/with-keep-alive/layouts/default.vue +3 -0
- package/examples/with-keep-alive/package.json +12 -0
- package/examples/with-keep-alive/pages/about.vue +21 -0
- package/examples/with-keep-alive/pages/index.vue +16 -0
- package/examples/with-museui/README.md +3 -0
- package/examples/with-museui/nuxt.config.js +26 -0
- package/examples/with-museui/package.json +13 -0
- package/examples/with-museui/pages/index.vue +43 -0
- package/examples/with-museui/plugins/museui.js +4 -0
- package/examples/with-purgecss/README.md +6 -0
- package/examples/with-purgecss/assets/css/tailwind.css +57 -0
- package/examples/with-purgecss/layouts/default.vue +14 -0
- package/examples/with-purgecss/nuxt.config.js +44 -0
- package/examples/with-purgecss/package.json +18 -0
- package/examples/with-purgecss/pages/about.vue +21 -0
- package/examples/with-purgecss/pages/index.vue +29 -0
- package/examples/with-purgecss/tailwind.js +744 -0
- package/examples/with-sockets/README.md +12 -0
- package/examples/with-sockets/io/index.js +26 -0
- package/examples/with-sockets/nuxt.config.js +12 -0
- package/examples/with-sockets/package.json +18 -0
- package/examples/with-sockets/pages/index.vue +157 -0
- package/examples/with-sockets/plugins/socket.io.js +4 -0
- package/examples/with-sockets/server.js +36 -0
- package/examples/with-tape/README.md +3 -0
- package/examples/with-tape/package.json +22 -0
- package/examples/with-tape/pages/index.vue +35 -0
- package/examples/with-tape/test/index.test.js +43 -0
- package/examples/with-tape/test/setup.js +14 -0
- package/examples/with-vue-material/README.md +9 -0
- package/examples/with-vue-material/nuxt.config.js +25 -0
- package/examples/with-vue-material/package.json +15 -0
- package/examples/with-vue-material/pages/index.vue +132 -0
- package/examples/with-vue-material/plugins/vue-material.js +4 -0
- package/examples/with-vuetify/README.md +11 -0
- package/examples/with-vuetify/assets/variabales.scss +1 -0
- package/examples/with-vuetify/layouts/default.vue +103 -0
- package/examples/with-vuetify/nuxt.config.js +25 -0
- package/examples/with-vuetify/package.json +16 -0
- package/examples/with-vuetify/pages/about.vue +18 -0
- package/examples/with-vuetify/pages/index.vue +11 -0
- package/examples/with-vuetify/vuetify.options.js +13 -0
- package/examples/with-vuikit/README.md +3 -0
- package/examples/with-vuikit/layouts/default.vue +5 -0
- package/examples/with-vuikit/nuxt.config.js +6 -0
- package/examples/with-vuikit/package.json +15 -0
- package/examples/with-vuikit/pages/index.vue +19 -0
- package/examples/with-vuikit/plugins/vuikit.js +6 -0
- package/examples/with-vux/README.md +3 -0
- package/examples/with-vux/layouts/default.vue +9 -0
- package/examples/with-vux/nuxt.config.js +40 -0
- package/examples/with-vux/package.json +20 -0
- package/examples/with-vux/pages/index.vue +22 -0
- package/examples/with-vux/plugins/vux-components.js +5 -0
- package/examples/with-vux/plugins/vux-plugins.js +12 -0
- package/examples/with-vux/styles/theme.less +1 -0
- package/jest.config.js +61 -0
- package/lerna.json +28 -0
- package/package.json +66 -0
- package/packages/babel-preset-app/README.md +120 -0
- package/packages/babel-preset-app/package.json +33 -0
- package/packages/babel-preset-app/src/index.js +187 -0
- package/packages/babel-preset-app/src/polyfills-plugin.js +37 -0
- package/packages/builder/package.js +7 -0
- package/packages/builder/package.json +30 -0
- package/packages/builder/src/builder.js +795 -0
- package/packages/builder/src/context/build.js +16 -0
- package/packages/builder/src/context/template.js +82 -0
- package/packages/builder/src/ignore.js +59 -0
- package/packages/builder/src/index.js +10 -0
- package/packages/builder/test/__utils__/index.js +24 -0
- package/packages/builder/test/builder.build.test.js +209 -0
- package/packages/builder/test/builder.common.test.js +59 -0
- package/packages/builder/test/builder.ctor.test.js +116 -0
- package/packages/builder/test/builder.generate.test.js +710 -0
- package/packages/builder/test/builder.plugin.test.js +189 -0
- package/packages/builder/test/builder.watch.test.js +435 -0
- package/packages/builder/test/context/__snapshots__/template.test.js.snap +117 -0
- package/packages/builder/test/context/build.test.js +38 -0
- package/packages/builder/test/context/template.test.js +87 -0
- package/packages/builder/test/ignore.test.js +147 -0
- package/packages/builder/test/index.test.js +9 -0
- package/packages/cli/bin/nuxt-cli.js +7 -0
- package/packages/cli/package.js +5 -0
- package/packages/cli/package.json +43 -0
- package/packages/cli/src/command.js +239 -0
- package/packages/cli/src/commands/build.js +92 -0
- package/packages/cli/src/commands/dev.js +116 -0
- package/packages/cli/src/commands/export.js +10 -0
- package/packages/cli/src/commands/generate.js +121 -0
- package/packages/cli/src/commands/help.js +29 -0
- package/packages/cli/src/commands/index.js +17 -0
- package/packages/cli/src/commands/serve.js +10 -0
- package/packages/cli/src/commands/start.js +27 -0
- package/packages/cli/src/commands/webpack.js +116 -0
- package/packages/cli/src/imports.js +18 -0
- package/packages/cli/src/index.js +16 -0
- package/packages/cli/src/list.js +35 -0
- package/packages/cli/src/options/common.js +68 -0
- package/packages/cli/src/options/index.js +9 -0
- package/packages/cli/src/options/locking.js +7 -0
- package/packages/cli/src/options/server.js +29 -0
- package/packages/cli/src/run.js +56 -0
- package/packages/cli/src/setup.js +41 -0
- package/packages/cli/src/utils/banner.js +60 -0
- package/packages/cli/src/utils/config.js +34 -0
- package/packages/cli/src/utils/constants.js +8 -0
- package/packages/cli/src/utils/dependencies.js +35 -0
- package/packages/cli/src/utils/dir.js +11 -0
- package/packages/cli/src/utils/formatting.js +69 -0
- package/packages/cli/src/utils/generate.js +185 -0
- package/packages/cli/src/utils/index.js +64 -0
- package/packages/cli/src/utils/memory.js +18 -0
- package/packages/cli/src/utils/serve.js +78 -0
- package/packages/cli/src/utils/webpack.js +11 -0
- package/packages/cli/test/fixtures/nuxt.async-config.js +9 -0
- package/packages/cli/test/fixtures/nuxt.async-error.js +1 -0
- package/packages/cli/test/fixtures/nuxt.config.js +10 -0
- package/packages/cli/test/fixtures/nuxt.fn-config.js +3 -0
- package/packages/cli/test/unit/__snapshots__/command.test.js.snap +46 -0
- package/packages/cli/test/unit/__snapshots__/webpack.test.js.snap +726 -0
- package/packages/cli/test/unit/build.test.js +148 -0
- package/packages/cli/test/unit/cli.test.js +47 -0
- package/packages/cli/test/unit/command.test.js +173 -0
- package/packages/cli/test/unit/dependencies.test.js +24 -0
- package/packages/cli/test/unit/dev.test.js +141 -0
- package/packages/cli/test/unit/export.test.js +118 -0
- package/packages/cli/test/unit/generate.test.js +162 -0
- package/packages/cli/test/unit/hooks.test.js +52 -0
- package/packages/cli/test/unit/imports.test.js +19 -0
- package/packages/cli/test/unit/list.test.js +57 -0
- package/packages/cli/test/unit/run-edge.test.js +18 -0
- package/packages/cli/test/unit/run.test.js +75 -0
- package/packages/cli/test/unit/serve.test.js +38 -0
- package/packages/cli/test/unit/start.test.js +68 -0
- package/packages/cli/test/unit/utils-minimalcli.test.js +33 -0
- package/packages/cli/test/unit/utils.test.js +273 -0
- package/packages/cli/test/unit/webpack.test.js +50 -0
- package/packages/cli/test/utils/index.js +14 -0
- package/packages/cli/test/utils/mocking.js +121 -0
- package/packages/config/index.d.ts +3 -0
- package/packages/config/package.js +3 -0
- package/packages/config/package.json +26 -0
- package/packages/config/src/config/_app.js +75 -0
- package/packages/config/src/config/_common.js +93 -0
- package/packages/config/src/config/build.js +136 -0
- package/packages/config/src/config/cli.js +4 -0
- package/packages/config/src/config/generate.js +23 -0
- package/packages/config/src/config/index.js +33 -0
- package/packages/config/src/config/messages.js +12 -0
- package/packages/config/src/config/modes.js +20 -0
- package/packages/config/src/config/render.js +45 -0
- package/packages/config/src/config/router.js +18 -0
- package/packages/config/src/config/server.js +14 -0
- package/packages/config/src/index.js +3 -0
- package/packages/config/src/load.js +189 -0
- package/packages/config/src/options.js +529 -0
- package/packages/config/test/__snapshots__/options.test.js.snap +432 -0
- package/packages/config/test/config/__snapshots__/index.test.js.snap +777 -0
- package/packages/config/test/config/_common.test.js +14 -0
- package/packages/config/test/config/build.test.js +32 -0
- package/packages/config/test/config/index.test.js +28 -0
- package/packages/config/test/config/render.test.js +19 -0
- package/packages/config/test/config/server.test.js +45 -0
- package/packages/config/test/fixtures/app.html +0 -0
- package/packages/config/test/fixtures/nuxtrc/.nuxtrc +1 -0
- package/packages/config/test/fixtures/store/index.js +0 -0
- package/packages/config/test/index.test.js +16 -0
- package/packages/config/test/load.test.js +10 -0
- package/packages/config/test/options.test.js +329 -0
- package/packages/core/package.js +3 -0
- package/packages/core/package.json +23 -0
- package/packages/core/src/index.js +5 -0
- package/packages/core/src/load.js +40 -0
- package/packages/core/src/module.js +219 -0
- package/packages/core/src/nuxt.js +125 -0
- package/packages/core/src/resolver.js +165 -0
- package/packages/core/test/__modules__/__resolver__.js +0 -0
- package/packages/core/test/index.test.js +17 -0
- package/packages/core/test/module.test.js +477 -0
- package/packages/core/test/nuxt.test.js +179 -0
- package/packages/core/test/resolver.test.js +424 -0
- package/packages/generator/package.js +3 -0
- package/packages/generator/package.json +24 -0
- package/packages/generator/src/generator.js +443 -0
- package/packages/generator/src/index.js +6 -0
- package/packages/generator/test/__utils__/index.js +27 -0
- package/packages/generator/test/generator.gen.test.js +201 -0
- package/packages/generator/test/generator.init.test.js +234 -0
- package/packages/generator/test/generator.route.test.js +245 -0
- package/packages/generator/test/index.test.js +11 -0
- package/packages/server/package.js +4 -0
- package/packages/server/package.json +32 -0
- package/packages/server/src/context.js +8 -0
- package/packages/server/src/index.js +2 -0
- package/packages/server/src/jsdom.js +75 -0
- package/packages/server/src/listener.js +120 -0
- package/packages/server/src/middleware/error.js +129 -0
- package/packages/server/src/middleware/nuxt.js +156 -0
- package/packages/server/src/middleware/timing.js +56 -0
- package/packages/server/src/server.js +427 -0
- package/packages/server/test/contest.test.js +17 -0
- package/packages/server/test/index.test.js +14 -0
- package/packages/server/test/listener.test.js +428 -0
- package/packages/server/test/middleware/error.test.js +221 -0
- package/packages/server/test/middleware/nuxt.test.js +352 -0
- package/packages/server/test/middleware/timing.test.js +103 -0
- package/packages/server/test/server.test.js +546 -0
- package/packages/types/README.md +8 -0
- package/packages/types/app/index.d.ts +179 -0
- package/packages/types/app/vue.d.ts +44 -0
- package/packages/types/app/vuex.d.ts +10 -0
- package/packages/types/cli/index.d.ts +8 -0
- package/packages/types/config/build.d.ts +185 -0
- package/packages/types/config/cli.d.ts +14 -0
- package/packages/types/config/env.d.ts +6 -0
- package/packages/types/config/features.d.ts +19 -0
- package/packages/types/config/fetch.d.ts +9 -0
- package/packages/types/config/generate.d.ts +28 -0
- package/packages/types/config/globals.d.ts +7 -0
- package/packages/types/config/head.d.ts +9 -0
- package/packages/types/config/hooks.d.ts +53 -0
- package/packages/types/config/index.d.ts +77 -0
- package/packages/types/config/loading.d.ts +27 -0
- package/packages/types/config/module.d.ts +31 -0
- package/packages/types/config/plugin.d.ts +7 -0
- package/packages/types/config/render.d.ts +76 -0
- package/packages/types/config/router.d.ts +27 -0
- package/packages/types/config/runtime.d.ts +15 -0
- package/packages/types/config/server-middleware.d.ts +10 -0
- package/packages/types/config/server.d.ts +15 -0
- package/packages/types/config/vue-configuration.d.ts +9 -0
- package/packages/types/config/watchers.d.ts +14 -0
- package/packages/types/index.d.ts +11 -0
- package/packages/types/index.js +1 -0
- package/packages/types/package.js +3 -0
- package/packages/types/package.json +37 -0
- package/packages/types/process.d.ts +14 -0
- package/packages/types/test/index.ts +2 -0
- package/packages/types/test/process.ts +17 -0
- package/packages/types/test/tsconfig.json +13 -0
- package/packages/types/test/vue.ts +112 -0
- package/packages/utils/package.js +3 -0
- package/packages/utils/package.json +27 -0
- package/packages/utils/src/cjs.js +98 -0
- package/packages/utils/src/constants.js +9 -0
- package/packages/utils/src/context.js +21 -0
- package/packages/utils/src/index.js +11 -0
- package/packages/utils/src/lang.js +40 -0
- package/packages/utils/src/locking.js +102 -0
- package/packages/utils/src/modern.js +61 -0
- package/packages/utils/src/resolve.js +110 -0
- package/packages/utils/src/route.js +280 -0
- package/packages/utils/src/serialize.js +52 -0
- package/packages/utils/src/task.js +40 -0
- package/packages/utils/src/timer.js +65 -0
- package/packages/utils/test/__snapshots__/route.test.js.snap +261 -0
- package/packages/utils/test/cjs.test.js +14 -0
- package/packages/utils/test/context.test.js +24 -0
- package/packages/utils/test/index.test.js +30 -0
- package/packages/utils/test/lang.test.js +55 -0
- package/packages/utils/test/locking.test.js +223 -0
- package/packages/utils/test/modern.test.js +60 -0
- package/packages/utils/test/resolve.posix.test.js +85 -0
- package/packages/utils/test/resolve.win.test.js +90 -0
- package/packages/utils/test/route.test.js +240 -0
- package/packages/utils/test/serialize.test.input.js +41 -0
- package/packages/utils/test/serialize.test.js +69 -0
- package/packages/utils/test/task.test.js +117 -0
- package/packages/utils/test/timer.test.js +165 -0
- package/packages/vue-app/index.d.ts +3 -0
- package/packages/vue-app/package.js +16 -0
- package/packages/vue-app/package.json +31 -0
- package/packages/vue-app/src/index.js +28 -0
- package/packages/vue-app/template/.eslintignore +3 -0
- package/packages/vue-app/template/App.js +347 -0
- package/packages/vue-app/template/client.js +951 -0
- package/packages/vue-app/template/components/nuxt-build-indicator.vue +143 -0
- package/packages/vue-app/template/components/nuxt-child.js +128 -0
- package/packages/vue-app/template/components/nuxt-error.vue +99 -0
- package/packages/vue-app/template/components/nuxt-link.client.js +128 -0
- package/packages/vue-app/template/components/nuxt-link.server.js +17 -0
- package/packages/vue-app/template/components/nuxt-loading.vue +177 -0
- package/packages/vue-app/template/components/nuxt.js +109 -0
- package/packages/vue-app/template/empty.js +1 -0
- package/packages/vue-app/template/index.js +298 -0
- package/packages/vue-app/template/jsonp.js +83 -0
- package/packages/vue-app/template/layouts/default.vue +3 -0
- package/packages/vue-app/template/middleware.js +12 -0
- package/packages/vue-app/template/mixins/fetch.client.js +134 -0
- package/packages/vue-app/template/mixins/fetch.server.js +70 -0
- package/packages/vue-app/template/pages/index.vue +108 -0
- package/packages/vue-app/template/router.js +123 -0
- package/packages/vue-app/template/router.scrollBehavior.js +82 -0
- package/packages/vue-app/template/routes.json +1 -0
- package/packages/vue-app/template/server.js +351 -0
- package/packages/vue-app/template/store.js +158 -0
- package/packages/vue-app/template/utils.js +639 -0
- package/packages/vue-app/template/views/app.template.html +9 -0
- package/packages/vue-app/template/views/error.html +23 -0
- package/packages/vue-app/template/views/loading/chasing-dots.html +67 -0
- package/packages/vue-app/template/views/loading/circle.html +150 -0
- package/packages/vue-app/template/views/loading/cube-grid.html +87 -0
- package/packages/vue-app/template/views/loading/default.html +110 -0
- package/packages/vue-app/template/views/loading/fading-circle.html +164 -0
- package/packages/vue-app/template/views/loading/folding-cube.html +108 -0
- package/packages/vue-app/template/views/loading/nuxt.html +59 -0
- package/packages/vue-app/template/views/loading/pulse.html +48 -0
- package/packages/vue-app/template/views/loading/rectangle-bounce.html +74 -0
- package/packages/vue-app/template/views/loading/rotating-plane.html +44 -0
- package/packages/vue-app/template/views/loading/three-bounce.html +61 -0
- package/packages/vue-app/template/views/loading/wandering-cubes.html +68 -0
- package/packages/vue-app/test/__utils__/index.js +73 -0
- package/packages/vue-app/test/nuxt-link.client.prefetch.test.js +153 -0
- package/packages/vue-app/test/nuxt-loading.test.js +189 -0
- package/packages/vue-app/vetur/nuxt-attributes.json +38 -0
- package/packages/vue-app/vetur/nuxt-tags.json +47 -0
- package/packages/vue-app/web-types/web-types.json +251 -0
- package/packages/vue-renderer/package.js +3 -0
- package/packages/vue-renderer/package.json +26 -0
- package/packages/vue-renderer/src/index.js +1 -0
- package/packages/vue-renderer/src/renderer.js +390 -0
- package/packages/vue-renderer/src/renderers/base.js +25 -0
- package/packages/vue-renderer/src/renderers/modern.js +124 -0
- package/packages/vue-renderer/src/renderers/spa.js +214 -0
- package/packages/vue-renderer/src/renderers/ssr.js +307 -0
- package/packages/webpack/package.js +21 -0
- package/packages/webpack/package.json +60 -0
- package/packages/webpack/src/builder.js +257 -0
- package/packages/webpack/src/config/base.js +538 -0
- package/packages/webpack/src/config/client.js +221 -0
- package/packages/webpack/src/config/index.js +3 -0
- package/packages/webpack/src/config/modern.js +15 -0
- package/packages/webpack/src/config/server.js +147 -0
- package/packages/webpack/src/index.js +1 -0
- package/packages/webpack/src/plugins/vue/client.js +111 -0
- package/packages/webpack/src/plugins/vue/cors.js +25 -0
- package/packages/webpack/src/plugins/vue/modern.js +121 -0
- package/packages/webpack/src/plugins/vue/server.js +71 -0
- package/packages/webpack/src/plugins/vue/util.js +31 -0
- package/packages/webpack/src/plugins/warning-ignore.js +11 -0
- package/packages/webpack/src/utils/async-mfs.js +24 -0
- package/packages/webpack/src/utils/index.js +3 -0
- package/packages/webpack/src/utils/perf-loader.js +66 -0
- package/packages/webpack/src/utils/postcss-v8.js +208 -0
- package/packages/webpack/src/utils/postcss.js +193 -0
- package/packages/webpack/src/utils/reserved-tags.js +23 -0
- package/packages/webpack/src/utils/style-loader.js +157 -0
- package/packages/webpack/test/index.test.js +23 -0
- package/renovate.json +27 -0
- package/scripts/builtins.js +22 -0
- package/scripts/changelog.js +154 -0
- package/scripts/dev.js +39 -0
- package/scripts/link.js +28 -0
- package/scripts/package.js +382 -0
- package/scripts/pkg.js +55 -0
- package/scripts/release-publish +14 -0
- package/scripts/release-version +4 -0
- package/scripts/rollup.config.js +67 -0
- package/scripts/workspace-run +10 -0
- package/test/dev/async-config.size-limit.test.js +45 -0
- package/test/dev/async-config.test.js +21 -0
- package/test/dev/basic.config.defaults.test.js +73 -0
- package/test/dev/basic.dev.test.js +204 -0
- package/test/dev/basic.dynamic.test.js +77 -0
- package/test/dev/basic.fail.generate.test.js +33 -0
- package/test/dev/basic.generate.test.js +286 -0
- package/test/dev/basic.plugins.test.js +51 -0
- package/test/dev/basic.relative.test.js +41 -0
- package/test/dev/basic.ssr.csp.test.js +477 -0
- package/test/dev/basic.ssr.test.js +426 -0
- package/test/dev/children.test.js +56 -0
- package/test/dev/cli.test.js +82 -0
- package/test/dev/custom-app-template.test.js +57 -0
- package/test/dev/custom-dirs.test.js +55 -0
- package/test/dev/dist-options.test.js +35 -0
- package/test/dev/dynamic-routes.test.js +90 -0
- package/test/dev/encoding.test.js +76 -0
- package/test/dev/error.test.js +83 -0
- package/test/dev/express.test.js +42 -0
- package/test/dev/extract-css.test.js +36 -0
- package/test/dev/fallback.test.js +44 -0
- package/test/dev/filenames-query-part.test.js +55 -0
- package/test/dev/full-static.test.js +89 -0
- package/test/dev/generator.test.js +86 -0
- package/test/dev/https.test.js +24 -0
- package/test/dev/modern.client.test.js +53 -0
- package/test/dev/modern.server.test.js +79 -0
- package/test/dev/modern.spa.test.js +75 -0
- package/test/dev/module.test.js +97 -0
- package/test/dev/named-views.test.js +43 -0
- package/test/dev/nuxt.test.js +66 -0
- package/test/dev/renderer.test.js +51 -0
- package/test/dev/route-name-splitter.test.js +20 -0
- package/test/dev/runtime-config.test.js +45 -0
- package/test/dev/server.listen.test.js +79 -0
- package/test/dev/sockets.test.js +16 -0
- package/test/dev/spa.test.js +174 -0
- package/test/dev/ssr.test.js +130 -0
- package/test/dev/trailing-slash-payload.test.js +64 -0
- package/test/dev/trailing-slash.test.js +92 -0
- package/test/dev/with-config.test.js +235 -0
- package/test/dev/wp.config.test.js +42 -0
- package/test/e2e/basic.browser.test.js +338 -0
- package/test/e2e/basic.vue-config.test.js +58 -0
- package/test/e2e/children.patch.browser.test.js +166 -0
- package/test/e2e/error.test.js +71 -0
- package/test/e2e/fetch.browser.test.js +216 -0
- package/test/e2e/page-transitions.browser.test.js +112 -0
- package/test/e2e/spa-base.browser.test.js +71 -0
- package/test/e2e/split-layouts-error.test.js +51 -0
- package/test/fixtures/async-config/async-config.test.js +3 -0
- package/test/fixtures/async-config/nuxt.config.js +15 -0
- package/test/fixtures/async-config/pages/index.vue +3 -0
- package/test/fixtures/basic/assets/app.css +1 -0
- package/test/fixtures/basic/assets/import.css +1 -0
- package/test/fixtures/basic/assets/test.svg +98 -0
- package/test/fixtures/basic/basic.test.js +3 -0
- package/test/fixtures/basic/components/MyComponent.vue +3 -0
- package/test/fixtures/basic/layouts/custom.js +10 -0
- package/test/fixtures/basic/layouts/default.vue +5 -0
- package/test/fixtures/basic/middleware/-ignored.js +3 -0
- package/test/fixtures/basic/middleware/error.js +3 -0
- package/test/fixtures/basic/middleware/ignored.test.js +3 -0
- package/test/fixtures/basic/middleware/meta.js +3 -0
- package/test/fixtures/basic/middleware/redirect.js +3 -0
- package/test/fixtures/basic/nuxt.config.js +104 -0
- package/test/fixtures/basic/pages/-ignored.vue +13 -0
- package/test/fixtures/basic/pages/async-data.vue +13 -0
- package/test/fixtures/basic/pages/await-async-data.vue +18 -0
- package/test/fixtures/basic/pages/callback-async-data.vue +13 -0
- package/test/fixtures/basic/pages/client-only.vue +7 -0
- package/test/fixtures/basic/pages/components.vue +5 -0
- package/test/fixtures/basic/pages/config.vue +29 -0
- package/test/fixtures/basic/pages/css.vue +15 -0
- package/test/fixtures/basic/pages/custom.js +6 -0
- package/test/fixtures/basic/pages/error-midd.vue +13 -0
- package/test/fixtures/basic/pages/error-object.vue +8 -0
- package/test/fixtures/basic/pages/error-string.vue +8 -0
- package/test/fixtures/basic/pages/error.vue +11 -0
- package/test/fixtures/basic/pages/error2.vue +11 -0
- package/test/fixtures/basic/pages/extractCSS.vue +9 -0
- package/test/fixtures/basic/pages/fetch.vue +50 -0
- package/test/fixtures/basic/pages/fn-midd.vue +17 -0
- package/test/fixtures/basic/pages/head.vue +28 -0
- package/test/fixtures/basic/pages/ignored.test.vue +13 -0
- package/test/fixtures/basic/pages/index.vue +6 -0
- package/test/fixtures/basic/pages/js-link.js +2 -0
- package/test/fixtures/basic/pages/js-link.vue +5 -0
- package/test/fixtures/basic/pages/jsx-link.js +5 -0
- package/test/fixtures/basic/pages/jsx-link2.jsx +5 -0
- package/test/fixtures/basic/pages/jsx.js +7 -0
- package/test/fixtures/basic/pages/meta.vue +12 -0
- package/test/fixtures/basic/pages/no-ssr.vue +7 -0
- package/test/fixtures/basic/pages/noloading.vue +27 -0
- package/test/fixtures/basic/pages/postcss.vue +15 -0
- package/test/fixtures/basic/pages/redirect-external-no-slash.vue +11 -0
- package/test/fixtures/basic/pages/redirect-external-root.vue +11 -0
- package/test/fixtures/basic/pages/redirect-external.vue +11 -0
- package/test/fixtures/basic/pages/redirect-middleware.vue +8 -0
- package/test/fixtures/basic/pages/redirect-name.vue +11 -0
- package/test/fixtures/basic/pages/redirect.vue +11 -0
- package/test/fixtures/basic/pages/redirection/_slug.vue +18 -0
- package/test/fixtures/basic/pages/refresh-page-data.vue +15 -0
- package/test/fixtures/basic/pages/router-guard-error.vue +3 -0
- package/test/fixtures/basic/pages/router-guard.vue +11 -0
- package/test/fixtures/basic/pages/scroll-to-top/index.vue +24 -0
- package/test/fixtures/basic/pages/scroll-to-top/scroll-to-top-false.vue +13 -0
- package/test/fixtures/basic/pages/scroll-to-top/scroll-to-top-true.vue +13 -0
- package/test/fixtures/basic/pages/scroll-to-top/watch-query-array.vue +19 -0
- package/test/fixtures/basic/pages/scroll-to-top/watch-query-fn.vue +24 -0
- package/test/fixtures/basic/pages/scroll-to-top/watch-query-true.vue +19 -0
- package/test/fixtures/basic/pages/skip-on-fail/fail.vue +11 -0
- package/test/fixtures/basic/pages/skip-on-fail/success.vue +8 -0
- package/test/fixtures/basic/pages/special-state.vue +15 -0
- package/test/fixtures/basic/pages/stateful.vue +16 -0
- package/test/fixtures/basic/pages/stateless.vue +3 -0
- package/test/fixtures/basic/pages/store-module.vue +11 -0
- package/test/fixtures/basic/pages/store.vue +27 -0
- package/test/fixtures/basic/pages/style.vue +18 -0
- package/test/fixtures/basic/pages/symlink/deep/nested-symlinked.vue +3 -0
- package/test/fixtures/basic/pages/symlink/symlinked.vue +3 -0
- package/test/fixtures/basic/pages/users/_id.vue +12 -0
- package/test/fixtures/basic/pages/validate-async.vue +21 -0
- package/test/fixtures/basic/pages/validate.vue +17 -0
- package/test/fixtures/basic/pages//321/202/320/265/321/201/321/202/351/233/250.vue +3 -0
- package/test/fixtures/basic/pages2/deep/nested-symlinked.vue +3 -0
- package/test/fixtures/basic/pages2/symlinked.vue +3 -0
- package/test/fixtures/basic/plugins/dir-plugin/index.js +3 -0
- package/test/fixtures/basic/plugins/inject.js +17 -0
- package/test/fixtures/basic/plugins/router-guard.js +17 -0
- package/test/fixtures/basic/plugins/tailwind.js +6 -0
- package/test/fixtures/basic/plugins/vuex-module.js +27 -0
- package/test/fixtures/basic/static/body.js +2 -0
- package/test/fixtures/basic/store/-ignored.js +1 -0
- package/test/fixtures/basic/store/bab/index.js +9 -0
- package/test/fixtures/basic/store/foo/bar.js +9 -0
- package/test/fixtures/basic/store/foo/blarg/getters.js +5 -0
- package/test/fixtures/basic/store/foo/blarg/index.js +9 -0
- package/test/fixtures/basic/store/foo/blarg/state.js +3 -0
- package/test/fixtures/basic/store/foo/blarg.js +9 -0
- package/test/fixtures/basic/store/ignored.test.js +1 -0
- package/test/fixtures/basic/store/index.js +13 -0
- package/test/fixtures/children/children.test.js +3 -0
- package/test/fixtures/children/layouts/patch.vue +62 -0
- package/test/fixtures/children/pages/parent/_id.vue +20 -0
- package/test/fixtures/children/pages/parent/child.vue +3 -0
- package/test/fixtures/children/pages/parent/validate-child.vue +11 -0
- package/test/fixtures/children/pages/parent.vue +23 -0
- package/test/fixtures/children/pages/patch/_id/child/_slug.vue +62 -0
- package/test/fixtures/children/pages/patch/_id/child.vue +20 -0
- package/test/fixtures/children/pages/patch/_id/index.vue +3 -0
- package/test/fixtures/children/pages/patch/_id/reuse/_slug.vue +20 -0
- package/test/fixtures/children/pages/patch/_id.vue +20 -0
- package/test/fixtures/children/pages/patch/index.vue +3 -0
- package/test/fixtures/children/pages/patch.vue +21 -0
- package/test/fixtures/cli/cli.build.config.js +17 -0
- package/test/fixtures/cli/cli.build.test.js +20 -0
- package/test/fixtures/cli/cli.gen.config.js +21 -0
- package/test/fixtures/cli/cli.gen.test.js +20 -0
- package/test/fixtures/cli/custom.file +1 -0
- package/test/fixtures/cli/middleware.js +1 -0
- package/test/fixtures/cli/nuxt.config.js +12 -0
- package/test/fixtures/cli/pages/index.vue +3 -0
- package/test/fixtures/config-explicit/config-explicit.test.js +3 -0
- package/test/fixtures/config-explicit/nuxt.config.js +13 -0
- package/test/fixtures/config-explicit/pages/config.vue +29 -0
- package/test/fixtures/custom-app-template/basic.test.js +3 -0
- package/test/fixtures/custom-app-template/nuxt.config.js +6 -0
- package/test/fixtures/custom-app-template/pages/index.vue +3 -0
- package/test/fixtures/custom-app-template/test/mytemplate.html +15 -0
- package/test/fixtures/custom-dirs/custom-assets/app.css +3 -0
- package/test/fixtures/custom-dirs/custom-dirs.test.js +3 -0
- package/test/fixtures/custom-dirs/custom-layouts/layouts/default.vue +6 -0
- package/test/fixtures/custom-dirs/custom-middleware/user-agent.js +3 -0
- package/test/fixtures/custom-dirs/custom-pages/index.vue +5 -0
- package/test/fixtures/custom-dirs/custom-pages/user-agent.vue +12 -0
- package/test/fixtures/custom-dirs/custom-static/test.txt +1 -0
- package/test/fixtures/custom-dirs/custom-store/index.js +17 -0
- package/test/fixtures/custom-dirs/nuxt.config.js +31 -0
- package/test/fixtures/dynamic-routes/dynamic-routes.test.js +3 -0
- package/test/fixtures/dynamic-routes/pages/_/_.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/_/index.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/_/p/_.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/_key/_id.vue +3 -0
- package/test/fixtures/dynamic-routes/pages/_slug.vue +3 -0
- package/test/fixtures/dynamic-routes/pages/index.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/parent/child.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/parent/index.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/parent/teub.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/parent.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/posts/_id.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/posts.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/test/_.vue +3 -0
- package/test/fixtures/dynamic-routes/pages/test/index.vue +3 -0
- package/test/fixtures/dynamic-routes/pages/test/projects/_category.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/test/projects/index.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/test/songs/_id.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/test/songs/toto.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/test/users/_id.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/test/users/_index/teub.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/test/users/index.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/test/users/projects/_category.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/test/users/projects/index.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/test/users.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/users/_id.vue +0 -0
- package/test/fixtures/empty/empty.test.js +3 -0
- package/test/fixtures/empty/pages/.gitkeep +0 -0
- package/test/fixtures/encoding/encoding.test.js +3 -0
- package/test/fixtures/encoding/layouts/default.vue +51 -0
- package/test/fixtures/encoding/nuxt.config.js +12 -0
- package/test/fixtures/encoding/pages/@about.vue +5 -0
- package/test/fixtures/encoding/pages/dynamic/_id.vue +17 -0
- package/test/fixtures/encoding/pages/index.vue +5 -0
- package/test/fixtures/encoding/pages/redirect.vue +13 -0
- package/test/fixtures/encoding/pages//321/202/320/265/321/201/321/202.vue +3 -0
- package/test/fixtures/error/error.test.js +3 -0
- package/test/fixtures/error/layouts/error-layout.vue +12 -0
- package/test/fixtures/error/layouts/error.vue +18 -0
- package/test/fixtures/error/pages/about.vue +24 -0
- package/test/fixtures/error/pages/error.vue +10 -0
- package/test/fixtures/error/pages/index.vue +14 -0
- package/test/fixtures/error/pages/info.vue +19 -0
- package/test/fixtures/extract-css/assets/global.css +15 -0
- package/test/fixtures/extract-css/extract-css.test.js +3 -0
- package/test/fixtures/extract-css/layouts/default.vue +15 -0
- package/test/fixtures/extract-css/nuxt.config.js +25 -0
- package/test/fixtures/extract-css/pages/about.vue +13 -0
- package/test/fixtures/extract-css/pages/index.vue +36 -0
- package/test/fixtures/fetch/components/Team.vue +27 -0
- package/test/fixtures/fetch/fetch.test.js +3 -0
- package/test/fixtures/fetch/layouts/default.vue +80 -0
- package/test/fixtures/fetch/nuxt.config.js +1 -0
- package/test/fixtures/fetch/pages/fetch-button.vue +26 -0
- package/test/fixtures/fetch/pages/fetch-client.vue +22 -0
- package/test/fixtures/fetch/pages/fetch-component.vue +13 -0
- package/test/fixtures/fetch/pages/fetch-conditional.vue +29 -0
- package/test/fixtures/fetch/pages/fetch-deep.vue +35 -0
- package/test/fixtures/fetch/pages/fetch-delay.vue +24 -0
- package/test/fixtures/fetch/pages/fetch-error.vue +24 -0
- package/test/fixtures/fetch/pages/fetch-root.vue +21 -0
- package/test/fixtures/fetch/pages/index.vue +23 -0
- package/test/fixtures/fetch/pages/nested/_slug.vue +13 -0
- package/test/fixtures/fetch/pages/nested/index.vue +26 -0
- package/test/fixtures/fetch/pages/nested.vue +22 -0
- package/test/fixtures/fetch/pages/old-fetch.vue +18 -0
- package/test/fixtures/fetch/static/team.json +11 -0
- package/test/fixtures/fetch/store/index.js +9 -0
- package/test/fixtures/filenames-query-part/filenames-query-part.test.js +3 -0
- package/test/fixtures/filenames-query-part/nuxt.config.js +8 -0
- package/test/fixtures/filenames-query-part/pages/index.vue +5 -0
- package/test/fixtures/full-static/full-static.test.js +3 -0
- package/test/fixtures/full-static/layouts/default.vue +40 -0
- package/test/fixtures/full-static/nuxt.config.js +30 -0
- package/test/fixtures/full-static/pages/dynamic/_name.vue +10 -0
- package/test/fixtures/full-static/pages/encoding//344/270/255/346/226/207.vue +5 -0
- package/test/fixtures/full-static/pages/index.vue +5 -0
- package/test/fixtures/full-static/pages/pagination/_i.vue +21 -0
- package/test/fixtures/full-static/pages/payload.vue +13 -0
- package/test/fixtures/full-static/pages/store.vue +18 -0
- package/test/fixtures/full-static/store/auth.js +17 -0
- package/test/fixtures/full-static/store/index.js +9 -0
- package/test/fixtures/https/https.test.js +3 -0
- package/test/fixtures/https/nuxt.config.js +11 -0
- package/test/fixtures/https/pages/index.vue +3 -0
- package/test/fixtures/https/server.crt +19 -0
- package/test/fixtures/https/server.key +15 -0
- package/test/fixtures/missing-pages-dir/missing-pages-dir.test.js +10 -0
- package/test/fixtures/missing-plugin/nuxt.config.js +3 -0
- package/test/fixtures/missing-style-resource/nuxt.config.js +7 -0
- package/test/fixtures/modern/modern.test.js +3 -0
- package/test/fixtures/modern/nuxt.config.js +16 -0
- package/test/fixtures/modern/pages/index.vue +18 -0
- package/test/fixtures/module/layouts/layout.vue +6 -0
- package/test/fixtures/module/module.test.js +3 -0
- package/test/fixtures/module/modules/basic/index.js +30 -0
- package/test/fixtures/module/modules/basic/layout.vue +6 -0
- package/test/fixtures/module/modules/basic/reverse.js +14 -0
- package/test/fixtures/module/modules/empty/index.js +7 -0
- package/test/fixtures/module/modules/hooks/index.js +28 -0
- package/test/fixtures/module/modules/layout/index.js +6 -0
- package/test/fixtures/module/modules/layout/some-error.vue +3 -0
- package/test/fixtures/module/modules/middleware/index.js +21 -0
- package/test/fixtures/module/modules/middleware/log.js +5 -0
- package/test/fixtures/module/modules/middleware/midd1.js +4 -0
- package/test/fixtures/module/modules/middleware/midd2.js +4 -0
- package/test/fixtures/module/modules/middleware/midd3.js +7 -0
- package/test/fixtures/module/modules/middleware/use-middleware.js +3 -0
- package/test/fixtures/module/modules/template/index.js +12 -0
- package/test/fixtures/module/nuxt.config.js +34 -0
- package/test/fixtures/module/router.js +31 -0
- package/test/fixtures/module/views/about.vue +8 -0
- package/test/fixtures/module/views/index.vue +8 -0
- package/test/fixtures/module/views/layout.vue +10 -0
- package/test/fixtures/named-views/components/childLeft.vue +13 -0
- package/test/fixtures/named-views/components/mainTop.vue +13 -0
- package/test/fixtures/named-views/layouts/default.vue +6 -0
- package/test/fixtures/named-views/named-views.test.js +3 -0
- package/test/fixtures/named-views/nuxt.config.js +32 -0
- package/test/fixtures/named-views/pages/another.vue +6 -0
- package/test/fixtures/named-views/pages/index/child/_id/index.vue +21 -0
- package/test/fixtures/named-views/pages/index/section.vue +13 -0
- package/test/fixtures/named-views/pages/index.vue +16 -0
- package/test/fixtures/named-views/pages/main.vue +16 -0
- package/test/fixtures/page-transitions/layouts/default.vue +6 -0
- package/test/fixtures/page-transitions/page-transitions.test.js +3 -0
- package/test/fixtures/page-transitions/pages/callbacks/child.vue +11 -0
- package/test/fixtures/page-transitions/pages/callbacks.vue +12 -0
- package/test/fixtures/page-transitions/pages/index.vue +11 -0
- package/test/fixtures/page-transitions/pages/transition-properties/child.vue +18 -0
- package/test/fixtures/page-transitions/pages/transition-properties.vue +18 -0
- package/test/fixtures/page-transitions/utils/transition-properties.js +34 -0
- package/test/fixtures/route-name-splitter/nuxt.config.js +5 -0
- package/test/fixtures/route-name-splitter/pages/_/_.vue +0 -0
- package/test/fixtures/route-name-splitter/pages/_/index.vue +0 -0
- package/test/fixtures/route-name-splitter/pages/_/p/_.vue +0 -0
- package/test/fixtures/route-name-splitter/pages/index.vue +0 -0
- package/test/fixtures/route-name-splitter/pages/parent/child.vue +0 -0
- package/test/fixtures/route-name-splitter/pages/parent/index.vue +0 -0
- package/test/fixtures/route-name-splitter/pages/posts/_id.vue +0 -0
- package/test/fixtures/route-name-splitter/pages/posts.vue +0 -0
- package/test/fixtures/route-name-splitter/route-name-splitter.test.js +3 -0
- package/test/fixtures/runtime-config/.env +8 -0
- package/test/fixtures/runtime-config/nuxt.config.js +27 -0
- package/test/fixtures/runtime-config/pages/index.vue +30 -0
- package/test/fixtures/runtime-config/runtime-config.test.js +3 -0
- package/test/fixtures/shared-chunk/components/lazy.vue +13 -0
- package/test/fixtures/shared-chunk/components/shared-vendor.vue +9 -0
- package/test/fixtures/shared-chunk/components/shared.vue +5 -0
- package/test/fixtures/shared-chunk/nuxt.config.js +3 -0
- package/test/fixtures/shared-chunk/pages/_cat/_id/_sub.vue +6 -0
- package/test/fixtures/shared-chunk/pages/index.vue +14 -0
- package/test/fixtures/shared-chunk/pages/product/_identifier.vue +6 -0
- package/test/fixtures/sockets/nuxt.config.js +7 -0
- package/test/fixtures/sockets/pages/index.vue +3 -0
- package/test/fixtures/sockets/sockets.test.js +5 -0
- package/test/fixtures/spa/layouts/custom.vue +7 -0
- package/test/fixtures/spa/layouts/default.vue +7 -0
- package/test/fixtures/spa/middleware/middleware.js +14 -0
- package/test/fixtures/spa/nuxt.config.js +37 -0
- package/test/fixtures/spa/pages/async.vue +20 -0
- package/test/fixtures/spa/pages/custom.vue +15 -0
- package/test/fixtures/spa/pages/error-handler-async.vue +9 -0
- package/test/fixtures/spa/pages/error-handler-object.vue +8 -0
- package/test/fixtures/spa/pages/error-handler-string.vue +8 -0
- package/test/fixtures/spa/pages/error-handler.vue +8 -0
- package/test/fixtures/spa/pages/index.vue +12 -0
- package/test/fixtures/spa/pages/mounted.vue +20 -0
- package/test/fixtures/spa/pages/redirect-done.vue +17 -0
- package/test/fixtures/spa/pages/route-path.vue +3 -0
- package/test/fixtures/spa/pages//321/202/320/265/321/201/321/202/351/233/250.vue +11 -0
- package/test/fixtures/spa/plugins/error.js +5 -0
- package/test/fixtures/spa/plugins/path.js +4 -0
- package/test/fixtures/spa/spa.test.js +7 -0
- package/test/fixtures/spa-base/nuxt.config.js +13 -0
- package/test/fixtures/spa-hash/nuxt.config.js +13 -0
- package/test/fixtures/split-layouts-error/layouts/error-layout.vue +12 -0
- package/test/fixtures/split-layouts-error/layouts/error.vue +18 -0
- package/test/fixtures/split-layouts-error/nuxt.config.js +7 -0
- package/test/fixtures/split-layouts-error/pages/about.vue +8 -0
- package/test/fixtures/split-layouts-error/pages/error.vue +12 -0
- package/test/fixtures/split-layouts-error/pages/index.vue +14 -0
- package/test/fixtures/split-layouts-error/pages/info.vue +24 -0
- package/test/fixtures/split-layouts-error/split-layouts-error.test.js +3 -0
- package/test/fixtures/ssr/components/test.vue +15 -0
- package/test/fixtures/ssr/lib/db.js +4 -0
- package/test/fixtures/ssr/nuxt.config.js +8 -0
- package/test/fixtures/ssr/pages/asyncComponent.vue +15 -0
- package/test/fixtures/ssr/pages/asyncData.vue +15 -0
- package/test/fixtures/ssr/pages/component.vue +15 -0
- package/test/fixtures/ssr/pages/context/_id.vue +6 -0
- package/test/fixtures/ssr/pages/context.vue +10 -0
- package/test/fixtures/ssr/pages/data.vue +15 -0
- package/test/fixtures/ssr/pages/fetch.vue +14 -0
- package/test/fixtures/ssr/pages/store.vue +3 -0
- package/test/fixtures/ssr/ssr.test.js +3 -0
- package/test/fixtures/ssr/store/index.js +23 -0
- package/test/fixtures/trailing-slash/pages/index.vue +5 -0
- package/test/fixtures/trailing-slash/pages/posts/_slug.vue +16 -0
- package/test/fixtures/trailing-slash/pages/posts/index.vue +5 -0
- package/test/fixtures/trailing-slash/pages/posts.vue +6 -0
- package/test/fixtures/trailing-slash/trailing-slash.test.js +5 -0
- package/test/fixtures/trailing-slash/with-default/nuxt.config.js +10 -0
- package/test/fixtures/trailing-slash/with-false/nuxt.config.js +10 -0
- package/test/fixtures/trailing-slash/with-true/nuxt.config.js +10 -0
- package/test/fixtures/with-config/.nuxtignore +4 -0
- package/test/fixtures/with-config/app.html +10 -0
- package/test/fixtures/with-config/assets/app.pcss +10 -0
- package/test/fixtures/with-config/assets/app.sass +2 -0
- package/test/fixtures/with-config/assets/pre-process.css +3 -0
- package/test/fixtures/with-config/assets/roboto.woff2 +0 -0
- package/test/fixtures/with-config/components/loading.vue +36 -0
- package/test/fixtures/with-config/layouts/custom-env.vue +6 -0
- package/test/fixtures/with-config/layouts/custom.vue +6 -0
- package/test/fixtures/with-config/layouts/default.vue +6 -0
- package/test/fixtures/with-config/layouts/desktop/default.vue +6 -0
- package/test/fixtures/with-config/layouts/error.vue +9 -0
- package/test/fixtures/with-config/layouts/mobile/default.vue +6 -0
- package/test/fixtures/with-config/layouts/test-ignore.vue +1 -0
- package/test/fixtures/with-config/middleware/noop.js +3 -0
- package/test/fixtures/with-config/middleware/test-ignore.js +1 -0
- package/test/fixtures/with-config/middleware/user-agent.js +3 -0
- package/test/fixtures/with-config/nuxt.config.js +118 -0
- package/test/fixtures/with-config/pages/about.vue +18 -0
- package/test/fixtures/with-config/pages/desktop.vue +11 -0
- package/test/fixtures/with-config/pages/env.vue +23 -0
- package/test/fixtures/with-config/pages/error.vue +11 -0
- package/test/fixtures/with-config/pages/head.vue +13 -0
- package/test/fixtures/with-config/pages/index.vue +21 -0
- package/test/fixtures/with-config/pages/mobile.vue +11 -0
- package/test/fixtures/with-config/pages/test-ignore.vue +0 -0
- package/test/fixtures/with-config/pages/user-agent.vue +12 -0
- package/test/fixtures/with-config/plugins/doubled/index.js +1 -0
- package/test/fixtures/with-config/plugins/only-client.js +1 -0
- package/test/fixtures/with-config/plugins/test.client.js +1 -0
- package/test/fixtures/with-config/plugins/test.js +7 -0
- package/test/fixtures/with-config/plugins/test.json +0 -0
- package/test/fixtures/with-config/plugins/test.plugin.js +5 -0
- package/test/fixtures/with-config/plugins/test.server.js +1 -0
- package/test/fixtures/with-config/postcss.config.js +14 -0
- package/test/fixtures/with-config/static/test.txt +1 -0
- package/test/fixtures/with-config/store/index.js +17 -0
- package/test/fixtures/with-config/store/test-ignore.js +1 -0
- package/test/fixtures/with-config/with-config.test.js +38 -0
- package/test/utils/browser.js +110 -0
- package/test/utils/build.js +21 -0
- package/test/utils/index.js +30 -0
- package/test/utils/nuxt.js +35 -0
- package/test/utils/resource-size.js +35 -0
- package/test/utils/setup-env.js +35 -0
- package/test/utils/setup.js +6 -0
@@ -0,0 +1,951 @@
|
|
1
|
+
import Vue from 'vue'
|
2
|
+
<% if (fetch.client) { %>import fetch from 'unfetch'<% } %>
|
3
|
+
<% if (features.middleware) { %>import middleware from './middleware.js'<% } %>
|
4
|
+
import {
|
5
|
+
<% if (features.asyncData) { %>applyAsyncData,
|
6
|
+
promisify,<% } %>
|
7
|
+
<% if (features.middleware) { %>middlewareSeries,<% } %>
|
8
|
+
<% if (features.transitions || (features.middleware && features.layouts)) { %>sanitizeComponent,<% } %>
|
9
|
+
resolveRouteComponents,
|
10
|
+
getMatchedComponents,
|
11
|
+
getMatchedComponentsInstances,
|
12
|
+
flatMapComponents,
|
13
|
+
setContext,
|
14
|
+
<% if (features.transitions || features.asyncData || features.fetch) { %>getLocation,<% } %>
|
15
|
+
compile,
|
16
|
+
getQueryDiff,
|
17
|
+
globalHandleError,
|
18
|
+
isSamePath,
|
19
|
+
urlJoin
|
20
|
+
} from './utils.js'
|
21
|
+
import { createApp<% if (features.layouts) { %>, NuxtError<% } %> } from './index.js'
|
22
|
+
<% if (features.fetch) { %>import fetchMixin from './mixins/fetch.client'<% } %>
|
23
|
+
import NuxtLink from './components/nuxt-link.<%= features.clientPrefetch ? "client" : "server" %>.js' // should be included after ./index.js
|
24
|
+
<% if (isFullStatic) { %>import { installJsonp } from './jsonp'<% } %>
|
25
|
+
|
26
|
+
<% if (isFullStatic) { %>installJsonp()<% } %>
|
27
|
+
|
28
|
+
<% if (features.fetch) { %>
|
29
|
+
// Fetch mixin
|
30
|
+
if (!Vue.__nuxt__fetch__mixin__) {
|
31
|
+
Vue.mixin(fetchMixin)
|
32
|
+
Vue.__nuxt__fetch__mixin__ = true
|
33
|
+
}
|
34
|
+
<% } %>
|
35
|
+
|
36
|
+
// Component: <NuxtLink>
|
37
|
+
Vue.component(NuxtLink.name, NuxtLink)
|
38
|
+
<% if (features.componentAliases) { %>Vue.component('NLink', NuxtLink)<% } %>
|
39
|
+
|
40
|
+
<% if (fetch.client) { %>if (!global.fetch) { global.fetch = fetch }<% } %>
|
41
|
+
|
42
|
+
// Global shared references
|
43
|
+
let _lastPaths = []<%= isTest ? '// eslint-disable-line no-unused-vars' : '' %>
|
44
|
+
let app
|
45
|
+
let router
|
46
|
+
<% if (store) { %>let store<%= isTest ? '// eslint-disable-line no-unused-vars' : '' %><% } %>
|
47
|
+
|
48
|
+
// Try to rehydrate SSR data from window
|
49
|
+
const NUXT = window.<%= globals.context %> || {}
|
50
|
+
|
51
|
+
const $config = NUXT.config || {}
|
52
|
+
if ($config._app) {
|
53
|
+
__webpack_public_path__ = urlJoin($config._app.cdnURL, $config._app.assetsPath)
|
54
|
+
}
|
55
|
+
|
56
|
+
Object.assign(Vue.config, <%= serialize(vue.config) %>)<%= isTest ? '// eslint-disable-line' : '' %>
|
57
|
+
|
58
|
+
<% if (nuxtOptions.render.ssrLog) { %>
|
59
|
+
const logs = NUXT.logs || []
|
60
|
+
if (logs.length > 0) {
|
61
|
+
const ssrLogStyle = 'background: #2E495E;border-radius: 0.5em;color: white;font-weight: bold;padding: 2px 0.5em;'
|
62
|
+
console.group && console.group<%= nuxtOptions.render.ssrLog === 'collapsed' ? 'Collapsed' : '' %> ('%cNuxt SSR', ssrLogStyle)
|
63
|
+
logs.forEach(logObj => (console[logObj.type] || console.log)(...logObj.args))
|
64
|
+
delete NUXT.logs
|
65
|
+
console.groupEnd && console.groupEnd()
|
66
|
+
}
|
67
|
+
<% } %>
|
68
|
+
<% if (debug) { %>
|
69
|
+
// Setup global Vue error handler
|
70
|
+
if (!Vue.config.$nuxt) {
|
71
|
+
const defaultErrorHandler = Vue.config.errorHandler
|
72
|
+
Vue.config.errorHandler = async (err, vm, info, ...rest) => {
|
73
|
+
// Call other handler if exist
|
74
|
+
let handled = null
|
75
|
+
if (typeof defaultErrorHandler === 'function') {
|
76
|
+
handled = defaultErrorHandler(err, vm, info, ...rest)
|
77
|
+
}
|
78
|
+
if (handled === true) {
|
79
|
+
return handled
|
80
|
+
}
|
81
|
+
|
82
|
+
if (vm && vm.$root) {
|
83
|
+
const nuxtApp = Object.keys(Vue.config.$nuxt)
|
84
|
+
.find(nuxtInstance => vm.$root[nuxtInstance])
|
85
|
+
|
86
|
+
// Show Nuxt Error Page
|
87
|
+
if (nuxtApp && vm.$root[nuxtApp].error && info !== 'render function') {
|
88
|
+
const currentApp = vm.$root[nuxtApp]
|
89
|
+
<% if (features.layouts) { %>
|
90
|
+
// Load error layout
|
91
|
+
let layout = (NuxtError.options || NuxtError).layout
|
92
|
+
if (typeof layout === 'function') {
|
93
|
+
layout = layout(currentApp.context)
|
94
|
+
}
|
95
|
+
if (layout) {
|
96
|
+
await currentApp.loadLayout(layout).catch(() => {})
|
97
|
+
}
|
98
|
+
currentApp.setLayout(layout)
|
99
|
+
<% } %>
|
100
|
+
currentApp.error(err)
|
101
|
+
}
|
102
|
+
}
|
103
|
+
|
104
|
+
if (typeof defaultErrorHandler === 'function') {
|
105
|
+
return handled
|
106
|
+
}
|
107
|
+
|
108
|
+
// Log to console
|
109
|
+
if (process.env.NODE_ENV !== 'production') {
|
110
|
+
console.error(err)
|
111
|
+
} else {
|
112
|
+
console.error(err.message || err)
|
113
|
+
}
|
114
|
+
}
|
115
|
+
Vue.config.$nuxt = {}
|
116
|
+
}
|
117
|
+
Vue.config.$nuxt.<%= globals.nuxt %> = true
|
118
|
+
<% } %>
|
119
|
+
const errorHandler = Vue.config.errorHandler || console.error
|
120
|
+
|
121
|
+
// Create and mount App
|
122
|
+
createApp(null, NUXT.config).then(mountApp).catch(errorHandler)
|
123
|
+
|
124
|
+
<% if (features.transitions) { %>
|
125
|
+
function componentOption (component, key, ...args) {
|
126
|
+
if (!component || !component.options || !component.options[key]) {
|
127
|
+
return {}
|
128
|
+
}
|
129
|
+
const option = component.options[key]
|
130
|
+
if (typeof option === 'function') {
|
131
|
+
return option(...args)
|
132
|
+
}
|
133
|
+
return option
|
134
|
+
}
|
135
|
+
|
136
|
+
function mapTransitions (toComponents, to, from) {
|
137
|
+
const componentTransitions = (component) => {
|
138
|
+
const transition = componentOption(component, 'transition', to, from) || {}
|
139
|
+
return (typeof transition === 'string' ? { name: transition } : transition)
|
140
|
+
}
|
141
|
+
|
142
|
+
const fromComponents = from ? getMatchedComponents(from) : []
|
143
|
+
const maxDepth = Math.max(toComponents.length, fromComponents.length)
|
144
|
+
|
145
|
+
const mergedTransitions = []
|
146
|
+
for (let i=0; i<maxDepth; i++) {
|
147
|
+
// Clone original objects to prevent overrides
|
148
|
+
const toTransitions = Object.assign({}, componentTransitions(toComponents[i]))
|
149
|
+
const transitions = Object.assign({}, componentTransitions(fromComponents[i]))
|
150
|
+
|
151
|
+
// Combine transitions & prefer `leave` properties of "from" route
|
152
|
+
Object.keys(toTransitions)
|
153
|
+
.filter(key => typeof toTransitions[key] !== 'undefined' && !key.toLowerCase().includes('leave'))
|
154
|
+
.forEach((key) => { transitions[key] = toTransitions[key] })
|
155
|
+
|
156
|
+
mergedTransitions.push(transitions)
|
157
|
+
}
|
158
|
+
return mergedTransitions
|
159
|
+
}
|
160
|
+
<% } %>
|
161
|
+
async function loadAsyncComponents (to, from, next) {
|
162
|
+
// Check if route changed (this._routeChanged), only if the page is not an error (for validate())
|
163
|
+
this._routeChanged = Boolean(app.nuxt.err) || from.name !== to.name
|
164
|
+
this._paramChanged = !this._routeChanged && from.path !== to.path
|
165
|
+
this._queryChanged = !this._paramChanged && from.fullPath !== to.fullPath
|
166
|
+
this._diffQuery = (this._queryChanged ? getQueryDiff(to.query, from.query) : [])
|
167
|
+
|
168
|
+
<% if (loading) { %>
|
169
|
+
if ((this._routeChanged || this._paramChanged) && this.$loading.start && !this.$loading.manual) {
|
170
|
+
this.$loading.start()
|
171
|
+
}
|
172
|
+
<% } %>
|
173
|
+
|
174
|
+
try {
|
175
|
+
if (this._queryChanged) {
|
176
|
+
const Components = await resolveRouteComponents(
|
177
|
+
to,
|
178
|
+
(Component, instance) => ({ Component, instance })
|
179
|
+
)
|
180
|
+
// Add a marker on each component that it needs to refresh or not
|
181
|
+
const startLoader = Components.some(({ Component, instance }) => {
|
182
|
+
const watchQuery = Component.options.watchQuery
|
183
|
+
if (watchQuery === true) {
|
184
|
+
return true
|
185
|
+
}
|
186
|
+
if (Array.isArray(watchQuery)) {
|
187
|
+
return watchQuery.some(key => this._diffQuery[key])
|
188
|
+
}
|
189
|
+
if (typeof watchQuery === 'function') {
|
190
|
+
return watchQuery.apply(instance, [to.query, from.query])
|
191
|
+
}
|
192
|
+
return false
|
193
|
+
})
|
194
|
+
<% if (loading) { %>
|
195
|
+
if (startLoader && this.$loading.start && !this.$loading.manual) {
|
196
|
+
this.$loading.start()
|
197
|
+
}
|
198
|
+
<% } %>
|
199
|
+
}
|
200
|
+
// Call next()
|
201
|
+
next()
|
202
|
+
} catch (error) {
|
203
|
+
const err = error || {}
|
204
|
+
const statusCode = err.statusCode || err.status || (err.response && err.response.status) || 500
|
205
|
+
const message = err.message || ''
|
206
|
+
|
207
|
+
// Handle chunk loading errors
|
208
|
+
// This may be due to a new deployment or a network problem
|
209
|
+
if (/^Loading( CSS)? chunk (\d)+ failed\./.test(message)) {
|
210
|
+
window.location.reload(true /* skip cache */)
|
211
|
+
return // prevent error page blinking for user
|
212
|
+
}
|
213
|
+
|
214
|
+
this.error({ statusCode, message })
|
215
|
+
this.<%= globals.nuxt %>.$emit('routeChanged', to, from, err)
|
216
|
+
next()
|
217
|
+
}
|
218
|
+
}
|
219
|
+
|
220
|
+
<% if (features.transitions || features.asyncData || features.fetch) { %>
|
221
|
+
function applySSRData (Component, ssrData) {
|
222
|
+
<% if (features.asyncData) { %>
|
223
|
+
if (NUXT.serverRendered && ssrData) {
|
224
|
+
applyAsyncData(Component, ssrData)
|
225
|
+
}
|
226
|
+
<% } %>
|
227
|
+
Component._Ctor = Component
|
228
|
+
return Component
|
229
|
+
}
|
230
|
+
|
231
|
+
// Get matched components
|
232
|
+
function resolveComponents (route) {
|
233
|
+
return flatMapComponents(route, async (Component, _, match, key, index) => {
|
234
|
+
// If component is not resolved yet, resolve it
|
235
|
+
if (typeof Component === 'function' && !Component.options) {
|
236
|
+
Component = await Component()
|
237
|
+
}
|
238
|
+
// Sanitize it and save it
|
239
|
+
const _Component = applySSRData(sanitizeComponent(Component), NUXT.data ? NUXT.data[index] : null)
|
240
|
+
match.components[key] = _Component
|
241
|
+
return _Component
|
242
|
+
})
|
243
|
+
}
|
244
|
+
<% } %>
|
245
|
+
|
246
|
+
<% if (features.middleware) { %>
|
247
|
+
function callMiddleware (Components, context, layout) {
|
248
|
+
let midd = <%= devalue(router.middleware) %><%= isTest ? '// eslint-disable-line' : '' %>
|
249
|
+
let unknownMiddleware = false
|
250
|
+
|
251
|
+
<% if (features.layouts) { %>
|
252
|
+
// If layout is undefined, only call global middleware
|
253
|
+
if (typeof layout !== 'undefined') {
|
254
|
+
midd = [] // Exclude global middleware if layout defined (already called before)
|
255
|
+
layout = sanitizeComponent(layout)
|
256
|
+
if (layout.options.middleware) {
|
257
|
+
midd = midd.concat(layout.options.middleware)
|
258
|
+
}
|
259
|
+
Components.forEach((Component) => {
|
260
|
+
if (Component.options.middleware) {
|
261
|
+
midd = midd.concat(Component.options.middleware)
|
262
|
+
}
|
263
|
+
})
|
264
|
+
}
|
265
|
+
<% } %>
|
266
|
+
|
267
|
+
midd = midd.map((name) => {
|
268
|
+
if (typeof name === 'function') {
|
269
|
+
return name
|
270
|
+
}
|
271
|
+
if (typeof middleware[name] !== 'function') {
|
272
|
+
unknownMiddleware = true
|
273
|
+
this.error({ statusCode: 500, message: 'Unknown middleware ' + name })
|
274
|
+
}
|
275
|
+
return middleware[name]
|
276
|
+
})
|
277
|
+
|
278
|
+
if (unknownMiddleware) {
|
279
|
+
return
|
280
|
+
}
|
281
|
+
return middlewareSeries(midd, context)
|
282
|
+
}
|
283
|
+
<% } else if (isDev) {
|
284
|
+
// This is a placeholder function mainly so we dont have to
|
285
|
+
// refactor the promise chain in addHotReload()
|
286
|
+
%>
|
287
|
+
function callMiddleware () {
|
288
|
+
return Promise.resolve(true)
|
289
|
+
}
|
290
|
+
<% } %>
|
291
|
+
async function render (to, from, next) {
|
292
|
+
if (this._routeChanged === false && this._paramChanged === false && this._queryChanged === false) {
|
293
|
+
return next()
|
294
|
+
}
|
295
|
+
// Handle first render on SPA mode
|
296
|
+
let spaFallback = false
|
297
|
+
if (to === from) {
|
298
|
+
_lastPaths = []
|
299
|
+
spaFallback = true
|
300
|
+
} else {
|
301
|
+
const fromMatches = []
|
302
|
+
_lastPaths = getMatchedComponents(from, fromMatches).map((Component, i) => {
|
303
|
+
return compile(from.matched[fromMatches[i]].path)(from.params)
|
304
|
+
})
|
305
|
+
}
|
306
|
+
|
307
|
+
// nextCalled is true when redirected
|
308
|
+
let nextCalled = false
|
309
|
+
const _next = (path) => {
|
310
|
+
<% if (loading) { %>
|
311
|
+
if (from.path === path.path && this.$loading.finish) {
|
312
|
+
this.$loading.finish()
|
313
|
+
}
|
314
|
+
<% } %>
|
315
|
+
<% if (loading) { %>
|
316
|
+
if (from.path !== path.path && this.$loading.pause) {
|
317
|
+
this.$loading.pause()
|
318
|
+
}
|
319
|
+
<% } %>
|
320
|
+
if (nextCalled) {
|
321
|
+
return
|
322
|
+
}
|
323
|
+
|
324
|
+
nextCalled = true
|
325
|
+
next(path)
|
326
|
+
}
|
327
|
+
|
328
|
+
// Update context
|
329
|
+
await setContext(app, {
|
330
|
+
route: to,
|
331
|
+
from,
|
332
|
+
next: _next.bind(this)
|
333
|
+
})
|
334
|
+
this._dateLastError = app.nuxt.dateErr
|
335
|
+
this._hadError = Boolean(app.nuxt.err)
|
336
|
+
|
337
|
+
// Get route's matched components
|
338
|
+
const matches = []
|
339
|
+
const Components = getMatchedComponents(to, matches)
|
340
|
+
|
341
|
+
// If no Components matched, generate 404
|
342
|
+
if (!Components.length) {
|
343
|
+
<% if (features.middleware) { %>
|
344
|
+
// Default layout
|
345
|
+
await callMiddleware.call(this, Components, app.context)
|
346
|
+
if (nextCalled) {
|
347
|
+
return
|
348
|
+
}
|
349
|
+
<% } %>
|
350
|
+
|
351
|
+
<% if (features.layouts) { %>
|
352
|
+
// Load layout for error page
|
353
|
+
const errorLayout = (NuxtError.options || NuxtError).layout
|
354
|
+
const layout = await this.loadLayout(
|
355
|
+
typeof errorLayout === 'function'
|
356
|
+
? errorLayout.call(NuxtError, app.context)
|
357
|
+
: errorLayout
|
358
|
+
)
|
359
|
+
<% } %>
|
360
|
+
|
361
|
+
<% if (features.middleware) { %>
|
362
|
+
await callMiddleware.call(this, Components, app.context, layout)
|
363
|
+
if (nextCalled) {
|
364
|
+
return
|
365
|
+
}
|
366
|
+
<% } %>
|
367
|
+
|
368
|
+
// Show error page
|
369
|
+
app.context.error({ statusCode: 404, message: '<%= messages.error_404 %>' })
|
370
|
+
return next()
|
371
|
+
}
|
372
|
+
|
373
|
+
<% if (features.asyncData || features.fetch) { %>
|
374
|
+
// Update ._data and other properties if hot reloaded
|
375
|
+
Components.forEach((Component) => {
|
376
|
+
if (Component._Ctor && Component._Ctor.options) {
|
377
|
+
<% if (features.asyncData) { %>Component.options.asyncData = Component._Ctor.options.asyncData<% } %>
|
378
|
+
<% if (features.fetch) { %>Component.options.fetch = Component._Ctor.options.fetch<% } %>
|
379
|
+
}
|
380
|
+
})
|
381
|
+
<% } %>
|
382
|
+
|
383
|
+
<% if (features.transitions) { %>
|
384
|
+
// Apply transitions
|
385
|
+
this.setTransitions(mapTransitions(Components, to, from))
|
386
|
+
<% } %>
|
387
|
+
try {
|
388
|
+
<% if (features.middleware) { %>
|
389
|
+
// Call middleware
|
390
|
+
await callMiddleware.call(this, Components, app.context)
|
391
|
+
if (nextCalled) {
|
392
|
+
return
|
393
|
+
}
|
394
|
+
if (app.context._errored) {
|
395
|
+
return next()
|
396
|
+
}
|
397
|
+
<% } %>
|
398
|
+
|
399
|
+
<% if (features.layouts) { %>
|
400
|
+
// Set layout
|
401
|
+
let layout = Components[0].options.layout
|
402
|
+
if (typeof layout === 'function') {
|
403
|
+
layout = layout(app.context)
|
404
|
+
}
|
405
|
+
layout = await this.loadLayout(layout)
|
406
|
+
<% } %>
|
407
|
+
|
408
|
+
<% if (features.middleware) { %>
|
409
|
+
// Call middleware for layout
|
410
|
+
await callMiddleware.call(this, Components, app.context, layout)
|
411
|
+
if (nextCalled) {
|
412
|
+
return
|
413
|
+
}
|
414
|
+
if (app.context._errored) {
|
415
|
+
return next()
|
416
|
+
}
|
417
|
+
<% } %>
|
418
|
+
|
419
|
+
|
420
|
+
<% if (features.validate) { %>
|
421
|
+
// Call .validate()
|
422
|
+
let isValid = true
|
423
|
+
try {
|
424
|
+
for (const Component of Components) {
|
425
|
+
if (typeof Component.options.validate !== 'function') {
|
426
|
+
continue
|
427
|
+
}
|
428
|
+
|
429
|
+
isValid = await Component.options.validate(app.context)
|
430
|
+
|
431
|
+
if (!isValid) {
|
432
|
+
break
|
433
|
+
}
|
434
|
+
}
|
435
|
+
} catch (validationError) {
|
436
|
+
// ...If .validate() threw an error
|
437
|
+
this.error({
|
438
|
+
statusCode: validationError.statusCode || '500',
|
439
|
+
message: validationError.message
|
440
|
+
})
|
441
|
+
return next()
|
442
|
+
}
|
443
|
+
|
444
|
+
// ...If .validate() returned false
|
445
|
+
if (!isValid) {
|
446
|
+
this.error({ statusCode: 404, message: '<%= messages.error_404 %>' })
|
447
|
+
return next()
|
448
|
+
}
|
449
|
+
<% } %>
|
450
|
+
|
451
|
+
<% if (features.asyncData || features.fetch) { %>
|
452
|
+
let instances
|
453
|
+
// Call asyncData & fetch hooks on components matched by the route.
|
454
|
+
await Promise.all(Components.map(async (Component, i) => {
|
455
|
+
// Check if only children route changed
|
456
|
+
Component._path = compile(to.matched[matches[i]].path)(to.params)
|
457
|
+
Component._dataRefresh = false
|
458
|
+
const childPathChanged = Component._path !== _lastPaths[i]
|
459
|
+
// Refresh component (call asyncData & fetch) when:
|
460
|
+
// Route path changed part includes current component
|
461
|
+
// Or route param changed part includes current component and watchParam is not `false`
|
462
|
+
// Or route query is changed and watchQuery returns `true`
|
463
|
+
if (this._routeChanged && childPathChanged) {
|
464
|
+
Component._dataRefresh = true
|
465
|
+
} else if (this._paramChanged && childPathChanged) {
|
466
|
+
const watchParam = Component.options.watchParam
|
467
|
+
Component._dataRefresh = watchParam !== false
|
468
|
+
} else if (this._queryChanged) {
|
469
|
+
const watchQuery = Component.options.watchQuery
|
470
|
+
if (watchQuery === true) {
|
471
|
+
Component._dataRefresh = true
|
472
|
+
} else if (Array.isArray(watchQuery)) {
|
473
|
+
Component._dataRefresh = watchQuery.some(key => this._diffQuery[key])
|
474
|
+
} else if (typeof watchQuery === 'function') {
|
475
|
+
if (!instances) {
|
476
|
+
instances = getMatchedComponentsInstances(to)
|
477
|
+
}
|
478
|
+
Component._dataRefresh = watchQuery.apply(instances[i], [to.query, from.query])
|
479
|
+
}
|
480
|
+
}
|
481
|
+
if (!this._hadError && this._isMounted && !Component._dataRefresh) {
|
482
|
+
return
|
483
|
+
}
|
484
|
+
|
485
|
+
const promises = []
|
486
|
+
|
487
|
+
<% if (features.asyncData) { %>
|
488
|
+
const hasAsyncData = (
|
489
|
+
Component.options.asyncData &&
|
490
|
+
typeof Component.options.asyncData === 'function'
|
491
|
+
)
|
492
|
+
<% } else { %>
|
493
|
+
const hasAsyncData = false
|
494
|
+
<% } %>
|
495
|
+
|
496
|
+
<% if (features.fetch) { %>
|
497
|
+
const hasFetch = Boolean(Component.options.fetch) && Component.options.fetch.length
|
498
|
+
<% } else { %>
|
499
|
+
const hasFetch = false
|
500
|
+
<% } %>
|
501
|
+
|
502
|
+
<% if (loading) { %>
|
503
|
+
const loadingIncrease = (hasAsyncData && hasFetch) ? 30 : 45
|
504
|
+
<% } %>
|
505
|
+
|
506
|
+
<% if (features.asyncData) { %>
|
507
|
+
// Call asyncData(context)
|
508
|
+
if (hasAsyncData) {
|
509
|
+
<% if (isFullStatic) { %>
|
510
|
+
let promise
|
511
|
+
|
512
|
+
if (this.isPreview || spaFallback) {
|
513
|
+
promise = promisify(Component.options.asyncData, app.context)
|
514
|
+
} else {
|
515
|
+
promise = this.fetchPayload(to.path)
|
516
|
+
.then(payload => payload.data[i])
|
517
|
+
.catch(_err => promisify(Component.options.asyncData, app.context)) // Fallback
|
518
|
+
}
|
519
|
+
<% } else { %>
|
520
|
+
const promise = promisify(Component.options.asyncData, app.context)
|
521
|
+
<% } %>
|
522
|
+
promise.then((asyncDataResult) => {
|
523
|
+
applyAsyncData(Component, asyncDataResult)
|
524
|
+
<% if (loading) { %>
|
525
|
+
if (this.$loading.increase) {
|
526
|
+
this.$loading.increase(loadingIncrease)
|
527
|
+
}
|
528
|
+
<% } %>
|
529
|
+
})
|
530
|
+
promises.push(promise)
|
531
|
+
}
|
532
|
+
<% } %>
|
533
|
+
|
534
|
+
<% if (isFullStatic && store) { %>
|
535
|
+
if (!this.isPreview && !spaFallback) {
|
536
|
+
// Replay store mutations, catching to avoid error page on SPA fallback
|
537
|
+
promises.push(this.fetchPayload(to.path).then(payload => {
|
538
|
+
payload.mutations.forEach(m => { this.$store.commit(m[0], m[1]) })
|
539
|
+
}).catch(err => null))
|
540
|
+
}
|
541
|
+
<% } %>
|
542
|
+
|
543
|
+
// Check disabled page loading
|
544
|
+
this.$loading.manual = Component.options.loading === false
|
545
|
+
|
546
|
+
<% if (features.fetch) { %>
|
547
|
+
<% if (isFullStatic) { %>
|
548
|
+
if (!this.isPreview && !spaFallback) {
|
549
|
+
// Catching the error here for letting the SPA fallback and normal fetch behaviour
|
550
|
+
promises.push(this.fetchPayload(to.path).catch(err => null))
|
551
|
+
}
|
552
|
+
<% } %>
|
553
|
+
// Call fetch(context)
|
554
|
+
if (hasFetch) {
|
555
|
+
let p = Component.options.fetch(app.context)
|
556
|
+
if (!p || (!(p instanceof Promise) && (typeof p.then !== 'function'))) {
|
557
|
+
p = Promise.resolve(p)
|
558
|
+
}
|
559
|
+
p.then((fetchResult) => {
|
560
|
+
<% if (loading) { %>
|
561
|
+
if (this.$loading.increase) {
|
562
|
+
this.$loading.increase(loadingIncrease)
|
563
|
+
}
|
564
|
+
<% } %>
|
565
|
+
})
|
566
|
+
promises.push(p)
|
567
|
+
}
|
568
|
+
<% } %>
|
569
|
+
|
570
|
+
return Promise.all(promises)
|
571
|
+
}))
|
572
|
+
<% } %>
|
573
|
+
|
574
|
+
// If not redirected
|
575
|
+
if (!nextCalled) {
|
576
|
+
<% if (loading) { %>
|
577
|
+
if (this.$loading.finish && !this.$loading.manual) {
|
578
|
+
this.$loading.finish()
|
579
|
+
}
|
580
|
+
<% } %>
|
581
|
+
next()
|
582
|
+
}
|
583
|
+
|
584
|
+
} catch (err) {
|
585
|
+
const error = err || {}
|
586
|
+
if (error.message === 'ERR_REDIRECT') {
|
587
|
+
return this.<%= globals.nuxt %>.$emit('routeChanged', to, from, error)
|
588
|
+
}
|
589
|
+
_lastPaths = []
|
590
|
+
|
591
|
+
globalHandleError(error)
|
592
|
+
|
593
|
+
<% if (features.layouts) { %>
|
594
|
+
// Load error layout
|
595
|
+
let layout = (NuxtError.options || NuxtError).layout
|
596
|
+
if (typeof layout === 'function') {
|
597
|
+
layout = layout(app.context)
|
598
|
+
}
|
599
|
+
await this.loadLayout(layout)
|
600
|
+
<% } %>
|
601
|
+
|
602
|
+
this.error(error)
|
603
|
+
this.<%= globals.nuxt %>.$emit('routeChanged', to, from, error)
|
604
|
+
next()
|
605
|
+
}
|
606
|
+
}
|
607
|
+
|
608
|
+
// Fix components format in matched, it's due to code-splitting of vue-router
|
609
|
+
function normalizeComponents (to, ___) {
|
610
|
+
flatMapComponents(to, (Component, _, match, key) => {
|
611
|
+
if (typeof Component === 'object' && !Component.options) {
|
612
|
+
// Updated via vue-router resolveAsyncComponents()
|
613
|
+
Component = Vue.extend(Component)
|
614
|
+
Component._Ctor = Component
|
615
|
+
match.components[key] = Component
|
616
|
+
}
|
617
|
+
return Component
|
618
|
+
})
|
619
|
+
}
|
620
|
+
|
621
|
+
<% if (features.layouts) { %>
|
622
|
+
<% if (splitChunks.layouts) { %>async <% } %>function setLayoutForNextPage (to) {
|
623
|
+
// Set layout
|
624
|
+
let hasError = Boolean(this.$options.nuxt.err)
|
625
|
+
if (this._hadError && this._dateLastError === this.$options.nuxt.dateErr) {
|
626
|
+
hasError = false
|
627
|
+
}
|
628
|
+
let layout = hasError
|
629
|
+
? (NuxtError.options || NuxtError).layout
|
630
|
+
: to.matched[0].components.default.options.layout
|
631
|
+
|
632
|
+
if (typeof layout === 'function') {
|
633
|
+
layout = layout(app.context)
|
634
|
+
}
|
635
|
+
<% if (splitChunks.layouts) { %>
|
636
|
+
await this.loadLayout(layout)
|
637
|
+
<% } %>
|
638
|
+
this.setLayout(layout)
|
639
|
+
}
|
640
|
+
<% } %>
|
641
|
+
|
642
|
+
function checkForErrors (app) {
|
643
|
+
// Hide error component if no error
|
644
|
+
if (app._hadError && app._dateLastError === app.$options.nuxt.dateErr) {
|
645
|
+
app.error()
|
646
|
+
}
|
647
|
+
}
|
648
|
+
|
649
|
+
// When navigating on a different route but the same component is used, Vue.js
|
650
|
+
// Will not update the instance data, so we have to update $data ourselves
|
651
|
+
function fixPrepatch (to, ___) {
|
652
|
+
if (this._routeChanged === false && this._paramChanged === false && this._queryChanged === false) {
|
653
|
+
return
|
654
|
+
}
|
655
|
+
|
656
|
+
const instances = getMatchedComponentsInstances(to)
|
657
|
+
const Components = getMatchedComponents(to)
|
658
|
+
|
659
|
+
let triggerScroll = <%= features.transitions ? 'false' : 'true' %>
|
660
|
+
|
661
|
+
Vue.nextTick(() => {
|
662
|
+
instances.forEach((instance, i) => {
|
663
|
+
if (!instance || instance._isDestroyed) {
|
664
|
+
return
|
665
|
+
}
|
666
|
+
|
667
|
+
if (
|
668
|
+
instance.constructor._dataRefresh &&
|
669
|
+
Components[i] === instance.constructor &&
|
670
|
+
instance.$vnode.data.keepAlive !== true &&
|
671
|
+
typeof instance.constructor.options.data === 'function'
|
672
|
+
) {
|
673
|
+
const newData = instance.constructor.options.data.call(instance)
|
674
|
+
for (const key in newData) {
|
675
|
+
Vue.set(instance.$data, key, newData[key])
|
676
|
+
}
|
677
|
+
|
678
|
+
triggerScroll = true
|
679
|
+
}
|
680
|
+
})
|
681
|
+
|
682
|
+
if (triggerScroll) {
|
683
|
+
// Ensure to trigger scroll event after calling scrollBehavior
|
684
|
+
window.<%= globals.nuxt %>.$nextTick(() => {
|
685
|
+
window.<%= globals.nuxt %>.$emit('triggerScroll')
|
686
|
+
})
|
687
|
+
}
|
688
|
+
|
689
|
+
checkForErrors(this)
|
690
|
+
<% if (isDev) { %>
|
691
|
+
// Hot reloading
|
692
|
+
setTimeout(() => hotReloadAPI(this), 100)
|
693
|
+
<% } %>
|
694
|
+
})
|
695
|
+
}
|
696
|
+
|
697
|
+
function nuxtReady (_app) {
|
698
|
+
window.<%= globals.readyCallback %>Cbs.forEach((cb) => {
|
699
|
+
if (typeof cb === 'function') {
|
700
|
+
cb(_app)
|
701
|
+
}
|
702
|
+
})
|
703
|
+
// Special JSDOM
|
704
|
+
if (typeof window.<%= globals.loadedCallback %> === 'function') {
|
705
|
+
window.<%= globals.loadedCallback %>(_app)
|
706
|
+
}
|
707
|
+
// Add router hooks
|
708
|
+
router.afterEach((to, from) => {
|
709
|
+
// Wait for fixPrepatch + $data updates
|
710
|
+
Vue.nextTick(() => _app.<%= globals.nuxt %>.$emit('routeChanged', to, from))
|
711
|
+
})
|
712
|
+
}
|
713
|
+
|
714
|
+
<% if (isDev) { %>
|
715
|
+
const noopData = () => { return {} }
|
716
|
+
const noopFetch = () => {}
|
717
|
+
|
718
|
+
// Special hot reload with asyncData(context)
|
719
|
+
function getNuxtChildComponents ($parent, $components = []) {
|
720
|
+
$parent.$children.forEach(($child) => {
|
721
|
+
if ($child.$vnode && $child.$vnode.data.nuxtChild && !$components.find(c =>(c.$options.__file === $child.$options.__file))) {
|
722
|
+
$components.push($child)
|
723
|
+
}
|
724
|
+
if ($child.$children && $child.$children.length) {
|
725
|
+
getNuxtChildComponents($child, $components)
|
726
|
+
}
|
727
|
+
})
|
728
|
+
|
729
|
+
return $components
|
730
|
+
}
|
731
|
+
|
732
|
+
function hotReloadAPI(_app) {
|
733
|
+
if (!module.hot) return
|
734
|
+
|
735
|
+
let $components = getNuxtChildComponents(_app.<%= globals.nuxt %>, [])
|
736
|
+
|
737
|
+
$components.forEach(addHotReload.bind(_app))
|
738
|
+
}
|
739
|
+
|
740
|
+
function addHotReload ($component, depth) {
|
741
|
+
if ($component.$vnode.data._hasHotReload) return
|
742
|
+
$component.$vnode.data._hasHotReload = true
|
743
|
+
|
744
|
+
var _forceUpdate = $component.$forceUpdate.bind($component.$parent)
|
745
|
+
|
746
|
+
$component.$vnode.context.$forceUpdate = async () => {
|
747
|
+
let Components = getMatchedComponents(router.currentRoute)
|
748
|
+
let Component = Components[depth]
|
749
|
+
if (!Component) {
|
750
|
+
return _forceUpdate()
|
751
|
+
}
|
752
|
+
if (typeof Component === 'object' && !Component.options) {
|
753
|
+
// Updated via vue-router resolveAsyncComponents()
|
754
|
+
Component = Vue.extend(Component)
|
755
|
+
Component._Ctor = Component
|
756
|
+
}
|
757
|
+
this.error()
|
758
|
+
let promises = []
|
759
|
+
const next = function (path) {
|
760
|
+
<%= (loading ? 'this.$loading.finish && this.$loading.finish()' : '') %>
|
761
|
+
router.push(path)
|
762
|
+
}
|
763
|
+
await setContext(app, {
|
764
|
+
route: router.currentRoute,
|
765
|
+
isHMR: true,
|
766
|
+
next: next.bind(this)
|
767
|
+
})
|
768
|
+
const context = app.context
|
769
|
+
|
770
|
+
<% if (loading) { %>
|
771
|
+
if (this.$loading.start && !this.$loading.manual) {
|
772
|
+
this.$loading.start()
|
773
|
+
}
|
774
|
+
<% } %>
|
775
|
+
|
776
|
+
callMiddleware.call(this, Components, context)
|
777
|
+
.then(() => {
|
778
|
+
<% if (features.layouts) { %>
|
779
|
+
// If layout changed
|
780
|
+
if (depth !== 0) {
|
781
|
+
return
|
782
|
+
}
|
783
|
+
|
784
|
+
let layout = Component.options.layout || 'default'
|
785
|
+
if (typeof layout === 'function') {
|
786
|
+
layout = layout(context)
|
787
|
+
}
|
788
|
+
if (this.layoutName === layout) {
|
789
|
+
return
|
790
|
+
}
|
791
|
+
let promise = this.loadLayout(layout)
|
792
|
+
promise.then(() => {
|
793
|
+
this.setLayout(layout)
|
794
|
+
Vue.nextTick(() => hotReloadAPI(this))
|
795
|
+
})
|
796
|
+
return promise
|
797
|
+
<% } else { %>
|
798
|
+
return
|
799
|
+
<% } %>
|
800
|
+
})
|
801
|
+
<% if (features.layouts) { %>
|
802
|
+
.then(() => {
|
803
|
+
return callMiddleware.call(this, Components, context, this.layout)
|
804
|
+
})
|
805
|
+
<% } %>
|
806
|
+
.then(() => {
|
807
|
+
<% if (features.asyncData) { %>
|
808
|
+
// Call asyncData(context)
|
809
|
+
let pAsyncData = promisify(Component.options.asyncData || noopData, context)
|
810
|
+
pAsyncData.then((asyncDataResult) => {
|
811
|
+
applyAsyncData(Component, asyncDataResult)
|
812
|
+
<%= (loading ? 'this.$loading.increase && this.$loading.increase(30)' : '') %>
|
813
|
+
})
|
814
|
+
promises.push(pAsyncData)
|
815
|
+
<% } %>
|
816
|
+
|
817
|
+
<% if (features.fetch) { %>
|
818
|
+
// Call fetch()
|
819
|
+
Component.options.fetch = Component.options.fetch || noopFetch
|
820
|
+
let pFetch = Component.options.fetch.length && Component.options.fetch(context)
|
821
|
+
if (!pFetch || (!(pFetch instanceof Promise) && (typeof pFetch.then !== 'function'))) { pFetch = Promise.resolve(pFetch) }
|
822
|
+
<%= (loading ? 'pFetch.then(() => this.$loading.increase && this.$loading.increase(30))' : '') %>
|
823
|
+
promises.push(pFetch)
|
824
|
+
<% } %>
|
825
|
+
return Promise.all(promises)
|
826
|
+
})
|
827
|
+
.then(() => {
|
828
|
+
<%= (loading ? 'this.$loading.finish && this.$loading.finish()' : '') %>
|
829
|
+
_forceUpdate()
|
830
|
+
setTimeout(() => hotReloadAPI(this), 100)
|
831
|
+
})
|
832
|
+
}
|
833
|
+
}
|
834
|
+
<% } %>
|
835
|
+
|
836
|
+
async function mountApp (__app) {
|
837
|
+
// Set global variables
|
838
|
+
app = __app.app
|
839
|
+
router = __app.router
|
840
|
+
<% if (store) { %>store = __app.store<% } %>
|
841
|
+
|
842
|
+
// Create Vue instance
|
843
|
+
const _app = new Vue(app)
|
844
|
+
|
845
|
+
<% if (isFullStatic) { %>
|
846
|
+
// Load page chunk
|
847
|
+
if (!NUXT.data && NUXT.serverRendered) {
|
848
|
+
try {
|
849
|
+
const payload = await _app.fetchPayload(NUXT.routePath || _app.context.route.path)
|
850
|
+
Object.assign(NUXT, payload)
|
851
|
+
} catch (err) {}
|
852
|
+
}
|
853
|
+
<% } %>
|
854
|
+
|
855
|
+
<% if (features.layouts && mode !== 'spa') { %>
|
856
|
+
// Load layout
|
857
|
+
const layout = NUXT.layout || 'default'
|
858
|
+
await _app.loadLayout(layout)
|
859
|
+
_app.setLayout(layout)
|
860
|
+
<% } %>
|
861
|
+
|
862
|
+
// Mounts Vue app to DOM element
|
863
|
+
const mount = () => {
|
864
|
+
_app.$mount('#<%= globals.id %>')
|
865
|
+
|
866
|
+
// Add afterEach router hooks
|
867
|
+
router.afterEach(normalizeComponents)
|
868
|
+
<% if (features.layouts) { %>
|
869
|
+
router.afterEach(setLayoutForNextPage.bind(_app))
|
870
|
+
<% } %>
|
871
|
+
router.afterEach(fixPrepatch.bind(_app))
|
872
|
+
|
873
|
+
// Listen for first Vue update
|
874
|
+
Vue.nextTick(() => {
|
875
|
+
// Call window.{{globals.readyCallback}} callbacks
|
876
|
+
nuxtReady(_app)
|
877
|
+
<% if (isDev) { %>
|
878
|
+
// Enable hot reloading
|
879
|
+
hotReloadAPI(_app)
|
880
|
+
<% } %>
|
881
|
+
})
|
882
|
+
}
|
883
|
+
<% if (features.transitions) { %>
|
884
|
+
// Resolve route components
|
885
|
+
const Components = await Promise.all(resolveComponents(app.context.route))
|
886
|
+
|
887
|
+
// Enable transitions
|
888
|
+
_app.setTransitions = _app.$options.nuxt.setTransitions.bind(_app)
|
889
|
+
if (Components.length) {
|
890
|
+
_app.setTransitions(mapTransitions(Components, router.currentRoute))
|
891
|
+
_lastPaths = router.currentRoute.matched.map(route => compile(route.path)(router.currentRoute.params))
|
892
|
+
}
|
893
|
+
<% } else if (features.asyncData || features.fetch) { %>
|
894
|
+
await Promise.all(resolveComponents(app.context.route))
|
895
|
+
<% } %>
|
896
|
+
// Initialize error handler
|
897
|
+
_app.$loading = {} // To avoid error while _app.$nuxt does not exist
|
898
|
+
if (NUXT.error) {
|
899
|
+
_app.error(NUXT.error)
|
900
|
+
}
|
901
|
+
|
902
|
+
// Add beforeEach router hooks
|
903
|
+
router.beforeEach(loadAsyncComponents.bind(_app))
|
904
|
+
router.beforeEach(render.bind(_app))
|
905
|
+
|
906
|
+
// Fix in static: remove trailing slash to force hydration
|
907
|
+
// Full static, if server-rendered: hydrate, to allow custom redirect to generated page
|
908
|
+
<% if (isFullStatic) { %>
|
909
|
+
if (NUXT.serverRendered) {
|
910
|
+
return mount()
|
911
|
+
}
|
912
|
+
<% } else { %>
|
913
|
+
// Fix in static: remove trailing slash to force hydration
|
914
|
+
if (NUXT.serverRendered && isSamePath(NUXT.routePath, _app.context.route.path)) {
|
915
|
+
return mount()
|
916
|
+
}
|
917
|
+
<% } %>
|
918
|
+
|
919
|
+
// First render on client-side
|
920
|
+
const clientFirstMount = () => {
|
921
|
+
normalizeComponents(router.currentRoute, router.currentRoute)
|
922
|
+
setLayoutForNextPage.call(_app, router.currentRoute)
|
923
|
+
checkForErrors(_app)
|
924
|
+
// Don't call fixPrepatch.call(_app, router.currentRoute, router.currentRoute) since it's first render
|
925
|
+
mount()
|
926
|
+
}
|
927
|
+
|
928
|
+
// fix: force next tick to avoid having same timestamp when an error happen on spa fallback
|
929
|
+
await new Promise(resolve => setTimeout(resolve, 0))
|
930
|
+
render.call(_app, router.currentRoute, router.currentRoute, (path) => {
|
931
|
+
// If not redirected
|
932
|
+
if (!path) {
|
933
|
+
clientFirstMount()
|
934
|
+
return
|
935
|
+
}
|
936
|
+
|
937
|
+
// Add a one-time afterEach hook to
|
938
|
+
// mount the app wait for redirect and route gets resolved
|
939
|
+
const unregisterHook = router.afterEach((to, from) => {
|
940
|
+
unregisterHook()
|
941
|
+
clientFirstMount()
|
942
|
+
})
|
943
|
+
|
944
|
+
// Push the path and let route to be resolved
|
945
|
+
router.push(path, undefined, (err) => {
|
946
|
+
if (err) {
|
947
|
+
errorHandler(err)
|
948
|
+
}
|
949
|
+
})
|
950
|
+
})
|
951
|
+
}
|