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

276 commits

Author SHA1 Message Date
Tim Neutkens 1aade36f13
Exposing configuration to the server / client side (minor) (#3882)
* Add next/config

* Set config on server start / client render

* Add documentation for next/config

* Add next/config support for next export

* Fix test

* Use the correct name

* Set default to empty object on the client side

* Add config tests

* Rename config to runtimeConfig
2018-02-26 12:03:27 +01:00
Tim Neutkens 349608fe49 Do feature detection instead of disabling iframes. (#3880) 2018-02-25 19:49:38 +05:30
Tim Neutkens 5017f91d23 Allow next.config.js to export a function (#3867)
* Allow next.config.js to export a function

* Expose phases to the configuration function

* Use same value as variable name

* Add next/constants

* Add documentation for config function / phases

* Add constants.js to npm bundle
2018-02-23 19:12:06 +05:30
Tim Neutkens 50fcefdf97 Return true instead of void (#3869) 2018-02-22 22:37:40 +05:30
Arunoda Susiripala a32b22bb2d
Remove special error script handling (#3849)
* Remove special error script handling.
As a result of that, we can't detect 500 errors and buildIdMismatch via client side.

* Fix failing test cases.

* Refactor the code base.

* Remove Router.onAppUpdated
2018-02-21 23:11:25 +05:30
Olivier Tassinari 832425e67e fix w3c warnings (#3572) 2018-02-21 18:45:51 +05:30
Tim Neutkens a10324d591
Merge master into canary (#3846)
* Move security related test cases into a its own file.

* Removes the unused renderScript function

* Add a nerv example. (#3573)

* Add a nerv example.

* Fix for indentation/style

* Fix for name

* Release 5.0.0

* Add multi-zones docs. (#3688)

* with emotion example - hoist styles out of the index page component (#3821)

* Use indexOf instead of startsWith (#3758)

* Use indexOf instead of startsWith

This fixes an IE11 regression, see #3755

* Lint the code
2018-02-19 15:47:50 +01:00
Björn Tegelund de6741f886 Fix typo in withRouter (#3723) 2018-02-07 13:39:23 +05:30
Henric Malmberg b8f189f2a5 do not use window.history if inside iframe (#3437)
* do not use window.history if inside iframe

* Move security related test cases into a its own file.

* Removes the unused renderScript function

* Add a nerv example. (#3573)

* Add a nerv example.

* Fix for indentation/style

* Fix for name

* warn user about browser history if next.js used in iframe
2018-02-04 13:00:38 +01:00
Arunoda Susiripala 373661aafa Handle empty assetPrefix scenario properly. (#3667)
Also make sure to init assetPrefix in next/asset in
the context of next-export.
2018-02-03 17:12:01 +01:00
Arunoda Susiripala 60cb06c1ba Improved next/asset support (#3664)
* Allow next/asset to work properly with dynamic assetPrefix
Now we use webpack's publicPath via client side.

* Add test cases for dynamic assetPrefix and next/asset.
2018-02-02 21:09:24 +01:00
Tim Neutkens 7b2cd84fee Check if headers are sent (#3642) 2018-01-31 18:42:21 +05:30
Tim Neutkens e093441bad Universal Webpack (#3578)
* Speed up next build

* Document webpack config

* Speed up next build

* Remove comment

* Add comment

* Clean up rules

* Add comments

* Run in parallel

* Push plugins seperately

* Create a new chunk for react

* Don’t uglify react since it’s already uglified. Move react to commons in development

* Use the minified version directly

* Re-add globpattern

* Move loaders into a separate variable

* Add comment linking to Dan’s explanation

* Remove dot

* Add universal webpack

* Initial dev support

* Fix linting

* Add changes from Arunoda's work

* Made next dev works.
But super slow and no HMR support.

* Fix client side hot reload

* Server side hmr

* Only in dev

* Add on-demand-entries client + hot-middleware

* Add .babelrc support

* Speed up on demand entries by running in parallel

* Serve static generated files

* Add missing config in dev

* Add sass support

* Add support for .map

* Add cssloader config and fix .jsx support

* Rename

* use same defaults as css-loader. Fix linting

* Add NoEmitErrorsPlugin

* Add clientBootstrap

* Use webpackhotmiddleware on the multi compiler

* alpha.3

* Use babel 16.2.x

* Fix reloading after error

* Remove comment

* Release 5.0.0-univeral-alpha.1

* Remove check for React 16

* Release 5.0.0-universal-alpha.2

* React hot loader v4

* Use our static file rendering machanism to serve pages.
This should work well since the file path for a page is predictable.

* Release 5.0.0-universal-alpha.3

* Remove optional loaders

* Release 5.0.0-universal-alpha.4

* Remove clientBootstrap

* Remove renderScript

* Make sure pages bundles are served correctly

* Remove unused import

* Revert to using the same code as canary

* Fix hot loader

* Release 5.0.0-universal-alpha.5

* Check if externals dir exist before applying config

* Add typescript support

* Add support for transpiling certain packages in node_modules

Thanks to @giuseppeg’s work in https://github.com/zeit/next.js/pull/3319

* Add BABEL_DISABLE_CACHE support

* Make sourcemaps in production opt-in

* Revert "Add support for transpiling certain packages in node_modules"

This reverts commit d4b1d9babfb4b9ed4f4b12d56d52dee233e862da.

In favor of a better api around this.

* Support typescript through next.config.js

* Remove comments

* Bring back commons.js calculation

* Remove unused dependencies

* Move base.config.js to webpack.js

* Make sure to only invalidate webpackDevMiddleware one after other.

* Allow babel-loder caching by default.

* Add comment about preact support

* Bring back buildir replace

* Remove obsolete plugin

* Remove build replace, speed up build

* Resolve page entries like pages/day/index.js to pages/day.js

* Add componentDidCatch back

* Compile to bundles

* Use config.distDir everywhere

* Make sure the file is an array

* Remove console.log

* Apply optimization to uglifyjs

* Add comment pointing to source

* Create entries the same way in dev and production

* Remove unused and broken pagesGlobPattern

* day/index.js is automatically turned into day.js at build time

* Remove poweredByHeader option

* Load pages with the correct path.

* Release 5.0.0-universal-alpha.6

* Make sure react-dom/server can be overwritten by module-alias

* Only add react-hot-loader babel plugin in dev

* Release 5.0.0-universal-alpha.7

* Revert tests

* Release 5.0.0-universal-alpha.10

* Make sure next/head is working properly.

* Add wepack alias for 'next' back.

* Make sure overriding className in next/head works

* Alias react too

* Add missing r

* Fragment fallback has to wrap the children

* Use min.js

* Remove css.js

* Remove wallaby.js

* Release 5.0.0-universal-alpha.11

* Resolve relative to workdir instead of next

* Make sure we touch the right file

* Resolve next modules

* Remove dotjsx removal plugins since we use webpack on the server

* Revert "Resolve relative to workdir instead of next"

This reverts commit a13f3e4ab565df9e2c9a3dfc8eb4009c0c2e02ed.

* Externalize any locally loaded module lives outside of app dir.

* Remove server aliases

* Check node_modules reliably

* Add symlink to next for tests

* Make sure dynamic imports work locally.
This is why we need it: b545b519b2/lib/MainTemplate.js (L68)
We need to have the finally clause in the above in __webpack_require__.
webpack output option strictModuleExceptionHandling does that.

* dynmaic -> dynamic

* Remove webpack-node-externals

* Make sure dynamic imports support SSR.

* Remove css support in favor of next-css

* Make sure we load path from `/` since it’s included in the path matching

* Catch when ensurepage couldn’t be fulfilled for `.js.map`

* Register require cache flusher for both client and server

* Add comment explaining this is to facilitate hot reloading

* Only load module when needed

* Remove unused modules

* Release 5.0.0-universal-alpha.12

* Only log the `found babel` message once

* Make sure ondemand entries working correctly.
Now we are just using a single instance of OnDemandEntryHandler.

* Better sourcemaps

* Release 5.0.0-universal-alpha.13

* Lock uglify version to 1.1.6

* Release 5.0.0-universal-alpha.14

* Fix a typo.

* Introduce multi-zones support for mircofrontends

* Add section on css
2018-01-30 16:44:44 +01:00
Connor Bär 8dd8e200e0 A11y: Set focus back to body after link was clicked (#3545) 2018-01-25 15:44:57 +01:00
Tim Neutkens 963695820f Make sure pages bundles are served correctly 2018-01-13 08:34:48 +01:00
Wiktor Tkaczyński 9d059f6007 Add support for Fragments in Head (#3502)
* Add support for Fragments in Head.

* Add test cases

* Check if Component has custom key

* Upgrade to React 16.2.0
2017-12-28 07:12:27 +05:30
Maciej Kasprzyk 4a3aa261d6 fix: page-loader load script path (#3455) 2017-12-14 14:01:54 -08:00
Tim Neutkens 4be6a521ed
Make sure we show a nice message when there is no default export (#3400) 2017-12-05 15:35:30 -08:00
Roman Vanesyan 01f05d8cbc Another round of removing extra <div> (#3373) 2017-12-02 18:00:40 +01:00
Jonas Budelmann 742fa6590c Fix statically exported pages from hanging (#2930)
* fix script loading errors not reported if exported

* fix lint
2017-11-23 14:05:17 +01:00
Li Weinan 190853b4ff Support de-deduping head tags by setting key (#3170)
* Support de-deduping head tags by setting key

* move dedupe logic to `unique` function

* fix head tag deduping logic

* remove console.log

* use `toContain` assertions

* update de-duping head tags section in README
2017-10-31 22:52:51 +01:00
Olivier Tassinari 180cd9f566 react-hot-loader & warnings (#3110) 2017-10-16 21:37:07 +02:00
Jesse Ditson a79357f2a4 Allow use of filenames in exportPathMap (#2973)
* allow use of filenames in exportPathMap

* add link test and handling for file paths when flattening links for export

* add note about exporting file paths to readme.md
2017-10-05 20:33:10 +02:00
Kevin Decker c6bd6ef997 Treat navigation to empty hash as hash navigate (#2971)
# -> #foo and #foo -> # now operate in the same way.
2017-09-27 21:55:49 +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
gwn 2cfcc6bd5e Add "asPath" information to url objects (#2988) 2017-09-27 15:34:50 +02:00
Robert Sköld f9efc69137 Added <Link scroll> PropType (#3003)
This should avoid the angry console warnings when trying to override the default scroll behavior using `<Link scroll={false}>`
2017-09-27 15:31:37 +02:00
Brikou CARRE 2e09f79d4d Mark href propType as required (#2882) 2017-09-01 20:57:13 +02:00
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