* Add a plan for dynamic entry middleware.
* Use dynamic pages middleware to load pages in dev.
* Add the first version of middleware but not tested.
* Integrated.
* Disable prefetching in development.
Otherwise it'll discard the use of dynamic-entries.
* Build custom document and error always.
* Refactor code base.
* Change branding as on-demand entries.
* Fix tests.
* Add a client side pinger for on-demand-entries.
* Dispose inactive entries.
* Add proper logs.
* Update grammer changes.
* Add integration tests for ondemand entries.
* Improve ondemand entry disposing logic.
* Try to improve testing.
* Make sure entries are not getting disposed in basic integration tests.
* Resolve conflicts.
* Fix tests.
* Fix issue when running Router.onRouteChangeComplete
* Simplify state management.
* Make sure we don't dispose the last active page.
* Reload invalid pages detected with the client side ping.
* Improve the pinger code.
* Touch the first page to speed up the future rebuild times.
* Add Websockets based pinger.
* Revert "Add Websockets based pinger."
This reverts commit f706a49a3d886d0231259b7a1fded750ced2e48f.
* Do not send requests per every route change.
* Make sure we are completing the middleware request always.
* Make sure test pages are prebuilt.
Without this, modules built with Babel or Webpack would have hard-coded absolute paths
all the way back to the root of the filesystem. This prevented compilation and running
on different machines or even from different directories on the same machine.
With this change, paths are hard-coded to the top-most node_madules directory found,
which should make them portable relative to the app.
Fixes#1160
* Find custom babel config location properly.
Earlier we simply check for the .bablerc file in the dir.
But the actual logic is much complex.
Now we are using the babel's actual logic to find the
custom config location.
* Fix failing tests.
* Let webpack2 to handle ES2015 module system
Since Node.js can't do that, we need to transpile
ES2015 module system in the emit-file-loader.
* Use sourceMaps only in dev.
* Introduce a transform option to emit-file-loader
So, we can move our ES2015 transpile code with that option.
* Remove unwanted argument options.
* Update comments.
* Use dev flag instead of NODE_ENV
* Remove default next pages compilation from the main babel-loader.
This will fix the issue when the user ignore node_modules
via our .babelrc option.
* Change babel-loaders 'query' to 'options'.
That's what's supported/recommended in webpack 2
Otherwise, webpack will throw an error saying
it couldn't find entries.
That's because it couldn't find babel-loader and
other loaders installed into app's node_modules dir.
* Server JSON pages directly from the filesystem.
* Make Json pages even if there's an error.
* Implement much better page serving.
* Use JsonPagesPlugin in the production mode as well.
* Add gzip support for JSON pages.
* Use glob-promise instead of recursive-readdir
* Handle renderStatic 404 properly.
* Simply the gzip code.
* Cache already read JSON pages.
* Change JSON pages extension to .json.
* Fix HMR related issue.
* Fix hot-reload for .json solely on server.
* Properly clear cache on hot-reloader.
* Convert .js pages into .json page right inside the plugin.
* Fix gzipping .json pages.
* Remove unwanted json pages cleanup.
* Get rid of deprecated fs.exists for fs.access
* upgrade webpack
* fix WatchRemoveEventPlugin for webpack2
* use webpack2 for building for files
* bump webpack
* bump webpack
* monkeypatch watchpack
* compile _document using webpack
* don't emit the bundle file of _document.js
* exclude _document.js from minChunks of CommonsChunkPlugin
* handle creation/removal of pages/_document.js
* improve path handlings
* Create a babel-preset for plugins and presets we use.
Anyone could get it via 'next/babel'
* Remove 'use strict' from the source.
* Add next/router to alias resolver in our babel preset.
* Use next.config.js instead of package.json
* Remove irrelevant comment
* Integrate with custom webpack config
* Include hotReload option
* Remove async/await for getConfig
* Read package.json, show warning when webpack in config is defined
* Prepend warning message with WARNING
* Update log statements
* Documentation
* Restart server on change of config
* Fix process handling and cases where there is no config
* Also restart server when config file gets deleted
* Changed second parameter of webpack to config
* Support for returning Promise
* Update documentation, fix bug with webpack config
* Remove package.json, cdn and hotReload from config
* Remove the use of CDN and bundle everything inside the app.
We still pre-build the prefetcher because it needs
different webpack config which only targets browsers
supports Service Workers.
* Remove cdn config item.
We no longer using it.
* Stop adding script tags when staticMarkup=true
* Remove babel-plugin-transform-remove-strict-mode NPM module.
React addons require React in a special way.
That causes Webpack to push React into the app's bundle.
This fix adds new externals entries to prevent that.
* Register the service worker.
* Update prefetcher code to do prefetching.
* Implement the core prefetching API.
support "import <Link>, { prefetch } from 'next/prefetch'"
* Implement a better communication system with the service worker.
* Add a separate example for prefetching
* Fix some typos.
* Initiate service worker support even prefetching is not used.
This is pretty important since initiating will reset the cache.
If we don't do this, it's possible to have old cached resources
after the user decided to remove all of the prefetching logic.
In this case, even the page didn't prefetch it'll use the
previously cached pages. That because of there might be a already running
service worker.
* Use url module to get pathname.
* Move prefetcher code to the client from pages
Now we also do a webpack build for the prefetcher code.
* Add prefetching docs to the README.md
* Fix some typo.
* Register service worker only if asked to prefetch
We also clean the cache always, even we initialize
the service worker or not.
Earlier it was for all length of entry points.
But we add two more entry points for errors.
Because of that, moving common modules to commons.js won't work.