1
0
Fork 0
mirror of https://github.com/terribleplan/next.js.git synced 2024-01-19 02:48:18 +00:00
Commit graph

95 commits

Author SHA1 Message Date
Kevin Decker 6e44cdef5f Expose mechanism to monitor render events (#2655)
* Allow custom clientBootstrap entrypoint

This allows for customization of the client global bootstrap.

* Expose render event emitter to client

* Include client entry point in npm package
2017-10-30 16:01:40 +01:00
Tim Neutkens a28bbb0ff9 Strip ansi codes when logging client side (#3138) 2017-10-21 12:58:59 +02:00
Kevin Decker fa18e13bf6 Move dev error view import to dev entry point (#3093)
This drops a few kb off of the production min+gz build due to the remove of the component and a ew dependencies that it references, ansi-html being the biggest.
2017-10-15 23:19:01 +02:00
Kevin Decker 8711a7d14e Fix renderPage in production mode (#3089)
The next object was not being exported in the same manner in dev vs. prod mode.
2017-10-14 19:20:49 +02:00
Arunoda Susiripala ee68d327fe Use ReactDom.hydrate just for initial renderer. (#3012)
For other case just use ReactDom.render
2017-09-28 22:36:48 +02:00
Kenny Smith d19cc975f4 React 16 (fiber) (#2996)
* Updating React to v16.0.0

* Updating error handling from ReactReconciler to componentDidCatch

* Using hydrate() instead of render() on client side.

* React 16 is not making `charSet` lowercase but that is in spec.
2017-09-27 21:09:16 +02:00
Kevin Decker 808c662e3b Tie page visibility api to on demand pinger (#2818)
Avoid making requests to the on demand reloader if the page is not visible.
2017-09-08 23:26:13 +02:00
Arunoda Susiripala 8ee024fd2d Reload the page only if the change is for the current page. (#2589)
Sometimes, we've to reload the page for some changes.
Even if so, we need to do it if that change is for the current page.
2017-07-18 13:00:25 +05:30
Paul Reichelt fc259cf985 Send credentials with on-demand-entries-ping (#2509) 2017-07-08 21:45:34 +02:00
Arunoda Susiripala 0c7089f856 Remove mitt and use an internal EventEmitter (#2477)
This fixes one of the crucial bug in Next.js
The issue happens when you try to load a page when it's
prefetching.
With mitt, it only fires the first registered event.
2017-07-06 12:19:33 +05:30
Arunoda Susiripala f3955bd9f8 Fix page auto-reload when there's a 404/500 page. (#2437) 2017-07-02 12:59:08 +05:30
Olivier Tassinari a07c7c448b Prevent flooding when an error occurs (#2351) 2017-07-02 11:59:19 +05:30
Guillermo Rauch 850a931e88 Merge branch 'master' into v3-beta 2017-06-01 18:30:57 -07:00
Arunoda Susiripala 787a110b75 Fix issue related to 404 and no default exports. (#2063)
Just after a 404 page, if we created a page with
no default exports. It'll throw an error.
And it'll crash internal webpack state.
So, once we have it we need to do a hard reload to recover it.
2017-05-25 18:29:03 +02:00
Arunoda Susiripala 4d0147385c Merge v3-beta in dynamic-imports 2017-05-15 09:41:42 +05:30
Arunoda Susiripala 24f3f143a6 Introduce "asPath" into router and getInitialProps (#1857)
* Add asPath to next/router and getInitialProps context.

* Add test cases.

* Update docs.

* Build as-path pages before they use.
2017-05-03 09:40:09 -07:00
Arunoda Susiripala 90ea471aa7 Merge master into dynamic-import. 2017-04-18 21:42:21 +05:30
Arunoda Susiripala dec85fe6c4 Add CDN support with assetPrefix (#1700)
* Introduce script tag based page loading system.

* Call ensurePage only in the dev mode.

* Implement router using the page-loader.

* Fix a typo and remove unwanted code.

* Fix some issues related to rendering.

* Fix production tests.

* Fix ondemand test cases.

* Fix unit tests.

* Get rid of eval completely.

* Remove all the inline code.

* Remove the json-pages plugin.

* Rename NEXT_PAGE_LOADER into __NEXT_PAGE_LOADER__

* Rename NEXT_LOADED_PAGES into __NEXT_LOADED_PAGES__

* Remove some unwanted code.

* Load everything async.

* Remove lib/eval-script.js
We no longer need it.

* Move webpack idle wait code to the page-loader.
Because that's the place to do it.

* Remove pageNotFound key from the error.

* Remove unused error field 'buildError'

* Add much better logic to normalize routes.

* Get rid of mitt.

* Introduce a better way to register pages.

* Came back to the mitt() based page-loader.

* Add link rel=preload support.

* Add assetPrefix support to add support for CDNs.

* Add assetPrefix support for preload links.

* Update readme.md
2017-04-17 21:18:43 -07:00
Arunoda Susiripala dfa28815a5 Add server side rendering for dynamic imports. 2017-04-18 01:45:50 +05:30
Arunoda Susiripala 7997c1fd3c Introduce a better way to register pages. 2017-04-11 20:03:18 +05:30
Arunoda Susiripala 0007cd2a97 [custom server] Handle internal routes automatically (#1658)
* Implement the initial version.

* Improve the render logic a bit.

* Move all the webpack paths under /_next/

* Keep the log:false flag.
2017-04-07 10:58:35 -07:00
Arunoda Susiripala e46edc2460 Load everything async. 2017-04-06 11:41:13 +05:30
Arunoda Susiripala 65a2603917 Rename NEXT_LOADED_PAGES into __NEXT_LOADED_PAGES__ 2017-04-06 10:58:04 +05:30
Arunoda Susiripala 32cdf3f2d0 Rename NEXT_PAGE_LOADER into __NEXT_PAGE_LOADER__ 2017-04-06 10:56:13 +05:30
Arunoda Susiripala 76bfc38a09 Remove all the inline code. 2017-04-05 17:13:34 +05:30
Arunoda Susiripala 822a99b0d5 Get rid of eval completely. 2017-04-05 12:15:39 +05:30
Arunoda Susiripala 03209d88fd Fix some issues related to rendering. 2017-04-05 02:38:38 +05:30
Arunoda Susiripala c95d2b28d0 Implement router using the page-loader. 2017-04-05 01:25:56 +05:30
Arunoda Susiripala a0945c7800 Introduce script tag based page loading system. 2017-04-03 23:40:24 +05:30
Arunoda Susiripala 5fcb49632e Introduce better debug error handling (#1592)
* 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.
2017-04-01 14:03:40 -07:00
Arunoda Susiripala 87ff667e6e Revert "Introduce better debug error handling (#1590)" (#1591)
This reverts commit 0bdd321654.
2017-04-01 13:23:09 -07:00
Arunoda Susiripala 0bdd321654 Introduce better debug error handling (#1590)
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.
2017-04-01 13:09:16 -07:00
Arunoda Susiripala 8bf376737f Remove patch-react.js (#1420)
This is a pretty complex code base and it cause
issues for some React components.
And React/fiber is coming with a proper solution.
2017-03-14 11:57:41 -07:00
Arunoda Susiripala e985e0dd48 Use mitt instead of EventEmitter for the client HMR (#1399)
error handling.
2017-03-13 10:16:32 +05:30
Arunoda Susiripala 57099a544c Use mitt instead of EventEmitter. (#1398)
EventEmitter is quite bit and mitt is a pretty good/small replacement.
2017-03-13 10:04:30 +05:30
Arunoda Susiripala bb7c8f87c6 Use a private Router event API for the ondemand-pinger. (#1397) 2017-03-12 18:06:50 -07:00
Arunoda Susiripala 1ae3c2e637 Ping to on-demand-entries on every page change. (#1384)
This will prevent disposing the page after viewing it.
Otherwise, it'll possible to dispose the page even
we load the page on the client.
2017-03-12 09:21:49 +05:30
Arunoda Susiripala 62fcb2b664 Add a global Promise polyfill. (#1344)
* Add a global Promise polyfill.
This is because Webpack2 depends on it.

* Change the polyfill location.
2017-03-04 11:48:33 -05:00
Arunoda Susiripala 96fca5e2ad Add better hash URL support. (#1250)
* Add better hash URL support.
1. Add scrolling to given id related to hash
2. Hash changes won't trigger getInitialProps

* Add some comments.

* Fix tests.

* Add some test cases.
2017-02-28 09:31:17 -08:00
Tim Neutkens b37431461d Move on-demand-entries-ping to _next namespace (#1305) 2017-02-27 12:04:01 -08:00
Arunoda Susiripala d3b1ead149 Implement "on demand entries" (#1111)
* 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.
2017-02-26 11:45:16 -08:00
Tim Neutkens 408633c1dc Remove traces of glamor (#1286)
* Remove traces of glamor

As talked about with @rauchg. Glamor takes up around 60KB of the bundle (pre-gzip). Since styled-jsx is the way to go now and we support adding glamor by the user we should remove it as dependency cause it is bundled even when not used.

Added rehydration to the example, since we did that in our code.

There is only one thing I'm not sure about and want to discuss:
what should we do with next/css. Right now I added a throw for when it is imported. I'm not sure if we should do that / some other way to notify the user it has been removed. The reasoning behind the throw is that when we would do a console.warn the user would see 'css.default.<X>' not found because we don't have the glamor dependency anymore.

* Update yarn.lock

* Remove test for styles
2017-02-26 17:58:00 +05:30
Tim Neutkens 20c7d98efe Move lastAppProps back where it should be (#1208)
* Check for lastAppProps

* Move lastAppProps back where it belongs

* Add comment
2017-02-20 05:35:48 +09:00
Arunoda Susiripala 14c86bef1d Introduce a simple prefetching solution (#957)
* Implement a very simple prefetching solution.

* Remove next-prefetcher.

* Require 'whatwg-fetch' only in the client.

* Use xhr in the code.

* Use a simple fetching solution.

* Fix 404 and xhr status issue.

* Move the prefetching implementation to next/router.

* Add deprecated warnning for next/prefetch

* Run only 2 parellel prefetching request at a time.

* Change xhr to jsonPageRes.

* Improve the prefetching logic.

* Add unit tests covering the Router.prefetch()

* Update examples to use the new syntax.

* Update docs.

* Use execOnce() to manage warn printing.

* Remove prefetcher building from the flyfile.js
Because, we no longer use it.
2017-02-15 14:22:22 +05:30
Naoyuki Kanezawa 437fb2cbd3 Copy all properties and descriptors when patching React (#1101)
* patch-react: copy non-enumerable properties and descriptors

* fix syntax error

* remove getOwnPropertyDescriptors polyfil
2017-02-15 08:30:39 +05:30
ǝlzlǝoq lǝᴉuɐp ツ e38d81e6c1 Fix patching component's render method in case its prototype is not writable (#1067) 2017-02-12 22:14:54 +05:30
Arunoda Susiripala 4534c55968 Set displayName properly when patching React locally. (#1053)
* Using styled-jsx for with-jest example.

* Set the displayName of the wraped components.
Otherwise it won't get the correct displayName if the
original component doesn't provide it by using it's function name.
2017-02-09 15:40:31 +01:00
Tim Neutkens bd83ed5c54 [WIP] Remember scroll position on error (#911)
* Remember scroll position on error

* Added comment + check if lastScroll was set

* Remove check for lastAppProps

* Use events to make scroll persistence dev-only

* Return EventEmitter from next()

* Update next-dev.js
2017-01-31 08:56:17 +05:30
Arunoda Susiripala 0d2af801ec Use service-worker to fetch only JSON pages. (#924)
* Use service-worker to fetch only JSON pages.
We simply don't need to proxy other requests through that.
That's might cause some latency issues.

* Use a better regexp to identify JSON pages.
2017-01-30 19:42:49 +09:00
Arunoda Susiripala bf467e64af Do not patch prototypes with render exposed only as a getter. (#898)
* Do not patch prototypes with render exposed only as a getter.

* Use Object.getOwnPropertyDescriptor to make things simpler.

* Get the prototype which has the render method.
2017-01-28 22:50:46 +09:00