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

248 commits

Author SHA1 Message Date
Brikou CARRE a779d830bd Rename withRoute to withRouter to be consistent (#2881) 2017-08-31 21:37:20 +02:00
Arunoda Susiripala 56662b4d84 Add/with router (#2870)
* Add withRoute HOC

Rebased (squashed)
- removed routerToProps
- updated hoist-non-react-statics
- improved propTypes

* Expose the whole Router instead of the route.

* Make the example simple.

* Update examples and the readme.

* Add a test case.
2017-08-30 19:37:12 +05:30
Dustin Senos 50866c234c Updated console.log wording when the PageLoader is waiting for webpack to become idle. (#2835) 2017-08-23 22:06:11 +02:00
Ian Mitchell 72edd591e6 next/dynamic Error Message Tweaks (#2798) 2017-08-17 21:41:52 +05:30
Seth Mcleod 7a5a6bcef2 Add line-height rule for error page h2 (#2761) 2017-08-12 06:40:07 +02:00
Arunoda Susiripala cc9b1d6ce0 Catch router events errors and print them. (#2663) 2017-07-27 19:20:39 +05:30
Arunoda Susiripala 2f7e459210 Make dynamic import spec compliant. (#2612)
* Make dynamic import spec compliant.
Now we simply return the whole module incl. default field
In 'next/dynamic' we pick the default field if there is.
Since modules with default is mostly used next/dynamic, for the enduser, this change has no effect.

* Rename module into m
Using module could be confusing.
2017-07-20 23:21:04 +05:30
Arunoda Susiripala 61ffc6da7f Change next/link proptypes to support the API. (#2607)
Add propTypes for replace and object support for href and as.
2017-07-20 21:54:04 +05:30
Arunoda Susiripala c97aca50e5 Show webpack errors in all pages. (#2588)
* Show webpack errors in all pages.
When there's a webpack error that means HMR failed too.
So, showing other pages won't makes sense since user
can't edit them and get changes via HMR.
That's why now we show the error on all pages.

* Remove exact propType checks from the error component.
When there's an error, something this check shows in the console.
That means it could accept more props.
Also this is not a public API. So, we don't want to do propType checks.
2017-07-18 12:30:23 +05:30
Jayden Seric 1a02b0efa4 Added missing as propType to Link. (#2579)
This was causing the error “Failed prop type: Link: unknown props found: as in Link” when used with next-routes.
2017-07-17 10:42:36 +05:30
Tim Neutkens ee29abb8d1 Add propType check with validation (#2516) 2017-07-09 18:42:20 +05:30
Victor Borges 6e7ac5f0ef fix: Forces Link to expose the href to the child using passHref property. (#2503)
* Forces Link to exposes the href to the child using passHref property.

* tests for passHref prop of the Link

* passHref property Link documentation
2017-07-09 10:39:02 +05:30
Arunoda Susiripala 783ecdefd2 Merge branch 'master' into v3-beta 2017-07-09 09:57:56 +05:30
fridays 9cc8d26a68 fix regex for pages that end with index (#2505) 2017-07-09 09:50:30 +05:30
Arunoda Susiripala 871bc4e06b Add tests for EventEmitter. (#2515) 2017-07-09 09:16:53 +05:30
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
Tim Neutkens a6e069d4f9 Add property to list of deduped tags (#2439) 2017-07-03 11:02:47 +05:30
Arunoda Susiripala 304225d9ea Optimize the bundle size of Next.js core (#2422)
* Try to the slim the webpack output.

* Remove react-hot-loader completely from production.
2017-07-01 12:54:16 +05:30
Andrei Pfeiffer 4c33c6b9fc lint: use const instead of let (#2270) 2017-06-25 12:45:45 +02:00
Arunoda Susiripala 8c6550c504 Fix a potential race condition in router when doing prefetching. (#2317) 2017-06-23 10:46:55 +05:30
Jess Telford 8017bd3774 More informative error for bad routes (#2300) 2017-06-20 21:43:38 +02:00
Arunoda Susiripala 8277d43190 Rewrite url when exporting only if there's a href. (#2316) 2017-06-20 14:07:36 +05:30
Henrik 7b8a4ea234 Create displayName util (#2286) 2017-06-19 18:33:02 +05:30
Arunoda Susiripala 9df59c1176 Dynamic component support with multiple modules (#2235)
* Layout ground works for next/async

* Implement the Dynamic Bundle feature.

* Add some test cases.

* Update README.

* Implement props aware dynamic bundle API.

* Update tests and README.

* Add a test case for React Context support.
2017-06-16 18:49:34 +05:30
Arunoda Susiripala 3898cb53b4 Make sure page-loader doesn't throw errors when registering. (#2282)
Even if it does it, we need to mark it as a page error.
2017-06-16 16:43:55 +05:30
Arunoda Susiripala a36be58124 Rewrite urls with hashes correct for static export. (#2242)
* Rewrite urls with hashes correct for static export.

* Fix some lint issues inside an example app.
2017-06-13 11:44:31 +05:30
Arunoda Susiripala 4726c4352e Scroll to the hash only if there's one after an error. (#2224) 2017-06-09 23:45:37 +02:00
Arunoda Susiripala 0d4e0e52f7 Implement the correct browser behavior for hash changes. (#2223) 2017-06-10 01:02:28 +05:30
Krisztian Puska 28b40a5d41 Update debug error colors (#2182)
* Update debug error colors

* Soften colors

* Color tweaks, use zeit red w white header
2017-06-10 00:20:58 +05:30
Guillermo Rauch 37be0ab765 filter for null *after* Children is called to make this work with some -compat pollyfills 2017-05-22 12:58:54 -07:00
Kye Hohenberger 4c52ea1f70 Add shallow support to Link (#2012) 2017-05-21 08:24:58 +05:30
Arunoda Susiripala 4d0147385c Merge v3-beta in dynamic-imports 2017-05-15 09:41:42 +05:30
Arunoda Susiripala e78c2f44dc Introduce proper url routing for next-export which supports query strings. 2017-05-14 06:10:32 +05:30
Arunoda Susiripala 90991f176c Add <page>/index.html url re-writes to next/router. 2017-05-14 05:55:57 +05:30
Arunoda Susiripala b18ecc925b Implement client side routing as they should work.
Basicaly, now client side routing as they work like
in Next.js including prefetching.
2017-05-11 08:24:27 -07:00
Arunoda Susiripala 98ed666ca6 merge master into next-export 2017-05-10 19:01:01 -07:00
Arunoda Susiripala 450277f294 Make sure next export doesn't break other modes. 2017-05-09 00:42:48 -07:00
Arunoda Susiripala 147a5ce641 Fix server rendering issue for normal apps. 2017-05-08 23:42:37 -07:00
Arunoda Susiripala 311e4ca0ee Make sure the router is aware of the nextExport
Based on the we can change the routing to do SSR always.
Also make sure pageLoader don't download the page via
client side twice.
2017-05-08 18:20:50 -07:00
Arunoda Susiripala 0edee47d07 Fix the page-loader-normalization issue on '/index' page. (#1882) 2017-05-04 13:05:47 -07:00
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 f578089d05 Fix page loader page normalization issue (#1844)
* Add integration tests for nested componentDidMount

* Fix the page loader normalization issue.

* Fix a typo in the url.
2017-05-01 16:26:18 -07:00
Arunoda Susiripala d4e047839c Make sure to run the promise logic if only called .then() 2017-04-27 17:12:20 -07:00
Arunoda Susiripala fc34484e5e Fix a typo. 2017-04-27 13:07:01 -07:00
Arunoda Susiripala 93da57e1f6 Set a proper displayName for the wrapper dynamic component. 2017-04-27 09:05:18 -07:00
Arunoda Susiripala 686dd4c4dd Merge master into dynamic-import. 2017-04-27 08:48:43 -07:00
Kuan fb0b7534d7 Update isLocal logic to enforce protocol and port (#1737) 2017-04-22 15:07:36 +02:00
Arunoda Susiripala 17329edcc9 Handle require.ensure errors well.
Introduce a new Promise library which runs on the same eventloop.
2017-04-19 23:55:06 +05:30
Arunoda Susiripala b5a03a3896 Implement ssr=false support. 2017-04-18 22:21:31 +05:30
Arunoda Susiripala f2bfcd01b0 Add an example with custom loading component. 2017-04-18 22:07:57 +05:30
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 6e0e7b4d5a Came back to the mitt() based page-loader. 2017-04-11 22:07:59 +05:30
Arunoda Susiripala 7997c1fd3c Introduce a better way to register pages. 2017-04-11 20:03:18 +05:30
Arunoda Susiripala fb2f90bec1 Get rid of mitt. 2017-04-11 15:35:29 +05:30
Arunoda Susiripala c077ebe7ba Add much better logic to normalize routes. 2017-04-11 15:12:22 +05:30
Arunoda Susiripala 6f9b51fce6 Remove pageNotFound key from the error. 2017-04-11 14:51:28 +05:30
C. T. Lin 8e6615dcf9 upgrade react to v15.5 and use prop-types instead of React.PropTypes (#1684)
* upgrade react to v15.5 and use prop-types instead of React.PropTypes

* Update package.json
2017-04-11 00:05:26 +05:30
Arunoda Susiripala 0b8a14f35c Use existing route info when Router.reload() is called. (#1654)
Earlier, it tries to get that info from the location.href.
That's incorrect.
2017-04-07 09:52:41 -07:00
Arunoda Susiripala 4f26e84ff2 Move webpack idle wait code to the page-loader.
Because that's the place to do it.
2017-04-06 12:19:00 +05:30
Arunoda Susiripala 751d2e9853 Remove lib/eval-script.js
We no longer need it.
2017-04-06 11:42:36 +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 4a069e9d93 Remove Service Worker unregister code. (#1568)
We don't need to do it now. Because, any running service workers
might have stopped by now.
2017-03-30 16:18:15 +02:00
Arunoda Susiripala d32e69eeb9 Get rid of res.clone() (#1567)
Usually res.clone() should work. But it's not working with
the laster Safari (10.1)
We need to use a method we do not clone
2017-03-30 16:09:31 +02:00
я котик пур-пур aa4105e001 Add the system-ui font family (#1555) 2017-03-29 11:55:26 -03:00
Tim Neutkens 769cb49c30 Fix serviceworker call on http (#1542) 2017-03-28 21:23:38 +02:00
Arunoda Susiripala fb1e828318 Wait until webpack updates before eval the JSON page. (#1511) 2017-03-26 13:38:55 -07:00
Arunoda Susiripala 97c472c0c8 Handle pages with no default export and show an error. (#1484)
That error is meaningful and easy to find the issue.
2017-03-23 09:40:22 +05:30
Arunoda Susiripala bc2d5f3bdb Show errored file always in the error overlay. (#1470)
This was not happening when there's module not found errors.
Now we try to do this for all the errors if possible.
2017-03-23 04:43:23 +05:30
Tim Neutkens 228bbbef74 Use jsonPageRes instead of xhr (#1424) 2017-03-15 08:07:29 +05:30
Dan Zajdband d92ab55d22 Add/link replace (#1419)
* Using developit/unfetch as the Fetch API polyfill

* Added the replace prop into the Link component

* Added integration test for replace prop on Link component
2017-03-14 18:06:34 -05:00
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
Sergio Daniel Xalambrí 38822717a9 Add support for URL objects in Link and Router (#1345)
* Add support for URL objects in Link and Router

* Fix typo in comment

* Fix possible bug if the `href` prop is `null`

* Document the usage of URL objects in Link and Router

* Update readme.md

* Parse URL to get the host & hostname in `isLocal`

This should check if the current location and the checked URL have the same `host` or `hostname`.

* Format `as` parameter from object to string if required

* Format `href` and `as` inside the construct and componentWillReceiveProps

* Use `JSON.stringify` to compare objects

* Add usage example

* chore(package): update chromedriver to version 2.28.0 (#1386)

https://greenkeeper.io/

* Refactor the codebase a bit.

* Change the example name.

* Add a few test cases.

* Add the example to the README.
2017-03-12 09:27:51 +05:30
Arunoda Susiripala 6db7101c40 Add beforeHistoryChange router event. (#1360) 2017-03-08 08:30:47 -08:00
Thomas Preusse 634a62441d send credentials when fetching new route (#1371) 2017-03-07 15:14:17 -08:00
Arunoda Susiripala 6979e35947 Add content based HASH to main.js and common.js (#1336)
* 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.
2017-03-07 10:43:56 -08:00
Arunoda Susiripala 08d9847ab7 Shallow routing changes (#1363)
* Fix a typo in a test suite.

* Add old props.url API with warn for all tags.
2017-03-06 10:14:10 -08:00
Arunoda Susiripala f8f3fa7dce Introducing Shallow Routing (#1357)
* Simplify route info handling.

* Add basic resolve=false support.

* Make sure to render getInitialProps always if it's the first render.

* Change resolve=false to shallow routing.

* Add test cases for shallow routing.

* Update README for shallow routing docs.

* Update docs.

* Update docs.

* Update docs.
2017-03-06 08:48:35 -08:00
Arana Jhonny bc47aac8f4 Fixed some problems with standard (#1331) 2017-03-02 22:46:16 +01:00
Arunoda Susiripala 46b5d6a445 Fire the route cancel event only when needed. (#1316)
Earlier we do it for every route change.
2017-02-28 19:59:19 +01: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
Arunoda Susiripala 818cd63ee9 Fire the route cancelled error right away. (#1312)
Earlier it wait until the JSON page is fetched.
But that's wrong and it affects when using libs like NProgress.
2017-02-28 09:48:40 +01:00
Tim Neutkens 01fa65d4a2 Unregister old serviceworker code (#1304)
Bring back 1b9e8771ec with a check for the prefetch serviceworker + if it is supported by the browser
2017-02-27 11:15:39 -08:00
Tim Neutkens f8f90955c5 Add prefetch to propTypes + flow typings (#1295) 2017-02-27 10:50:28 +05:30
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
Guillermo Rauch 1417f3040b ponify (#1278) 2017-02-25 19:41:17 -08:00
Guillermo Rauch e7c85e0162 Revert "Remove unfetch because of production build errors. (#1288)"
This reverts commit 756a32aefd.
2017-02-25 19:28:24 -08:00
Arunoda Susiripala 756a32aefd Remove unfetch because of production build errors. (#1288)
See https://github.com/zeit/next.js/pull/1278#issuecomment-282528628
2017-02-26 08:26:55 +05:30
Dan Zajdband 216efa526b Using developit/unfetch as the Fetch API polyfill (#1278) 2017-02-25 15:49:27 -03:00
Shawn Kelly 7d4d709587 fix: cmd+click Links (#1233)
Check currentTarget is 'A', not target. This is important when an anchor tag wraps another dom node.
2017-02-21 10:08:54 -08:00
Arunoda Susiripala 0bd250f4aa Handle BUILD_ID mismatch error (#1224)
* Reload the page if the buildIds are mismatch.

* Reload the browser with main.js and commons.js buildId mismatch.

* Implement proper reloading with an API to persist the state.

* Add some tests for force reload.

* Change _reload to _forceReload.

* Add a section about reload hooks to the README.

* Allow to add a hook to handle BUILD_ID mismatch.

* Remove readme docs.

* Do not show a custom error to the user.

* Cancel the routing when there's a BUILD_ID mismatch.

* Fix a typo.

* Passing route to SingletonRouter.onBuildIdMismatch

* Handle buildId mismatch automatically.
2017-02-20 15:48:17 -08:00
Arunoda Susiripala f4337d3072 Make sure reading the body of same JSON page request safe. (#1185)
* Make sure reading the body of same JSON page request safe.
It's not possible to read the body twice from fetch()'s response
So, we've to clone the response before doing anything.

* Fix tests.
2017-02-17 01:12:32 -03:00