* Introduce better debug error handling
With this we are rendering runtime and debug errors inside
a it's own error root.
That gives us better error handling and control.
Also, now we are patching React core to capture runtime errors.
* Render the initial error on the server.
* Use file hashes instead of BUILD_ID.
Now JSON pages also not prefixed with a hash and
doesn't support immutable caching.
Instead it supports Etag bases caching.
* Remove appUpdated Router Events hook.
Becuase now we don't need it because there's no buildId validation.
* Remove buildId generation.
* Turn off hash checks in the dev mode.
* Update tests.
* Revert "Remove buildId generation."
This reverts commit fdd36a5a0a307becdbd1d85ae3881b3a15b03d26.
* Bring back the buildId validation.
* Handle buildId validation only in production.
* Add BUILD_ID to path again.
* Remove duplicate immutable header.
* Fix tests.
* 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.
* Make sure lastAppProps always have some value.
* Revert "Make sure lastAppProps always have some value."
This reverts commit b4ae722d9c1a4460e17dbdc041b111cbd492b2aa.
* Throw an error, if we found an empty object from getInitialProps.
* Add proper tests for getInitialProps empty check.
* Use jest-cli instead of gulp plugin.
* Use jest-cli instead of gulp plugin.
* Move fixtures into the examples dir.
* Move test code of example app to the basic example.
* Add isolated tests for server/resolve
* Allow tests to use cheerio.
* Use portfinder to get a unique port.
* Move back integration tests into the example dir.
* Introduce next-test-utils.
* Remove gulp-jest
* Add coveralls support.
* Use transpiled version of code in dist.
This is to make sure same file gets covered
by both unit/isolated tests and integration tests.
* Add support for source maps.
* Use code from dist always.
* Use nyc to stop instrument.
* Add integration test suite for production usage.
* Use jest-cli.
* Add support for running e2e tests.
* Check gzipPath with fs.stat before serving
Otherwise, serve package might throw issues other than ENOENT
* Install chromedriver with npm install.
* Install chrome on travis-ci.
* Add --forceExit to Jest.
* Run tests only on Node v6.
That's because selenium-webdriver only supports
Node 6 LTS.
* Use chromedriver NPM module to install chromedriver.
* Use wd as the webdriver client.
* Run chromedriver before tests.
* Run travis for both node 4 and 6
* Remove unwanted npm install script.
* Move some common text utilities to next-test-utils
* Add lint checks and testing in npm prepublish hook.
* Use npm on travis-ci.
We are having some caching issues with yarn and chromedriver.
* Make tests work on windows.\n But chromedriver doesn't work.
* Clean up dependencies.
* Run chromedriver in background without any tools.
* Fix a typo in the code.
* Use ES6 features used in node4 inside the gulpfile.
* Add some comments.
* Add support for running in windows.
* Stop chromedriver properly on windows.
* Fix typos.
* Write BUILD_ID when building.
It's a random id (uuid.v4())
* Add buildId to the core JS files.
* Add immutable cache-control header.
Only if the buildId is matched.
* Set '-' as the dev buildId always.
* Add buildId handling for JSON pages.
* 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
* Immplement the initial singleton Router.
* Use the new SingletonRouter for HMR error handling.
* Use SingletonRouter inside the Link.
* Create an example app using the Router.
* Make the url parameter optional in Router.push and Router.replace
* Add a section about next/router in the README.
* 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.
* add detach-plugin
* detach-plugin: remove unused property
* watch-pages-plugin: replace _error.js when user defined one was added/removed
* dynamic-entry-plugin: delete cache
* fix HMR settings for _error.js
* render: pass error only on dev
* hot-reload: enable to hot-reload error page
* server: check if /_error has compilation errors
* webapck-dev-client: fix reloading /_error