From ba566231d607ff1e397d4a33eaeeb234c068405e Mon Sep 17 00:00:00 2001 From: Kyle Mathews Date: Tue, 14 Apr 2020 22:09:04 -0600 Subject: [PATCH] Squashed commit of the following: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit d29585b77cde186eeb3cd2a297effba34a56fa8b Author: Nat Alison <1278991+tesseralis@users.noreply.github.com> Date: Tue Apr 14 16:08:02 2020 -0700 Fix translated aria-label for expand buttons (#23113) commit 6d4c664eb5e8044a20099330d0315ea06318f7ff Author: Michelle Gienow Date: Tue Apr 14 15:56:23 2020 -0400 blog post urging Gatsby community members to meet virtually, not in p… (#23111) * blog post urging Gatsby community members to meet virtually, not in person, until pandemic ends * add bold bullet points * Add bold bullet points * chore: format Co-authored-by: gatsbybot commit 7a686ede986142518d2601350b9236704664975f Author: Vladimir Razuvaev Date: Wed Apr 15 01:28:05 2020 +0700 chore(release): Publish - gatsby-source-graphql@2.4.0 commit c7b0f703add9b676fa9cacd3f9063c9e21fea555 Author: Kamil Kisiela Date: Tue Apr 14 20:09:53 2020 +0200 chore(gatsby-source-graphql): Use GraphQL Tools again (#23103) * Use GraphQL Tools again GraphQL Tools Fork was merged into GraphQL Tools v5 * Update packages/gatsby-source-graphql/src/__tests__/gatsby-node.js Co-Authored-By: Vladimir Razuvaev Co-authored-by: Vladimir Razuvaev commit 89567674c3e91f356cbf318883a0217ae7f4c220 Author: Michael <184316+muescha@users.noreply.github.com> Date: Tue Apr 14 18:09:33 2020 +0200 fix(blog): MagMutual - brand names (#23072) * fix brand names * apply https commit c803288120a7f800083301c0ed0d0f8463bced9a Author: Michael <184316+muescha@users.noreply.github.com> Date: Tue Apr 14 17:36:53 2020 +0200 fix(docs): security in Gatsby - remove domain from internal links (#23100) * fix local links * fix remove local domain commit e9c89310106e45557682366ae9f7133a6d652a74 Author: Michael <184316+muescha@users.noreply.github.com> Date: Tue Apr 14 16:40:46 2020 +0200 fix format (#23073) commit b9e931a9f469323bb999129474d1df07983be7bf Author: Vladimir Razuvaev Date: Tue Apr 14 21:01:19 2020 +0700 chore(gatsby): Test sift filtering on date instances (skipped for now) (#23096) commit 900f31c127461d93d0025fd5972af10f74982bf1 Author: LB Date: Tue Apr 14 09:58:45 2020 -0400 Remove upcoming events (#23080) * Remove upcoming events * skip test * between the two of us we'll get this right, skip another test Co-authored-by: Laurie Barth commit 85e3580c695260c1322e03a13bf1fd8783e3806e Author: Peter van der Zee Date: Tue Apr 14 15:07:30 2020 +0200 chore(release): Publish - gatsby-theme-blog-core@1.3.22 - gatsby-theme-blog@1.4.22 - gatsby-theme-notes@1.2.21 - gatsby@2.20.20 commit d9bf48aa4beacd67a41ec255a1d96956afbc3652 Author: Mikhail Novikov Date: Tue Apr 14 15:17:07 2020 +0300 Revert "fix(gatsby): Set a timeout of 15 seconds on queries" (#23095) This reverts commit 1e81c76be653cadda933a7ed2e4ca0ca2d8742de. commit f864e88c74ecda1a2a59f308d98cf53c5421b8b9 Author: Andrew Fairlie Date: Tue Apr 14 13:09:36 2020 +0100 Add The Cares Family to Showcase (#23043) * Add The Cares Family to Showcase * Fix extra space on sites.yml * Remove incompatible categories Co-authored-by: LB commit fd57224888a9ab1e92bc0cbe786665cbf9ca6ead Author: Peter van der Zee <209817+pvdz@users.noreply.github.com> Date: Tue Apr 14 13:49:24 2020 +0200 perf(gatsby): Support `lte` for indexed fast filters (#22932) * Rename function to better fit what it returns * Use `filterCacheKey` more consistently * Consistency around `nodesPerValue` * Fix the name and typing of array of sets of nodes * Fix typing, fix perf bug The typing of the array of caches was incorrect (see previous commit too). The sort, affected in this commit, was sorting by `.length`, but the value is a `Set` so the intention was to sort by `.size` since its `.length` will always be `undefined`. This won't change semantics, just meant that the sort didn't do anything, leading to a sub-optimal performance. * Extend the `FilterCache` type to support op-specific meta data * Replace wild usage of `FilterType` * Refactor some old comments / naming to be consistent with current code / types * Suggested changes Followup commits suggested by @vladar in https://github.com/gatsbyjs/gatsby/pull/22742 * Enable `lte` for fast filters * Mandatory lint/type fix commit * And the loki commit * Enable/disable query and eleeMatch ops in one place * Fix tests, fix lte binary search lookup * Support `null` properly and handle not found binary search case The binary search should not return an arbitrary node, but rather a signal value (`undefined` in this case) that it failed somehow. It shouldn't, but who knows. The `null` case was a bit more work because it affects typign and all kinds of weird comparing edge cases. There's also a distinction between how `eq` treats `null` target values versus how `lte` treats them. So I had to encode them differently in the cache. Hence the type update. * Sigh, this is why I had to introduce that type in the first place * Forgot to remove an argument from followup work * Apply suggestions commit 65cfc811f7774e47d8e0e2b5379b939cd964d67e Author: Michael <184316+muescha@users.noreply.github.com> Date: Tue Apr 14 13:47:24 2020 +0200 fix brand names (#23075) commit 408240b0a309abe2b4f1042f4adc324f18091b5f Author: Michael <184316+muescha@users.noreply.github.com> Date: Tue Apr 14 13:46:27 2020 +0200 fix code block language (#23074) commit b8a9b607ee97f25408bb1e509bb0f410ddeec2b8 Author: LekoArts Date: Tue Apr 14 13:25:05 2020 +0200 chore(release): Publish - gatsby-plugin-fullstory@2.2.2 commit 843cf3aee014debdc7eaf59009aa75e33025befd Author: Akash Arora Date: Tue Apr 14 16:51:45 2020 +0530 fix(gatsby-plugin-fullstory): Updated to Edge URL + Add Update… (#23089) * Updated to Edge URL + Add Updated JS Code Refer to issue #23088 * update snapshots Co-authored-by: LekoArts commit d32baaea10d036c09a36f1efcbfdfd3098561723 Author: Ward Peeters Date: Tue Apr 14 08:55:10 2020 +0200 chore(release): Publish - gatsby-cli@2.11.8 - gatsby-plugin-sitemap@2.3.2 - gatsby-theme-blog-core@1.3.21 - gatsby-theme-blog@1.4.21 - gatsby-theme-notes@1.2.20 - gatsby@2.20.19 commit 64627e700bafd03c17b435784ca87425ae1455a1 Author: Tyler Barnes Date: Mon Apr 13 14:01:10 2020 -0700 chore(benchmarks): upgrade wordpress benchmark (#23065) * upgrade to latest and remove unneeded packages * bump wp source version commit 36cb89057ee774ddff103ed7967742e51ab0a9a4 Author: LB Date: Mon Apr 13 16:23:07 2020 -0400 Make a note about duplicate behavior in theme authoring (#23055) Co-authored-by: Laurie Barth commit b969dc4c93842040a9e68e05fe0f666bdb4b2751 Author: Nat Alison <1278991+tesseralis@users.noreply.github.com> Date: Mon Apr 13 13:20:07 2020 -0700 docs: Docs sync behavior (#23022) * try a few languages to check perf * Add section on the sync behavior * Update docs/contributing/translation/sync-guide.md Co-Authored-By: Aisha Blake * Update docs/contributing/translation/sync-guide.md Co-Authored-By: Aisha Blake * Update docs/contributing/translation/sync-guide.md Co-Authored-By: Aisha Blake * Update i18n.js * chore: format Co-authored-by: Aisha Blake Co-authored-by: gatsbybot commit 4983d2067473b2bbff32742095f2dba2fff9662f Author: Nat Alison <1278991+tesseralis@users.noreply.github.com> Date: Mon Apr 13 12:33:34 2020 -0700 Fix mobile nav bar text (#23069) commit 63b9dd67d421d6e64f5f74574d23d2628d0d41c9 Author: Michael <184316+muescha@users.noreply.github.com> Date: Mon Apr 13 20:56:35 2020 +0200 fix code block language (#23070) commit 0ede4c8ad14f33ffab1d4aa14c502b16eb1a6260 Author: Michael <184316+muescha@users.noreply.github.com> Date: Mon Apr 13 20:56:05 2020 +0200 fix casing in Image Captions (#23068) commit b67891a50ba37309d99c84f7cc92ead7fd56f358 Author: Michael <184316+muescha@users.noreply.github.com> Date: Mon Apr 13 20:24:22 2020 +0200 fix links (#23066) commit 13d3898a18faa43bc306a6cc0618e9e432b9a7b6 Author: Michael <184316+muescha@users.noreply.github.com> Date: Mon Apr 13 20:20:06 2020 +0200 fix brand names (#23067) commit bd5ca8e42fcfa5a6f41ecc9bbd71845076d676dd Author: João Pedro Schmitz Date: Mon Apr 13 15:03:35 2020 -0300 chore(starters): add gatsby-starter-ts (#22954) Co-authored-by: Kyle Gill commit a367a8885ff4b3c1cfa89111a3639fb107bacaaf Author: Masoud <50676388+masoudkarimif@users.noreply.github.com> Date: Mon Apr 13 12:03:01 2020 -0600 chore(sites): add whilenext.com (#22883) Co-authored-by: Kyle Gill commit 6f909b1f8b5818df4168b1628cc51cb47abd413f Author: Amadeus <38767929+Mozart409@users.noreply.github.com> Date: Mon Apr 13 20:02:14 2020 +0200 chore(starters): add gatsby-custom-tailwind (#22858) Co-authored-by: Kyle Gill commit a63b42ba8b1203a9ad8367bcc3951063b4dc402c Author: SaimirKapaj Date: Mon Apr 13 19:59:14 2020 +0200 chore(starters): add gatsby-redux-toolkit-typescript-starter (#22788) * Add starter to starter list * fixed formatting Co-authored-by: Saimir Kapaj Co-authored-by: Kyle Gill commit 41f1cc5e70ad61184a1acee2a3cbec234c486ce6 Author: Michelle Gienow Date: Mon Apr 13 12:01:11 2020 -0400 Add Virtual Gatsby Days registration blog post (#23060) * Add Virtual Gatsby Days registration blog post * Fix image path * Update index.md commit 74114a4103748b74733a900b9a9e492d9699c56b Author: Alejandro Ñáñez Ortiz Date: Mon Apr 13 10:58:32 2020 -0500 Update tailwind-css.md (#23028) CSS-in-JS section was referring to `Styled Components`, but in reality, it was using `Emotion`. I updated the documentation to reflect that. Co-authored-by: gatsbybot commit f9929bee7bb2642ebff4824aa295e3e44322bcf2 Author: Michelle Gienow Date: Mon Apr 13 11:32:22 2020 -0400 Update tagging (#23056) commit 66a1b7f443d7d2067163528693344f686ba6ed71 Author: Blaine Kasten Date: Mon Apr 13 09:11:46 2020 -0500 fix(gatsby-cli): Fix console methods incorrectly handling falsy values (#23021) * fix(gatsby-cli): Fix console.* methods incorectly handling falsy values * handle more situations commit 854241bb467d49adac8160fc594b7ff347fcf398 Author: caitlinthefirst Date: Mon Apr 13 09:51:23 2020 -0400 fix-typo commit 8d4c96dcd648772dff22f51425e59a5b30f849c7 Author: Andrew Louis Date: Mon Apr 13 09:20:16 2020 -0400 Adds duetocovid19.com to sites.yml (#23048) * Adds duetocovid19.com to sites.yml * chore: format Co-authored-by: gatsbybot commit ddde4f9848ac49822faa5b4c4223c1efe7c8a233 Author: Jeremy Le François Date: Mon Apr 13 14:01:07 2020 +0100 chore(docs): fix e-commerce showcase link (#23053) Access the page in question: https://www.gatsbyjs.org/docs/building-an-e-commerce-site/ commit 1cef9296a37ad1badfab487fc8ad60cb42138690 Author: Jongwoo Han <44025432+jongwooo@users.noreply.github.com> Date: Mon Apr 13 21:52:56 2020 +0900 chore(starters): update gatsby-starter-typescript (#23042) commit 34defce9ac13240282be95587b570826932536fe Author: Rolwin Reevan Monteiro Date: Mon Apr 13 18:15:57 2020 +0530 Update starters.yml (#22960) commit cb224bb49f4a3cffa758da62ede0f720b94af52d Author: Blaine Kasten Date: Mon Apr 13 07:17:01 2020 -0500 chore(scripts): Add conversion metrics to typecheck command (#23025) commit 21d0e5b52121b2516eb97667d185e50796ec7e7b Author: Tyler Barnes Date: Sun Apr 12 13:02:04 2020 -0700 chore(wordpress-benchmark): upgrade to latest packages and rem… (#23046) commit 8493de86e4a4dd780afc8d289eaf723c52c6de61 Author: Vladimir Razuvaev Date: Sun Apr 12 22:23:48 2020 +0700 fix(gatsby): call schema rebuild manually on __refresh (#23009) * fix(gatsby): call schema rebuild manually on __refresh * Avoid collisions between schema hot reloader and __refresh commit df870aba0888b1885309151ed473be70a1f0245f Author: Nicholas Duffy Date: Sun Apr 12 08:05:54 2020 -0600 chore(circleci): Remove benchmark configuration (#23034) commit 1e81c76be653cadda933a7ed2e4ca0ca2d8742de Author: Kyle Mathews Date: Sun Apr 12 08:03:49 2020 -0600 fix(gatsby): Set a timeout of 15 seconds on queries (#23036) Query resolvers can hang indefinitely right now which can be confusing to debug as there's no indication of what's happening. With a timeout set, eventually the hanging query will fail with an error like this which should help people figure out where to investigate commit 94267be6c11fd23db4a6a881b2964f0045d4725a Author: Peteris Bikis Date: Sat Apr 11 16:02:30 2020 +0100 fix: Ensure component order is deterministic (#22965) * Ensure component order is deterministic Ensure component order - and therefore hash - is deterministic when writing out .cache/async-requires.js * Add test for getComponents commit cff1d7f35c0cb81fa192336eee046cb83550af12 Author: Alex Moon Date: Sat Apr 11 23:01:39 2020 +0800 fix(plugin-sitemap): missing data in query results (#22843) * fix: #22703 missing data in serialize funciton * fix: revert a couple changes for url resolution to not change and get whole query * refactor: move otherData spread to top so site is overritten by propper url if needed * test: add test to confirm non standard data is passed commit eacffd99e1306603761b594329719ea2db91733d Author: Peter van der Zee Date: Sat Apr 11 14:36:40 2020 +0200 chore(release): Publish - gatsby-remark-embed-snippet@4.2.2 - gatsby-theme-blog-core@1.3.20 - gatsby-theme-blog@1.4.20 - gatsby-theme-notes@1.2.19 - gatsby@2.20.18 commit 96f8d4b28c47e6833a057e1bcce41ceb5e54ca45 Author: Peter van der Zee <209817+pvdz@users.noreply.github.com> Date: Sat Apr 11 14:33:10 2020 +0200 fix(gatsby): Use `moveSync` over `renameSync` to fix cross mount cases (#23029) commit 2fcb978c3b294660c55e912e6146b2c9e79b0e31 Author: Nat Alison <1278991+tesseralis@users.noreply.github.com> Date: Fri Apr 10 14:32:25 2020 -0700 Set the script to run at Friday 6pm PST (#23017) commit 17d7ba23c985283af35af935f7a2897678364914 Author: Nat Alison <1278991+tesseralis@users.noreply.github.com> Date: Fri Apr 10 14:17:29 2020 -0700 update time commit eb660bd3b0186839365fc4382bec564bd7d96469 Author: Nat Alison <1278991+tesseralis@users.noreply.github.com> Date: Fri Apr 10 14:10:11 2020 -0700 Add label to the sync PR even if no conflicts (#23014) commit 1cc34980a557d83db2480d635d2fbdcd89098953 Author: Nat Alison <1278991+tesseralis@users.noreply.github.com> Date: Fri Apr 10 14:06:50 2020 -0700 test run-all (#23016) commit f27bcadda1ab41ed012d1e0802217b2969fbe69f Author: Shane Thomas Date: Fri Apr 10 15:54:29 2020 -0500 docs: Update spelling error in 2020-04-05 blog post (#23015) commit 17d5f5d2bfab3a944dc0d0466140cd13eea9b12d Author: Michelle Gienow Date: Fri Apr 10 16:47:20 2020 -0400 Add blog post Agility CMS upgrades to Gatsby with author avatar (#22985) * Add blog post Agility CMS upgrades to Gatsby with author avatar * chore: format * Fix indent on Joel Varty newly added author ID * fix syntax that was making MDX choke Co-authored-by: gatsbybot Co-authored-by: Laurie Barth commit 109b905dd02c36177d537078663c5408828564e7 Author: Dan Bovey <41577056+danpoq@users.noreply.github.com> Date: Fri Apr 10 21:34:56 2020 +0100 feat(remark-embed-snippet): embed specific lines (#21907) * feat(remark-embed-snippet): embed specific lines * refactor(remark-embed-snippet): util file names * fix(remark-embed-snippet): language of snippet * feat(remark-embed-snippet): parse numeric range Co-authored-by: gatsbybot commit 0b0f5f3fb9e38d12cf45911f18b615652044d23d Author: Nat Alison <1278991+tesseralis@users.noreply.github.com> Date: Fri Apr 10 13:25:26 2020 -0700 update weekly sync script (#23008) commit 5ca794d80468c702b53eba6d071fd4755d862142 Author: Ashutosh Hathidara Date: Sat Apr 11 01:41:24 2020 +0530 Added doc for absolute import from gatsby eslint rules or other tools (#22750) * Added doc for absolute import from gatsby eslint rules or other tools * Added doc for absolute import from gatsby eslint rules or other tools * Prettier * Prettier * Added new section for importing non-webpack tools * Update docs/docs/add-custom-webpack-config.md Co-Authored-By: LB * Update docs/docs/add-custom-webpack-config.md Co-Authored-By: LB * Update docs/docs/add-custom-webpack-config.md Co-Authored-By: LB * Prettier run * Undone other changes Co-authored-by: LB commit 1bfd02291250aafb1b49ddbc04c48b312a297d3e Author: Michelle Gienow Date: Fri Apr 10 15:52:10 2020 -0400 Update index.md (#23007) commit 250611abdb9905411281d4444265b57cbd129978 Author: John Bampton Date: Sat Apr 11 05:29:44 2020 +1000 chore(docs): 🧹 Remove whitespace from Markdown link (#23001) commit 45d2a629f794f3325b4b7abf5af3b4aa1ea5d014 Author: IMRAN KHAN <30754328+strongSoda@users.noreply.github.com> Date: Sat Apr 11 00:46:16 2020 +0530 Update sites.yml (#22881) commit 3ac14e86d96190e6a28e1b2ad458bc6a1161d94a Author: Blaine Kasten Date: Fri Apr 10 12:51:09 2020 -0500 chore(release): Publish - gatsby-cli@2.11.7 - gatsby-plugin-mdx@1.1.7 - gatsby-plugin-react-helmet@3.2.2 - gatsby-theme-blog-core@1.3.19 - gatsby-theme-blog@1.4.19 - gatsby-theme-notes@1.2.18 - gatsby@2.20.17 commit be85f2e51515582cef4dd140cd263b6c61c3a7e1 Author: Blaine Kasten Date: Fri Apr 10 12:50:10 2020 -0500 fix(gatsby-cli): Address an issue that caused empty logs to print undefined (#23000) * fix(gatsby-cli): Address an issue that caused empty logs to print undefined * fix lint commit ec806717db88d22e83679221dff83e2d85f98c49 Author: Kirill Vasiltsov <38713361+jlkiri@users.noreply.github.com> Date: Fri Apr 10 21:23:09 2020 +0900 fix(gatsby-plugin-mdx): Truncate non-latin language excerpts correctly (#22638) * Truncate option for non-latin languages * Add mention of truncate to docs commit 84a37d2ce1c5043ffcd6c817cc2467ed710c5790 Author: Phumrapee Limpianchop Date: Fri Apr 10 18:47:17 2020 +0700 chore(gatsby): properly typed return types of replaceHydrateFunction (#22854) * feat: properly typed return types of replaceHydrateFunction * refactor: use renderer type in react-dom instead of manually define commit ed2762fbfb1c18c5c25b3ae386b9654a22b36a8d Author: Steven Occhipinti Date: Fri Apr 10 21:30:48 2020 +1000 fix(gatsby-plugin-react-helmet): allow the use of `react-helmet@6` (#22993) Adjusts peerDependencies constraint. No code changes needed commit 93b821342f386333ab3fbd2982e227026fa529e0 Author: Vladimir Razuvaev Date: Fri Apr 10 18:04:05 2020 +0700 chore(release): Publish - gatsby-cli@2.11.6 - gatsby-source-drupal@3.4.3 - gatsby-theme-blog-core@1.3.18 - gatsby-theme-blog@1.4.18 - gatsby-theme-notes@1.2.17 - gatsby-transformer-documentationjs@4.2.2 - gatsby@2.20.16 commit f4da7560553457ce0c23050c1a05e3a67a843544 Author: Nicholas Capo Date: Fri Apr 10 03:34:42 2020 -0500 Benchmarks tune circleci (#22872) * circleci: Set GATSBY_CPU_COUNT on benchmarks to get them to run * Without this they (e.g. MDX) fail with ENOMEM * circleci: Remove incorrect second npm install * A second npm install would invalidate the second WARM_START build numbers * benchmarks/source-wordpress: Standardize dotenv configs Co-authored-by: Peter van der Zee <209817+pvdz@users.noreply.github.com> commit 5a2c0cf110f19c00cab4a588cd8998b06fb8e957 Author: Nicholas Duffy Date: Fri Apr 10 00:59:38 2020 -0600 chore: Add benchmarks and environment variables for CMS sources (#22893) * Add Contenful and DatoCMS benchmarks * Update WordPress environment loading * Update CircleCI environment variable loading * Add WordPress benchmarks * Split set environment variables into separate command commit ccaf075ba7c454cdbf0bd131ad6b4df2fdebdbc2 Author: Kyle Mathews Date: Thu Apr 9 22:55:35 2020 -0700 Update gatsby-config.js (#22992) Add empty plugin array commit 1272037a30cb3a88cf85b64bcea7e8cd9dd4853c Author: 1natsu <1natsu172@users.noreply.github.com> Date: Fri Apr 10 13:11:06 2020 +0900 chore(gatsby): Migrate redux/actions/types and redux/actions/restricted to TypeScript (#22297) * chore: restricted.js to TypeScript * fix: require to import statement * chore: enhance payload types Co-authored-by: Blaine Kasten commit 90afde3836042d1fe42dc62a4c2a25facb651c78 Author: Nat Alison <1278991+tesseralis@users.noreply.github.com> Date: Thu Apr 9 14:51:25 2020 -0700 fix(scripts/i18n) Add better error logging + dedupe logic of sync script (#22984) * Make the sync script work better for integration * process.exit when promises error * process.exit when promises error commit 405964e8380fa6dca1bad515ead0dc7a82bc2b04 Author: Tiffany Brown Date: Thu Apr 9 14:30:15 2020 -0700 Adds NPM article. (#22942) * Adds NPM article. Update glossary.md, doc-links.yaml with links to new entry. * Update docs/docs/glossary.md Follow capitalization of "Node package manager" from npmjs.com. Co-Authored-By: Aisha Blake * Update docs/docs/glossary/npm.md Update document title to use capitalization preferred by npm, Inc. Co-Authored-By: Aisha Blake * Update docs/docs/glossary/npm.md Change capitalization of "Node Package Manager" to "Node package manager" * Update docs/docs/glossary/npm.md Update directions for installing plugins to remove the `--save` flag since npm now does this by default. Change tutorial link to be relative instead of absolute. * Update docs/docs/glossary/npm.md: Clarify global installation Remove language about Gatsby "needing" to be installed globally. Instead call it the recommended way. Explain npx a little more. Added a clarifying note about plugins, npx and npm install. * Update docs/docs/glossary.md Capitalization of npm Co-Authored-By: Aisha Blake * Update docs/docs/glossary/npm.md Use active voice re: installing Gatsby globally. Co-Authored-By: Aisha Blake * Update docs/docs/glossary/npm.md Change NPM to npm for style, consistency. Co-Authored-By: Aisha Blake Co-authored-by: Aisha Blake commit 6b8aa5a7eb49337f4604cd9ab236d4347430e698 Author: Nat Alison <1278991+tesseralis@users.noreply.github.com> Date: Thu Apr 9 13:12:04 2020 -0700 Make the sync script work better for integration (#22981) commit f1a96165abf95936c3cdce4d8fef6949f6076038 Author: Aisha Blake Date: Thu Apr 9 14:56:38 2020 -0400 Automate i18n sync (#22967) * Automate test translation PR * Fix YAML spacing commit ee97e05cb91aface398dcc3529925d84ab5bca56 Author: Rosário Pereira Fernandes Date: Thu Apr 9 20:24:02 2020 +0200 docs: update docs/docs/deploying-to-firebase.md (#22966) * docs: fill out "static folder" stub article * docs: update docs/docs/deploying-to-firebase.md * chore: format Co-authored-by: gatsbybot commit 6a4adf1cd8541e667093fb87971da411f68b8d52 Author: Danilo Bürger Date: Thu Apr 9 19:52:44 2020 +0200 chore(gatsby): Improve graphql type definitions in BuildArgs (#22544) Copied from https://github.com/gatsbyjs/gatsby/commit/5bedc01e0fce12c4d7fb3f0d7df4ab1fba058530 commit ecc1ac06ae307b4e72ce76802f9f2b17e4b17844 Author: Apoorv Vardhan Date: Thu Apr 9 23:11:51 2020 +0530 Add Dgraph GraphQL API example under third party (#22696) Added [Dgraph](https://github.com/dgraph-io/dgraph) usage example in docs/docs/third-party-graphql.md. commit f4198e2f8a05ba247310f35a249f2fe201a0afad Author: Jérémy Barbet Date: Thu Apr 9 17:18:36 2020 +0000 feat(gatsby-cli): allow --recursive git url (#22747) commit 1381a0b155b978adabcb08ccdb4266c5671458c8 Author: Jason Quense Date: Thu Apr 9 12:59:19 2020 -0400 fix: create unique Nodes (#22774) * fix: create unique Nodes this used the same parent for every doc node, leading to `id` collisions for overloads with the same path. Also `lineNumber` seems broken from documentationjs, in a few cases it confusing different nodes for each other. * fix test commit 6c336d07b4ff0d66e9a47a024a99ca0b8dbbccf0 Author: Connor Mulqueen Date: Thu Apr 9 12:19:41 2020 -0400 chore(scripts): Fix grammar in comment (#22929) commit cdbe734d52a0b09667dc4418ba4132702dddaae5 Author: Shane Thomas Date: Thu Apr 9 11:11:46 2020 -0500 fix(gatsby-source-drupal): Verify nodes exist before looping through them (#22898) * Verify nodes exist before looping through them * Update to push nodes directly inside loop Co-Authored-By: Peter van der Zee <209817+pvdz@users.noreply.github.com> Co-authored-by: Peter van der Zee <209817+pvdz@users.noreply.github.com> commit c83b85ab531f4f17aa3624a2f144e03960d2e1d4 Author: Kyle Gill Date: Thu Apr 9 10:00:58 2020 -0600 docs: update creating source plugins guide & add example repo (#22943) * add example monorepo, make initial updates for source plugin guide and move some content to the transformer guide * update sample code in guide for proactive fetching * update READMEs and remove unused files * remove more unused files * Apply suggestions from code review Co-Authored-By: LB * split terminal comments up * Apply suggestions from code review Co-Authored-By: LB * code suggestions * more review suggestions Co-authored-by: LB commit f0ec0b53580ebe16a4dce44655e5e1a86bdbd839 Author: Nat Alison <1278991+tesseralis@users.noreply.github.com> Date: Thu Apr 9 06:15:59 2020 -0700 maintenance (scripts/i18n) Create run-all i18n script (#22873) * Create run-all i18n script * error checking * add more documentation commit d6ac25508b9385a76610494c4a2bb526a9e4d802 Author: Nat Alison <1278991+tesseralis@users.noreply.github.com> Date: Thu Apr 9 06:15:35 2020 -0700 feature: (scripts/i18n) Check if an existing sync PR exists before creating a new one. (#22617) * do not create a new pull request if a label exists * Add the labels to the created PRs * remove todo * spelling error * remove debug code * aliases in getRepository for clarity * whoops commit 0c3b3d3b899699b5abda04a6746fc01e6e1943c7 Author: Obinna Ekwuno Date: Thu Apr 9 14:12:22 2020 +0100 chore(doc): Add using cloudinary plugin for images to reference guides. (#22798) * Add guide to using cloudinary plugins * chore: format * Update link to using-gatsby-image * Add guide to using cloudinary plugins * Corrected my awful mistakes 😳 and updated this doc * Remove extra Cloudinary link * Update docs/docs/using-cloudinary-image-service.md Co-Authored-By: LB * Update doc on cloudinary plugins * few fixes * Update docs/docs/using-cloudinary-image-service.md Co-Authored-By: LB * Update docs/docs/using-cloudinary-image-service.md Co-Authored-By: LB * Update docs/docs/using-cloudinary-image-service.md Co-Authored-By: LB * Update docs/docs/using-cloudinary-image-service.md Co-Authored-By: LB * Update docs/docs/using-cloudinary-image-service.md Co-Authored-By: LB * Update docs/docs/using-cloudinary-image-service.md Co-Authored-By: LB * Update docs/docs/using-cloudinary-image-service.md Co-Authored-By: LB * Update docs/docs/using-cloudinary-image-service.md Co-Authored-By: LB * Update docs/docs/using-cloudinary-image-service.md Co-Authored-By: LB * Update docs/docs/using-cloudinary-image-service.md Co-Authored-By: LB * Update docs/docs/using-cloudinary-image-service.md Co-Authored-By: LB * Update docs/docs/using-cloudinary-image-service.md Co-Authored-By: LB * Update docs/docs/using-cloudinary-image-service.md Co-Authored-By: LB * Update docs/docs/using-cloudinary-image-service.md Co-Authored-By: LB * Update docs/docs/using-cloudinary-image-service.md Co-Authored-By: LB * Update docs/docs/using-cloudinary-image-service.md Co-Authored-By: LB * Update docs/docs/using-cloudinary-image-service.md Co-Authored-By: LB * Updated Doc * chore: format * Updated doc * Update docs/docs/using-cloudinary-image-service.md Co-Authored-By: LB * Add additional information on parameters * Update docs/docs/using-cloudinary-image-service.md * chore: format Co-authored-by: gatsbybot Co-authored-by: LB commit 7f6b27fba7a4c5c47720e5900e80bee65ccd8579 Author: Nat Alison <1278991+tesseralis@users.noreply.github.com> Date: Thu Apr 9 05:41:57 2020 -0700 value to check if i18n is enabled for this build (#22956) commit 5037e9d427b585158b40b94ea5ce441bc3044928 Author: Phumrapee Limpianchop Date: Thu Apr 9 19:30:58 2020 +0700 chore(gatsby): Migrate graphql-runner into TypeScript (#22860) * feat: typed graphql-runner * fix: anything else context can also be boolean (graphql-runner.ts:L55) * refactor: format * fix: caling default export from ts * fix: defining default in test suite * cleanup PR * fix ci * fix lint again * fix ci again * update snapshot Co-authored-by: Blaine Kasten commit 246c39cf2dc419fc2bc55ff95812598d90e97789 Author: fartinmartin <30564420+fartinmartin@users.noreply.github.com> Date: Thu Apr 9 05:04:58 2020 -0700 Update programmatically-creating-pages.md (#22944) There is a slight inconsistency in the docs for the final steps of the `Make a template for your posts` section. The docs have separated this section into two steps (creating an MDX layout component + adding a GraphQL query) but when showing the completed component code (`src/components/posts-page-layout.js`) the component is missing some imports and the `` component that were present in the first step of this section. commit ddc759cde0a96b2be2f0ec8564900f64d1210c85 Author: Michelle Gienow Date: Thu Apr 9 07:35:19 2020 -0400 Add video blog post 10 for April 14th (#22946) * Add video blog post 10 for April 14th * chore: format Co-authored-by: gatsbybot commit 1872c2739cf25b968a34c28de39e6cab64196349 Author: Michelle Gienow Date: Thu Apr 9 07:34:53 2020 -0400 Add Gatsby Days LA video 11 (#22947) * Add Gatsby Days LA video 11 * chore: format Co-authored-by: gatsbybot commit 317da55266d31fb7794e453fdf37ae0578ee5da1 Author: Obinna Ekwuno Date: Thu Apr 9 12:10:11 2020 +0100 Replace "Sisphean labour" for readability reasons (#22961) While this really nice use of grammar , I feel like maybe just saying “ Feels like a task that can never be completed” in place of “ Sisyphean” would reduce the cognitive load in this part of the Doc commit 86cf9207b00c8bc53267f7c81ff7ae10e37163fb Author: Peter van der Zee <209817+pvdz@users.noreply.github.com> Date: Thu Apr 9 11:00:16 2020 +0200 fix(gatsby): Use tmp dir for tmp redux cache folder (#22959) commit a10382d022f34382cd1ba589e992782e59bd5a65 Author: Akshit Kr Nagpal Date: Thu Apr 9 14:19:42 2020 +0530 chore(gatsby): Convert redux/reducers/redirects to typescript (#22810) * Convert redux/reducer/redirects to typescript * Fix Tests * Fix Test * Fix * address PR feedback * fix issues in test Co-authored-by: Blaine Kasten commit d07c7b1b04cc8c806d7320e6df578843baa0595f Author: Blaine Kasten Date: Thu Apr 9 03:45:19 2020 -0500 chore(gatsby-cli): Migrate reporter to TypeScript (#22869) * chore(gatsby-cli): Migrate reporter to TypeScript * Complete changes from Matts review * fix tests * fix enumeration of class commit e691d769def92553332e2c0d7d8a9bb72f5c7aa7 Author: Ward Peeters Date: Thu Apr 9 10:12:40 2020 +0200 chore(release): Publish - gatsby-theme-blog-core@1.3.17 - gatsby-theme-blog@1.4.17 - gatsby-theme-notes@1.2.16 - gatsby@2.20.15 commit 7cf056ff9120cd9e07b19a2dacd8e92a2f86f286 Author: Ward Peeters Date: Thu Apr 9 10:07:37 2020 +0200 fix(gatsby): improve async commons chunking (#22879) --- .circleci/config.yml | 264 +-------- benchmarks/source-wordpress/gatsby-config.js | 2 +- benchmarks/source-wordpress/package.json | 6 +- .../index.md | 14 +- docs/blog/2020-04-02-LA-2020-Schau/index.md | 2 +- .../blog/2020-04-05-LA-2020-Gladwell/index.md | 6 +- .../index.md | 286 ++++++++++ .../post-image-1.png | Bin 0 -> 30677 bytes .../post-image-2.png | Bin 0 -> 9728 bytes .../post-image-3.png | Bin 0 -> 8931 bytes .../post-image-4.png | Bin 0 -> 15842 bytes .../post-image-5.png | Bin 0 -> 739545 bytes .../post-image-6.png | Bin 0 -> 13710 bytes .../post-image-7.png | Bin 0 -> 20830 bytes docs/blog/2020-04-14-LA-2020-Kim/index.md | 23 + .../index.md | 22 + .../virutalGatsbyDays.jpg | Bin 0 -> 84583 bytes docs/blog/2020-04-15-LA-2020-estevez/index.md | 20 + .../index.md | 35 ++ docs/blog/author.yaml | 4 + docs/blog/avatars/joel-varty.jpg | Bin 0 -> 9736 bytes docs/contributing/organize-a-gatsby-event.md | 2 +- docs/contributing/translation/sync-guide.md | 6 +- docs/docs/add-custom-webpack-config.md | 13 + docs/docs/building-an-e-commerce-site.md | 2 +- docs/docs/creating-a-source-plugin.md | 488 ++++++++++++++--- docs/docs/creating-a-transformer-plugin.md | 52 +- docs/docs/deploying-to-firebase.md | 110 ++-- docs/docs/glossary.md | 4 +- docs/docs/glossary/npm.md | 59 ++ .../mdx/programmatically-creating-pages.md | 6 +- docs/docs/security-in-gatsby.md | 55 +- docs/docs/tailwind-css.md | 4 +- docs/docs/third-party-graphql.md | 1 + docs/docs/using-cloudinary-image-service.md | 156 ++++++ docs/docs/using-gatsby-image.md | 2 +- docs/sites.yml | 43 ++ docs/starters.yml | 73 ++- docs/tutorial/building-a-theme.md | 2 + .../index.md | 28 +- examples/creating-source-plugins/README.md | 83 +++ .../creating-source-plugins/api/README.md | 3 + .../creating-source-plugins/api/package.json | 43 ++ .../creating-source-plugins/api/src/index.js | 138 +++++ .../api/src/schema.graphql | 30 + .../example-site/README.md | 3 + .../example-site/gatsby-config.js | 22 + .../example-site/package.json | 34 ++ .../example-site/src/pages/index.js | 72 +++ .../example-site/static/favicon.ico | Bin 0 -> 2813 bytes examples/creating-source-plugins/package.json | 14 + .../source-plugin/README.md | 3 + .../source-plugin/gatsby-node.js | 274 ++++++++++ .../source-plugin/index.js | 1 + .../source-plugin/package.json | 28 + package.json | 3 + packages/gatsby-cli/CHANGELOG.md | 18 + packages/gatsby-cli/package.json | 2 +- packages/gatsby-cli/src/index.ts | 2 +- packages/gatsby-cli/src/init-starter.ts | 11 +- .../src/reporter/__tests__/index.js | 2 +- .../src/reporter/__tests__/patch-console.ts | 60 ++ .../src/reporter/catch-exit-signals.ts | 42 ++ packages/gatsby-cli/src/reporter/index.js | 430 --------------- packages/gatsby-cli/src/reporter/index.ts | 11 + .../gatsby-cli/src/reporter/patch-console.ts | 24 + .../src/reporter/reporter-phantom.ts | 42 ++ .../src/reporter/reporter-progress.ts | 122 +++++ .../gatsby-cli/src/reporter/reporter-timer.ts | 88 +++ packages/gatsby-cli/src/reporter/reporter.ts | 259 +++++++++ .../gatsby-cli/src/reporter/start-logger.ts | 40 ++ packages/gatsby-cli/src/reporter/types.js | 31 -- packages/gatsby-cli/src/reporter/types.ts | 12 + packages/gatsby-plugin-fullstory/CHANGELOG.md | 6 + packages/gatsby-plugin-fullstory/package.json | 2 +- .../__snapshots__/gatsby-ssr.js.snap | 8 +- .../gatsby-plugin-fullstory/src/gatsby-ssr.js | 8 +- packages/gatsby-plugin-mdx/CHANGELOG.md | 6 + packages/gatsby-plugin-mdx/README.md | 16 + .../gatsby-plugin-mdx/gatsby/source-nodes.js | 16 +- packages/gatsby-plugin-mdx/package.json | 2 +- .../gatsby-plugin-react-helmet/CHANGELOG.md | 6 + .../gatsby-plugin-react-helmet/package.json | 4 +- packages/gatsby-plugin-sitemap/CHANGELOG.md | 6 + packages/gatsby-plugin-sitemap/package.json | 2 +- .../src/__tests__/internals.js | 11 + .../gatsby-plugin-sitemap/src/internals.js | 5 +- .../gatsby-remark-embed-snippet/CHANGELOG.md | 6 + .../gatsby-remark-embed-snippet/README.md | 46 +- .../gatsby-remark-embed-snippet/package.json | 2 +- .../src/__tests__/index.js | 50 ++ .../gatsby-remark-embed-snippet/src/index.js | 27 +- packages/gatsby-source-drupal/CHANGELOG.md | 6 + packages/gatsby-source-drupal/package.json | 2 +- packages/gatsby-source-drupal/src/utils.js | 8 +- packages/gatsby-source-graphql/CHANGELOG.md | 4 + packages/gatsby-source-graphql/package.json | 4 +- .../src/__tests__/gatsby-node.js | 2 +- .../gatsby-source-graphql/src/gatsby-node.js | 2 +- .../gatsby-source-graphql/src/transforms.js | 2 +- packages/gatsby-theme-blog-core/CHANGELOG.md | 24 + packages/gatsby-theme-blog-core/package.json | 6 +- packages/gatsby-theme-blog/CHANGELOG.md | 24 + packages/gatsby-theme-blog/package.json | 8 +- packages/gatsby-theme-notes/CHANGELOG.md | 24 + packages/gatsby-theme-notes/package.json | 6 +- .../CHANGELOG.md | 6 + .../package.json | 2 +- .../__snapshots__/gatsby-node.js.snap | 6 +- .../src/gatsby-node.js | 2 +- packages/gatsby/CHANGELOG.md | 36 ++ packages/gatsby/index.d.ts | 11 +- packages/gatsby/package.json | 4 +- ....js.snap => create-graphql-runner.js.snap} | 0 ...hql-runner.js => create-graphql-runner.js} | 8 +- .../bootstrap/__tests__/requires-writer.js | 25 + ...hql-runner.js => create-graphql-runner.ts} | 43 +- packages/gatsby/src/bootstrap/index.js | 4 +- .../gatsby/src/bootstrap/requires-writer.js | 2 + .../src/bootstrap/schema-hot-reloader.ts | 44 +- packages/gatsby/src/commands/develop.ts | 13 +- packages/gatsby/src/redux/__tests__/index.js | 2 +- packages/gatsby/src/redux/actions/internal.ts | 17 +- .../gatsby/src/redux/actions/restricted.js | 459 ---------------- .../gatsby/src/redux/actions/restricted.ts | 517 ++++++++++++++++++ packages/gatsby/src/redux/actions/types.js | 6 - packages/gatsby/src/redux/nodes.ts | 256 +++++++-- packages/gatsby/src/redux/persist.ts | 9 +- .../__tests__/{redirects.js => redirects.ts} | 15 +- packages/gatsby/src/redux/reducers/index.js | 3 +- .../gatsby/src/redux/reducers/redirects.js | 44 -- .../gatsby/src/redux/reducers/redirects.ts | 46 ++ packages/gatsby/src/redux/run-sift.js | 153 +++--- packages/gatsby/src/redux/types.ts | 93 +++- .../gatsby/src/schema/__tests__/node-model.js | 61 ++- .../gatsby/src/schema/__tests__/run-query.js | 133 ++++- packages/gatsby/src/schema/node-model.js | 4 +- packages/gatsby/src/types.ts | 2 +- packages/gatsby/src/utils/webpack.config.js | 7 +- scripts/check-ts.js | 42 +- scripts/e2e-test.sh | 2 +- scripts/i18n/README.md | 10 + scripts/i18n/package.json | 1 + scripts/i18n/run-all.js | 21 + scripts/i18n/sync.js | 118 +++- starters/hello-world/gatsby-config.js | 1 + www/gatsby-config.js | 10 +- www/gatsby-node.js | 3 +- www/src/components/I18nContext.js | 4 +- .../components/events/__tests__/event-list.js | 5 +- www/src/components/events/event-list.js | 11 +- www/src/components/navigation-mobile.js | 2 +- www/src/components/sidebar/section-title.js | 8 +- www/src/data/locales/en/messages.po | 6 +- www/src/data/locales/ja/messages.po | 6 +- www/src/data/sidebars/doc-links.yaml | 4 + www/src/utils/i18n.js | 3 + yarn.lock | 98 +++- 158 files changed, 4721 insertions(+), 1755 deletions(-) create mode 100644 docs/blog/2020-04-13-upgrading-to-jamstack-with-agility/index.md create mode 100644 docs/blog/2020-04-13-upgrading-to-jamstack-with-agility/post-image-1.png create mode 100644 docs/blog/2020-04-13-upgrading-to-jamstack-with-agility/post-image-2.png create mode 100644 docs/blog/2020-04-13-upgrading-to-jamstack-with-agility/post-image-3.png create mode 100644 docs/blog/2020-04-13-upgrading-to-jamstack-with-agility/post-image-4.png create mode 100644 docs/blog/2020-04-13-upgrading-to-jamstack-with-agility/post-image-5.png create mode 100644 docs/blog/2020-04-13-upgrading-to-jamstack-with-agility/post-image-6.png create mode 100644 docs/blog/2020-04-13-upgrading-to-jamstack-with-agility/post-image-7.png create mode 100644 docs/blog/2020-04-14-LA-2020-Kim/index.md create mode 100644 docs/blog/2020-04-14-virtual-gatsby-days-registration/index.md create mode 100644 docs/blog/2020-04-14-virtual-gatsby-days-registration/virutalGatsbyDays.jpg create mode 100644 docs/blog/2020-04-15-LA-2020-estevez/index.md create mode 100644 docs/blog/2020-04-15-get-together-by-staying-apart-for-now/index.md create mode 100644 docs/blog/avatars/joel-varty.jpg create mode 100644 docs/docs/glossary/npm.md create mode 100644 docs/docs/using-cloudinary-image-service.md create mode 100644 examples/creating-source-plugins/README.md create mode 100644 examples/creating-source-plugins/api/README.md create mode 100644 examples/creating-source-plugins/api/package.json create mode 100644 examples/creating-source-plugins/api/src/index.js create mode 100644 examples/creating-source-plugins/api/src/schema.graphql create mode 100644 examples/creating-source-plugins/example-site/README.md create mode 100644 examples/creating-source-plugins/example-site/gatsby-config.js create mode 100644 examples/creating-source-plugins/example-site/package.json create mode 100644 examples/creating-source-plugins/example-site/src/pages/index.js create mode 100644 examples/creating-source-plugins/example-site/static/favicon.ico create mode 100644 examples/creating-source-plugins/package.json create mode 100644 examples/creating-source-plugins/source-plugin/README.md create mode 100644 examples/creating-source-plugins/source-plugin/gatsby-node.js create mode 100644 examples/creating-source-plugins/source-plugin/index.js create mode 100644 examples/creating-source-plugins/source-plugin/package.json create mode 100644 packages/gatsby-cli/src/reporter/__tests__/patch-console.ts create mode 100644 packages/gatsby-cli/src/reporter/catch-exit-signals.ts delete mode 100644 packages/gatsby-cli/src/reporter/index.js create mode 100644 packages/gatsby-cli/src/reporter/index.ts create mode 100644 packages/gatsby-cli/src/reporter/patch-console.ts create mode 100644 packages/gatsby-cli/src/reporter/reporter-phantom.ts create mode 100644 packages/gatsby-cli/src/reporter/reporter-progress.ts create mode 100644 packages/gatsby-cli/src/reporter/reporter-timer.ts create mode 100644 packages/gatsby-cli/src/reporter/reporter.ts create mode 100644 packages/gatsby-cli/src/reporter/start-logger.ts delete mode 100644 packages/gatsby-cli/src/reporter/types.js create mode 100644 packages/gatsby-cli/src/reporter/types.ts rename packages/gatsby/src/bootstrap/__tests__/__snapshots__/{graphql-runner.js.snap => create-graphql-runner.js.snap} (100%) rename packages/gatsby/src/bootstrap/__tests__/{graphql-runner.js => create-graphql-runner.js} (88%) rename packages/gatsby/src/bootstrap/{graphql-runner.js => create-graphql-runner.ts} (54%) delete mode 100644 packages/gatsby/src/redux/actions/restricted.js create mode 100644 packages/gatsby/src/redux/actions/restricted.ts delete mode 100644 packages/gatsby/src/redux/actions/types.js rename packages/gatsby/src/redux/reducers/__tests__/{redirects.js => redirects.ts} (86%) delete mode 100644 packages/gatsby/src/redux/reducers/redirects.js create mode 100644 packages/gatsby/src/redux/reducers/redirects.ts create mode 100644 scripts/i18n/run-all.js diff --git a/.circleci/config.yml b/.circleci/config.yml index fedf2b4bd6090..cff7048af7b10 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -130,58 +130,6 @@ commands: - slack/status: channel: eng-react-integration-status - run-benchmark: - parameters: - working_directory: - type: string - NUM_PAGES: - type: string - BENCHMARK_CONTENT_SOURCE: - type: string - BENCHMARK_REPO_NAME: - type: string - default: gatsbyjs/gatsby - BENCHMARK_SITE_TYPE: - type: string - default: BLOG - BENCHMARK_BRANCH: - type: string - default: master - steps: - - checkout - - run: - command: npm install - working_directory: << parameters.working_directory >> - environment: - NUM_PAGES: << parameters.NUM_PAGES >> - - run: - command: npm run build - working_directory: << parameters.working_directory >> - environment: - BENCHMARK_BUILD_TYPE: COLD_START - NUM_PAGES: << parameters.NUM_PAGES >> - BENCHMARK_CONTENT_SOURCE: << parameters.BENCHMARK_CONTENT_SOURCE >> - BENCHMARK_REPO_NAME: << parameters.BENCHMARK_REPO_NAME >> - BENCHMARK_SITE_TYPE: << parameters.BENCHMARK_SITE_TYPE >> - BENCHMARK_BRANCH: << parameters.BENCHMARK_BRANCH >> - CI_NAME: circleci - - run: - command: npm install - working_directory: << parameters.working_directory >> - environment: - NUM_PAGES: << parameters.NUM_PAGES >> - - run: - command: npm run build - working_directory: << parameters.working_directory >> - environment: - BENCHMARK_BUILD_TYPE: WARM_START - NUM_PAGES: << parameters.NUM_PAGES >> - BENCHMARK_CONTENT_SOURCE: << parameters.BENCHMARK_CONTENT_SOURCE >> - BENCHMARK_REPO_NAME: << parameters.BENCHMARK_REPO_NAME >> - BENCHMARK_SITE_TYPE: << parameters.BENCHMARK_SITE_TYPE >> - BENCHMARK_BRANCH: << parameters.BENCHMARK_BRANCH >> - CI_NAME: circleci - e2e-test: parameters: skip_file_change_test: @@ -399,6 +347,19 @@ jobs: command: yarn run update-source working_directory: ~/project/scripts/i18n + sync_translation_repo: + executor: node + steps: + - checkout + - run: git config --global user.name "GatsbyJS Bot" + - run: git config --global user.email "core-team@gatsbyjs.com" + - run: + command: yarn + working_directory: ~/project/scripts/i18n + - run: + command: yarn run-all sync + working_directory: ~/project/scripts/i18n + windows_unit_tests: executor: name: win/vs2019 @@ -439,210 +400,19 @@ jobs: paths: - "*" - benchmark_markdown_id_512: - docker: - - image: "circleci/node:12" - steps: - - run-benchmark: - working_directory: benchmarks/markdown_id - NUM_PAGES: "512" - BENCHMARK_CONTENT_SOURCE: MARKDOWN - BENCHMARK_REPO_NAME: gatsbyjs/gatsby/benchmarks/markdown_id - BENCHMARK_SITE_TYPE: BLOG - - benchmark_markdown_id_4096: - docker: - - image: "circleci/node:12" - steps: - - run-benchmark: - working_directory: benchmarks/markdown_id - NUM_PAGES: "4096" - BENCHMARK_CONTENT_SOURCE: MARKDOWN - BENCHMARK_REPO_NAME: gatsbyjs/gatsby/benchmarks/markdown_id - BENCHMARK_SITE_TYPE: BLOG - - benchmark_markdown_id_8192: - docker: - - image: "circleci/node:12" - steps: - - run-benchmark: - working_directory: benchmarks/markdown_id - NUM_PAGES: "8192" - BENCHMARK_CONTENT_SOURCE: MARKDOWN - BENCHMARK_REPO_NAME: gatsbyjs/gatsby/benchmarks/markdown_id - BENCHMARK_SITE_TYPE: BLOG - - benchmark_markdown_id_32768: - docker: - - image: "circleci/node:12" - steps: - - run-benchmark: - working_directory: benchmarks/markdown_id - NUM_PAGES: "32768" - BENCHMARK_CONTENT_SOURCE: MARKDOWN - BENCHMARK_REPO_NAME: gatsbyjs/gatsby/benchmarks/markdown_id - BENCHMARK_SITE_TYPE: BLOG - - benchmark_markdown_slug_512: - docker: - - image: "circleci/node:12" - steps: - - run-benchmark: - working_directory: benchmarks/markdown_slug - NUM_PAGES: "512" - BENCHMARK_CONTENT_SOURCE: MARKDOWN - BENCHMARK_REPO_NAME: gatsbyjs/gatsby/benchmarks/markdown_slug - BENCHMARK_SITE_TYPE: BLOG - - benchmark_markdown_slug_4096: - docker: - - image: "circleci/node:12" - steps: - - run-benchmark: - working_directory: benchmarks/markdown_slug - NUM_PAGES: "4096" - BENCHMARK_CONTENT_SOURCE: MARKDOWN - BENCHMARK_REPO_NAME: gatsbyjs/gatsby/benchmarks/markdown_slug - BENCHMARK_SITE_TYPE: BLOG - - benchmark_markdown_slug_8192: - docker: - - image: "circleci/node:12" - steps: - - run-benchmark: - working_directory: benchmarks/markdown_slug - NUM_PAGES: "8192" - BENCHMARK_CONTENT_SOURCE: MARKDOWN - BENCHMARK_REPO_NAME: gatsbyjs/gatsby/benchmarks/markdown_slug - BENCHMARK_SITE_TYPE: BLOG - - benchmark_markdown_slug_32768: - docker: - - image: "circleci/node:12" - steps: - - run-benchmark: - working_directory: benchmarks/markdown_slug - NUM_PAGES: "32768" - BENCHMARK_CONTENT_SOURCE: MARKDOWN - BENCHMARK_REPO_NAME: gatsbyjs/gatsby/benchmarks/markdown_slug - BENCHMARK_SITE_TYPE: BLOG - - benchmark_markdown_table_512: - docker: - - image: "circleci/node:12" - steps: - - run-benchmark: - working_directory: benchmarks/markdown_table - NUM_PAGES: "512" - BENCHMARK_CONTENT_SOURCE: MARKDOWN - BENCHMARK_REPO_NAME: gatsbyjs/gatsby/benchmarks/markdown_table - BENCHMARK_SITE_TYPE: BLOG - - benchmark_markdown_table_4096: - docker: - - image: "circleci/node:12" - steps: - - run-benchmark: - working_directory: benchmarks/markdown_table - NUM_PAGES: "4096" - BENCHMARK_CONTENT_SOURCE: MARKDOWN - BENCHMARK_REPO_NAME: gatsbyjs/gatsby/benchmarks/markdown_table - BENCHMARK_SITE_TYPE: BLOG - - benchmark_markdown_table_8192: - docker: - - image: "circleci/node:12" - steps: - - run-benchmark: - working_directory: benchmarks/markdown_table - NUM_PAGES: "8192" - BENCHMARK_CONTENT_SOURCE: MARKDOWN - BENCHMARK_REPO_NAME: gatsbyjs/gatsby/benchmarks/markdown_table - BENCHMARK_SITE_TYPE: BLOG - - benchmark_markdown_table_32768: - docker: - - image: "circleci/node:12" - steps: - - run-benchmark: - working_directory: benchmarks/markdown_table - NUM_PAGES: "32768" - BENCHMARK_CONTENT_SOURCE: MARKDOWN - BENCHMARK_REPO_NAME: gatsbyjs/gatsby/benchmarks/markdown_table - BENCHMARK_SITE_TYPE: BLOG - - benchmark_mdx_512: - docker: - - image: "circleci/node:12" - steps: - - run-benchmark: - working_directory: benchmarks/mdx - NUM_PAGES: "512" - BENCHMARK_CONTENT_SOURCE: MDX - BENCHMARK_REPO_NAME: gatsbyjs/gatsby/benchmarks/mdx - BENCHMARK_SITE_TYPE: BLOG - - benchmark_mdx_4096: - docker: - - image: "circleci/node:12" - steps: - - run-benchmark: - working_directory: benchmarks/mdx - NUM_PAGES: "4096" - BENCHMARK_CONTENT_SOURCE: MDX - BENCHMARK_REPO_NAME: gatsbyjs/gatsby/benchmarks/mdx - BENCHMARK_SITE_TYPE: BLOG - - benchmark_mdx_8192: - docker: - - image: "circleci/node:12" - steps: - - run-benchmark: - working_directory: benchmarks/mdx - NUM_PAGES: "8192" - BENCHMARK_CONTENT_SOURCE: MDX - BENCHMARK_REPO_NAME: gatsbyjs/gatsby/benchmarks/mdx - BENCHMARK_SITE_TYPE: BLOG - - benchmark_mdx_32768: - docker: - - image: "circleci/node:12" - steps: - - run-benchmark: - working_directory: benchmarks/mdx - NUM_PAGES: "32768" - BENCHMARK_CONTENT_SOURCE: MDX - BENCHMARK_REPO_NAME: gatsbyjs/gatsby/benchmarks/mdx - BENCHMARK_SITE_TYPE: BLOG - workflows: version: 2 - benchmark: - jobs: - - benchmark_markdown_id_512 - - benchmark_markdown_id_4096 - - benchmark_markdown_id_8192 - - benchmark_markdown_id_32768 - - benchmark_markdown_slug_512 - - benchmark_markdown_slug_4096 - - benchmark_markdown_slug_8192 - - benchmark_markdown_slug_32768 - - benchmark_markdown_table_512 - - benchmark_markdown_table_4096 - - benchmark_markdown_table_8192 - - benchmark_markdown_table_32768 - - benchmark_mdx_512 - - benchmark_mdx_4096 - - benchmark_mdx_8192 - - benchmark_mdx_32768 + weekly-i18n-sync: triggers: - schedule: - cron: 22 16 * * * + cron: "0 1 * * 6" filters: branches: only: - master + jobs: + - sync_translation_repo nightly-react-next: triggers: diff --git a/benchmarks/source-wordpress/gatsby-config.js b/benchmarks/source-wordpress/gatsby-config.js index 525ca36d03827..18756833d2749 100644 --- a/benchmarks/source-wordpress/gatsby-config.js +++ b/benchmarks/source-wordpress/gatsby-config.js @@ -1,5 +1,5 @@ require("dotenv").config({ - path: `.env`, + path: `.env.${process.env.NODE_ENV}`, }) module.exports = { diff --git a/benchmarks/source-wordpress/package.json b/benchmarks/source-wordpress/package.json index 6a539b989e503..b47a5b6fb5fe0 100644 --- a/benchmarks/source-wordpress/package.json +++ b/benchmarks/source-wordpress/package.json @@ -12,18 +12,14 @@ "serve": "gatsby serve", "start": "npm run develop" }, - "resolutions": { - "sharp": "0.25.1" - }, "dependencies": { "dotenv": "^8.2.0", "gatsby": "^2.19.35", "gatsby-image": "^2.2.40", "gatsby-plugin-sharp": "^2.4.5", "gatsby-source-filesystem": "^2.1.48", - "gatsby-source-wordpress-experimental": "^0.0.15", + "gatsby-source-wordpress-experimental": "^0.0.31", "gatsby-transformer-sharp": "^2.3.14", - "lodash.kebabcase": "^4.1.1", "react": "^16.12.0", "react-dom": "^16.12.0" }, diff --git a/docs/blog/2020-03-30-Fast-Secure-Flexible-MagMutual/index.md b/docs/blog/2020-03-30-Fast-Secure-Flexible-MagMutual/index.md index fc003743074e7..1faa18e14a31d 100644 --- a/docs/blog/2020-03-30-Fast-Secure-Flexible-MagMutual/index.md +++ b/docs/blog/2020-03-30-Fast-Secure-Flexible-MagMutual/index.md @@ -9,11 +9,11 @@ tags: - netlify --- -MagMutual, a leading professional healthcare liability insurer, needed to redesign and re-platform the company’s [MagMutual.com](http://www.magmutual.com) website to further its core mission: to serve and protect policyholders. +MagMutual, a leading professional healthcare liability insurer, needed to redesign and re-platform the company’s [MagMutual.com](https://www.magmutual.com) website to further its core mission: to serve and protect policyholders. ![Overview of the new MagMutal website UI](./MagMutual_design_sm.png) -To achieve the company's vision for their new site, MagMutual collaborated with [Mediacurrent](https://www.mediacurrent.com/), the Atlanta-based open source development and digital marketing agency. The new magmutual.com united Drupal and Gatsby to form a fully open source, enterprise-grade system that empowers MagMutual’s web team to closely yet easily manage content and customer experience. +To achieve the company's vision for their new site, MagMutual collaborated with [Mediacurrent](https://www.mediacurrent.com/), the Atlanta-based open source development and digital marketing agency. The new MagMutual.com united Drupal and Gatsby to form a fully open source, enterprise-grade system that empowers MagMutual’s web team to closely yet easily manage content and customer experience. ## The Challenge @@ -23,7 +23,7 @@ For MagMutual, the best path forward was an enterprise-grade CMS built on an ope ## The Solution -A fully decoupled Drupal 8 system powered by the Gatsbyjs platform lifted the burden from MagMutual’s technology team and put content authors in the driver’s seat. The Drupal 8 backend provides a powerful capacity for content modeling. Gatsby, the presentation layer, adds a robust dimension of UI flexibility and performance. +A fully decoupled Drupal 8 system powered by the Gatsby platform lifted the burden from MagMutual’s technology team and put content authors in the driver’s seat. The Drupal 8 backend provides a powerful capacity for content modeling. Gatsby, the presentation layer, adds a robust dimension of UI flexibility and performance. ![Mission statement page on MagMutual.com](./MagMutual_mission.png) @@ -73,9 +73,9 @@ From a security perspective, he continued, Drupal gave MagMutual a highly secure ### _Why Apollo GraphQL Server?_ -Central data source: Creates a single data source for your website, aggregating data from multiple data sources. -Data integrity: Apollo removes the need to sync data from different sources so it can be displayed on the website. Data is queried and retrieved in real-time using a simple API. -Developer velocity: Self-documented API for developers increases efficiency. +- **Central data source:** Creates a single data source for your website, aggregating data from multiple data sources. +- **Data integrity:** Apollo removes the need to sync data from different sources so it can be displayed on the website. Data is queried and retrieved in real-time using a simple API. +- **Developer velocity:** Self-documented API for developers increases efficiency. ### _Why Netlify?_ @@ -98,5 +98,5 @@ MagMutual serves the intersection of two rapidly evolving industries: insurance ## Resources - See the [complete case study for MagMutual.com](https://www.mediacurrent.com/work/case-study/magmutual-drupal-8-gatsby). -- Learn more about some of the development tools used for this project in our webinar, [Rain + GatsbyJS: Fast-Tracking to Drupal 8](https://www.mediacurrent.com/videos/webinar-recording-rain-gatsbyjs-fast-tracking-drupal-8). +- Learn more about some of the development tools used for this project in our webinar, [Rain + Gatsby: Fast-Tracking to Drupal 8](https://www.mediacurrent.com/videos/webinar-recording-rain-gatsbyjs-fast-tracking-drupal-8). - Planning for a decoupled Drupal/Gatsby project and not sure where to start? [Mediacurrent can help](https://www.mediacurrent.com/contact-us). diff --git a/docs/blog/2020-04-02-LA-2020-Schau/index.md b/docs/blog/2020-04-02-LA-2020-Schau/index.md index f4b39d0e23c30..71b1a2dc2c807 100644 --- a/docs/blog/2020-04-02-LA-2020-Schau/index.md +++ b/docs/blog/2020-04-02-LA-2020-Schau/index.md @@ -14,7 +14,7 @@ tags: _Welcome to the Gatsby Days 2020 Video Blog: Los Angeles Edition. In this series of eleven videos, you can catch up with all the wit and wisdom shared at the presentations from our February community gathering in LA. If you weren’t able to make it in person, these videos are the next best thing to owning a time machine! (Though owning a time machine would be super cool for sure, joining us at our next Gatsby Days—currently scheduled as a virtual event June 2nd-3rd—would be pretty awesome, too 💜. Follow [Gatsby on Twitter](https://twitter.com/gatsbyjs) to keep up with when registration starts, speaker announcements and other developments)._ -Dustin Shau, Gatsby's Head of Product, is a dedicated open source developer. He was first drawn to the framework by Gatsby’s exceptional performance and outstanding developer experience. Now a Gatsby team member, Dustin is focused on making Gatsby the fastest, most inclusive platform for building websites and web applications. +Dustin Schau, Gatsby's Head of Product, is a dedicated open source developer. He was first drawn to the framework by Gatsby’s exceptional performance and outstanding developer experience. Now a Gatsby team member, Dustin is focused on making Gatsby the fastest, most inclusive platform for building websites and web applications. Watch Dustin demonstrate the impressive build-time performance of Gatsby and Gatsby Cloud by walking through typical developer workflows, including updating a website using Contentful's headless CMS and then rapidly deploying the results through a content delivery network (CDN). And discover how Gatsby enables developers to quickly incorporate accessibility capabilities—such as a SkipNav function—to deliver inclusive web experiences to the widest possible audience. diff --git a/docs/blog/2020-04-05-LA-2020-Gladwell/index.md b/docs/blog/2020-04-05-LA-2020-Gladwell/index.md index ba538952dbb00..667ffa074c8b1 100644 --- a/docs/blog/2020-04-05-LA-2020-Gladwell/index.md +++ b/docs/blog/2020-04-05-LA-2020-Gladwell/index.md @@ -2,7 +2,7 @@ title: "Gatsby Days LA 2020 Video 3: Slash Build Times with Gatsby Builds Best Practices" date: 2020-04-05 author: Greg Thomas -excerpt: "React developer Grant Gladwell tells how he identified best practices for using Gatsby Builds to cut build time for image-heavy websites by a factor of five." +excerpt: "React developer Grant Glidewell tells how he identified best practices for using Gatsby Builds to cut build time for image-heavy websites by a factor of five." tags: - gatsby-days - community @@ -13,8 +13,8 @@ tags: _Welcome to the Gatsby Days 2020 Video Blog: Los Angeles Edition. In this series of eleven videos, you can catch up with all the wit and wisdom shared at the presentations from our February community gathering in LA. If you weren’t able to make it in person, these videos are the next best thing to owning a time machine! (Though owning a time machine would be super cool for sure, joining us at our next Gatsby Days—currently scheduled as a virtual event June 2nd-3rd—would be pretty awesome, too 💜. Follow [Gatsby on Twitter](https://twitter.com/gatsbyjs) to keep up with when registration starts, speaker announcements and other developments)._ -Grant Gladwell is a React developer dedicated to employing modern technologies in cutting-edge projects. During his time at the digital experience agency Third and Grove, Grant was part of the team that integrated Drupal and Gatsby to create the agency’s fast, yet content-rich website. He also helped build Gatsby Preview + Drupal—a live preview module for Drupal that can be used with Gatsby Cloud. +Grant Glidewell is a React developer dedicated to employing modern technologies in cutting-edge projects. During his time at the digital experience agency Third and Grove, Grant was part of the team that integrated Drupal and Gatsby to create the agency’s fast, yet content-rich website. He also helped build Gatsby Preview + Drupal—a live preview module for Drupal that can be used with Gatsby Cloud. At Gatsby Days LA 2020, Grant focused on performance. After analyzing top Gatsby-based sites, he and his team identified best practices that can help developers achieve blazing fast speeds. Check out this video of Grant’s presentation to discover how Gatsby Builds helped Third and Grove reduce build times for its image-heavy site from about 40 minutes to only 8. And learn how Gatsby’s lazy load components can deliver impressive performance benefits without excessive coding. -[![Gatsby Days LA Video 3: What separates the fastest Gatsby sites from everybody else with Grant Gladwell](https://res.cloudinary.com/marcomontalbano/image/upload/v1585858632/video_to_markdown/images/youtube--xMorT50I0cw-c05b58ac6eb4c4700831b2b3070cd403.jpg)](https://www.youtube.com/watch?v=xMorT50I0cw "Gatsby Days LA Video 3: What separates the fastest Gatsby sites from everybody else with Grant Gladwell") +[![Gatsby Days LA Video 3: What separates the fastest Gatsby sites from everybody else with Grant Glidewell](https://res.cloudinary.com/marcomontalbano/image/upload/v1585858632/video_to_markdown/images/youtube--xMorT50I0cw-c05b58ac6eb4c4700831b2b3070cd403.jpg)](https://www.youtube.com/watch?v=xMorT50I0cw "Gatsby Days LA Video 3: What separates the fastest Gatsby sites from everybody else with Grant Glidewell") diff --git a/docs/blog/2020-04-13-upgrading-to-jamstack-with-agility/index.md b/docs/blog/2020-04-13-upgrading-to-jamstack-with-agility/index.md new file mode 100644 index 0000000000000..faeadf524cef6 --- /dev/null +++ b/docs/blog/2020-04-13-upgrading-to-jamstack-with-agility/index.md @@ -0,0 +1,286 @@ +--- +title: "Rebuilding the Agility CMS Website with Gatsby (one page at a time)" +date: 2020-04-13 +author: Joel Varty +excerpt: "When the Agility CMS team asked Joel Varty, the company's president, for a home page upgrade that could handle not only content but new integrations with mar-tech apps, he jumped at the chance to build it on Gatsby using JAMstack architecture." +tags: + - netlify + - headless-cms + - jamstack +--- + +I've been preaching about JAMStack for a while now, and lately I've been talking a lot about how you can [move your website to JAMStack without rebuilding everything](https://agilitycms.com/resources/posts/migrate-to-jamstack-now-no-excuses). + +I decided it was time to take my own advice and upgrade my company's website, [agilitycms.com](https://agilitycms.com), starting with the home page, and adding pages and sections over time. Agility CMS is a headless content management system running in the cloud (Microsoft Azure). The current website is built on ASP.Net Core. Our marketing team came to me with a request to build a brand new home page which included not only updating content, but a brand new design, new modules, and new integrations with mar-tech. + +This was just the opportunity I’d been looking for: A chance to practice what I've been preaching! What's also great is the current .net website is already built using a headless CMS, so I don't have to rewrite or migrate any content. + +## Goals + +- Build the new home page using [Gatsby](https://www.gatsbyjs.org/) +- Re-use much of the existing site content from [our headless cms](https://agilitycms.com/) +- Zero downtime + +## tl;dr + +For those of you who just want to see the code for the new site (it only has code for the modules that are on the homepage right now, but it will expand over time), it's all here on GitHub: https://github.com/agility/agility-website-gatsby. + +## Steps + +Here's what I did to get everything up and running, right from coding the new site, to deploying, testing and flipping over the DNS. + +Get it running locally with Gatsby +Implement the Header and Footer +Create a new Home Page +Run it in Gatsby Cloud +Deploy to Netlify +Setup the CDN to do the Edge Routing + +What's really cool is that this workflow isn't just for upgrading Agility websites to JAMstack - you can use it for any website! Now let’s break each step into specific details. + +## Step 1: Get it running locally with Gatsby + +It's really easy to get started creating a Gatsby website with Agility CMS. Just clone the [starter repo from github](https://github.com/agility/agility-gatsby-starter), open up the folder in [VS Code](https://code.visualstudio.com/) and pop in your API Keys. + +```shell +git clone https://github.com/agility/agility-gatsby-starter.git +``` + +Now, find your API keys on the Getting Started page of the [Agility CMS Content Manager](https://manager.agilitycms.com/) + +![Agility CMS Getting Started landing page](post-image-1.png "Agility CMS Screenshot") + +Put your keys into the **.env.development** and **.env.production** files. They look something like this and have instructions about which values go where. + +```text +# Your Instance Id +AGILITY_GUID= + +# Your Preview API Key (recommended) - you can get this from the Getting Started Page in Agility CMS +AGILITY_API_KEY= + +# If using your Preview API Key, set this to true +AGILITY_API_ISPREVIEW=true + +# If you want to enable /__refresh endpoint +ENABLE_GATSBY_REFRESH_ENDPOINT=true +``` + +Now, check out the **gatsby.config** file - it has a section for plugins, and the Agility CMS source plugin is called **@agility/gatsby-source-agilitycms**. Check that the language code and channel name matches what you have in your Agility CMS instance. + +### Modules and Page Templates + +Since this was an existing website, we already had a few Page Templates and Module Definitions set up in the instance. We need to make sure we at least have placeholders in our new Gatsby project for those, and we'll just implement whatever is needed for our new home page. + +![Project Folder Structure](post-image-2.png "Project Folder Structure") + +There are folders for Page Templates and Modules, and you can just put in placeholder React code for these right now. + +Here's an example Page Template component with a single content zone called "Main": + +```jsx +import React from "react" +import ContentZone from "../agility/components/ContentZone" + +const MainTemplate = props => { + return ( +
+ +
+ ) +} +export default MainTemplate +``` + +Here's an example Module component that doesn't do anything except output its name. + +```jsx +import React from "react" + +const LatestResources = ({ item }) => { + return
LatestResources
+} + +export default LatestResources +``` + +When I got all those things in place, I started up Gatsby to see what would happen. + +```shell +gatsby develop +``` + +Gatsby will pull down all the content for our website and put it into GraphQL. This is a _content sync_, so from now on it will only pull down a delta (what's changed) from Agility CMS. +![Alt Text](post-image-3.png "Agility CMS - Gatsby - Terminal Output") + +## Step 2: Implement the Header and Footer + +We need to make our new website look just like the old one, so we need to match the colors, fonts, and other visual styles as much as we can. You may want to pull in the CSS from your old site—or start from scratch if you want to make a clean break. + +Either way, this is a great time to familiarize yourself with the GraphQL data in your website. Point your browser to [http://localhost:8000/\_\_\_graphql](http://localhost:8000/___graphql) to start exploring your data, and you can build the query access and Shared Content or Sitemap data. You can see that all content is available, grouped by content definition name. + +Here's the query that I used to grab a Global Header shared content item, as well as the nested sitemap as JSON. + +```graphql +query GlobalHeaderQuery { + agilityGlobalHeader(properties: { referenceName: { eq: "globalheader" } }) { + customFields { + marketingBanner + logo { + url + label + } + } + preHeaderLinks { + customFields { + title + uRL { + href + target + text + } + } + } + } + agilitynestedsitemap { + internal { + content + } + } +} +``` + +Your query will look different, of course, but I hope you get the idea of how to query your Agility CMS content. + +Now, you can create a component that uses a `` to pull in the data and make it available. Check out the example `GlobalHeader.js` component in your project for an example of that. + +## Step 3: Create a new Home Page + +In Agility CMS, the first page in your sitemap is considered your Home Page. So, I created a new home page and temporarily called it home-2. I didn't publish it, but this meant that I could use this to build out the modules on the new home page. + +![Agility CMS Screenshot - temporary home page](post-image-4.png "Agility CMS Screenshot - Home Page") + +I created a couple of new Module Definitions that I needed for the new page design, so I created new react components in the **modules** folder for those. The amazing thing about the Agility CMS Gatsby implementation is that nearly all the data that you need to render a module on a page is given to you in a property called **item**. + +What I normally do is just `console.log("ModuleName", item)` so I can see exactly what that data looks like. Then run the site locally in your browser http://localhost:8000 and open up your Developer Tools to see what it looks like in the console. + +### Hot Reloading - Code and Content + +One of the best things about React development with Gatsby is that everything can be hot reloaded, including the content! + +If you leave your browser open beside your code, you can just make changes and see them. Additionally, if you open a second terminal window, you can also pull down any changes that you make to the content in Agility CMS without having to run `gatsby develop` again. + +```shell +curl -X POST http://localhost:8000/__refresh +``` + +Here's a side-by-side screenshot of my 2 monitor setup. You can see that I have 2 terminal windows opened in VS Code. + +![two screens side by side showing hot reloading website and the Gatsby code for it](post-image-5.png "Side-by-side Hot Module Reload") + +I really love this workflow! It makes it really easy to tweak things and see the changes instantly. + +## Step 4: Run it in Gatsby Cloud + +To get going, [Gatsby Cloud](https://www.gatsbyjs.com/) is the easiest way to Preview and Build Gatsby sites. The free version is enough to get you started. + +Push your code to a GitHub repo, sign up for Gatsby Cloud, and create a new site. When asked, simply choose "I already have a Gatsby site" and don't add any integrations just now. + +![landing page for Gatsby Cloud Create New Site](post-image-6.png "Gatsby Cloud - Create New Site") + +You can securely add your API Keys in the Environment Variable section of Settings. + +![Gatsby webpage for setting environment variables](post-image-7.png "Gatsby Cloud - Environment Variables") + +Now you can take the Preview link from Gatsby and plug that into Agility CMS in the Domain Configuration area of the Settings section. + +Additionally, Gatsby gives you webhook URLs for Preview and Build. You can go ahead and plug these into the Webhook area in Agility Settings. + +## Step 5: Deploy to Netlify + +Netlify is a really great service to easily host static websites. Even better, it integrates seamlessly so that Gatsby can automatically deploy your website to Netlify when it builds! + +Go ahead and create a free Netlify account and point to it under the Gatsby **Hosting Integrations** settings section. + +Since Gatsby is going to be building the LIVE version of our site, we need to publish our new Homepage in Agility. If you've reviewed everything in Preview and you're ready to go, the first thing you need to do is to disable the Syncing Web Servers for the existing website in Agility CMS. You'll have to coordinate this with your content team, of course. + +When I was testing all this out, I actually built my new site using the Preview API Keys temporarily. That way I could verify everything was working first. + +In the end, you're going to end up with a URL to your new home page in Netlify. + +## Step 6: Setup the CDN to do the Edge Routing + +We can use Edge computing to decide whether to route to the new website or the old one, depending on the page. + +In this example, I decided to use a [Stackpath](https://www.stackpath.com/) Script to do this for us. + +You set up a Stackpath site just like normal, but pointing to your OLD website's unique hostname. It can't be your public DNS name - you need to have another unique way to address that site. For example, since our website is hosted in an Azure App Service, we get an azurewebsites.net URL. + +Now you create a Script in Stackpath to do the routing. In our case, we ONLY want to route requests to the home page, plus any Gatsby-specific stuff, to our new website. + +You can also see that I'm only allowing for 60 seconds on caching in the CDN for all requests. This is because we don't have anything built into this workflow to clear the cache in this CDN, and I don't want my content team to have to wait too long to see their changes. I'll take care of that later. + +```javascript +// sample script +addEventListener("fetch", event => { + event.respondWith(handleRequest(event.request)) +}) + +/** + * Fetch and return the request body + * @param {Request} request + */ +async function handleRequest(request) { + // Wrap your script in a try/catch and return the error stack to view error information + try { + /* The request can be modified here before sending it with fetch */ + + const originalUrl = request.url + const url = new URL(request.url) + // we need get the url in order to figure out where to route them + let path = url.pathname + + //secondary domain... + const secDomain = "https://my-new-website.netlify.com" + + if ( + path == "/" || //redirect the home page... + path.indexOf("/webpack") != -1 || + path.indexOf("/common") != -1 || + path.indexOf("/component") != -1 || + path.indexOf("/page-data") != -1 || + path.indexOf("/styles") != -1 || + path.indexOf("/app-") != -1 + ) { + // we need get the url in order to figure out where to route them + request.url = secDomain + path + } + + const response = await fetch(request) + + response.headers.set("Cache-Control", "public, max-age=60") + + return response + } catch (e) { + return new Response(e.stack || e, { status: 500 }) + } +} +``` + +You can now test this whole thing with the unique Stackpath URL that you get (123xyz.stackpathcdn.com). + +Once you are happy with everything, you simply switch your DNS to point to Stackpath. + +That's it—you’re finished! + +If you have any questions about JAMstack or migrating to this technology, reach out! + +## Next Steps + +I encourage you to go ahead and use this technique as the starting point for one of the pages on your own website! You can use [Agility CMS for free](https://agilitycms.com/v3-free-signup-developers?source=devto) to do it. + +## BONUS CONTENT! + +As a companion to this article, I recorded a video that walks you through the steps I took and the different tools involved. I also highlight some of the really neat features of Agility CMS, Gatsby, Netlify, and Stackpath. + +[![Migrating a website to JAMstack with Gatsby](https://res.cloudinary.com/marcomontalbano/image/upload/v1586464859/video_to_markdown/images/youtube--WSIzYKDgJuE-c05b58ac6eb4c4700831b2b3070cd403.jpg)](https://www.youtube.com/embed/WSIzYKDgJuE "Migrating a website to JAMstack with Gatsby") diff --git a/docs/blog/2020-04-13-upgrading-to-jamstack-with-agility/post-image-1.png b/docs/blog/2020-04-13-upgrading-to-jamstack-with-agility/post-image-1.png new file mode 100644 index 0000000000000000000000000000000000000000..d2fb5577091c08f8e3dee97ab7faa551ba80660f GIT binary patch literal 30677 zcmZU)1ymbd)HWJ|yL*u0UaSz@-L1G3iWLj)5TIBoPH`z-pjffs!3z{G9w1n;0tHGb ze(C#t_rL33cV?Zna?U)@v-ix|v*%>5nRs1o6?_~T8~^}-ucoS~4*;M-005vJ7V6VT z5DMyR000F`SJP0*8c<;kDBaoFc>%~eIXPiwW}%^>d3=0aTwL7P*x1|KvjBWNKRY)9 zd@ul{{JH#dcYAku@Y58K=ZIgEo}Rw7wPgh;bEj=wSy>Sl5}ulx{PgM5*RNl7&|+)D z=N1+gnzBdzIa?zo+t%0DOCgh`rKN4jOMQKPS(aZFaXdRaJKwAK&&|zgXlV3z4>dP8 z%gV?MR&2a{`I3j5%f`mKuCC68A;o|kn(#hhrhPxkvMo9~+R4e$TPi<1JRCWF;_mLA zot<4+Sm5L1!$?ne+e04|7+4lEpvO?jM9cYtL~p!j`QfPb;dJN>4cFC(dZGMTRTM)I zKI!^&)wP!K{qXo*#pk8Pc@{VS0|3A;PEAqHFkt0p{=G+D2hE5-GoG+Qq~;Dz18Wl5 zGYzad;u!3L*I03R7pooGtJjZ@8MjnUnLTA{ixtOWXQI@c9x){0cU^(^a9>u|^2J$9 z^!&70j%PhlumDRW%vSe6GVu1HWzqjE7k*ab;*&(Us-;!M)PTB5cvA&Z1gdTEtbAEnfbKRMGA49O4%pkKfQiFntadLhR z(gNw-->rQO%;THB_;Z!qYmEVus>+gpV>94^i1xUV8I!1Bz1I?O6fc=80Q&fy9n@`CXo+)WG28M zHe#FB89gwV2>iWi!JtjXLw_m2-?44MGhRev&BJ5aY$jzgQ8h_@R`i$+Q>saaR)hMo`mArvoTn{gP#P)~A&_$F|P0U^{XB z;i~z-o#4A3_RKcaJWx4>Dt-3=!zR@Oc0!oRou!t}FgaC}1`d4=xgmyM`^u;y72ucD z>D(;$WA}lieYUf-oP+JquhV+~P{4+epre>%=SW&<22Imf>%{S#OMFz{QM80?$;@cy5dz3!70{b0yLrLG3^AM(`vY z3S6$(BiM2&mnmC~S3)JunPg7b0jjMqvDx}|cZjkXfx6c_r%3AKbt5ZZ4sR^Y9 zFA9R+{kGLK00#1JaVp)?{I+Jl*iJ@J?a~-OKeF@5&=J)G=`;9Fl z=tAUUg(6eDu;yn*woKHQ<9X&R`^T1W2uC8V)~9VP6qq76Hwm;IPuL08f|^V;VX7M> zV4Yb=KF!$p(YJ(}CjYeygg6?(i$n_`7fG@S4I2aV)qL5;+0X%KljXg49RCe~VBuMK zEDuf)61GH3q~=1BStsV4^!Lls;IH0`G#O>4D(`vn(k66l3KY-cdleXHikYP^xwRs8 zUh~cpopAN0tg=8P`4Y%m=FCN9z-QO*iV*#qBpuz+&br#FWP>eHje!x{{H8q4(~~>T zKJ&W0ixO<*958L#2iDXk$_HbBNo5L509B&k%ABt@JCk+ynZ?4y(}-m z+X)rueEq6KNjTmCr^ON(@`h@?BbC|4?+X>*cr`+2PO~TE?EaS7{*-+XBF?pNbQ#sR z#|H_a?Nl>ps}xSLDg!pY+*_w%Ttd;#m9{iAd>$#SdejP^caO~t&}vWmVx+OZ)Sx3? zw}GO)ldV{rv(^)sV=X1%p@8QYh&HlL!gSeiiH8rxeP4#wB#P2e5-mCCtwsBOxp@u) z$)x4p4RJK2}WE88ns0x7B3TB)`1m^&KA2Vwga_O9O$Vi?mEw8LBm z#jUs&7}oJdSO@i$l{X7|bmg+TO_}wE$_n?0-EMgCZw}nbi!S%0J0gh0@~E`O`Lw-W zSKV@w9suL zEm{{AZ_`R#HX_c%S)Vv6`iD5x z)a`2u7?yGw21cw%nH@E>Bd6#EH6WG|NCL>;DC@Bfs0s7e6x>h&`J2Y{QF(0)HsGj~ zeeRGDCd-?zVmG`J0O0~(n%U>0E$r*(#>8w7b}a!#x!DO&VpC{%*ygbiUA|@J?W#=g zJS@hR$uK9oY$pjIeksr_>Je|Jh!#|ch@BeKbNSDM`TB__IIu<}+GGGT^19I=?5qns z`-+^n9ydJaM=W%Ed`3LZcj5}jK3#jB_Xu$Y7=>~v3JYJ9!YugwctF*0xY8w_2Et#* z(}p~8;0HrpGprE0L~6G{YYIpj)t^I79#b4qYKggkq1EihlXWQDZ2Hv6PhJp$q|u&& zxq(hz>P@yyQAI`&O+e(UQ^}P=`y~{RjZ+4iL5)tiW?9<-PelwRT0wWVb1~hDw(3t) z%0KL^1o`;pr0NdSJ)GwJZXP&V_-dpH^65Wpl|Rd(hyq7)1WYRjv2-Z<59H$VEJD=2}s(QzqkOAdiX7|f)B(!)Y zUR8b#vCIU5^RZQSm?ad>Q1Qg?kWq{Iqecu#9J8W1;`dBKS`LL2O>{-m#pPTPk70C^ z$)6L3gtc|9YHxkJH*5F~eLvnnBRh&d5iCTlwJOiJlKUc@fch(^_-nits5fO89iRcdGn{8ZhFaf%oE_&`q#>V(#9V)$0~V z03v09Xn>@ws32Fsxcv9<;hQivIOo%b%*Y^vsH>~vfLY7^2@sc;sa20HHDzVLHA7)t zT^(w=NeP{&dM5Y8?yTi|Z_rM#{xPfwV6};>_e%wypP>f&LDa~%U!FAToi}4R*;Zw> zQ7X%RKiGj!!+#R8mNyxI?zHi)T#+PqyBC#@VY>R_+@W{BuXQpd(P3Hfn~}ZJ;f6Za z2Y8o7$<_~8MW6vGQrJ%Y)Zr+10k>DtvdaiW^Q^*W_=coQ5E9N6u7B|UlJmw5>GeM0 zvB}@B+l|YdN+fkP6(_(!6HUG8744w1t~Pn{ob1Q)bO)8q$b{NZ--kyTF&F#?_1Ow7 z9Z=O_koP7Lq0soGWLML|($*;aJ_|4Dw|S-K@f5JF!-VhoOC9tR8SkJuwO%35we$#c zV{PrMdh6#?g;_FXu(reW4&Q{yN*FlX={nEm8uL6va~pa!7V}W83~79jizNbuvA{qQpS5es?p5?Dd*0 zJ3lj_%&7#q0|m8y@a|s5e=0v9S=%Zd%1EnT_Wuzbk?9Em_sSvNCyhtKEl40NvnX^Y zm)D2m%g5)37o*2R0_)Jce=8xdR*LW{KOMuW6}C#?9AB|7U_(ZN}CRUVv*P}L%tXsXPwirRa$E-S(2$xYjVJjcwh zq&7!%78`w}T8yG;X8tmQ&*(OLYGFC1e2kyjcrcw^B&|uaMrqysAv5dfc5OH2;j3OkcG@HGTlj(|Zghm_rQ=dCgM zoJ@i|5OK~Aj`pOGGV9e%AnOhK(Wz#K*Vt_bmSf$KpYK_AEn05dW+~ZU0HO{T)dDO8 zEI~m2%%^Y1tX)X!h#w=H`A}4DTIlLBwAV&USJp+r#Sx;k1>^py?9ZnRGxNx}R5hNf zeo){1sv)F;=a!p2i!01IaU(Qk_uQE4-Px6)&|1Z{G~~o@Gkf@fC5B*IRW1Rb9PdTQ zAXeC1WcuTCm01PXcEy=^j6lijpR&8_0U4TUnjcL5M95T}{a|wJk80hH2FCU~5yJ?q zL0TGKuq?o&fvev4ccT7O~NjdXlj63tvG&)%SI|6WYn!Hu%UYTy~mfzR+C z^$PFyB$Vt30uY!4zyCuc+m?KVh=mB)XXK)Br@z>H9o|Hx=4_QREdZ#boXx?h_+;`l zGe9^ie|&=JWNi0uj+xKAe^3ldoICx9@R4LfD%D-b$%+nv&cfu?ZkZKfi2l$#)>=l3Cts zuSj`c%~USyQBo+e^Y3|4+U2}%MM>(VZbK(QwGhy0P;k=q#O%cC6mRa1$Z_8@XQ06S zWdRefvzSh%(3YU?1{><@MUNh={1W%9#yEMWUns@49Anc3&sv-o3Vh~~s>idN%h#d0TYi@evoXukZ#5+N6+}r^5OKK%ZQcCY15w-nfnVYi%iA5*KH1pEM zkE@+4_04BK0h6FMxlGMl_F37u4(Kd94VEA>#LzOV4I1W94 zQiE+Cp!eokLkB8+o()b0%|n40f%%d*u@-u64R zdd64@en|TOnkb2D2X7v-RrbY(KWyd~oSF;OB7gzrIp4kjifE!onWS?mN~eRwP;S(T zf3_+kgeFjJ=kYf_+45DzcF6LLBWNpjMk5$q#-oJ}kdNl7!KcCbAf2M0f1VPw7i<8P zk^`kGORxNoNUz4|?Tb)PXp>>i1WXfeND9dqd*oS*p);S-A~$PqE)CrCh)^&H#6s*m zgRBo0P4%N2)G;8I|0<`iybXLCO$De^vHeK>*M5@USlAC=V;LV}6Gl$(dQ2=Ls=d73 z4*-FD;IGt?1SWw_SR=SAK{dY0yx~o&)NyFWYM?W|^_oBP)z#BPtX$Qin-8NlJ|Z|2aU6oZJZS=IyvMj3 z#WW3AE;=ss%yuQ)(fmT__Iy`6{RP2@?XDD3zmN7VLv?IZ??n>c&tQ08#v<3PG(;>* zEAxd#>olYP+XKJPX-q<-q!kR_m3gQT+^Ubf%ED92w6(8X1>830U7-V~OtOk*pE{uB z9?T8#!UVCMcm@H!vz%`Ke943J%Fu6wb=}?m^}3dX59#|1vE`r`udd$xG27*b5X{em z<-B>302yoNHPp$3kCwu1T_H$KO(T-Y6JAdCb_dO=<5R#MW?+}Bw_)m3*4A4+`@Vj$Ek=;j*EaJe@z`fxCm z50yalIFe(4f6_DXhS>i3p!X34-f-|W*Dcs28Ad=rL)NJgVM&Sol9PLmim5;M@dOLg zB-uXsK5=y~GZ6h!oWw%wi z&{V6QN{elPU9U1^$|uC^?{3~C27Zu_=M@ILrXa*bfz+W{%!4# zIIo4s+^CSTF2o)(V78LSanhLkGaKp%_OF0(cw)dQW2LlN%ct+Pt$UwD(!A%YRzf~X znRs+B1slVzw>rWD13bkxCZbONum>--sYEH1ww`>qb6aCr6Z_KWrhGh5NzFn_*76W! z*ANRmB2@&s*HYAEl+LV71|6+nRx`8V#8!*cb&9rKTnBV?65-aLMjAo6DFh+5ww;Es z`Zk_77t2@4`)2EiE;}SmrzACiQYQ_--s%$FX~_?v+)f@`nctE^#jJkcglJ-CYbA~D z++A&LIUl(Vwk70U;ajY>5}w4zAIol53`C4x z@BR)&ed0St=UJ~?UHJ(W;y$?$YzP}zUObwg`l$;gC0#A;KYsqbJv*BtAHdGWhVx&8 z$H&L_|Gy3UiBs}l1LpsO{ol}kl>Y<&|DgXU{}=qvA$eWMX#Glsz&$0Zhufj^a$#7% zC0Wm6Q$n|AbW`R-p2?LK+*;RN$|!8(tx;0((2_}g3&H9i#c7}8_?U#m>lU0mvevPx z%O-T(O>N%X{pMkL+rSYy)X88+uX#-0rra?h8p0|lry;2nEkkeRj_<8KP(Tlc8G%d9 z)O+~;BNJ6`1gpQ&hF-nzW}#rD$ncwPR!=T_T@LfCY+2m1q@P3fCcTOTFIS{A@v7gsZ};*Ahm;eE2UvdeNcWf|{ zjH;9htc#CQ37MioHGTK1+FcSmZgxpWjPr*s{w@xmw@cSSvL5?X)w%ZiNQqpP1&2Fc zQ!y5H`aT(&2y1bv)Uy<(i=-AkLjWV>ueF#5*k1dMfm)r!%a7mX!aq54KKq{gHk_yr z3$&x5sxE7-;Qmf9#t6OGLw58%ZF+>ubwI)kLG_L%4ul=~WV8tC-t@Bp>14R63XUU$ zeXDO8_Z8MlQqr#=dgE-=TL<`}^lPN9W|zVx_TN^eq-MXwe%mG$C;sva6JfeyFNi3q z9O#JZnk-xH8BEEbiSdAktIr^lO;I20XtyY)@Yx}`X_0PEO`ufcV_NNZ8cYk)^dTMp zRH%Vv4}#~I2wY%J=X}(#vcv72NA&bR>>_6@mT2FObd)rDb*0=#ZKeX~NK73SYq%xt zA_)~Kb6;vC=Kq`BEomKHVkK z^;-KG#35%{EM5UA{-#AQM10Co*Cy4K2a5B8&XI{t;j!^4>fO*mSKAmJI0!*gec~#2zeGRB!#j!M#QeDQ$S%qj2EFH1#v?surxkAk5CuDL%hjGJ8jZe zw;XGkp@nZ|-dS*IT)`uZL+nkA;&bO0%ao8bEk85WSqYWq=+Tm-F=`|E4oxFmxF8WS zB8_dIAe31Nwpoi3!921+#gjR4$T~7Hp;+6f$(_Zo20RP_80`Z@--UqtkZOP=kX60iNrU}fj`UEzXcj<)_j{Te?9w|Z<5_hR?}1A z*Dwwdm_An+&y*f_EZ`TwfmA0R*8cehr zV!U^6EELvNc!~i=s^}Ikqt)q6ZUzUC8e%@`Q=rm6mo?C$8=VfL149Z4Op|H(X-Ice zUcsiAsh1zeJAFZE=!5L^=6b?u$@vY{8LtezIPeJ_p9&)Mra*L7g-Jj91c((RjTCwK3AY>-KOcDr4|nu)5uq<-reRy2*o!;a zBU}w%#&LZpHCyS)m{R&l{X`26ehJMB3-d_NVwRy?m2@Z*ia*xcoE+Y8e7yU077AQk z7phbkRkUpkA~l2CQqhrNArx`-hgEAcuf2GBW$p_!mH$1`2AWpS z029Sho$cdKbOD^?!KkEEw1eNn<_dLIeP*0wm^|FasY%=?O+WW}* z2lw{$bv=$hxbx2N=f$HSwuLg`q8H1AHq&oW0C^M3Y$th>`B^`>vw#+73z zq~H0I=iY5ZnKfnMfrLwE4xAj2fqG$@&ZJR`ugxyG5IOk%WZT#t@StFPpRtCe>dP(@>oV_$Ax{SMs> z8$jmY2f_Fx_KA!K?~|=?d{Jb8bM7C87ez*_X6#9YtREDTcs^iFW_W|u$!Xqztjxgt zQ7_-I#aHR)P~syFdPRTYlK3;q>|!Qe)j}k!&$OO3If-e0C(<1hzKMJ$+$e<4t9HTm zJiwdvD@v>dBq_7AaU`BG06$|T2%6MyW1sb{1WSadykLuE#Llh$=BpSuV4VxkR|wbRCAB1#{OXD@^!zW z+ZkZfIfGZofqP=vl(B!1FJ?hLj4IY~fy)6y>?~$vxnMukUt3}rNyhQRgPtlJIOGe-m0rV^!iV9#O;wx zI5wo-a&zTSe|BpU1+r5|o|VSL3Z};^3qw#5h{F}=Kx}>vg zXU~YxPip2u-2JdlM4CRk=A7?!#Ph>es+FKU=xMb$kU7DY4vP4>Qh@a6)U9^1%|Tm4;+mVTSmF+J>$}*a^I`p*caBFZ`sQWPxxuXS$*8# z0z93wk6i_pSJO8eMd8@j&Wh&VNM$X$3+}gAnM$~)>i&^m*p-IzNuTnAUan?+*{zE- z+7_7}kcH9i-d8$+t;+A%d*6XXYLTv4)F;{_3m(?q^0yxZ+el9;q-}*FJzTG*!(L>G z&fUahTCR~roD9srt*`hYDvh=7m%rI_iCRlXymuv3hz~GsYg5u~wZ>cY9@f6!@wdJ* zWrWAyJ)_cA1hC_=LrLNBSOf7`$hVtl5Fq%~(@u<%&z~O$(5BJ`uronPV@QeN*aO%| zG)Vu`&h!uS9|G_{0{44 z$MZk8SCdB!Q1YK_odi<5`}u|js{a(}?&y*(kfucbo^lE`U(P*RaDPp>od5ZG4ZVz* z8KBJ$PxSHfJOIL0c~ROnvWjBS)`(r+CjKT=bfMu78zdyL=aJ5BhoK);w87PvQa?ad zS0qnWyg-CoiXg1*&+1S5>D#(ykL}V3h75pv8L#cRq`A1ZhUcQh-HGzU0`dv7}w`JIn4=~J#hjx-z!h#C)plF>JzVXu1teyK>3$ZKf|b!#}pt9?-2^paDyr_dCcG|!#5JvQq#mgwQgP&gj6}X4nnjFr-!L-qAWj3^ zI-QAUz@Ak8i99-ynUKHczEjj&O z#ie}reDl3tQ_D0-s7CO$ffLa?({Fw6ILWMP(wwF6*-ZhHuPXReIA-og+!pJ^eyLe8XGbrIey#vXojr}d!5arYGZB##NKJOvk65oG{0?Py#pC0$R!B29iPj>$9-}#7ii^~+y zThqBAk7uCXVyV|)f^poN6&vsk6XC9zvxUhhztPcr!yS^OGb1%Bel{1_v)yDX+`NFf zWb#yfebIB^9Epe5TgUksR!0qKtnH(N*|;7vaVc%8+a^8k=&t(MFE3CC z=>Ei5=_)oRMtnZs^OH7tXktIM)EfQZS!R`!G)pdiz7-R=0LaIIaiAc@x!?lu zcnnV?ECjJ$pM+DE$aZ0Un1WW0HNJt!bnOavcLN!k*h&_3y<{|%z~ zs{IoRTu;ej;03OeHvwW#51uLwevfZ4HjFl(q7g68e>U8iR?aEQrOslFxwF&}<<1yM z=BKM%2>`t*adORfME#g+m^rB$!G^BIa{~bXP1M3Sl$-dnO#{RDj$ctLmnpx^=Na^& zdRT7?m`v9#t4*i1#u3br_ZqJC=f+6)%HT26%P;79Ge~-ER;P0T>$4DB%!`_>HA3jiV%1(0mHwyfKR!IlR5uSsd&DO>zP^?<=o6P1%q64NX%KMY5En|I8t2Jvt)Hbez z3&vGBUBG8@>7g)hUITxQz1$raeb{R6;kbW@p@+!a zX=c~l54YX)sKmQbWu3nP8mvi&TU&nC?0Kaf5^n|0T%Ld3n>z06dlrspyBc^!P>9yP z7DmrU(DrE|d~#muE>=@&oytu{ollrya%(}De!UmIJT!Fi{`bY+k6*u#5E=As8i6aP zq}AiS&E^I3ztk7_>+dWdvU{yICU^V=3ijSyUhIu-_Kc?!vFn6T!Ufiy*fw|{xz7Wx zr+TkKp)fLV2+7t?yvI$nQgWNW$HV2#e36o34^zF>!*Sd0GAR)|-l9Z?)H<3w)5ZXz zXyK`UMHYMRdY!P8{?&iCUTTY8!LuJCism11<}bjO8Vo^LuhS94-P-Zzhkj@NX1!j3 z#DF+@Sj7p%BNW0+=_M&3onIl<;SR^eBx|CXnzE47uykB->h0I@@cjFt?xt7TWXt^x zc_eYv{!Wx2S6{VaG+s^X)ZvWy_ciijkB&f}h%(hA9r`7#iC#L~NDEBvk+2%;FS^C2vx(89 zvUoNv&Da3i@D24i|GO`dM3{_Q6S>l)6@iOsNx1m)??Y4k0vK9qcci(EjXMu7_4uH^s^9gV|DeaBk$mi zh@4p5BMAP{(xb4SOla8OWT1AmKCBcj7GZn~BonJMp@pt{h8J7w=-zn6D^=7zhkl{o zUHPTI`ML4+#rRU2gHt)uOvlct-llkk;emX7FR$;6IP>2z=)$HL)HcU5Nbbo)4`_B2_zu9Vko9kAoaJclg6W*) z7RhEnO!8~Naz&(}dezo3&eh(?n}K;rQOFvc#6K#R6pcU<5BUnk!VM2SIJ)T$e(6Z6 zk$FN+;Kn(FKs8W*F{3!NN`5j$SO&>#5mn^?k^WjBN!b3}9RVz4EEI2fzU5QHwx-E@ zgrvloroez23;?;pWH+U?X;0Xhk5#i@iE z6q7x@QX|iquMbAg$0>*WhnOsZ2x}8WorM#^wh3^bhI-Tb%g1?EkHaa>dNC2NOP~g4 zHQWfUy4R_uK_W<=D-~X?;eW7>{^N)QrZ7Gv$VcZFeSs}s`K4sjxlKKaCqY^2tSU;; zSSYB#wvt;6d#+!~hX)05N;ne1Jds!P@}ldH{AG}7(Q^MM%FDLGWLn=qM2LCx#4x_V zVQG(-oIZ}RWSnRooeUua6(I#dKI{^Fj!#%6SpZSCv6ImXQ{d`i@|p2`AKq`^uZq8j zY@Aj?kk9)Ma-j(1Tqo?|ATe|{l28^49R)OAcIO!s$%us(_wu+q9);-%X1T4pMtv4e zU-QMbjftK6M&Pl2?q#0q^IkeRBehl^w$+!Zl()|V-=q;4@AE~xaQqQ(b@?cz{HvXd3&IhEx9?X9(?wdTogPI5V zHiMCcg-I=&G}tNA&i=|(ez!Lx8*^VsDZad}spW#Nu>?+bd~q$VRERs#woBxK_^cjS zT(t>17EqE`+@0*YG@nRR08c_Vd;ca$%q0EoeF^*PP8*@Qg(?a?OgyX|J_^RiGsa=T-Aw zk-nM?^s~=4@2Imb=@-ajP1w)x&PYNRE3qqfk>8wn;YT-;#aZs77og3_3c=)LZ9S1i zRZ>5&i*!b>ugthq?Ud;9I~DD`6dVj!a1^Rd{^?3gQrfHL)7qfo^tJPArgw9C_uAV_ zNGh+guIq>iV#By&;m2ae3!Lb5ICXrh7!C;AIcfRxa$A$Vhw8WKia=YB*pC_ho!?IU zL{r}T{dBH^urxQVwLaCR*9)EtCZ4XCSBDmkMX=1xNc=NJ5KF$6s$7=-Hi@W< zgdvhU3EJthKG9h5-l132;5*WAwpjGf%bEd%#Vx?*zYU`35x3h1t5*eVYm$fblHDok$}uT3B@%kz7$ zY&7jF=A`v)s6UN^81!aF3zFojP zvPs`_C7g3~CWrcl%BAM^nZ@<5A<-?#LjM~z`t%^js>(I(@%>q+75AkOH>%>{ZD+@f z9c*XI`rp27O;g%0v$bO~$Z^`-Tg;C6XH1U35QmCWs4vaLY9hYYD7j59>_m7}-tL+3 zLx2^^iS*XoFu!I6PW}}sr3)ymB*o%mf9(*R_4C0^-=H5kY}PnvbeP>%8-jfr&3goN z6xw(p9+x{Gjl)V=|1xA>V38XqCOyCI!R=3Y;TPG`Ph`#ntMOjiGwIB^A|@p3>r zojZw+tyY+@ygwcw?UA?*NBLOw>ZdU6k+xV@k;#BzCFx8m5u6L+J^7tpR)$s~rio;4 zCo-5bu(f2bz*)b*ck8wf=| z@Jj=cR3cp`%-|z*2(FvsyW)uNWH^+^ex38S>w@o%$@vC47E9cDc_MI~S@`01{c+lI z*J~&cQ)qpEXq&g)`2s;nrzx;UV#ts(y$ANlO+=MtsHKgOPj_Vy$1Q#fu>}H852V~| z4O}dyAuV0v1X8wX(AU6QOzD}$C6a*AZeaN_zHg=Q7Lv7?#pOjyfd9z0Emj>6l=CIO z$@f!Au#ATkOkeDs;zi`hCKTp9A$+};x%a)Qb&C62i}c7X!JNAWQXCVGACcODb%6#k zFLVJZ4D_9bKHsf@Cpv|B2s4TE9`Qk=5RJOua3C1%G`vfrA*w?M`+|uo7gWOT!GSn! zlUssm>w;Fpl;|MS4+E1E=0LMA%uHFOWz`UW@uVf$74{J#Xgm&tHuTX5TdU5M%XU1X z?vVh&>(@o)@U6{$%@z%XFClKryryzKL%(`gS!bT=Z*XbL4;~g{&fY;Q^$sgO<1I|P z53}QD(4g^i7FW^LQhT37DV905cI}G~dPXo}sBP|W0Y$RrERJXyFkfJzw9Yv*YF!V7 zVbp6?65ZnTuzK!v=-fodu2}7`7+>=EcQZ<|0WWRZP3FspBM%R)0mKg%bVO%q;&!F- z2*L9PeE&`Ep3%773|0Z*V(}QUMW-}DUNer;Tu&7mB z1DHme38N_Ouvp@;i1x?G!9tbs7%D>56lRAKx)-S|RQkmI}ja>D)62yDL>* zvhg2qe%rR&Gb3?U5$hA{&uXS(lk0DD!S{LHO>WwT&ixI=Y~>IHDk%%2_NJT_ZX-XA zxr2S;O!dy=W9b~e(>K!e5h+@Km-Lf0`PUd}gcj|2uPRO-%D&~2ORNFvyN9VA-tgCc zp-a8mOYd`dcY6QB9N;c~(AqilS*B=8kVaU{F{QsiU$eOX$TTl(7HDV`cw@e}JMwsP zoaCSE=%s^;3}Y&+t35lRmC>?OT+N9hJGr)w@pS15=XOjg+T0tCP56=td#XCQxz5S~ckvxgQzvNd8|DQg#*C`)00sq9il_+A-gysy&v| zmtRpJJsz!F5_IRva}jkWD=c`l$cDU=4$;QC*t(MuW8*U!G!Qx`VkXF6T3;CF=$uUg zS-mBfEE0_H{(UCm{33t%qE;+P$^`#NP z*D4h?uCx%ey7LP^Ym~{Wt0=Zf81O^_MMVzBU-FJ>UqB!b?NdWg|1mxIO4;K;OC7uH zSbt1!{*u33Q3rx{LQ{xZa5g_Ls?N!&x@ko%((cP8aN(JcHqP}n82O8X!V)e=x^d-# zG!yWlvK!Fegeq@Pi{khT1pVGt(f@Z9jkhL0FT&e{j?Da3Ogvw;P2wl#I$V+;aUl*n zOz99W_O-Avz%_3=_%9Q1_y1mUcT;?1jFzxc`WkL(ziGdTzV-a(r$CBo}0&4 z8?KkqPq%lRamcz@7p}jCp6e|CH0x}Ty0De!A!cjnz@$jB6JBIp{V2+ZNU|iJ*eAc8 zhD86Ju*yGfYJWFCTPn1mwW4~uvpOd_No2wwM<1*Yn~TV!GYjOuO{CdcyY+g>cI+0p ztGcsQ94u4t0XHv&Ihr|If({n1Yr2R!v_)5eo~}C2qOhA=HfG{!bO4A*vmhs0&fshk zs{IClRlP828q%j(&x%oh=~f0QgH)ojXRaR0Q`Z?Ey$Wk@{o>VWrh2sAn$i3@#N=1s z%`@3#sHx?~2>@2OaFS{I<>O7tKNdS`mS(i&yNQ>r-+9`)zv#BQ*wJtt$+1tto;kFd z_^-IxkF7=>r^#T}bsw4%8%;C)kB|9{zFW0z5j3@l+S0Cs0C0V`$vcEX-r)Qjw}^hN zpRKQTb}lQ{L@LI#Hy6;?^8Q(p0b0bvso!Onl{9xr+7SZsQQ+l)C6WF3FHm26ZhIjt zof_Q!El3DI!rbS>$L0(Ise#m|D|ycd8GTdW-7|J<^RkW>`CY5<`TJW*>*7Qz^UOdi zFYIoOG!dX^!G{`EZu))dB(jr5E=0(eH8Q1N{5g-FZ~?8O{%|9ElS7z`6V2XQ-Eed3 zid&6lq%z<9b_!QI`O*=W{(N;+ev^BPN*g;TqTUcTdft=&`*!X;OsqJE?J3;%j9{bp zlO@$f9&G>JFsApLLD%;5c#M(fUVa=)dgYXb21Q@G_+^%|r*=winBhKE-uY zPi)?Azf<6krmHYso1QO^nR~wy{D4VYsGNx1T|Zy37RHR_}FcX`|~$8 z*<>_GAm+{s51tcdLDz+AC;HazqeI=PM31Rh-@Mfj)amEnvk92H*V(|87TU>p+XyAR zQ3qgQz#O?%Dml;{Ugg~z2tzlZ%mGqV(cYZu;JFHFZFCYg?B#;fq zm_}N|h(f|aeqye#WX4=4l~U~sI(UZ+{9dulzp`J9yNxz}VFFc6qkeC1>LA6eqK4x{ zM`8MmDp{}?Br+C%_FL&)$s$yUCv|B(994V!ypo{q=}x9V?!;9BPu}pk!r@2o+WG(- zN992#MtMkTeVZ19=yg=%5Fkgu)mbo5YgpJN50H(0;%aB>V z0Y9pbP{+WbGB`wPQ1X%mF*0sWCuu4U%qQl}>{fEPV@GD+jYj=vuWL}-6`pkV-c&Dx z^&PPi(<^xgTa(R{hF7+wnh`uN&e>T_$*8|ke3DKjN<}j!3P$pvR7Ps|Es%nyXcTRq zn;H3+#{E20t>A}!T0(Kedd5OePQ1_Xb2aV-(2)+seTmj2?S=5HEhCG>JB)Zom6!~+ zb8NU;5gj<5?4%7)Nj7AI6^9HhSdvWxN}3RBkY&)RQYO4r%PY~X2BkJKVMQ87N`P#r z0=$5S!W<;3U;|oM^g;xld>our&{ZOmGbP+lJnn=MOE5kV{(QUO6*|Y1A7?cbm;Gao zv+Ws6`Ycx2)0dkV;4n0BBhlYiyg_;8sxPnlxJVPeQ=tuG!>ONKd0NM`0UU9MC_Z|p z>~J!gIkPCyuWw*;fWG1w#{d`@q5ffLwCIr<@t7Q@QUSuWUk1~eaAElGI>^7*EWQ3l z^*ZmZ`A5j5kO{_O|I3;<9K9n(U9=3r!V)iA?$|*x5MkmdG6?r?`4{}Qufq+iKOtpZ2Y1=Zxn5t?zUv+m#UB~Nu5D&&>PctLDW7QF zpG{+gIKhhiGX=K*6An1P98zS@j^zb*#jd6&LWc8yK&!rXZ})z4#UhBO{fcvV9MX9t z)H$`ucx!8r;3dlqj~0>+PANab&(ChB=zyfH74(qPncLZ-4q1AiU#8U{lJR;-#8|fJ8<&s&qKK= z=>KWzJ)oL;o`&HNdPk~2s8U6Gi}WJBC`c!OAiaj(yA-7;MM0`amEH+G5Q=o93Is@$ zUIhfCztP|SIp243PO^7*W@q-^xwA8~yAuTj8wVI513^L*0xo`go_vZL zG-zGb5<`B$R-=H?VV`$r^BKEa>Q|%jhuew8kPWMO4Ki4$ygLzcoP*$4Z;e+-HYu0vOIzuX_$|A`O68FlwydeL%sJHKDO zerdnhm5NTB>&eDGXdGe0){URfDMsSIUKKdV#Gb(Nzd4d`kw%1G{|Sm6aWyndQbg&J z!Wz#(#2TAdVS>E(JT)z(<2EgZx2@Fh&x4QJ9wWzQ-i#+jk$$Q1CdOQTx2%si`us?Da4G)a!dfT{uX>E3d7kQ!OYcShL!CsTjCP`$^%V zz9C$S>1sWHPy%9#?`EflbAS{1ylGztj5WwT5pxdj*VS=*Mp5%k^_;>jb}sY7pc&*GHQ?1-n{MY4!V>3raoZeGy4kbIANs-{yne2Pbtm1rJErP9q)i>2f z#l#nPb-g+fmyz(3@j%-+R1${(sez@YmODA6jt`;0`6#gU0F_#q*mz1XVrGV0K=H5* zU)TFvNV(%@^I1e)*?8yew0eI)$=7$0@)ocx+Yf3@>o^gGb{{Cs9PR<=QiM+4W+Fmi zm#E?X81tX&!~GV%XlAsLqUF)Ol2_{e+wd`*Z4MM8jwj7HZfS_dtD}0#)Da zjJMw+B|QQ(Z^Cr<5Kd_K=vs0~(zH8YERY05s-yG%3+|D&mKt4fkR{0H$yQC|b9XIA zA97@-UT;(m<$;o>g9M$v5mzKw;#mzgay=zd`YW_KO2G^EbJTz#Qkov2Q_ao+^p(XG zs2JfQhikh}apZC70GBR&zhYZ7_dGyRR<(DzZPB5wT`}@27D~DqfpjA|Pvi2WfoY_r zi6bYKcIHeQ1d}jQg9|Gg^EdviY~d5TAKCC=nbTuntJ%A1re%OODqc*o&HA%s$ypUg zo0szQ-bFS_uSu?_DqGd`zhkKkx3km==f=K^^fKmh2Xgiu>|mwPJ{oEakBSx5*)-qx zzY@VC096--K{&6p-SQ!k;P4xDS+LxxPxs2Qc*|8?c-ZogxfpWkwh;h~ z%cl)^8LNzP$ijFq-f0B}N4@kVPt^CZX~R{In%I+p_Y0`@5%-x768>|3V;` z@N(?nhI+F0Jk1R!Cw(T;$EVK}lufF~jiY_2Kgj(b%*L~^&tu2eA+4Awi>{Ma_Ta9! zX>dZA$xOk6S}fF#kGNG(akpjlU$x9|pn#gwU^#mske8_QSS7=We-IbYVp59OV}mw2 zWlgOnoBvhNvC`BqsBIAQLRpf^?&kqJJ_ltl0qpF}?I3dG6xN_m8~;rpSPjFtBTQL& z7z#=1Jba$^wh3E6Jj|p;>th3bUosUGEhL}6nL11D{f{mbl{)K;3+HUJZ)h_SgjDBdW*{O`AIRWYC5pi zYs~#bYhsq9Fw@M#yEgD`*Lsyv>BvA#`iAiWy zM02qbjnQ|zWXMq;U?K5=y1FYa6nv(i=F3fNSYfGow4IhyQ9)*cx_ zn|P|Eeb1Be<4?(u zNo6>q-xZ}eSu&(iy<9097wChUf?OW$jc1JIX5vWJpOCc~MEI7uIsNG!EJAgRJvIZ3cU1(l z?n_-pav}rMA_dH2j8K;vqH~&CMn9B-bc4zYVIi{|5*s!F1d)0&Rv~G0`>|3qMB6{U z0tQ`?A#FIHS6RK4c&qJ%Yh?W##sq6(wG~mKK7@;#Mk5w-yqnTrjfq}qqI=&+VIo0v zG3G%;c7AS8VLIqvI%uw&&rn8aLdxe3J(y)_t(+<^3p|t-6=Wp9$n>y;lJ;3)7Cg@< zQt~~a;UOG--+9?ka5f96u0+VZ9FZpR!&S?|1D+(DayIn+gCg!RE%+B&vktWW%=rKS zrdF=g!Y1>KH(&aLpKb_`(;|fXK09EHVUz`XN<*8AK3xfq?g(pMct!+=-L5)F>u%;t z>rQk7K$PVyDx%~!`zOPif}fL^1(XtH=gb)_92xPbVa8r5=7aVIf(+?;kIYUp*}?Rw zZORmpDLB{^x*ZWZubX?GsMb+lNwB&JrCSqmD$4!>+iC8d*3acIyLs+w5XOjBE-e!n zKUU(TK96r!O|TPn;ibk&vgMUqL4<-(dF1(rFE&f_rN*Cz-&|@_J*oUtK+nEs%<^Jy z)jhm+Cj&xqk9U<_B5M62fc)G#;%fI7KHz*t{!R)iCU6(Xy??hE8SrSAkx}1hh?xij z5PbU};^iF{`0NWbSTN;o${8zx9jyCkw|#loo|LblAtY|v;NAERMbg# ze_056B+BJ_KIe69lyG2xwzt~YJrxNI4+QvU5OJ^Whp5N-yAY-q-cWRBaVH|q+}#7n zb6`&*w8wXMfF4xOK7Cyv6-Z&Bdw4nF$g#QV{4Mt(QapAyW0z)cn1KbpOb>Mv=2do6 zWOQEQX+_SU2AN)7F)Y?*0D8KTBju0*%`iUd{=Jd!#Up zx@4TXb^G8LSH8;C@_?$O{d4W?4AwVYO zpC<;VWti-5QDoA33cT+ABXh#d znUe>!^iy@WpF&~M9d4ScOiXUHGhjavyQn1{rLo;1cu5KkWhxtUCVq zMrkyn^qg@_)I;TRnk?5W_qL6O!g%=2WVPixRekIGc?jt$x3?o2KUlS_U-P5JNr-3f zV(4EyD(d-zw;4MJj+h`!Av3Lg>vq8`UPI-x5~=$t&j3 zS>*E_-NvYQjr#X{I3jX;qSFYkdp{}Rp%&Q>`kfP(fHDAGEksZ@eZ3%jUF@@X5>-H) zsOpv+jeA!mt26JFYh=^JHo|(VE>2lcdTVNM{n|%LhH2tyb{5l}HO05HU_5qe*{$hF zzo(z$;zbAGi}W!4okkEDsw2MifeLphxE{Mu8v5?W=|Kq%i3b0)Q;J}v66`31w#YM> zV%fUS!*ti2a20Uy2m4?v^Xo6{ZXpQ zJd%N#Ay1>`BHy4y;#cuN78jji(;R&|vjXE`b@|@ul+-GpqS=A(7)1M@s`19$FW8(` zef48dXHh~Ho0`l7g$Ht(dBH|Y())x{D#}^0LoQG374HY>Q9+_+0!4BM?HC~H6M=f+ zZyK=XcI#{bdDRQ4D1xc(1!=ksu_k_i0|^uJplB`Qm-brxx1Zsxmao1tQICw!BecWe zH+Oey)k$1jPK#NaUxpT^A0C4Ft-6}dEX@;TE22g-kA$F#6Gco;pYSz$rLaP1SrSVT zsn<&IZ^N&wSes-r*G!e{Bx49DZW(-0+4W3ZBI11AxsET}P4^LO){cyZc}ENbicQPz z-i3a4*{gSALtb)b_A_qq42}VJ7@K1S3sz$Xoxa@KI|QEDrm5qVlZ0^bYeD=kkFwcT zGuo&HcxJUFPA02QR&ah*=y#L3cIV=b4B}6{u<4rj*v~RP>RRN`eM$|c1H;_Fz#|kZ zNAxR(+Sgpy1M^F)wNzfS+N19%xQHVawU_elx5;k_l>@B9)Cee7i-4lsmAD#|WlmWI zx_stjgx;s{`IyO^XYY!~3t~Fuu78mMxZ5?qTVf0C<6sAzS_@K9JO4TMtqsNpe-OD< zowm%S4>Ou=otRRPbh+u*Y7f&N?m@}rH|##xyXgR2p%<{!K16?yiw*}Py8K&juzvHd zb8(wFQ5qj{vb;7oIHAH70Qj(SyC`?nHqj&3!qn*D9bBrq&EYecNS3} zDxYvLh1FLzg$<{7N-)aY&TTtxQ3$N&Hq0FMFz&eS@Gu*2AeJc(xDZ)!9a&g^O)E$h zodVFdJrv;_0NTK0B1Kq-fbFCJU^P5DQQI06Lk1ucQ?eh3A0r`<^UaIv!A&GHHqXxA zp0|l&`Ek6LWJNEcGIs`lc0OR<3tt~3XI)w2NxLas$R&@jt`7cJIMt^G= zmj?mRbAt=OKdzDT;h^MqH+-Jwp$T!utrmO8?K18-C<*aX37MKO&^%Psw zSUUY^`I2p5O!?3Mv}A%sj`-_^M~HTP!}z3O{XmTC^bdq>b4;$lC}W7LIceT3i`VJ+f(Q8%^e#fySnn zhhx*{%R6o6pU^qoVZ0+uv@rgREaESX{{;dI(0~2nf8_oaG4VtUWsDQ_UlGI2-`L@Q z{xZU%rNqs@MW!S1pHIEXQ0@8obA06zB*}Oav3%*+3Xzg*H~QN{WN;XnLm<-jfk1Cm+OdGO7kbLf2E`cSpU=a3x-XUo3!kU~m6X zpc8^LK(I_7yda%ps_|U>b@b-v{1fHfoethC>u)c}{7Ilzn^uDNFoT+p#m+P`y7B|K zH%aD*Z@|U1M$ySYf$XB}tBDE4zm7hJ*f@-H$Yr{17c}n7+6eK))OO>#ca8rP%X{C6 zi;0Qe3_v%@oKn0xP7K%fsU1w;EnvN-?Mq7*eS)~5gpJgX)1CO7ZF@<4?8HWi?bk`V ztEr&ETwu*q^_&xrD-T`gNX~CQ>^IAu>EB|&J3^10hE20)GfHtGG70mivXE>3iz9gj zi_)wzyORLDZ7&iBf>yydJ*pe8FejL$+ot*w7%IgAlhMPCF_pLn&l&P*p`!UXb$n%S zSc&S(v78w6fI8GZhExW6R1uYD(gD}tW)-(=N+;G zn~IxgU4Rf{!R_3^hY{u;Pf5UB?|x$NB{aqEi8iSK45`hh zGs35*6YL+cTWtQo-kLlTVKyu&jAUO`N%_d4baFBcBva~xaa@?C4s(1(xN)B8ckg{@ z>LlcDZOd)Xr8m(P(;U{cSQDW|MxY3%0=&n6|vTJYGi2FXLAe=JUxljZJHV4UjJ z8~L0E^VS4YA>L;z53W_pnW7B5JBP4^bK)3YrQd!=;@BL|Zn+1%Epl`R2#1dO!JA^K zqP^-Y|16ThhG;R;-}xGCzl{ZJx8N!TAP-#53Hx4`GsE8y-76_~%o11#QK5R>OHT1e zA#!f}7~5KLnn}Ly(H$*574?7Wz1?5yrFf$3|JKP?qn|8@9#-W9GPQ~sSV5;>tm-;W6emyyckGV0VAJt-p3th zi!6tpvAb`>NZ84G=A%z0>KfE}P#2$MJVmrLRZi{$Vgv>EB8o z%iW0!2n;OWF2s{8y_;g6{-W|?ngWxS!c>xNU40$B<|}6$-%s&RDZa%zSUUf<*=(0Og8vK=V+iYwvD_+Ry1N^Pk%&%$f`VlFEfwErcke&9#*; z`BBLeOo$Ta;7bE;?8r^Gx1?06$Q`GcCvi^7hipS75aNT({VXr1i#sypqDv3A+-?ULK_l;KsE8-?|! zp#g{d3wwY(6#F3wJ_>-$mz`dFIq?zz1(3m+E=6?!$Zx>GE@|iiPC!JCXMRLHw^P5QQ(6;O{iDo7G;kKKk4z6qw54 z9K857*z=*FoK?BjbgFZRMss{=?f`_*L30L&e_mnvuh^}^j4uXMN-%mq z*4svxC8QdMf4|jQXxbhU{(axsX)ZsQ?Uaw3-NuP)H2p(CydVM!GIPG^7tYSMr^Xq6 zpjqmBNs7l2$eWOiC66{5*Up*wBofBM!mSV9tHJv!y?x>DDJ`%nS z&s4DLqjg9VQ$Oj`CM+ZiHa2lgGx!2B3fa8NdQ@_ zGz8KAD%okId?aJ0t6*xh_NSvjUR%0n|J$j<2P5jPojWFxv7>cm8#bfKCcZw|6$*Do zyBs=3G$c_glJorW`;m*gbP54bqzq~+?r76_ zU+kN@=T6rf9@b#I5AT)^cnmYOEz_>f={VC9Gve7Zs70r5o~dt2vf01Q#15OBZjw@ve+dph#1} zH!2(hD&I~%$5|@o4xRmw13NUC9Ts*If$rK^ zO%A|@e#Iv}#|B^0$?%}6=NnC)HtaHYCYQ$Hfk@7G)p8$nYhMGw+3_wL4lJk=*|G1Z zHg%IVk_ijK^wq&fq!B+s@S9e2B3IZsb~S_8M;*Q?`#5~aIVmD{S9XwAK#n#HE9`a> zI)-X?$f(csaNlW-*z=R=mM>=@Q(Un?gi5(z(H}e-DKW3Iplf&}{jb^yh6i1mhMpE% zoF^>3wOYhQu&w&0dxayMP;&`C+KdzBgN}|@YtR&Hov~NQe0gEy!b1A9kpl+@A&lw~ zcZYQz{!zuuYM7O15DDfd32WYhKYX|x8^I<75rtQA-E97u_2>?7ib7M|ufB)EyXl#T zCBD(ak5zsF!;9F}t;VF8v0_@pL;Y*!I`xgtt?tsUH?K+t{3SqyJa*PNMH&+QZGVhv zGe;TS&T5i>`txe}0yhHF2N!8e+f+wxe#0B^eX>Y21FrkFmG6!}1FVJAzbA{#{q_}F zw=>rKlBz^wx3s$gZG_yCyk=aV3( z4$ns}b+P!{#>*_{v+@4o$kD@QtbBJ##O&h^t3lkzc@XWm#0{gRA&Zi1mH7CUUxKRY5Pt9jD&^eYX#oUdGlIfx6Htc?M$t{ zbp&BSKJJ8GcxAqwnzQ{R$$vAqMUz$~gQPS9Vg?x-%nco>2Q>{VW>G-{+fBg^4OICF%{XH#0a)ZTpQY`=F zwN~7^KBGYXEA$++!mxj-UY@~G9|0-U+>h;Jjfh6SfURP;1dW~yzQ=Q4cX=->aMCuv zRdap&kh@KlYR5g<8TFxU_r8%19@P&$Y{~o2k|ZJj@#l|uonSNPE?(A1gIAezeENz zi?RJUZY<)m8y+5pcFEnh(7b;@Od`2NpmmnK2z_hU#G_U<$2z7g>zKMj8#w!DBJLCx ze$!lzQng#QEz&CzIS?kjF#=;jg&@@2#65R*Ay<1#vHQ(}&V2s| zI#T(s%J{263SyNhFp{SH0z88ee+*d+%>Npr;LtJ*^uI$xS|1fSR#_3zY!!Fh!rAxEucR18yc$aD^3eQN46l>GVwYu-r+PD|DM^}~t z1*J#HME4&{S0wA?4E?-VAF8txnnZV1#}*P=ojDD!ZVRTVxHFeHF=)cf*ync-9@Lod zusq&(FYKytgx-7c4Bt?P-p$8 zW8lp15hisAzSvn(s4c3pJ^6Aa!N+gU>T)X0ys=6&JgEUM<>?5qZ?Qs`R>e1TUQKL* zMeANt;2=72gciQ@NTNhqnyGbq%BOn>JMfFw(N}n9qSinWWsM#ee z6g56V99V+wRayB*7+!$!#1NeT$)qCuL89*(xJw00U$yi}4XrL-FWRpR|1Jo|2FV+V zBa_M;CsbVpR|xlO`6~lhQHl9JWK9e{ND=D^w|ks)6Zvv=0?9y2mbc=i*aSVLz;U`G zsgM=PjDD<>=nNS4jb)_Pk|t*LgJr@flkHXZOuv^1i0Pom1xANjl*r=a86GG{woABY z^LdsJr#Vx~ol2=Tm+mDYa!As0PxakI>3clfE{Pp#Fhwae$T`weJ9v3zz8ra5<(VALbrtrC}0b zc4k86&(w4)KF#VTz@8~0rR0exnu4#}su$n&Mym8lo}1Y3?^PDoJ4AR^^qbvT%|jsA zDls%$r+LQX;fRWlRQ(x`%Dxy2zZ9}z1_}Vx2z(x`EUOR9Bj1(b?{uR#zM9D%tP>Io z@P*CgS`TrQjCtl+d$o)!?R-O}{E*rqn41#9-mc8rv~QRdpnFaOgig6<1y+;knI`#k z8AO8(UHnu(**|MTp7=5hLJ}CE%jistKT3IrkQA~P()ryPUR%)cW%PAUh;zVN7MYFg z^38Dhu$vj$1!j0@j3UY&BhePh{uIjp`K-gk=I907LanN2py0!9r}zuNq% zXPDDeIWymEV$b`BcTg|y^x7hW`J7IE-u+Bc=)-ZF8qlh-=ayH9=7p^|grcoy_3Z4c zY>^h)%COY>{$f&_oY(~^Os4igJIcKk=lu0rhMvOt11yKRXk766wW#UAQ@U}SFpV#{ z7Gh*=kKC0$FwM6Bfr|=mk|b(d-Ev}q*pLh-VLNQxi_y`nQ7*?pUo?<=bKnE5c8(Ff zNd~@v>)Vn_;(PBNO27W}7-AfI`jF0P;zxMIi3f4~_ftL0sWief80L`WFd5Svl-vs8 zCbEeX{td@HwLWA2ecQRx-!wjZ`Q6nAlMfe|htPIo+(PBYvyd|tl}O7!genHbrYO15 z{*L1{iJ-b9D2-6`JmP<&Qy12@R!`etGuj(WwrS`m+)`ycE{~K|5U3r~?&gMWLGw4D zdOxBGx8=L~hI;87oRm6;p?+@tgmE>yv){95Y%ZQa%0UW&a~A^(kBli1l+ zd@`j{cxt{Qzpa|aZ!TB9{;6~8m|L2R2(|qBT%4$A^MUES7}MR{UtM8Fdj7hirvAx_ zoL{u|7W55kouI0MT7BH<{0V&t0_YV{1&^DOBMSO z`1{@#)C6Juf;3JXgg1wY%1VLoq(HY8nj}78A212#yAqAjt&?aW3e5HYl_xRr+5fLx z8;gJ|#3{!i6ygvJWY|oYc=F%!)rL6eZI~s;l|0#5PxsV=uun336YFgEq>vfl9Mo@o zRn1#)>YB3C$%FL;ZkBi4N^w_j7<4DOv65e1E8m`Rz*Am*Muf&7j!LoI@7PdV4FEd* zf6P+uaZ!KS!f*v+G5Ht1mcsBphj~sWhyu)q4O99%n*YWmg^65WilC&}@OjN`pvOOQFEdV215v%b4DY32J8-GadCg6MjQVpn58gZ@P& zr(J>4*M{*|@2q1qdGuO!S>3!dU^;by$pEM?q+qTg0f|}#Ciqz zKys4)NAZfZ@U>cRw`v=8(W39-{UN1~6oL=c35Yn^AfF(1_N>`OYcVSZG}5Zi6@Y!y z7wk)ngx(kin!{3(qFi^6RA*&C{+6{BJTH&f578ovh-J4s_0OP{g%;z56|jd)1)Lu zXs;#qY{s@Mm$9mMpVzMz-=uGHYV3U0nhw%x)S;}9Cj{Fk?(5r&kz{Z8KIIVFd9p*P z8jdS~8_2qeZfVqTEGX7i91qp!bE?!%pI3KsTcC~gGuJJ;Ao%QVO+46dph;98h#COe z@|6NP3|@BO5)K;n3Ru{hbKp4GNiKA}@{f4VtGX{o9ygIj-fpsowE!s%TiA05wq9B$%L zLF5q5QyG+1{|gQZtcycy?j|%dxP08msBR}VVb>wanu`9i~>&lc({V_p+g^f>KB-c4eH2f8PBhS zi9vr>fTwBz0jAkobpvH_x3|Ey-uexGtAJ6*)LQnP9lOMQLqyE4Q02iT$70x3{kc?f zq&Sw`9uOIbJ`#GBca1XB?jhEV(&k-ffc$C4)7h$bD;KgG=W=>KXjJjRi z%BS3Q>M}b_oJ8>>vd7nK(}nzJp(?uxL!zK$&o5a~guI-#D(|w2Yl$qH*6P=s zbS!ces6+61sfpiJF};dnPk?15I+|fczRKA4U@Wd2(NH2)ic!;>L%*p<}Mcn45IMV5;Utv^;JX9$0L}-wIIr4dEGxKf( zqONC4`S@N0F#s&<=2R2161%V#To}_;OdKjb`@qlz2YylikvZpA7lS}i;*?CxdgNMq z>k%Olxzo;vq7T}50%}FRWiyTW-bDq!rBhQQeEOle|kimc)dbr{CzobpmoOn1NjQe8fA_ z(;qf*wH8E8KSrfO^6kIfTXlUsWVDYBrC>}=nvf#TkTbhorahKa?__e42PS`XYv}lz z&dtrcFF`0MIR8mv19t*Z{8Vn6AFUDow5&QpdUQ!*dl9Rp&Ss&ce*9E5;W6KVH~7%@ z3U*MidKjIC*U}E~cMe&U1LwFzZv1A$)0rtVZ7w-0YL=jmeud*8yaRSAGb6WPkw!J% zv&oTPh78NVF6#g}PF_q=9bIfP^8T=*>-s-+7X4p3fyt85^_%JSn|1^JlOgfbK;a1q zz8^jkHp!p4_|iWnNKL!1iMVTRMJ@`tmV9{)Eg=M+Gl=R$J^paOF-60os`ftLEewX4O1l zHFu%Xq02FnwjrvqzjzIWACmhX2sDTGcd><1?2J$jz$xcFzwmFs^MDZQI2Cemwq%vHp{lIrJMzKJ+i<)iUWwgkqZ2<9l)Nf-o$w z3_n!Rg8)RtM8-rG0}pLJf$~t7qzk%XED@f+))ciAk~~ z)9XhL@aKEzSHk_u?XR{aoU5+!^-7x$1jM8qFKEk=yC_fj@gv1+I+v ztCI`XpZ_>6eqAjmsEB&z4=lagfv%3@?ZNL&zvXw_V~I~79(T%_oHSM1XK*#JsGJNg zh4(*~)+rSa36RRLp71XVA{?n-ZK*!nxo@2ZbilhO?}tg{fa(B5Dlb1=xb`M3ZT~`% zlhEt8zA_q6;yYlY_lNU{ZauSU^FiUqPIHti_0ie!rpgg1y#L#Ce3q=;%|a}cJ`S00 z96}Et^7}iwI)X9T{&41{H|Q)0ue>!K_WOwXHaH@?*MKAr!TYNzX^#Zn-^S7`3eDY) zBZ|=a{@vq2O>BWjjAh}ddnX~)?D+y9qU3BuIH5iasaxw1{9{9Yu!=ozfdeBvG_bu- zbHXEqO%VRTAJ8JVS>-pgzR5CKxfgs3NYW7ALLM85A)@Yx=1e!nrz=jHt<8)Dp=iO< zEn6(`;>7ISKAeg1@#!~bgs0S~)f3QHUxMt&??!c&Del$vh0xLy^RykK+JdAKeg`qv z`K))1u9yP_Z8YGK=6Vqw5`I3ar_Qiiw~GsU7wL201Z#x>HS!Vti7j(hiLk`SBEizH z-=BTIwgCE5hS0CSL_M*(>X4O&tg*Bqob4vAKhuOEBhcc?wk`2Fv~%lW-&-d+LO*^N zKWdOL`dRWhF1>z7l=+30(lS9#mTfr+y^__Vryv2R_H~)46`x#lYg3>dRhaWuJI=TQvy4D}4doR8g#V{+0gXu%Z&AC5ZQy6fP5CYQsWi$}d#-q^OfVO5 z;c0bguN^YY<;fqru8;UA!AI$;S;m;I&L`1^O?P2)dna@Sb#LP;hi4_J7#dHJa(uP! y!5#J0ttG+VN0@5Wjld#BKp8P)7xZL+Kd*XEBZ@MmFn`wz&`{BRQmynN>i+@DSIDx74zrba#uQw6ydRN=kRvF4EE>T_Oz^h#$~Dz{0{J)=*bA#KOXc+#N*(ICobZlGs)5 z7GwI_#wutudS`d1Eke@R*f=LA$IQ&^`1qK@e1C3kj*X4Y!^6YU@k2}@sJ zzo(~XaB#4`zTVl{xw^W>&d#p0vl9x19vvOEwzh6=!hfv%SX^A}@9#%!A(ks%4(Gp4 zN=n+_N5NpQ=BDP^*;$Mx7HqCNH8oW&|Dy3rBdwnxVzw(iEggfLXDwi$^T#}HPq-d> z)zI+e=VBz4-LYW&+3x{~?yA6Z__ymSQLd&hyKCRSZO-t1kN+n5H0(C&cNg_JtSVu~ zaOdRDEb4l8udj6K_w~&!SH0GFXV%+JF^7#VJLp3ij}612V&p_ss0H@+*KcFij_lwb zxm3N$iw?+Y8#?CRsms01j!^CaoSkCq*5#WFZ?2S-w7RMGUR0r5!_TU1PnwjzK=yB(|%>r*Pg5gcy~MEhHAQbAeIII+2J9rFS(4% zx3RD|&>G4L#-No0@P^0A2=(yrLscW&d{La1-le|R?`dO7PO2G-Cf*TT+E;77dxq*a zO*OUT?RXbgY+S8*&9WLj|MeW&?dW>i&*?UEl&0Led;R(~kXdaP;k~oO_;_o%(UJ1p zSmkJlVmaiPvUb5N*|8qW9J8#{0(q9>3OTt0X{C=OG2d4S>Xu1gK{TOZY?tB#8!W(@#2$aYr>D)Bl z5NDpyVaO^wOB`OJJ%I2--kL(;o(0acp21+J45^zoe}f_|(=sxKA2plONws2ixY}i! zx{F@Ep2q72Ih#Jlrv8k=GQ)vBE4DfxekIM;049G&CeG&pcLk13a=C=CJj;*iljn7Q zHf`H?aO>Y|8)B0DcxK!n4&tfZ9r&SI%LP;&NkO)avS$j;y1&H&hnd7)w)a2)AgN3xFSVAkhpU+W-lsN5lXgQqv@dwxc)u2wNWgH>!9rxyK*fI!AO zfb0(s|KbwcukJ~?@Z^pnobrPS){gma5w9Paug696jTfDj{vZx5&)T2UQ7Mw-=ZnLp zL;-nPkS`wQO}WtMnHlIhb^q{{EWu&WGFJ*)*ga}Q<(S*XYcj{fGG2NzC~*LLwN+npwGxV3-pUS{x4&0p1&Rff} zlKo3B2O|`LJOdFR{TO`AM+gyfc;FXBU=02T5Ge`D32}u~o8oU;u|?3)Xa3mxjUGPT z4FUGpsyoFx$TeN=of8$B^|`$d{_|?-w-*gWOs$a_*k*qPytS_GL?@6!amMB7HI z-!e5Tei|B<44wX2M!asDxQ2aSX01J8sxMlT`0Upj$RT^XsGR1B%Z!-PDAGir@rC5d z%&I_oaHrSS`1AmNUkRT-!t*-PIBB5s0ZTKGY^C&zD4Q|^<7rBYJ-$vbEwGAxEtdO9 z6sG!E#@4$@zqK-~V=rGwU5$d}zFySiZa03onL^%)7;jDqk8l@{Hby%Ddm@MjXaQ(N zIGt+@S4T3{Lb>1!C2XzVe3J};c0ksm6-5dbcuP}8k+&?QOH&b?zb-PT$8gpQRD(%&wc#h!pIo%ZDNmKAN&Kd1b1+p5q1i7o9 zk<(v%ZY{f$Sa!XC5kx@jWkMw;Rm&qKpjaFwu&*o@*BpAs146&rCdh=vkj}8a@Y664 zSG`l1Lc5xUUN7z8UR9lo75+Pf23$syM(NoxDDAHc|F4q&>YWX88v^vODVk?yfYxRL zHuGDn=TWn$hy7QVfw0C^puagIN4N(D(ya*|a5MF=_CDtV=7kid=jGS$7m%_4EQe)n zHwH57!za$KEdNjY=kr%rD4XV9#PjSULxG!30P6m|A34HU&?7@Y$FXN~u(LDOG?4jO z=z(;dy{-}s9?STBNK?pdn#%}^-!NiL6Rg+gYr3nrXvV-jm7KgPZ}B24x1Ft*~0k2c0W-<}P{-!yAyB9cP+2QgU5dFG# z+Tv4hs0M4tI}Tg&d(UQ%i3IGvelfH2V)5pVRu&Y+yz3mM{UrSot8`*wOgDl1um@(l zsK~r=p|7@@VfC^rmZG&fKbeA@-a0SVOwr4gkjXw!Cv8eX2u{d{i zwSDa9*i(4e{QUZMh@CNe`g8R8zy367)wi>84KlW^FEZ@gfHDE@vSLBE_Sv7oSHi~w z5rLuY-2IM;yMytUmcVA7lnL9gVKkvrW~i~*#gO<6?J`$0{j;g~@ZxDTein9#rOG+p z0H%JDG=4VXb-dR_ABg1ttprJ@A(RJXXJ)^|G?B3lt;nG#+h@!VD~D<~0U`-d4ToK?F-47ImyTt%rpGjI9%piX@~%m=w(-1tXis~8JTyo zt-7HcYbx+#T~~yoaUQv)D)9EF8`7%m5$ww4Q2utg6faP;A_EsT#S*Jd{bi=y;Y zO(AL%*S zSupm?>x#(RVzbiA(ezD?)Fz`nK^=b_(3uALL z*KLgyS;LvC-OlD@e5nW9EOdHzMsYzk+tCZ5*lRF`)1H512jnAQJ;qGt$cFm0HQmHtufENp0XOi2j>_U?vh?gjs zKuQZkdp{^!p^u`W{dM^}nrpL?u^B+cBUso#OP7E&w0|0rVwLVj`PdlZoA<^_#eBvktz6myiifuzHp6T#UbC@b#u zP9zb~{swVZY|obte|Woh%mb8RXHA{_e=3^0D&{e|t5mTU*9SPos6)|K45a zg+ZT@tJeY9m2slG@R+Nics_S!Hy@;(urC!Xqqu(j%r+2PwnOD58OgR$SwC5-uJfs# z14WA%bC^Su(U((53JD9^BfOqM&P>alz3_SZUf~nJ&_}S`<<$hU&x6C7_XcsMabESp zjTXn;2Zvr^b{;SIpqI4`l$$UXfbG7?doqGL`oM=}?72cBDe-StP1cE=y8r{47v*s^UKP3y3E5B$0`-v+?XVQ1@<%Y)fC09p@fZ+HiY`X zj!wUu8oAu~TN0#5l76mabsKHnTM;Kees7qDP03neLjX%LZ zmE_+N{lDA>`pN;^o4X4EL1|xow**MFtZ&^X*&Ma{^i^Xpz!JwYWP7eX&gO<-6JVPh zXXN-0?P`J%k^H(iLe`o)k57msPW}@1T6jOg!8Ou%h%k4)aYy#;DvXwpl-&P>qyMeQ z(lMIQdi|I{bpqH?_Z&<=C+pjShc_vSHRTfESSYx8M9c}op|D#UIF8l+1x{sq`sCcm zv?6z4iPqLfL5akyfB7SH*!YXB ztH%F$HaYP+=BaXwZ3^iPCq_wxEAYT7u;q_Jc2Y#^+i)uBN&n=ZFVPrJ(RK@98@*CB z2n7Z>GB`5e;8>DAdzz(|Y=z{XtF--08bV1<oulGPhVi7F1V3KnDu>&^)Vgisdhs-F0IE`1b{9B3R{d!2`6_3=Y z>UWTOPij6|`#Y%I$8(aLgXmb1)~rXs#1n;8D6Ux{Ch-|%0Up-HQ?rN;<3Z-8$(>Yx8<786y1(EEy-dOf z1HfUse7a0#9~-#9MEm=1sN~GvqG$yY1r5$a#G*Uew-$nRmL(|*oxEp(W~;5u#B0dW;BTS@ayY18D98>z<8UPhZz$FdtIKCfqba zZj9xTCP#ttK2<8cbH^49WE7gtv;BC)P!hcl-io2ayosrZ%>$G|WhA8e;B->rebU#f{~!e`i+iG{WD?`YZA4YbS$IF`&?gcXS-N%Z6v9y59Pu|rzc<_zj9#RsPH z+zl;xpnY7&NufhXKe$1*kp~*nzm&}sr$)_Fu^TRU#%h1VpW3eY_^g z>{~GjFX1*m(ZP9vL@g9oOjdGym`GRq93X@!;(uA>&fCs=1q?8rr#R?-L>ojIY>YWm zTXUdzibB~irDv*q)_2RJp9A<(g0|Yjj_R}=<2GjL=qScU<6jr8L{=wh=4|7>BAdy`J)KzjIO7{pph;TcC9@srcc5mX}%YvW`D^fxz1~W6WvXaKf96%;u zEQ`J?LO6l1PM)+@B2sC36`K)Xn(p2b9$>^%!$gxbj~V&P>xsmtPJx#IA<73=!XJdG zfDbAK!aq3EFi*{_E&;(bt=R>#+3v1ILi&Jwoz}F~j9|!Q zJWA%5?R#d-YQYx`{g%uIwO+M8Z=W+gm{D&!bjMo*bl4}{tLdKqN4T>+STb9;{+TzI z7Uo+RRcOZeE{W)@#E`C`aR)9icPs85wB+3P(xXE*pkp@H%` z3Nb)G|G`4BX3!UY8~#M6qjC&qYv!oijh?#4naN;!D!RtbpJdRL=LlIhh%@>qBXTRN z-)U9nu@o*-oa6cLV5%KlkEdVV1~_(lozF^7;Uo7!RfJ;RpcrX)SLctVN|=HQ!`;(U zkEicz(Ww|$NAY%7DV^8RB4FvrB7zyK7S<%W&*F_~lgx3wA3BO+eQ)e}VKNpk<*w45 zzGE)|?N7e&!79UMuJS*AfBiIQwG4wp##%cpFRE$zbJko`KT+&&QT&7C=0AUSk9+>~m0Ui? zh$!B|ih}wbR2y^bjbE3Wm4JX)sPK^fyzhMwxUjc3&q=*>?*8Z zstgh7A*rnyV}@(cL8`%|EG#|mK-zF9WimrxsbsR|t7Q|kY+k1^&YPT4i)75WOP;?H zgKm_ah?hmchc=SIel0sW(q#*tmx}@VtRfP=;cwo@s2Os|Ys_%mR*U$p-{ixQm6zEP z6u%bWhV#~CllQ8nETxaDUEIE7p0JcgQ7hI)b%Rxp4l)jXk7NoBXI{5bt40Q|Z z)W=Fm3Rlfz1ti;v_v2o_l`7f~-(=V)VTX7uuW(#3QSDVVys^}G zUSx3apiUtbnxK0Xw9?_V_?c~Z5De#>NYm}*7$Y`K>{OUWnyQ`8U%^(jLZPX&5hGd8z zj@kQpY+Y2U0Yy&8Mb zXh`4@l%_t(;ZU64jLQis+Bau;nrkr(Uw!2c9iZ zZ%)%#V-a@wLg9X%G6oHa^CA0LG@D}Db&>_FmW@YMg@YbF4`N2bPkH;5)YO|>Vd)I% ze%cT0XQJ|St)J=FFFF>d*wS}VtG43o;4rXr$hS8@T)p=9;tUh(_6>lxtE!y{dyDvMZpk?gQ__)V75CXcWD) zoD>c(>aRCd0uG{syKEX)X6H@Zy-v&Dw@xfT%vUtfv}o9%nVL8oceENmzl&HI2oCvp zZjH23eDllbCJ9dG8!VzdVD#4O`ZrR1tx-;1j&S2-dZF$hlkSdu6#a9ejX8^TD+bgd zN}yWi?LnMho^Ch8`Mu|*ya%r03rT2=AK?E1rdpWPJ!e-qiAciknof7ZK$ zAk820*U>H_eP&m)(BAz3TqAClC}Qw7^p7uYH^l1*D#um7OQj7yM*j|`JPYiT)OEMS zZ0UeSYfNSe6w2nLot6Vc(-*n^q&-rz{&-37p({xe+0)VK;PRSs|_XjqK+;QPn zQ00A@lG(GsBxh6t4a&U3EnHXiwC+K6DZ5S#@d8$0vr0db`^pdG4W^w@uj60%(vfu& zN>n`5Fw}3BYGalB)Y(jLZeOOVvj4GEneH=5Y<-Gp76dzYmwX)?w_ zLl1QdiQgd15wUm3+XV>fPRPsAR` zU>X-7h8r4grI)C!JG(FQrLr+s))5jSIo66pCIs=V_};}7`;IWC_9h^);^QKMzXEyw zd&S$mJy}9ojZ_z;E}ptzwoVT32T-R?i^hQkWI5{bq2?Ta(d}Qz`#0&l zF5rVqE6@mN$?D>DrR{mcL0_eOzsC0}{dpg7JXX%VdP3+6yO4ul@d6pjCrNC34ASAf zk$~a8baCHExasN=-D>&FqleR(A`z&litbXEqgE{!U)L^-C! zGE$$GbFN{?^bCNOI$$C_*8^Ah9al0EDL=94Xs$VpI7cM*AVto@IARQC;c81RfDW>> zv^>B;E5Xj}eqi@khG-gS+DKX=gq#k*QLy?*-USV=Opk23>4wlrSdwU#hTV8xk>rlNl`STGm3K9`(o55DT3P(HSShht7LepsqUr3kQtRH$R)_b zTut)UZAWZ-V9ors7}yrJEaID2J1D0W(C=bJsNs&~Q_pDbHxmxG&cfFkWVidix%QLK z>+kcvTx@BBRgRN{=$#Eu`AogqN)S<4h8#|8Ffy@iv^zf4C}7PFFx<+|qL9m6>cv>o0sR!PR5?Sda&j#icQ^2Kp=PL+)0$a@~*QGX^t= z@yr5HZEI`|p2ovCZrbm8Um2jw+_N&177@fo6?v!LUYfcEwA?PD8$D5l0b<}=xJ>IQ zf7*FrpZ9x}FX#k`|MKKNF#K2BL%EyF_A8W$FN^hh!a*}X*XNe27YR};89Qw_swY+L z9&7xOTCX8Zj&bb&dxtU7F~s!FRi-yUbs%M(-5~cy>&0vs;PslLzidOduS;;J1?I7y@p-+|0RP#}TeBjLRiO!Ye$oixLp0l_8n&vyostNv+GZL&z z(TLj0TZ#|Lj+OTutWn={l2<1d)Vy+7dX3UlQb~Q#vOQ;Qq;rV(;^y`c?B-D=LOHDU z(XMDRIu?#YK2C}+mNgzdAh2A0ee-no&}j@YXJ1!M0c zW;q^_SaR;l98gcybP9|r>7<>t4jdgbf80mW0$vX zFe;wo@z#rft5U@G8D#Ow^4O`oVI;J$-ybh^j6-zG10neHF^z7%HiVZg7W(R>A$oVI z+sxvt@;omMUF!HAhqyy8oe@hMaVBt7e|Yqe$OwNcAlFZJU@du+Ke#ivx;aCgsKPBe z<%^!QTNbM-ND*S=^zjp5oBeejp#V14ZhOB#epZn1DkEOF!8=CJfG-Ia zZ-)kKeoZ~@#tja%p%%m8ZVkRQ_eB{i09Il{PHd;Q&rKBOdBgeb9oNAJA9(OWw3{FP zdPZ>!X7}#}Cp`)R7JKDyO$(9SZed?_gNEt1d!Gg9GZSUt<7_Jgi0CtC;3J-jaiqs)+6pP%tl81lkD5nX~M7ocXTc;J+0R8g>pa#L0x zVJ9!8cswqv_qA2yZou7gK0GNZPu^1U%lgOYNF~{O%8%T~Z?t0Mbi7fYl+Ez1T-3}@ z1$C0~B5?fwssC+``B2)q|6Deh?0T7EFw=*<=Y_@?Jm7UQmbW|4IX z=b?5d-$n$9mLHF#+Xi#G4sQ-`YFK@8vU6wOzv2xT%fY>V` zIr8w6)I!)z1X?_AE(`CF_2S7yrIChDbM6WDgFgQh{Bc>6fFY|eOzLN*W)1pSV$ICI zQmUx^P&jZZFsew~Cih^U_$)W@LB)vvdE`jWbwY#6Kl=E0C&XyiwV3}@O;J#q zl~vAuN!N+PqEa9Gtm(tjDedK|P`{u1%*eYKxnwq|{nDfkeLG15{;@fN$>q*;e{J}$ d={69;_fhB7QVZU9zjR??X{hKb*D1aZ{~uC^Hzxo9 literal 0 HcmV?d00001 diff --git a/docs/blog/2020-04-13-upgrading-to-jamstack-with-agility/post-image-3.png b/docs/blog/2020-04-13-upgrading-to-jamstack-with-agility/post-image-3.png new file mode 100644 index 0000000000000000000000000000000000000000..56acad47f7885dec9a9be64acdd4a160e5dea406 GIT binary patch literal 8931 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 literal 0 HcmV?d00001 diff --git a/docs/blog/2020-04-13-upgrading-to-jamstack-with-agility/post-image-4.png b/docs/blog/2020-04-13-upgrading-to-jamstack-with-agility/post-image-4.png new file mode 100644 index 0000000000000000000000000000000000000000..8591c472e3d6ac467fe98b7beb68f3f0bf6addfd GIT binary patch literal 15842 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

htX?LgpBEEv9k%m8) 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 V)RnKbA0KT46lGOqYNS4W|9{ChKzjfH literal 0 HcmV?d00001 diff --git a/docs/blog/2020-04-13-upgrading-to-jamstack-with-agility/post-image-5.png b/docs/blog/2020-04-13-upgrading-to-jamstack-with-agility/post-image-5.png new file mode 100644 index 0000000000000000000000000000000000000000..f774a63b65e2d217771e909467943300be6126c9 GIT binary patch literal 739545 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%0AFBbEqpOYUW|0d4Doa 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�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�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 u1;nZz#iylX$8Jfjv|tuRjWKH1_%|z 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 P00000NkvXXu0mjfdQ3AM literal 0 HcmV?d00001 diff --git a/docs/blog/2020-04-13-upgrading-to-jamstack-with-agility/post-image-6.png b/docs/blog/2020-04-13-upgrading-to-jamstack-with-agility/post-image-6.png new file mode 100644 index 0000000000000000000000000000000000000000..db693894bb03ab746a6d226438d6303925aacb76 GIT binary patch literal 13710 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 Q2P=T0teQ-{ltuXe04}y`?*IS* literal 0 HcmV?d00001 diff --git a/docs/blog/2020-04-13-upgrading-to-jamstack-with-agility/post-image-7.png b/docs/blog/2020-04-13-upgrading-to-jamstack-with-agility/post-image-7.png new file mode 100644 index 0000000000000000000000000000000000000000..029071e04469cda4359b1fe7ed7e7f5c30def124 GIT binary patch literal 20830 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ŜH=l9t=H7z{{b&o?=D`BPU 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 bF*^GB)!*!{&ibRX%y6(siSkdW`?>!C`4>IC literal 0 HcmV?d00001 diff --git a/docs/contributing/organize-a-gatsby-event.md b/docs/contributing/organize-a-gatsby-event.md index 6ac7030caa45f..849f66ffc22f5 100644 --- a/docs/contributing/organize-a-gatsby-event.md +++ b/docs/contributing/organize-a-gatsby-event.md @@ -2,4 +2,4 @@ title: Organize a Gatsby Event --- -**IMPORATANT NOTE ON COMMUNITY EVENTS: Promotion and support of Gatsby community events is currently suspended due to COVID-19. Stay tuned for updates on when our community events program will resume.** +**IMPORTANT NOTE ON COMMUNITY EVENTS: Promotion and support of Gatsby community events is currently suspended due to COVID-19. Stay tuned for updates on when our community events program will resume.** diff --git a/docs/contributing/translation/sync-guide.md b/docs/contributing/translation/sync-guide.md index 4e652cc8113a9..ff2a4ae44a1b9 100644 --- a/docs/contributing/translation/sync-guide.md +++ b/docs/contributing/translation/sync-guide.md @@ -2,7 +2,11 @@ title: Keeping Translations Up-to-date --- -Periodically, gatsbybot will update your translation repo to be up-to-date with the current English repo. If there is an update to a page that is already translated, gatsbybot will create a pull request listing the conflicts between translation and the new English content. Resolving these conflicts and merging these pull requests is essential to keeping your translation repo up-to-date. +Every Friday at 6:00 PM PST, gatsbybot will run a sync script on every translation repo to bring them up-to-date with the current English repo. If there is an update to a page that is already translated, gatsbybot will create a pull request listing the conflicts between the translation and the new English content. Resolving these conflicts and merging these pull requests is essential to keeping your translation repo up-to-date. + +## Gatsbybot sync behavior + +If there are existing sync pull requests marked by the `sync` label, gatsbybot will skip the repository until the next time it runs. Because of this, it is important to make sure that you merge sync and conflict pull requests promptly, so that stale translations don't build up. ## Resolving sync pull requests diff --git a/docs/docs/add-custom-webpack-config.md b/docs/docs/add-custom-webpack-config.md index 60a40ee01668d..00c75eebc2a47 100644 --- a/docs/docs/add-custom-webpack-config.md +++ b/docs/docs/add-custom-webpack-config.md @@ -75,6 +75,19 @@ exports.onCreateWebpackConfig = ({ stage, actions }) => { You can always find more information on _resolve_ and other options in the official [Webpack docs](https://webpack.js.org/concepts/). +### Importing non-webpack tools using `yarn` + +Note that using absolute imports only applies to webpack resolutions and will not work for other tools, e.g. eslint or typescript. +But if you are using yarn, then the best practice is to set up your imports in package.json as shown below: + +```js +{ + "dependencies": { + "hooks": "link:./src/hooks", + } +} +``` + ### Modifying the Babel loader You need this if you want to do things like transpile parts of `node_modules`. diff --git a/docs/docs/building-an-e-commerce-site.md b/docs/docs/building-an-e-commerce-site.md index 5eeecc6381b00..bf4bc0d56b7b1 100644 --- a/docs/docs/building-an-e-commerce-site.md +++ b/docs/docs/building-an-e-commerce-site.md @@ -4,7 +4,7 @@ title: Building an E-commerce Site The speed and performance of sites built with Gatsby make it a great tool for building e-commerce sites. There are existing plugins for connecting services like [Shopify](/packages/gatsby-source-shopify/) and [Snipcart](/packages/gatsby-plugin-snipcart/) to Gatsby, and this section contains reference guides to help get things setup. -To see examples of e-commerce sites built with Gatsby, check out the [showcase](/showcase/?filters%5B0%5D=eCommerce). +To see examples of e-commerce sites built with Gatsby, check out the [showcase](/showcase/?filters%5B0%5D=E-commerce). diff --git a/docs/docs/creating-a-source-plugin.md b/docs/docs/creating-a-source-plugin.md index 0af8ac02d0e47..fa905bcb9711b 100644 --- a/docs/docs/creating-a-source-plugin.md +++ b/docs/docs/creating-a-source-plugin.md @@ -4,11 +4,11 @@ title: Creating a Source Plugin Source plugins are essentially out of the box integrations between Gatsby and various third-party systems. -These systems can be CMSs like Contentful or WordPress, other cloud services like Lever and Strava, or your local filesystem -- literally anything that has an API. Currently, Gatsby has [over 300 source plugins](/plugins/?=gatsby-source). +These systems can be CMSs like Contentful or WordPress, other cloud services like Lever and Strava, or your local filesystem -- literally anything that has an API. Currently, Gatsby has [over 400 source plugins](/plugins/?=gatsby-source). Once a source plugin brings data into Gatsby's system, it can be transformed further with **transformer plugins**. For step-by-step examples of how to create source and transformer plugins, check out the Gatsby [tutorials section](/tutorial/plugin-and-theme-tutorials/). -## What do source plugins do? +## Overview of a source plugin At a high-level, a source plugin: @@ -18,26 +18,59 @@ At a high-level, a source plugin: - Links nodes & creates relationships between them. - Lets Gatsby know when nodes are finished sourcing so it can move on to processing them. -## What does the code look like? +A source plugin is a regular npm package. It has a `package.json` file, with optional dependencies, as well as a [`gatsby-node.js`](/docs/api-files-gatsby-node) file where you implement Gatsby's [Node APIs](/docs/node-apis/). Read more about [files Gatsby looks for in a plugin](/docs/files-gatsby-looks-for-in-a-plugin/) or [creating a generic plugin](/docs/creating-a-generic-plugin). -A source plugin is a regular NPM package. It has a `package.json` file with optional -dependencies as well as a [`gatsby-node.js`](/docs/api-files-gatsby-node) file where you implement Gatsby's [Node -APIs](/docs/node-apis/). Read more about [Files Gatsby Looks for in a Plugin](/docs/files-gatsby-looks-for-in-a-plugin/). +## Implementing features for source plugins -Gatsby's minimum supported Node.js version is Node 8 and as it's common to want to use more modern Node.js and JavaScript syntax, many plugins write code in a -source directory and compile the code. All plugins maintained in the Gatsby repo -follow this pattern. +Key features that are often built into source plugins are covered in this guide to help explain Gatsby specific helpers and APIs, independent of the source the data is coming from. -Your `gatsby-node.js` should look something like: +> You can see examples of all the features implemented in this guide (sourcing data, caching, live data synchronization, and remote image optimization) **in the working example repository** for [creating source plugins](https://github.com/gatsbyjs/gatsby/tree/master/examples/creating-source-plugins) which contains a local server you can run to test with an example source plugin. -```javascript:title=gatsby-node.js +### Sourcing data and creating nodes + +All source plugins must fetch data and create nodes from that data. By fetching data and creating nodes at [build time](/docs/glossary#build), Gatsby can make the data available as static assets instead of having to fetch it at [runtime](/docs/glossary#runtime). This happens in the [`sourceNodes` lifecycle](/docs/node-apis/#sourceNodes) with the [`createNode` action](/docs/actions/#createNode). + +This example—taken from [the `sourceNodes` API docs](/docs/node-apis/#sourceNodes)—shows how to create a single node from hardcoded data: + +```javascript:title=source-plugin/gatsby-node.js +exports.sourceNodes = ({ actions, createNodeId, createContentDigest }) => { + const { createNode } = actions + + // Data can come from anywhere, but for now create it manually + const myData = { + key: 123, + foo: `The foo field of my node`, + bar: `Baz`, + } + + const nodeContent = JSON.stringify(myData) + + const nodeMeta = { + id: createNodeId(`my-data-${myData.key}`), + parent: null, + children: [], + internal: { + type: `MyNodeType`, + mediaType: `text/html`, + content: nodeContent, + contentDigest: createContentDigest(myData), + }, + } + + const node = Object.assign({}, myData, nodeMeta) + createNode(node) +} +``` + +Source plugins follow the same pattern, the only difference is that data comes from other sources. Plugins can leverage Node.js built-in functions like `http.get`, libraries like `node-fetch` or `axios`, or even fully-featured GraphQL clients to fetch data. With data being returned from a remote location, the plugin code can loop through and create nodes programmatically: + +```javascript:title=source-plugin/gatsby-node.js exports.sourceNodes = async ({ actions }) => { const { createNode } = actions - // Create nodes here, generally by downloading data - // from a remote API. + // Download data from a remote API. const data = await fetch(REMOTE_API) - // Process data into nodes. + // Process data and create nodes.using a custom processDatum function data.forEach(datum => createNode(processDatum(datum))) // You're done, return. @@ -45,120 +78,409 @@ exports.sourceNodes = async ({ actions }) => { } ``` -Peruse the [`sourceNodes`](/docs/node-apis/#sourceNodes) and -[`createNode`](/docs/actions/#createNode) docs for detailed -documentation on implementing those APIs. +The [`createNode`](/docs/actions/#createNode) function is a Gatsby specific action. `createNode` is used to create the nodes that Gatsby tracks and makes available for querying with GraphQL. -### Transforming data received from remote sources +_Note: **Be aware of asynchronous operations!** Because fetching data is an asynchronous task, you need to make sure you `await` data coming from remote sources, return a Promise, or return the callback (the 3rd parameter available in lifecycle APIs) from `sourceNodes`. If you don't, Gatsby will continue on in the build process, before nodes are finished being created. This can result in your nodes not ending up in the generated schema at compilation time, or the process could hang while waiting for an indication that it's finished. You can read more in the [Debugging Asynchronous Lifecycle APIs guide](/docs/debugging-async-lifecycles/)._ -Each node created by the filesystem source plugin includes the -raw content of the file and its _media type_. +### Caching data between runs -[A **media type**](https://en.wikipedia.org/wiki/Media_type) (also **MIME type** -and **content type**) is an official way to identify the format of -files/content that is transmitted on the internet, e.g. over HTTP or through -email. You might be familiar with other media types such as -`application/javascript`, `application/pdf`, `audio/mpeg`, `text/html`, -`text/plain`, `image/jpeg`, etc. +Some operations like fetching data from an endpoint can be performance heavy or time-intensive. In order to improve the experience of developing with your source plugin, you can leverage the Gatsby cache to store data between runs of `gatsby develop` or `gatsby build`. -Each source plugin is responsible for setting the media type for the nodes they -create. This way, source and transformer plugins can work together easily. +You access the `cache` in Gatsby Node APIs and use the `set` and `get` functions to store and retrieve data as JSON objects. -This is not a required field -- if it's not provided, Gatsby will [infer](/docs/glossary#inference) the type from data that is sent -- but it's the way for source plugins to indicate to -transformers that there is "raw" data that can still be further processed. It -also allows plugins to remain small and focused. Source plugins don't have to have -opinions on how to transform their data: they can set the `mediaType` and -push that responsibility to transformer plugins, instead. +```javascript:title=source-plugin/gatsby-node.js +exports.onPostBuild = async ({ cache }) => { + await cache.set(`key`, `value`) + const cachedValue = await cache.get(`key`) + console.log(cachedValue) // logs `value` +} +``` -For example, it's common for services to allow you to add content in -Markdown format. If you pull that Markdown into Gatsby and create a new node, what -then? How would a user of your source plugin convert that Markdown into HTML -they can use in their site? You would create a -node for the Markdown content and set its `mediaType` as `text/markdown` and the -various Gatsby Markdown transformer plugins would see your node and transform it -into HTML. +The above snippet shows a contrived example for the `cache`, but it can be used in more sophisticated cases to reduce the time it takes to run your plugin. For example, by caching a timestamp, you can use it to fetch solely the data that has been updated since the last time data was fetched from the source: -This loose coupling between the data source and the transformer plugins allow Gatsby site builders to assemble complex data transformation pipelines with -little work on their (and your (the source plugin author)) part. +```javascript:title=source-plugin/gatsby-node.js +exports.sourceNodes = async ({ cache }) => { + // get the last timestamp from the cache + const lastFetched = await cache.get(`timestamp`) -## Getting helper functions + // pull data from some remote source using cached data as an option in the request + const data = await fetch( + `https://remotedatasource.com/posts?lastUpdated=${lastFetched}` + ) + // ... +} -[`gatsby-node-helpers`](https://github.com/angeloashmore/gatsby-node-helpers), -a community-made NPM package, can help when writing source plugins. This -package provides a set of helper functions to generate Node objects with the -required fields. This includes automatically generating fields like node IDs -and the `contentDigest` MD5 hash, keeping your code focused on data gathering, -not boilerplate. +exports.onPostBuild = async ({ cache }) => { + // set a timestamp at the end of the build + await cache.set(`timestamp`, Date.now()) +} +``` -## Gotcha: don't forget to return! +> In addition to the cache, plugins can save metadata to the [internal Redux store](/docs/data-storage-redux/) with `setPluginStatus`. -After your plugin is finished sourcing nodes, it should either return a Promise or use the callback (3rd parameter) to report back to Gatsby when `sourceNodes` is fully executed. If a Promise or callback isn't returned, Gatsby will continue on in the build process, before nodes are finished being created. Without the necessary return statement your nodes might not end up in the generated schema at compilation time, or the process will hang while waiting for an indication that it's finished. +This can reduce the time it takes repeated data fetching operations to run if you are pulling in large amounts of data for your plugin. Existing plugins like [`gatsby-source-contentful`](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-source-contentful/src/gatsby-node.js) generate a token that is sent with each request to only return new data. -## Advanced +You can read more about the cache API, other types of plugins that leverage the cache, and example open source plugins that use the cache in the [build caching guide](/docs/build-caching). ### Adding relationships between nodes Gatsby source plugins not only create nodes, they also create relationships between nodes that are exposed to GraphQL queries. -There are two ways of adding node relationships in Gatsby: (1) transformations (parent-child) or (2) foreign-key based. - -#### Option 1: transformation relationships +There are two types of node relationships in Gatsby: (1) foreign-key based and (2) transformations (parent-child). -An example of a transformation relationship is the `gatsby-transformer-remark` plugin, which transforms a parent `File` node's markdown string into a `MarkdownRemark` node. The Remark transformer plugin adds its newly created child node as a child of the parent node using the action [`createParentChildLink`](/docs/actions/#createParentChildLink). Transformation relationships are used when a new node is _completely_ derived from a single parent node. E.g. the markdown node is derived from the parent `File` node and wouldn't ever exist if the parent `File` node hadn't been created. +#### Option 1: foreign-key relationships -Because all children nodes are derived from their parent, when a parent node is deleted or changed, Gatsby deletes all of the child nodes (and their child nodes, and so on) with the expectation that they'll be recreated again by transformer plugins. This is done to ensure there are no nodes left over that were derived from older versions of data but shouldn't exist any longer. +An example of a foreign-key relationship would be a `Post` type (like a blog post) that has an `Author`. -_Creating the transformation relationship_ +In this relationship, each object is a distinct entity that exists whether or not the other does. They could each be queried individually. -In order to create a parent/child relationship, when calling `createNode` for the child node, the new node object that is passed in should have a `parent` key with the value set to the parent node's `id`. After this, call the `createParentChildLink` function exported inside `actions`. - -_Examples_ +```graphql +post { + id + title +} +author { + id + name +} +``` -[Here's the above example](https://github.com/gatsbyjs/gatsby/blob/72077527b4acd3f2109ed5a2fcb780cddefee35a/packages/gatsby-transformer-remark/src/on-node-create.js#L39-L67) from the `gatsby-transformer-remark` source plugin. +Each type has independent schemas and field(s) on that reference the other entity -- in this case the `Post` would have an `Author`, and the `Author` might have `Post`s. The API of a service that allows complex object modelling, for example a CMS, will often allow users to add relationships between entities and expose them through the API. This same relationship can be represented by your schema. + +```graphql +post { + id + title + // highlight-start + author { + id + name + } + // highlight-end +} +author { + id + name + // highlight-start + posts { + id + title + } + // highlight-end +} +``` -[Here's another example](https://github.com/gatsbyjs/gatsby/blob/1fb19f9ad16618acdac7eda33d295d8ceba7f393/packages/gatsby-transformer-sharp/src/on-node-create.js#L3-L25) from the `gatsby-transformer-sharp` source plugin. +When an object node is deleted, Gatsby _does not_ delete any referenced entities. When using foreign-key references, it's a source plugin's responsibility to clean up any dangling entity references. -#### Option 2: foreign-key relationships +##### Creating the relationship -An example of a foreign-key relationship would be a Post that has an Author. +Suppose you want to create a relationship between `Post`s and `Author`s in order to query the `author` field on a post: + +```graphql +query { + post { + id + // highlight-start + author { + id + name + } + // highlight-end + } +} +``` -In this relationship, each object is a distinct entity that exists whether or not the other does, with independent schemas, and field(s) on each entity that reference the other entity -- in this case the Post would have an Author, and the Author might have Posts. The API of a service that allows complex object modelling, for example a CMS, will often allow users to add relationships between entities and expose them through the API. +For Gatsby to automatically infer a relationship, you need to create a field called `author___NODE` on the Post object to hold the relationship to Authors before you create the node. The value of this field should be the node ID of the Author. -When an object node is deleted, Gatsby _does not_ delete any referenced entities. When using foreign-key references, it's a source plugin's responsibility to clean up any dangling entity references. +```javascript:title=source-plugin/gatsby-node.js +exports.sourceNodes = ({ actions, createContentDigest }) => { + const { createNode } = actions + createNode({ + // Data for the Post node + author___NODE: ``, // highlight-line + // Required fields + id: `a-node-id`, + parent: null + children: [], + internal: { + type: `post`, + contentDigest: createContentDigest(fieldData), + } + }) +} +``` -##### Creating the relationship +For a stricter GraphQL schema, you can specify the exact field and value to link nodes using schema customization APIs. -Suppose you want to create a relationship between Posts and Authors, and you want to call the field `author`. +```javascript:title=source-plugin/gatsby-node.js +exports.sourceNodes = ({ actions, createContentDigest }) => { + const { createNode } = actions + createNode({ + // Data for the Post node + // highlight-start + author: { + name: `Jay Gatsby`, + }, + // highlight-end + // Required fields + id: `a-node-id`, + parent: null + children: [], + internal: { + type: `post`, + contentDigest: createContentDigest(fieldData), + } + }) +} -Before you pass the Post object and Author object into `createNode` and create the respective nodes, you need to create a field called `author___NODE` on the Post object to hold the relationship to Authors. The value of this field should be the node ID of the Author. +exports.createSchemaCustomization = ({ actions }) => { + const { createTypes } = actions + createTypes(` + type Post implements Node { + id: ID! + # create a relationship between Post and the File nodes for optimized images + author: Author @link(from: "author.name" by: "name") // highlight-line + # ... other fields + }`) +} +``` ##### Creating the reverse relationship -It's often convenient for querying to add to the schema backwards references. For example, you might want to query the Author of a Post but you might also want to query all the posts an author has written. +It's often convenient for querying to add to the schema backwards references. For example, you might want to query the author of a post, but you might also want to query all the posts an author has written. -If you want to call this field on `Author` `posts`, you would create a field called `posts___NODE` to hold the relationship to Posts. The value of this field should be an array of Post IDs. +If you want to call a field to access the author on the `Post` nodes using the inference method, you would create a field called `posts___NODE` to hold the relationship to posts. The value of this field should be an array of `Post` IDs. Here's an example from the [WordPress source plugin](https://github.com/gatsbyjs/gatsby/blob/1fb19f9ad16618acdac7eda33d295d8ceba7f393/packages/gatsby-source-wordpress/src/normalize.js#L178-L189). +With schema customization, you would add the `@link` directive to your Author type. The `@link` directive will look for an ID on the `post` field of the Author nodes, which can be added when the Author nodes are created. + +```javascript:title=source-plugin/gatsby-node.js +exports.createSchemaCustomization = ({ actions }) => { + const { createTypes } = actions + createTypes(` + type Post implements Node { + id: ID! + # create a relationship between Post and the File nodes for optimized images + author: Author @link(from: "author.name" by: "name") // highlight-line + # ... other fields + } + + type Author implements Node { + name: String! + post: Post @link // highlight-line + }`) +} +``` + +You can read more about connecting foreign key fields with schema customization in the guide on [customizing the GraphQL schema](/docs/schema-customization/#foreign-key-fields). + +#### Option 2: transformation relationships + +When a node is _completely_ derived from another node you'll want to use a transformation relationship. An example that is common in source plugins is for transforming File nodes from remote sources, e.g. images. You can read about this use case in the section below on [sourcing images from remote locations](/docs/creating-a-source-plugin/#sourcing-images-from-remote-locations). + +You can find more information about transformation relationships in the [creating a transformer plugin guide](/docs/creating-a-transformer-plugin/#creating-the-transformer-relationship). + #### Union types -When creating fields linking to an array of nodes, if the array of IDs are all of the same type, the relationship field that is created will be of this type. If the linked nodes are of different types; the field will turn into a union type of all types that are linked. See the [GraphQL documentation on how to query union types](https://graphql.org/learn/schema/#union-types). +For either type of relationship you can link a field to an array of nodes. If the array of IDs all correspond to nodes of the same type, the relationship field that is created will be of this type. If the linked nodes are of different types the field will turn into a union type of all types that are linked. See the [GraphQL documentation on how to query union types](https://graphql.org/learn/schema/#union-types). + +### Working with data received from remote sources + +#### Setting media and MIME types + +Each node created by the filesystem source plugin includes the raw content of the file and its _media type_. + +[A **media type**](https://en.wikipedia.org/wiki/Media_type) (also **MIME type** and **content type**) is an official way to identify the format of files/content that are transmitted via the internet, e.g. over HTTP or through email. You might be familiar with other media types such as `application/javascript`, `audio/mpeg`, `text/html`, etc. + +Each source plugin is responsible for setting the media type for the nodes it creates. This way, source and transformer plugins can work together easily. + +This is not a required field -- if it's not provided, Gatsby will [infer](/docs/glossary#inference) the type from data that is sent -- but it's how source plugins indicate to transformers that there is "raw" data the transformer can further process. + +It also allows plugins to remain small and focused. Source plugins don't have to have opinions on how to transform their data: they can set the `mediaType` and push that responsibility to transformer plugins instead. + +For example, it's common for services to allow you to add content in Markdown format. If you pull that Markdown into Gatsby and create a new node, what then? How would a user of your source plugin convert that Markdown into HTML they can use in their site? You would create a node for the Markdown content and set its `mediaType` as `text/markdown` and the various Gatsby Markdown transformer plugins would see your node and transform it into HTML. -#### Further specification +This loose coupling between the data source and the transformer plugins allow Gatsby site builders to assemble complex data transformation pipelines with little work on their (and your (the source plugin author)) part. -See -[_Node Link_](/docs/api-specification/) in the API Specification concepts -section for more info. +#### Sourcing and optimizing images from remote locations + +A common use case for source plugins is pulling images from a remote location and optimizing them for use with [Gatsby Image](/packages/gatsby-image/). An API may return a URL for an image on a CDN, which could be further optimized by Gatsby at build time. + +This can be achieved by the following steps: + +1. Install `gatsby-source-filesystem` as a dependency in your source plugin: + +``` +npm install gatsby-source-filesystem +``` + +2. Create File nodes using the `createRemoteFileNode` function exported by `gatsby-source-filesystem`: + +```javascript:title=source-plugin/gatsby-node.js +const { createRemoteFileNode } = require(`gatsby-source-filesystem`) + +exports.onCreateNode = async ({ + actions: { createNode }, + getCache, + createNodeId, + node, +}) => { + // because onCreateNode is called for all nodes, verify that you are only running this code on nodes created by your plugin + if (node.internal.type === `your-source-node-type`) { + // create a FileNode in Gatsby that gatsby-transformer-sharp will create optimized images for + const fileNode = await createRemoteFileNode({ + // the url of the remote image to generate a node for + url: node.imgUrl, + getCache, + createNode, + createNodeId, + parentNodeId: node.id, + }) + } +} +``` + +3. Add the ID of the new File node to your source plugin's node. + +```javascript:title=source-plugin/gatsby-node.js +const { createRemoteFileNode } = require(`gatsby-source-filesystem`) + +exports.onCreateNode = async ({ + actions: { createNode }, + getCache, + createNodeId, + node, +}) => { + // because onCreateNode is called for all nodes, verify that you are only running this code on nodes created by your plugin + if (node.internal.type === `your-source-node-type`) { + // create a FileNode in Gatsby that gatsby-transformer-sharp will create optimized images for + const fileNode = await createRemoteFileNode({ + // the url of the remote image to generate a node for + url: node.imgUrl, + getCache, + createNode, + createNodeId, + parentNodeId: node.id, + }) + + // highlight-start + if (fileNode) { + // with schemaCustomization: add a field `remoteImage` to your source plugin's node from the File node + node.remoteImage = fileNode.id + + // OR with inference: link your source plugin's node to the File node without schemaCustomization like this, but creates a less sturdy schema + node.remoteImage___NODE = fileNode.id + } + // highlight-end + } +} +``` + +Attaching `fileNode.id` to `remoteImage___NODE` will rely on Gatsby's [inference](/docs/glossary/#inference) of the GraphQL schema to create a new field `remoteImage` as a relationship between the nodes. This is done automatically. For a sturdier schema, you can relate them using [`schemaCustomization` APIs](/docs/node-apis/#createSchemaCustomization) by adding the `fileNode.id` to a field that you reference when you `createTypes`: + +```javascript:title=source-plugin/gatsby-node.js +exports.createSchemaCustomization = ({ actions }) => { + const { createTypes } = actions + createTypes(` + type YourSourceType implements Node { + id: ID! + # create a relationship between YourSourceType and the File nodes for optimized images + remoteImage: File @link // highlight-line + }`) +} +``` + +4. Verify that `gatsby-plugin-sharp` and `gatsby-transformer-sharp` are included in the site that is using the plugin: + +```javascript:title=gatsby-config.js +module.exports = { + plugins: [ + // loads the source-plugin + `your-source-plugin`, + // required to generate optimized images + `gatsby-plugin-sharp`, + `gatsby-transformer-sharp`, + ], +} +``` + +Then, the sharp plugins will automatically transform the File nodes created by `createRemoteFileNode` in `your-source-plugin` (which have supported image extensions like .jpg or .png). You can then query for the `remoteImage` field on your source type: + +```graphql +query { + yourSourceType { + id + remoteImage { + childImageSharp { + # fluid or fixed fields for optimzed images + } + } + } +} +``` ### Improve plugin developer experience by enabling faster sync -One tip to improve the development experience of using a plugin is to reduce the time it takes to sync between Gatsby and the data source. There are two approaches for doing this: +One challenge when developing locally is that a developer might make modifications in a remote data source, like a CMS, and then want to see how it looks in the local environment. Typically they will have to restart the `gatsby develop` server to see changes. In order to improve the development experience of using a plugin, you can reduce the time it takes to sync between Gatsby and the data source by enabling faster synchronization of data changes. There are two approaches for doing this: + +- **Proactively fetch updates**. You can avoid having to restart the `gatsby develop` server by proactively fetching updates from the remote server. For example, [gatsby-source-sanity](https://github.com/sanity-io/gatsby-source-sanity) listens to changes to Sanity content when `watchMode` is enabled and pulls them into the Gatsby develop server. The [example source plugin repository](https://github.com/gatsbyjs/gatsby/tree/master/examples/creating-source-plugins) uses GraphQL subscriptions to listen for changes and update data. +- **Add event-based sync**. Some data sources keep event logs and are able to return a list of objects modified since a given time. If you're building a source plugin, you can store the last time you fetched data using the [cache](/docs/creating-a-source-plugin/#caching-data-between-runs) or [`setPluginStatus`](/docs/actions/#setPluginStatus) and then only sync down nodes that have been modified since that time. [gatsby-source-contentful](https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-source-contentful) is an example of a source plugin that does this. + +If possible, the proactive listener approach creates the best experience if existing APIs in the data source can support it (or you have access to build support into the data source). + +The code to support this behavior looks like this: + +```javascript:title=source-plugin/gatsby-node.js +exports.sourceNodes = async ({ actions }, pluginOptions) => { + const { createNode, touchNode, deleteNode } = actions + + // highlight-start + // touch nodes to ensure they aren't garbage collected + getNodesByType(`YourSourceType`).forEach(node => touchNode({ nodeId: node.id })) + + // ensure a plugin is in a preview mode and/or supports listening + if (pluginOptions.preview) { + const subscription = await subscription(SUBSCRIPTION_TO_WEBSOCKET) + subscription.subscribe(({ data: newData }) => { + newData.forEach(newDatum => { + switch (newDatum.status) { + case "deleted": + deleteNode({ + node: getNode(createNodeId(`YourSourceType-${newDatum.uuid}`)), + }) + break + case "created": + case "updated": + default: + // created and updated can be handled by the same code path + // the post's id is presumed to stay constant (or can be inferred) + createNode(processDatum(newDatum)) + break + ) + } + }) + } + // highlight-end + + const data = await client.query(QUERY_TO_API) + + // Process data and create nodes.using a custom processDatum function + data.forEach(datum => createNode(processDatum(datum))) + + // You're done, return. + return +} +``` + +_Note: This is pseudo code to illustrate the logic and concept of how these plugins function, you can see an example in the [creating source plugins](https://github.com/gatsbyjs/gatsby/tree/master/examples/creating-source-plugins) repository._ + +Because the code in `sourceNodes` is reinvoked when changes in the data source occur, a few steps need to be taken to ensure that Gatsby is tracking the existing nodes as well as the new data. A first step is ensuring that the existing nodes created are not garbage collected which is done by "touching" the nodes with the [`touchNode` action](/docs/actions/#touchNode). -- **Add event-based sync**. Some data sources keep event logs and are able to return a list of objects modified since a given time. If you're building a source plugin, you can store - the last time you fetched data using - [`setPluginStatus`](/docs/actions/#setPluginStatus) and then only sync down nodes that have been modified since that time. [gatsby-source-contentful](https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-source-contentful) is an example of a source plugin that does this. -- **Proactively fetch updates**. One challenge when developing locally is that a developer might make modifications in a remote data source, like a CMS, and then want to see how it looks in the local environment. Typically they will have to restart the `gatsby develop` server to see changes. This can be avoided if your source plugin knows to proactively fetch updates from the remote server. For example, [gatsby-source-sanity](https://github.com/sanity-io/gatsby-source-sanity), listens to changes to Sanity content when `watchMode` is enabled and pulls them into the Gatsby develop server. +Then the new data needs to be pulled in via a live update like a websocket (in the example above with a subscription). The new data needs to have some information attached that dictates whether the data was created, updated, or deleted; that way, when it is processed, a new node can be created/updated (with `createNode`) or deleted (with `deleteNode`). In the example above that information is coming from `newDatum.status`. ## Additional resources -- Tutorial: [Creating a Pixabay Image Source Plugin](/tutorial/pixabay-source-plugin-tutorial/) +- Working example repository on [creating source plugins](https://github.com/gatsbyjs/gatsby/tree/master/examples/creating-source-plugins) with the features in this guide implemented +- Tutorial on [Creating a Pixabay Image Source Plugin](/tutorial/pixabay-source-plugin-tutorial/) +- [`gatsby-node-helpers`](https://github.com/angeloashmore/gatsby-node-helpers), a community-made npm package with helper functions to generate Node objects with required fields like IDs and the `contentDigest` MD5 hash. diff --git a/docs/docs/creating-a-transformer-plugin.md b/docs/docs/creating-a-transformer-plugin.md index 5ec01d2a7945a..19358dc4989eb 100644 --- a/docs/docs/creating-a-transformer-plugin.md +++ b/docs/docs/creating-a-transformer-plugin.md @@ -102,6 +102,8 @@ Now you have a `File` node to work with: Now, transform the newly created `File` nodes by hooking into the `onCreateNode` API in `gatsby-node.js`. +#### Convert yaml into JSON for storage in Gatsby nodes + If you're following along in an example project, install the following packages: ```shell @@ -137,41 +139,67 @@ File content: Parsed YAML content: -```javascript -;[ +```json +[ { - id: "Jane Doe", - bio: "Developer based in Somewhere, USA", + "id": "Jane Doe", + "bio": "Developer based in Somewhere, USA" }, { - id: "John Smith", - bio: "Developer based in Maintown, USA", - }, + "id": "John Smith", + "bio": "Developer based in Maintown, USA" + } ] ``` Now you'll write a helper function to transform the parsed YAML content into new Gatsby nodes: -```javascript +```javascript:title=gatsby-node.js function transformObject(obj, id, type) { const yamlNode = { ...obj, id, children: [], - parent: node.id, + parent: null, internal: { contentDigest: createContentDigest(obj), type, }, } createNode(yamlNode) - createParentChildLink({ parent: node, child: yamlNode }) } ``` Above, you create a `yamlNode` object with the shape expected by the [`createNode` action](/docs/actions/#createNode). -You then create a link between the parent node (file) and the child node (yaml content). +#### Creating the transformer relationship + +You then need to create a link between the parent node (file) and the child node (yaml content) using the `createParentChildLink` function after adding the parent node's id to the `yamlNode`: + +```javascript:title=gatsby-node.js +function transformObject(obj, id, type) { + const yamlNode = { + ...obj, + id, + children: [], + parent: node.id, // highlight-line + internal: { + contentDigest: createContentDigest(obj), + type, + }, + } + createNode(yamlNode) + createParentChildLink({ parent: node, child: yamlNode }) // highlight-line +} +``` + +Another example of a transformation relationship is the `gatsby-source-filesystem` plugin used with the `gatsby-transformer-remark` plugin. This combination transforms a parent `File` node's markdown string into a `MarkdownRemark` node. The remark transformer plugin adds its newly created child node as a child of the parent node using the action [`createParentChildLink`](/docs/actions/#createParentChildLink). Transformation relationships like this are used when a new node is _completely_ derived from a single parent node. E.g. the markdown node is derived from the parent `File` node and would not exist if the parent `File` node hadn't been created. + +Because all children nodes are derived from their parent, when a parent node is deleted or changed, Gatsby deletes all of the child nodes (and their child nodes, and so on). Gatsby does so with the expectation that they'll be recreated again by transformer plugins. This is done to ensure there are no nodes left over that were derived from older versions of data but should no longer exist. + +_For examples of other plugins creating transformation relationships, you can see the [`gatsby-transformer-remark` plugin](https://github.com/gatsbyjs/gatsby/blob/72077527b4acd3f2109ed5a2fcb780cddefee35a/packages/gatsby-transformer-remark/src/on-node-create.js#L39-L67) (from the above example) or the [`gatsby-transformer-sharp` plugin](https://github.com/gatsbyjs/gatsby/blob/1fb19f9ad16618acdac7eda33d295d8ceba7f393/packages/gatsby-transformer-sharp/src/on-node-create.js#L3-L25)._ + +#### Create new nodes from the derived data In your updated `gatsby-node.js`, you'll then iterate through the parsed YAML content, using the helper function to transform each into a new node: @@ -227,6 +255,8 @@ async function onCreateNode({ exports.onCreateNode = onCreateNode ``` +#### Query for the transformed data + Now you can query for your new nodes containing our transformed YAML data: ```graphql diff --git a/docs/docs/deploying-to-firebase.md b/docs/docs/deploying-to-firebase.md index 2fb8a440705ab..d0d159489f34a 100644 --- a/docs/docs/deploying-to-firebase.md +++ b/docs/docs/deploying-to-firebase.md @@ -47,61 +47,61 @@ In this guide, you will learn how to deploy your Gatsby site to Firebase Hosting 1. Update the `firebase.json` with the following cache settings -```json -{ - "hosting": { - "public": "public", - "ignore": ["firebase.json", "**/.*", "**/node_modules/**"], - "headers": [ - { - "source": "**/*", - "headers": [ - { - "key": "cache-control", - "value": "cache-control: public, max-age=0, must-revalidate" - } - ] - }, - { - "source": "static/**", - "headers": [ - { - "key": "cache-control", - "value": "public, max-age=31536000, immutable" - } - ] - }, - { - "source": "**/*.@(css|js)", - "headers": [ - { - "key": "cache-control", - "value": "public, max-age=31536000, immutable" - } - ] - }, - { - "source": "sw.js", - "headers": [ - { - "key": "cache-control", - "value": "cache-control: public, max-age=0, must-revalidate" - } - ] - }, - { - "source": "page-data/**", - "headers": [ - { - "key": "cache-control", - "value": "cache-control: public, max-age=0, must-revalidate" - } - ] - } - ] - } -} -``` + ```json + { + "hosting": { + "public": "public", + "ignore": ["firebase.json", "**/.*", "**/node_modules/**"], + "headers": [ + { + "source": "**/*", + "headers": [ + { + "key": "cache-control", + "value": "cache-control: public, max-age=0, must-revalidate" + } + ] + }, + { + "source": "static/**", + "headers": [ + { + "key": "cache-control", + "value": "public, max-age=31536000, immutable" + } + ] + }, + { + "source": "**/*.@(css|js)", + "headers": [ + { + "key": "cache-control", + "value": "public, max-age=31536000, immutable" + } + ] + }, + { + "source": "sw.js", + "headers": [ + { + "key": "cache-control", + "value": "cache-control: public, max-age=0, must-revalidate" + } + ] + }, + { + "source": "page-data/**", + "headers": [ + { + "key": "cache-control", + "value": "cache-control: public, max-age=0, must-revalidate" + } + ] + } + ] + } + } + ``` 1. Prepare your site for deployment by running `gatsby build`. This generates a publishable version of your site in the `public` folder. diff --git a/docs/docs/glossary.md b/docs/docs/glossary.md index 52b1fc0849c10..d2dbb5c97a0ae 100644 --- a/docs/docs/glossary.md +++ b/docs/docs/glossary.md @@ -220,9 +220,9 @@ A way of writing HTML content with plain text, using special characters to denot ## N -### NPM +### [npm](/docs/glossary/npm) -[Node](#node) [Package](#package) Manager. Allows you to install and update other packages that your project depends on. [Gatsby](#gatsby) and [React](#react) are examples of your project's dependencies. See also: [Yarn](#yarn). +[Node](#node) [package](#package) manager. Allows you to install and update other packages that your project depends on. [Gatsby](#gatsby) and [React](#react) are examples of your project's dependencies. See also: [Yarn](#yarn). ### Node diff --git a/docs/docs/glossary/npm.md b/docs/docs/glossary/npm.md new file mode 100644 index 0000000000000..f6caff679440f --- /dev/null +++ b/docs/docs/glossary/npm.md @@ -0,0 +1,59 @@ +--- +title: npm or Node package manager +disableTableOfContents: true +--- + +Learn what _npm_ is, how to use it, and how it fits in to the Gatsby ecosystem. + +## What is npm? + + + npm +, or Node package manager, is the default package manager for the [Node.js](/docs/glossary/node) JavaScript runtime. It lets you install and update libraries and frameworks (dependencies) for Node-based projects, and interact with the npm Registry. You'll use npm to install and upgrade Gatsby and its plugins. + +npm is a [command line](/docs/glossary#command-line) tool. You'll need Terminal (Mac, Linux) or Command Prompt (Windows) in order to run its commands. To use one of npm's features, type `npm ` . For example, `npm help` displays a list of available features, including `install`, `uninstall`, `update`, and `search`. + +npm is installed alongside Node during the default [installation process](/tutorial/part-zero/#install-nodejs-for-your-appropriate-operating-system). You don't need to take any additional steps to add it to your environment. + +### Using npm to install Gatsby + +You'll need to install Gatsby globally to use Gatsby CLI commands such as `gatsby new`. To do so, use `npm install` with the `--global` or `-g` flag. + +```shell +npm install -g gatsby-cli +``` + +Once the installation completes, you can run `gatsby new my-project` to create a new Gatsby project. + +### Using npx to install Gatsby + +> **Note:** `npx` requires npm version 5.2 or later. If you've installed the latest versions of Node and npm, you should also have npx. Otherwise, you should upgrade Node and/or npm. + +You can also use [npx](https://www.npmjs.com/package/npx) to install Gatsby. npx ships with npm. It allows you to install a package and run a command in one step. For example, instead of running `npm install -g gatsby-cli` then `gatsby new my-project`, you could use the following command. + +```shell +npx gatsby new my-project +``` + +This will download and install the latest version of Gatsby, then create a new Gatsby project in the `my-project` folder. Choosing this method will not make the Gatsby CLI globally available, however. If you install Gatsby using npx, you'll need to use `npx gatsby` or `npm run` to execute Gatsby commands, e.g.: `npx gatsby develop` or `npm run develop`. + +### Using npm to install Gatsby plugins + +Gatsby has a robust collection of [plugins](/plugins/) that add functionality or data sourcing to your Gatsby sites. Adding a plugin as a project dependency uses the same process as installing Gatsby itself. Use `npm install `. To add the [gatsby-source-filesystem](/packages/gatsby-source-filesystem), plugin, for example, you'd use the following command. + +```shell +npm install gatsby-source-filesystem +``` + +> **Note:** Use `npm install` to add plugins, even if you installed Gatsby using npx. + +> **Note:** You'll still need to update `gatsby-config.js` to add the plugin's functionality to your site. + +This will update the dependencies list of `package.json` and `package-lock.json`. Commit both files to your project's repository. Doing so makes it easy to keep your Gatsby project consistent across team members and computers. When another team member clones your repository, they can use `npm install` to install the dependencies included in `package-lock.json`. + +### Learn more about npm + +- [npm](https://www.npmjs.com/) official website +- [Node.js](https://nodejs.org/en/) official website +- [An introduction to the npm package manager](https://nodejs.dev/an-introduction-to-the-npm-package-manager) from Nodejs.dev +- [Set Up Your Development Environment](/tutorial/part-zero/) from the Gatsby docs diff --git a/docs/docs/mdx/programmatically-creating-pages.md b/docs/docs/mdx/programmatically-creating-pages.md index c84402cf24500..0393573b580e9 100644 --- a/docs/docs/mdx/programmatically-creating-pages.md +++ b/docs/docs/mdx/programmatically-creating-pages.md @@ -274,13 +274,17 @@ component should look like: ```jsx:title=src/components/posts-page-layout.js import React from "react" import { graphql } from "gatsby" +import { MDXProvider } from "@mdx-js/react" import { MDXRenderer } from "gatsby-plugin-mdx" +import { Link } from "gatsby" export default function PageTemplate({ data: { mdx } }) { return (

) } diff --git a/docs/docs/security-in-gatsby.md b/docs/docs/security-in-gatsby.md index 2a82f6c793b45..bcb751a70e50d 100644 --- a/docs/docs/security-in-gatsby.md +++ b/docs/docs/security-in-gatsby.md @@ -10,7 +10,7 @@ Cross-Site Scripting is a type of attack that injects a script or an unexpected JSX elements automatically escape HTML tags by design. See the following example: -```js +```jsx // highlight-next-line const username = `` @@ -23,7 +23,7 @@ On the other hand, fields in your application may need to render inner HTML tags In order to render those HTML tags you need to use an HTML parser (e.g. [html-react-parser](https://github.com/remarkablemark/html-react-parser)) or the `dangerouslySetInnerHTML` prop, like so: -```js +```jsx const CommentRenderer = comment => ( // highlight-next-line

@@ -51,15 +51,20 @@ For example, assume that the comments in your blog are sent in a form similar to A malicious website could inspect your site and copy this snippet to theirs. If the user is logged in, the associated cookies are sent with the form and the server cannot distinguish the origin of it. Even worse, the form could be sent when the page loads with information you don't control: -```js +```html // highlight-next-line - -

- // highlight-next-line - - -
+ +
+ // highlight-next-line + + +
+ ``` ### How can you prevent cross-site request forgery? @@ -76,7 +81,7 @@ Actions that do not simply read data should be handled in a POST request. In the If you want to protect a page your server will provide an encrypted, hard to guess **token**. That token is tied to a user's session and must be included in every POST request. See the following example: -```js +```html
// highlight-next-line @@ -121,18 +126,18 @@ Similar to npm, you can use the `yarn audit` command. It is available starting w Gatsby allows you to [fetch data from various APIs](/docs/content-and-data/) and those APIs often require a key to access them. These keys should be stored in your build environment using [Environment Variables](/docs/environment-variables/). See the following example for fetching data from GitHub with an Authorization Header: ```js - { - resolve: "gatsby-source-graphql", - options: { - typeName: "GitHub", - fieldName: "github", - url: "https://api.github.com/graphql", - headers: { - // highlight-next-line - Authorization: `Bearer ${process.env.GITHUB_TOKEN}`, - }, - } - } +{ + resolve: "gatsby-source-graphql", + options: { + typeName: "GitHub", + fieldName: "github", + url: "https://api.github.com/graphql", + headers: { + // highlight-next-line + Authorization: `Bearer ${process.env.GITHUB_TOKEN}`, + }, + } +} ``` ### Storing keys in client-side @@ -150,11 +155,11 @@ currently there is a [compatibility issue](https://github.com/gatsbyjs/gatsby/is ## Other Resources -- [Security for Modern Web Frameworks](https://www.gatsbyjs.org/blog/2019-04-06-security-for-modern-web-frameworks/) -- [Docs ReactJS: DOM Elements](https://reactjs.org/docs/dom-elements.html#dangerouslysetinnerhtml) +- [Security for Modern Web Frameworks](/blog/2019-04-06-security-for-modern-web-frameworks/) +- [Docs React: DOM Elements](https://reactjs.org/docs/dom-elements.html#dangerouslysetinnerhtml) - [OWASP XSS filter evasion cheatsheet](https://owasp.org/www-community/xss-filter-evasion-cheatsheet) - [OWASP CSRF prevention cheat sheet](https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html#samesite-cookie-attribute) -- [Warn for javascript: URLs in DOM sinks #15047](https://github.com/facebook/react/pull/15047) +- [Warn for JavaScript: URLs in DOM sinks #15047](https://github.com/facebook/react/pull/15047) - [How to prevent XSS attacks when using dangerouslySetInnerHTML in React](https://medium.com/@Jam3/how-to-prevent-xss-attacks-when-using-dangerouslysetinnerhtml-in-react-f669f778cebb) - [Exploiting XSS via Markdown](https://medium.com/taptuit/exploiting-xss-via-markdown-72a61e774bf8) - [Auditing package dependencies for security vulnerabilities](https://docs.npmjs.com/auditing-package-dependencies-for-security-vulnerabilities) diff --git a/docs/docs/tailwind-css.md b/docs/docs/tailwind-css.md index e7b9ff5be2dfd..4e8cb0bfc8838 100644 --- a/docs/docs/tailwind-css.md +++ b/docs/docs/tailwind-css.md @@ -66,7 +66,7 @@ To learn more about how to use Tailwind in your CSS, visit the [Tailwind Documen ### Option #2: CSS-in-JS -These steps assume you have a CSS-in-JS library already installed, and the examples are based on Styled Components. +These steps assume you have a CSS-in-JS library already installed, and the examples are based on Emotion. 1. Install Tailwind Babel Macro @@ -108,7 +108,7 @@ npm install tailwind.macro 2. Use the Babel Macro (`tailwind.macro`) in your styled component ```javascript -import styled from "styled-components" +import styled from "@emotion/styled" import tw from "tailwind.macro" // All versions diff --git a/docs/docs/third-party-graphql.md b/docs/docs/third-party-graphql.md index 723e7db95a24d..d9b90ed34ab4f 100644 --- a/docs/docs/third-party-graphql.md +++ b/docs/docs/third-party-graphql.md @@ -100,3 +100,4 @@ exports.createPages = async ({ actions, graphql }) => { - [Example with GraphCMS](https://github.com/freiksenet/gatsby-graphcms) - [Example with Hasura](https://github.com/hasura/graphql-engine/tree/master/community/sample-apps/gatsby-postgres-graphql) - [Example with AWS AppSync](https://github.com/aws-samples/aws-appsync-gatsby-sample) +- [Example with Dgraph](https://github.com/dgraph-io/gatsby-dgraph-graphql) diff --git a/docs/docs/using-cloudinary-image-service.md b/docs/docs/using-cloudinary-image-service.md new file mode 100644 index 0000000000000..fab73d0bd0d6c --- /dev/null +++ b/docs/docs/using-cloudinary-image-service.md @@ -0,0 +1,156 @@ +--- +title: Using Cloudinary image service for media optimization +--- + +Cloudinary is a cloud-based end-to-end media management platform that provides solutions to help site creators serve optimized media files (images and videos) to their audiences. It also provides a lot of optional transformations that can be carried out on these media assets. + +In this guide you will take a look at the [gatsby-source-cloudinary](/packages/gatsby-source-cloudinary/) and [gatsby-transformer-cloudinary](/packages/gatsby-transformer-cloudinary/) plugins which you can use to improve the experience of handling images on Gatsby sites. + +Plugins are generally used to abstract functionality in Gatsby. In this case, the `gatsby-source-cloudinary` plugin is a [source plugin](/docs/creating-a-source-plugin/) which helps to connect Cloudinary media storage capabilities to your site. + +> Here's a [demo site that uses the gatsby-source-cloudinary](https://gsc-sample.netlify.com) showcasing optimized images in a masonry grid, served from Cloudinary. + +## The problem with handling images on the web + +Dealing with images on the web has always been a problem as unoptimized images can slow down your site. The processes put in place to create the best media experience can take a lot of time to implement. + +## Solutions Cloudinary provides + +Cloudinary provides a couple of amazing solutions to this problem, namely: + +- Remote storage and delivery of images via CDN +- Offers a wider range of transformations than [gatsby-image](/docs/using-gatsby-image/). +- [Digital Asset Management](https://cloudinary.com/documentation/digital_asset_management_overview) for enterprise assets + +## Gatsby-source-cloudinary + +This plugin fetches media assets from Cloudinary that are specified in a folder. It then transforms these images into Cloudinary file nodes, which can be queried with GraphQL in a Gatsby project. +`gatsby-source-cloudinary` applies [f_auto and q_auto](https://cloudinary.com/documentation/image_transformations) transformation parameters which aid in automatic optimisation of format and quality for media assets by over 70 percent. + +### Prerequisites + +Before using the `gatsby-source-cloudinary` plugin you should do the following: + +- Upload your images to a folder on Cloudinary. This folder can have any name of your choosing. +- Obtain your API key and API secret from your Cloudinary dashboard. +- Have the [dotenv](https://www.npmjs.com/package/dotenv) module installed for loading environment variables from a `.env` file. + +### Using gatsby-source-cloudinary + +Add the plugin to your project. + +1. Install `gatsby-source-cloudinary` + +```shell + npm install gatsby-source-cloudinary +``` + +2. In the root of your project, create an environment file called `.env` and add your Cloudinary credentials and their values + +``` +CLOUDINARY_API_KEY=xxxxxxxxxxxxxx +CLOUDINARY_API_SECRET=xxxxxxxxxxxxxxxxxxxx +CLOUDINARY_CLOUD_NAME=xxxxx +``` + +3. Configure `gatsby-config.js` + +```js:title=gatsby-config.js +require('dotenv').config(); // highlight-line +module.exports = { + ... + plugins:[ + ... + { + resolve: `gatsby-source-cloudinary`, + options: { + cloudName: process.env.CLOUDINARY_CLOUD_NAME, + apiKey: process.env.CLOUDINARY_API_KEY, + apiSecret: process.env.CLOUDINARY_API_SECRET, + resourceType: `image`, + prefix: `gatsby-source-cloudinary/` + } + } + ] +} +``` + +Note that `gatsby-source-cloudinary` takes the following options: + +- **`cloudName`** , **`apiKey`** , and **`apiSecret`** **:** These are credentials from your Cloudinary console, stored as three separate environment variables for security. +- **`resourceType`** **:** This is the resource type of the media assets - either an image or a video. +- **`prefix`** **:** This is the folder (in your Cloudinary account) in which the files reside. In the example above, the folder is called `gatsby-source-cloudinary`. Assign a name of your choice. + Other optional options are `type`, `tags`, and `maxResult`. + +Here's a [link to the README](https://github.com/Chuloo/gatsby-source-cloudinary#query-parameters) for more information. + +## Gatsby-transformer-cloudinary + +After sourcing media files from Cloudinary, you will be able to leverage Cloudinary’s media transformation capabilities. To do so, use `gatsby-transformer-cloudinary` which is a type of [transformer plugin](/docs/creating-a-transformer-plugin/) that is used to change image formats, styles and dimensions. It also optimizes images for minimal file size alongside high visual quality for an improved user experience and minimal bandwidth. + +Here's a [demo site that uses the gatsby-transformer-plugin](https://gatsby-transformer-cloudinary.netlify.com/fluid/) + +### Prerequisites + +Before using the `gatsby-transformer-cloudinary` plugin you should do the following: + +- Upload your images to a folder on Cloudinary. This folder can have any name of your choosing. +- Have the `gatsby-source-cloudinary` plugin installed and configured. +- Obtain your API key and API secret from your Cloudinary dashboard. +- Have the [dotenv](https://www.npmjs.com/package/dotenv) module installed for loading environment variables from a `.env` file. + +### Using gatsby-transformer-cloudinary + +1. Install `gatsby-transformer-cloudinary` and `gatsby-source-filesystem` which creates the File nodes that the Cloudinary transformer plugin works on. + +```shell + npm install gatsby-transformer-cloudinary gatsby-source-filesystem +``` + +2. In the root of your project, create an environment file called `.env` to which to add your Cloudinary credentials and their values. + +``` +CLOUDINARY_API_KEY=xxxxxxxxxxxxxx +CLOUDINARY_API_SECRET=xxxxxxxxxxxxxxxxxxxx +CLOUDINARY_CLOUD_NAME=xxxxx +``` + +3. Configure `gatsby-config.js` + +```js:title=gatsby-config.js +require('dotenv').config({ + path: `.env.${process.env.NODE_ENV}`, +}); + +module.exports = { + plugins: [ + { + resolve: `gatsby-source-filesystem`, + options: { + name: `images`, + path: `${__dirname}/src/images`, + }, + }, + { + resolve: 'gatsby-transformer-cloudinary', + options: { + cloudName: process.env.CLOUDINARY_CLOUD_NAME, + apiKey: process.env.CLOUDINARY_API_KEY, + apiSecret: process.env.CLOUDINARY_API_SECRET, + + // This folder will be created if it doesn’t exist. + uploadFolder: 'gatsby-cloudinary', + + }, + ], +}; +``` + +> In `gatsby-config.js`, responsive breakpoints can be created for each image, use the `fluidMaxWidth` and `fluidMinWidth` options to set them. Take a look at the [plugin documentation](https://www.npmjs.com/package/gatsby-transformer-cloudinary#api) for more information on how these parameters can be set. + +## Additional resources + +- [Faster Sites with Optimized Media Assets by William Imoh](/blog/2020-01-12-faster-sites-with-optimized-media-assets/) +- [Gatsby Transformer Cloudinary](https://www.npmjs.com/package/gatsby-transformer-cloudinary) +- [Gatsby Source Cloudinary](/packages/gatsby-source-cloudinary/) +- [Aspect ratio parameter](https://cloudinary.com/documentation/image_transformation_reference#aspect_ratio_parameter) diff --git a/docs/docs/using-gatsby-image.md b/docs/docs/using-gatsby-image.md index 4e6d7b4a1fb0e..17b18536a6e10 100644 --- a/docs/docs/using-gatsby-image.md +++ b/docs/docs/using-gatsby-image.md @@ -29,7 +29,7 @@ But creating optimized images for websites has long been a thorny problem. Ideal - Use the “blur-up” technique or a “traced placeholder” SVG to show a preview of the image while it loads - Hold the image position so your page doesn’t jump while the images load -Doing this consistently across a site feels like Sisyphean labor. You manually optimize your images and then… several images are swapped in at the last minute or a design-tweak shaves 100px of width off your images. +Doing this consistently across a site feels like a task that can never be completed. You manually optimize your images and then… several images are swapped in at the last minute or a design-tweak shaves 100px of width off your images. Most solutions involve a lot of manual labor and bookkeeping to ensure every image is optimized. diff --git a/docs/sites.yml b/docs/sites.yml index cf3b4e573a35c..178631243b5de 100644 --- a/docs/sites.yml +++ b/docs/sites.yml @@ -10354,3 +10354,46 @@ built_by: Masatoshi Nishiguchi built_by_url: https://mnishiguchi.com featured: false +- title: WhileNext + url: https://whilenext.com + main_url: https://whilenext.com + description: > + A Blog on Software Development + categories: + - Blog + - Learning + - Programming + - Web Development + built_by: Masoud Karimi + built_by_url: https://github.com/masoudkarimif +- title: Jamify.me + description: > + We build websites & PWAs with JAMstack. Delivering faster, more secure web. + main_url: https://jamify.me + url: https://jamify.me + categories: + - Agency + - Web Development + featured: false +- title: The Cares Family + main_url: https://thecaresfamily.org.uk/home + url: https://thecaresfamily.org.uk/home + description: > + The Cares Family helps people find connection and community in a disconnected age. They relaunched their website in Gatsby during the COVID-19 outbreak of 2020 to help connect neighbours. + categories: + - Nonprofit + - Blog + - Community + built_by: Mutual + built_by_url: https://www.madebymutual.com +- title: "Due to COVID-19: Documenting the Signs of the Pandemic" + url: https://duetocovid19.com + main_url: https://duetocovid19.com + description: > + A project to document all the signs that have gone up on the storefronts of our cities in response to the coronavirus pandemic. + categories: + - Photography + - Community + built_by: Andrew Louis + built_by_url: https://hyfen.net + featured: false diff --git a/docs/starters.yml b/docs/starters.yml index 729783be16311..613eeac9a6a62 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -5300,12 +5300,13 @@ - Language:TypeScript - Linting - Netlify + - Testing features: - - ✔️ Gatsby - - ✔️ TypeScript - - ✔️ Prettier - - ✔️ ESLint - - ✔️ Deploy to Netlify through GitHub Actions + - TypeScript + - ESLint for JS linting + - Prettier code formatting + - Jest for testing + - Deploy to Netlify through GitHub Actions - url: https://answer.netlify.com/ repo: https://github.com/passwd10/gatsby-starter-answer description: A simple Gatsby blog to show your Future Action on top of the page @@ -5852,6 +5853,41 @@ - CSS-in-Reason support - StaticQuery GraphQL support in ReasonML - Similar to gatsby-starter-blog + +- url: https://gct.mozart409.space/ + repo: https://github.com/Mozart409/gatsby-custom-tailwind + description: A minimal tailwind css starter, with custom fonts, purgecss, automatic linting when committing to master, awesome lighthouse audit, custom zeit/serve server for production build, visible to all in your network, so you can test it with your phone. + tags: + - Linting + - PWA + - SEO + - Styling:Tailwind + - Styling:PostCSS + features: + - Minimal Tailwind Starter + - Custom Fonts predefined + - Automatic Linting on Commit using husky and pretty-quick + - Custom server to test Production Builds on your local network via zeit/serve + - Extensive Readme in the repo +- url: https://gatsby-redux-toolkit-typescript.netlify.com/ + repo: https://github.com/saimirkapaj/gatsby-redux-toolkit-typescript-starter + description: Gatsby Starter using Redux-Toolkit, Typescript, Styled Components and Tailwind CSS. + tags: + - Redux + - Language:TypeScript + - Styling:Tailwind + features: + - Redux-Toolkit + - Typescript + - Styled Components + - Tailwind CSS + - Removes unused CSS with Purgecss + - Font Awesome Icons + - Responsive Design + - Change between light and dark themes + - SEO + - React Helmet + - Offline Support - url: https://gatsby-ts-tw-styled-eslint.netlify.com repo: https://github.com/Miloshinjo/gatsby-ts-tw-styled-eslint-starter description: Gatsby starter with Typescript, TailwindCSS, @emotion/styled and eslint. @@ -5912,3 +5948,30 @@ - Stylesheet built using Sass and BEM-Style naming. - Syntax highlighting in code blocks. - Google Analytics support. +- url: https://gatsby-starter-ts.now.sh/ + repo: https://github.com/jpedroschmitz/gatsby-starter-ts + description: A TypeScript starter for Gatsby. No plugins and styling. Exactly the necessary to start! + tags: + - Language:TypeScript + - Styling:None + - Linting + features: + - TypeScript + - ESLint and Prettier + - Husky and lint-staged + - Commitizen and Commitlint + - TypeScript absolute paths +- url: https://rolwinreevan.com + repo: https://github.com/rolwin100/rolwinreevan_gatsby_blog + description: This starter consists of ant design system you can use it for your personal blog. I have give a lot of time in developing this starter because I found that there were not much starters with a very good design. Please give a star to this project if you have like it to encourage me 😄. Thank you. + tags: + - Blog + - Portfolio + - Markdown + - SEO + - PWA + features: + - Blog designed using Markdown. + - Beautifully designed landing page. + - First project in the starters list to use ant design. + - Supports SSR and is also a PWA. diff --git a/docs/tutorial/building-a-theme.md b/docs/tutorial/building-a-theme.md index b12ec21b77f20..b5727aa11314f 100644 --- a/docs/tutorial/building-a-theme.md +++ b/docs/tutorial/building-a-theme.md @@ -1047,6 +1047,8 @@ exports.createPages = async ({ actions, graphql, reporter }, options) => { } ``` +Note that the example above sets default values for `options`. This behavior was also included in the prior `gatsby-config.js` example. You only need to set default values once, but both mechanisms for doing so are valid. + > 💡 Up till now, you've mostly worked in the `gatsby-theme-events` space. Because you've converted the theme to use a function export, you can no longer run the theme on its own. The function export in `gatsby-config.js` is only supported for themes. From now on you'll be running `site` -- the Gatsby site consuming `gatsby-theme-events`, instead. Gatsby sites still require the object export in `gatsby-config.js`. Test out this new options-setting by making some adjustments to `site`. diff --git a/docs/tutorial/e-commerce-with-datocms-and-snipcart/index.md b/docs/tutorial/e-commerce-with-datocms-and-snipcart/index.md index 6700c1358dda5..04df1906b6389 100644 --- a/docs/tutorial/e-commerce-with-datocms-and-snipcart/index.md +++ b/docs/tutorial/e-commerce-with-datocms-and-snipcart/index.md @@ -25,11 +25,11 @@ You can sign up for the following accounts now or as you need to use each of the - [Snipcart](https://snipcart.com/): add a shopping cart to your site - [Netlify](https://www.netlify.com/): host your site and register a domain -To edit code locally (affecting files stored on your computer), you'll need the following software. If you don't already know what these are or want additional background information, check out [Step 0 of the Gatsby tutorial](https://www.gatsbyjs.org/tutorial/part-zero/). It includes detailed instructions on how to set up a local development environment. +To edit code locally (affecting files stored on your computer), you'll need the following software. If you don't already know what these are or want additional background information, check out [Step 0 of the Gatsby tutorial](/tutorial/part-zero/). It includes detailed instructions on how to set up a local development environment. -- [node](https://nodejs.org): run JavaScript on your computer +- [Node.js](https://nodejs.org): run JavaScript on your computer - [Git](https://git-scm.com/downloads): track changes to your code -- [Gatsby command line interface (CLI)](https://www.gatsbyjs.org/tutorial/part-zero/#using-the-gatsby-cli): run Gatsby commands on your computer +- [Gatsby command line interface (CLI)](/tutorial/part-zero/#using-the-gatsby-cli): run Gatsby commands on your computer ## Provisioning Your Site on Gatsby Cloud @@ -53,7 +53,7 @@ Authorize Gatsby to connect with your DatoCMS account and hit the "Start my site > This automatic provisioning of your website is one of Gatsby Cloud's strengths. Integrations with content management systems like this make it possible for you to spin up and begin publishing content to new sites without ever touching any code. -![celebratory screen titled successfully set up Gatsby provisioned Snipcart!](/images/successfully-set-up.png) +![Celebratory screen titled successfully set up Gatsby provisioned Snipcart!](/images/successfully-set-up.png) ## Exploring the DatoCMS Project @@ -62,7 +62,7 @@ follow the link in Gatsby Cloud to go straight to your project in DatoCMS. Click on "Enter project" and select "Products" from the secondary navigation menu. You'll see a number of products already defined for you. You can delete or edit these as you'd like. -![edit product screen featuring a single sock product called street faces](/images/edit-product.png) +![Edit product screen featuring a single sock product called street faces](/images/edit-product.png) ### Editing models in DatoCMS @@ -70,7 +70,7 @@ Clicking on "Settings" in the primary navigation menu reveals the "Models" menu Maybe you also want each product to have a description or a release date. You can edit this model to be whatever you want it to be by adding and customizing fields. DatoCMS provides a wide variety of options that you can tweak to fit your needs. -![choose a field type menu featuring options for text, modular content, media, data and timeline, number, boolean, location, color, SEO, links, and JSON](/images/choose-field-type.png) +![Choose a field type menu featuring options for text, modular content, media, data and timeline, number, boolean, location, color, SEO, links, and JSON](/images/choose-field-type.png) If you already have items you know you want to sell, replace the sample products with a few of your own to get a feel for the interface. If not, you can continue on without making any changes in the CMS for now. @@ -84,7 +84,7 @@ Even if you've never used Git/GitHub, there's no need to fear. You can edit indi You can make small changes to the code from your browser by editing files directly in GitHub. Say, for example, that you always want to display prices in some other currency besides euros. To switch the symbols, head to your repository's page on GitHub and navigate to `src/pages/index.js`. -![github menu shows the current branch and file location as well as the first few lines of code in this file. Also includes view options raw, blame, and history](/images/github-menu.png) +![GitHub menu shows the current branch and file location as well as the first few lines of code in this file. Also includes view options raw, blame, and history](/images/github-menu.png) Select "Edit this file" (the pencil icon) from the menu. Where `product.price` is being displayed, you'll need to update the currency symbol. @@ -94,7 +94,7 @@ Select "Edit this file" (the pencil icon) from the menu. Where `product.price` i Once you've made your change, you'll need to commit that change. A commit is like a snapshot in time or a save point in a video game. Add a message that concisely describes the changes you've made and then commit those changes. -![commit changes menu with message 'Euro to dollar'. Email address is blurred and there's a big, green 'Commit changes' button](/images/commit-change.png) +![Commit changes menu with message 'Euro to dollar'. Email address is blurred and there's a big, green 'Commit changes' button](/images/commit-change.png) You've made a change to your master branch, which means Gatsby will build a new version of your site! @@ -104,7 +104,7 @@ The rest of this process is described in the context of using a text editor to m You can edit your site's code locally by following these steps: -- Clone the project by Selecting the "Clone or download" button on your repository's main page, which will display a link for you to copy. +- Clone the project by selecting the "Clone or download" button on your repository's main page, which will display a link for you to copy. - Copy the project to your computer and install its dependencies, other JavaScript projects that your site relies on to work. @@ -120,7 +120,7 @@ You'll need to make one change before you try to run the site. The version that In `gatsby-config.js`, you'll find an array of plugins already installed on your site, including `gatsby-source-datocms`. That section references a variable `process.env.DATO_API_TOKEN`. `process.env` refers to the _environment_ in which you're running your code and `DATO_API_TOKEN` is the name of the particular variable in question. -```jsx:title=gatsby-config.js +```js:title=gatsby-config.js { resolve: `gatsby-source-datocms`, options: { apiToken: process.env.DATO_API_TOKEN }, @@ -131,13 +131,13 @@ In order to set this variable's value, create a new file in your project's root Add your DatoCMS API Token environment variable to this file. You can find your API token in Gatsby under Site Settings > Environment variables. Opening the "Edit" menu will allow you to copy the full token. Set that as the value in `.env.development`. -``` +```text DATO_API_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ``` -Now you should be able to run `gatsby develop` to run your site. If you're using Visual Studio Code, you can open a terminal within the text editor (control + `) and keep everything in one window. Navigate to [localhost:8000](http://localhost:8000/) in your browser to see the example site. It should include whatever products you created in DatoCMS. +Now you should be able to run `gatsby develop` to run your site. If you're using Visual Studio Code, you can open a terminal within the text editor (control + \`) and keep everything in one window. Navigate to `http://locahost:8000/` in your browser to see the example site. It should include whatever products you created in DatoCMS. -![sample shop has a bright blue, pink, and green gradient as a background. Stacking rings, rhodochrosite ring, and statement earrings have been added as products](/images/sample-with-products.png) +![Sample shop has a bright blue, pink, and green gradient as a background. Stacking rings, rhodochrosite ring, and statement earrings have been added as products](/images/sample-with-products.png) ## Modifying styles @@ -145,7 +145,7 @@ Chances are you'll want to apply your own branding to this site, so try making s If you're not sure where to look for the code you'll need to change, search for the term "background" and see what comes up! In this case, you'll find one entry in the results that _also_ says something about a gradient... -![searching the word background in VS Code reveals 7 instances in 5 files, including one in reset.scss](/images/background.png) +![Searching the word background in VS Code reveals 7 instances in 5 files, including one in reset.scss](/images/background.png) Remove the following CSS from `src/style/reset.scss`. The result should be a plain white background for your store. diff --git a/examples/creating-source-plugins/README.md b/examples/creating-source-plugins/README.md new file mode 100644 index 0000000000000..fb1face66c326 --- /dev/null +++ b/examples/creating-source-plugins/README.md @@ -0,0 +1,83 @@ +# Creating First Class Gatsby Source Plugins + +Create Gatsby plugins that leverage Gatsby's most impactful native features like remote image optimization, caching, customized GraphQL schemas and node relationships, and more. + +This monorepo serves as an example of a site using a first class source plugin to pull in data from a Node.js API. It is meant to show the 3 pieces that work together when building a source plugin: the API, the site, and the source plugin. + +## Setup + +This monorepo uses yarn workspaces to manage the 3 indivdual projects: + +- api: a Node.js API with in-memory data, and a Post and Author type, as well as support for subscriptions when Posts are mutated +- example-site: a barebones Gatsby site that implements the source plugin +- source-plugin: a plugin that uses several Gatsby APIs to source data from the API, create responsive/optimized images from remote locations, and link the nodes in the example site + +To install dependencies for all projects run the install command in the root of the yarn workspace (which requires yarn to be installed): + +``` +yarn install +``` + +_Note: if you aren't using yarn, you can navigate into each of the 3 folders and run `npm install` instead_ + +Then you can run the api or example projects in separate terminal windows with the commands below. + +For the API which runs at `localhost:4000`, use this command: + +``` +yarn workspace api start +``` + +And to run the example site with `gatsby develop` at `localhost:8000`, use this command: + +``` +yarn workspace example-site develop +``` + +Running the example site also runs the plugin because it is included in the site's config. You'll see output in the console for different functionality and then can open up the browser to `localhost:8000` to see the site. + +## Developing and Experimenting + +You can open up `localhost:4000` with the API running, which will load a GraphQL Playground, which is a GraphQL IDE (like GraphiQL, that Gatsby runs at `localhost:8000/___graphql`) for running queries and mutations on the data from the API. + +You can test a query like this to see data returned: + +```graphql +query { + posts { + id + slug + } +} +``` + +This query will return the IDs for all posts in the API. You can copy one of these IDs and provide it as an argument to a mutation to update information about that post. + +You can run 3 different mutations from the GraphQL Playground (at `localhost:4000`): `createPost`, `updatePost`, and `deletePost`. These methods would mimic CRUD operations happening on the API of the data source like a headless CMS. An example `updatePost` mutation is outlined below. + +When you run a mutation on a post, a subscription event is published, which lets the plugin know it should respond and update nodes. The following mutation can be copied into the left side of the GraphQL playground so long as you replace "post-id" with a value returned for an ID from a query (like the one above). + +```graphql +mutation { + updatePost(id: "post-id", description: "Some data!") { + id + slug + description + } +} +``` + +The website's homepage will update with any changes while the source plugin is subscribed to changes, which is when the `preview: true` is provided in the example site's `gatsby-config`. + +You can also optionally listen for subscription events with this query in the playground which will display data when a mutation is run: + +```graphql +subscription { + posts { + id + description + } +} +``` + +A similar subscription is registered when the plugin is run, so you can also see subscription events logged when the plugin is running. diff --git a/examples/creating-source-plugins/api/README.md b/examples/creating-source-plugins/api/README.md new file mode 100644 index 0000000000000..c9fa5261a5770 --- /dev/null +++ b/examples/creating-source-plugins/api/README.md @@ -0,0 +1,3 @@ +# Example API + +A small GraphQL server with in-memory data, powered by [graphql-yoga](https://github.com/graphcool/graphql-yoga) 🧘. See the root of the monorepo for details about running this API alongisde the `example-site` and `source-plugin`. diff --git a/examples/creating-source-plugins/api/package.json b/examples/creating-source-plugins/api/package.json new file mode 100644 index 0000000000000..48e9f8626d1e9 --- /dev/null +++ b/examples/creating-source-plugins/api/package.json @@ -0,0 +1,43 @@ +{ + "name": "api", + "description": "A simple GraphQL server example with in-memory data", + "version": "1.0.0", + "license": "MIT", + "homepage": "https://general-repair.glitch.me", + "author": { + "name": "Risan Bagja Pradana", + "email": "risanbagja@gmail.com", + "url": "https://risan.io" + }, + "main": "src/index.js", + "repository": { + "type": "git", + "url": "git+https://github.com/risan/simple-graphql-server-example.git" + }, + "bugs": { + "url": "https://github.com/risan/simple-graphql-server-example/issues" + }, + "keywords": [ + "graphql", + "graphql-server", + "graphql-yoga" + ], + "scripts": { + "start": "node src/index.js", + "lint": "eslint *.js src", + "lint-fix": "eslint *.js src --fix" + }, + "dependencies": { + "dotenv": "^5.0.1", + "graphql-yoga": "^1.8.2", + "uniqid": "^4.1.1" + }, + "devDependencies": { + "eslint": "^4.19.1", + "eslint-config-airbnb-base": "^12.1.0", + "eslint-config-prettier": "^2.9.0", + "eslint-plugin-import": "^2.10.0", + "eslint-plugin-prettier": "^2.6.0", + "prettier": "^1.11.1" + } +} diff --git a/examples/creating-source-plugins/api/src/index.js b/examples/creating-source-plugins/api/src/index.js new file mode 100644 index 0000000000000..70b3e159cfa73 --- /dev/null +++ b/examples/creating-source-plugins/api/src/index.js @@ -0,0 +1,138 @@ +require("dotenv").config() +const { GraphQLServer, PubSub } = require("graphql-yoga") +const uniqid = require("uniqid") + +const CREATED = "created" +const UPDATED = "updated" +const DELETED = "deleted" + +const authors = [ + { + id: 1, + name: "Jay Gatsby", + }, + { + id: 2, + name: "Daisy Buchanan", + }, +] + +const posts = [ + { + id: uniqid(), + slug: "hello-world", + description: "Our first post on our site.", + imgUrl: "https://images.unsplash.com/photo-1534432586043-ead5b99229fb", + imgAlt: "Pug in a sweater", + authorId: 1, + }, + { + id: uniqid(), + slug: "company-vision", + description: "Our vision for a welcoming company.", + imgUrl: "https://images.unsplash.com/photo-1530041539828-114de669390e", + imgAlt: "Pug in a rainjacket", + authorId: 1, + }, + { + id: uniqid(), + slug: "redesigning-our-logo", + description: "What went into the new logo.", + imgUrl: "https://images.unsplash.com/photo-1541364983171-a8ba01e95cfc", + imgAlt: "Pug in glasses", + authorId: 2, + }, +] + +const resolvers = { + Query: { + info: () => "A simple GraphQL server example with in-memory data.", + posts: () => posts, + authors: () => authors, + }, + + Mutation: { + createPost: (root, { slug, description }) => { + const post = { + id: uniqid(), + slug, + description, + imgUrl: "https://images.unsplash.com/photo-1534432586043-ead5b99229fb", + imgAlt: "pug in a sweater", + authorId: 1, + } + + posts.push(post) + pubsub.publish(CREATED, { posts: [{ status: CREATED, ...post }] }) + + return post + }, + + updatePost: (root, { id, description }) => { + const postIdx = posts.findIndex(p => id === p.id) + + if (postIdx === null) { + return null + } + + posts[postIdx] = { ...posts[postIdx], description } + pubsub.publish(UPDATED, { + posts: [{ status: UPDATED, ...posts[postIdx] }], + }) + + return posts[postIdx] + }, + + deletePost: (root, { id }) => { + const postIdx = posts.findIndex(p => id === p.id) + + if (postIdx === null) { + return null + } + + const post = posts[postIdx] + pubsub.publish(DELETED, { + posts: [{ status: DELETED, ...posts[postIdx] }], + }) + + posts.splice(postIdx, 1) + + return post + }, + }, + + Post: { + id: root => root.id, + slug: root => root.slug, + description: root => root.description, + author: root => authors.find(author => author.id === root.authorId), + }, + + Author: { + id: root => root.id, + name: root => root.name, + }, + + Subscription: { + posts: { + subscribe: (parent, args, { pubsub }) => { + return pubsub.asyncIterator([CREATED, UPDATED, DELETED]) + }, + }, + }, +} + +const pubsub = new PubSub() +const server = new GraphQLServer({ + typeDefs: "./src/schema.graphql", + resolvers, + context: { pubsub }, +}) + +server.start( + { + port: + (process.env.PORT ? parseInt(process.env.PORT, 10) : undefined) || 4000, + }, + ({ port }) => console.log(`🏃🏻‍ Server is running on port ${port}.`) +) diff --git a/examples/creating-source-plugins/api/src/schema.graphql b/examples/creating-source-plugins/api/src/schema.graphql new file mode 100644 index 0000000000000..2dd1f9c5a67c6 --- /dev/null +++ b/examples/creating-source-plugins/api/src/schema.graphql @@ -0,0 +1,30 @@ +type Query { + info: String! + posts: [Post!]! + authors: [Author!]! +} + +type Mutation { + createPost(slug: String!, description: String!): Post! + updatePost(id: ID!, description: String!): Post + deletePost(id: ID!): Post +} + +type Post { + id: ID! + slug: String! + description: String! + imgUrl: String! + imgAlt: String! + author: Author! + status: String +} + +type Author { + id: ID! + name: String! +} + +type Subscription { + posts: [Post!]! +} diff --git a/examples/creating-source-plugins/example-site/README.md b/examples/creating-source-plugins/example-site/README.md new file mode 100644 index 0000000000000..5c03365ce2895 --- /dev/null +++ b/examples/creating-source-plugins/example-site/README.md @@ -0,0 +1,3 @@ +# Example Site + +See the root of the monorepo for details about running this site with the example `source-plugin` installed inside it. diff --git a/examples/creating-source-plugins/example-site/gatsby-config.js b/examples/creating-source-plugins/example-site/gatsby-config.js new file mode 100644 index 0000000000000..1d16c1582500d --- /dev/null +++ b/examples/creating-source-plugins/example-site/gatsby-config.js @@ -0,0 +1,22 @@ +/** + * Configure your Gatsby site with this file. + * + * See: https://www.gatsbyjs.org/docs/gatsby-config/ + */ + +module.exports = { + plugins: [ + // loads the source-plugin + { + resolve: `source-plugin`, + options: { + spaceId: "123", + preview: true, + cacheResponse: false, + }, + }, + // required to generate optimized images + `gatsby-plugin-sharp`, + `gatsby-transformer-sharp`, + ], +} diff --git a/examples/creating-source-plugins/example-site/package.json b/examples/creating-source-plugins/example-site/package.json new file mode 100644 index 0000000000000..51dc41c4900d2 --- /dev/null +++ b/examples/creating-source-plugins/example-site/package.json @@ -0,0 +1,34 @@ +{ + "name": "example-site", + "private": true, + "description": "A simplified bare-bones starter for Gatsby", + "version": "0.1.0", + "license": "MIT", + "scripts": { + "build": "gatsby build", + "develop": "gatsby develop", + "format": "prettier --write \"**/*.{js,jsx,json,md}\"", + "start": "npm run develop", + "serve": "gatsby serve", + "clean": "gatsby clean", + "test": "echo \"Write tests! -> https://gatsby.dev/unit-testing\" && exit 1" + }, + "dependencies": { + "gatsby": "^2.19.45", + "gatsby-image": "^2.3.1", + "gatsby-plugin-sharp": "^2.5.3", + "gatsby-transformer-sharp": "^2.4.3", + "react": "^16.12.0", + "react-dom": "^16.12.0" + }, + "devDependencies": { + "prettier": "^1.19.1" + }, + "repository": { + "type": "git", + "url": "https://github.com/gatsbyjs/gatsby-starter-hello-world" + }, + "bugs": { + "url": "https://github.com/gatsbyjs/gatsby/issues" + } +} diff --git a/examples/creating-source-plugins/example-site/src/pages/index.js b/examples/creating-source-plugins/example-site/src/pages/index.js new file mode 100644 index 0000000000000..e8491f64ec941 --- /dev/null +++ b/examples/creating-source-plugins/example-site/src/pages/index.js @@ -0,0 +1,72 @@ +import React from "react" +import { graphql } from "gatsby" +import Img from "gatsby-image" + +export default ({ data }) => ( +
+

Posts

+
+ {data.allPost.nodes.map(post => ( +
+

{post.slug}

+ By: {post.author.name} +

{post.description}

+ {post.imgAlt} +
+ ))} +
+
+) + +export const query = graphql` + { + allPost { + nodes { + id + slug + description + imgAlt + author { + id + name + } + slug + remoteImage { + id + childImageSharp { + id + fluid { + ...GatsbyImageSharpFluid + } + } + } + } + } + } +` diff --git a/examples/creating-source-plugins/example-site/static/favicon.ico b/examples/creating-source-plugins/example-site/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..1a466ba8852cf099ae40335e878897bde72e1735 GIT binary patch literal 2813 zcmV7wtO>0C#@O9*BXj0vnU3Txw<*2nLRVINq?LYz0THvB9>K0QA`=kA45 zH>rZGmlV#qnH$uCDPe+;0o=3Sp?kdq2WgKYI^SXKIZBYn-k+Edd<+6KvLh|TKS!{V zpmkAJ1tGJUk)?NIbT2}HbKK*+590b+#Ctc)-(n5gtDWwb65MI+Khl=Qpa}`SObc0D zcb3qzwnfCnoGI(U#i&M#k<6JI2B@4&y3QodXL{VnHQ%G>xde1yh{Cr~tOY{ox`SZ3 zFw9dcCna73B99M6W#~MX2swyNG~(c5oRRa8b|0Nk?#}ws8a4BarE2z<*Qz=9u2pl# zuVeW2SIYPvp5Yz5D+FN;y;dZLqypy9bp!1;&a#cc5n;b5oF_sa0%!7BRs4v9i?i=p zqX3V8cZ(`5*sFGw9ait`JF6NSE~)dUuQ7aZ^s+i!b5`wij;J+-`_z)}RWL!b=sS^| zO^BzKp+16XqQW+A10pY+rv>N1_&lQo@}62?LqfovcVD?$mA9J_zImft4fg10?@>o; zo7Cz>d(`}i5l|h2y!IA=7#7ARw4n>m6=zqgM&hh} z#G>&5kq^Fe?%k`ZWZ`a>$fLA2_RvJIZRJnhVu%oRO7cz?Wuo&BX|5aObF;!O>9V`< z{`Km>wvz^dXe6dw*G+Ku;~v#~qD3A4N0WN%_0#ID*G{p7nh4QbZGI`?TR9HxJfjvp z_#)d5_R>VKH`9!KL_3wy;w62^Lqz%k8LZQx2{6b*WtRSUtGd{D-EcA<^SIg5*{2Tf zcwdz+-m8kfvzgU`4OiO-u8F&<@LQYI3;BE0KdVlu&YQjbts8fZR4#wmu2%fKlE1Nt zh~;>08um9qVuc|h81)cb5(Z1iYkhzE7q1#U@9T{k&ed&wPd)j=m)W~$50h}6aH*bK z<$E9k>WBA!^Zg1{v-y~cX(q^;UAKDGA7{Mo5s^@*sFuPpg3(EKkTBZN677#8qVrIj zr9b+cx_P~eH;CwsuAFaIf0^@lHRJA5HIH0nu1405zNrB3;N5xmt>bT>nO5fMajV)(PZ_$2v<7h#4o znmJ7042Zk{znjUb$;OL4jve^WlSGfV$Mq{6>alNbV#7{Ea%NBu)ZAnU7WY@`AQBNj z4+QsDp74qIeL^13nd@2MAt9cM5Uc^UgGBzbzu9Nh3m@2^vM2HSI!=TlT0_FNEl6V4 zD%=-8zjFRg&tSElUcKo@{>d9AtKW=au9*NMa?WGi7G|C1kicPHsS+1 ze8-skgyi!%yL`TS|Enj}OftH3BOkO2R+&ueUedcxOh@PjyBO)#qG79to2%d5==o_1 zQoUUfwTxl_60@Ni?2w6=(jW3h3LpfwIv&P59X^)M9J-My7JYlOYQNTL461%tqx#jD z)hymm3;7{{Q6nNE4-zOY(B4Np&#K&AzP#lIxwL1dRdE0suIEV;#5|@u+d)9Bj&d;( z9XO3#hHaoPW^$ZAJiIO0i2pwl5O351U)rSeo;Y12rDc}}K+0lhAY!<&!y-gw zc-@1r6)e2qLQ$BB5J?y!hA9boA7^3IU;qiC^{oUpH^V~Ql}(U6B2Wnt>6V1}{l(wd zIA|#N+KV;=1lI%sILpGt3#vJoAVOxRTN1QB+%Zz~>z8k_w`*(ZRPDEc8&^A2C+&q4 z2DUkWQZfNuMyF_T6cnhms;Pbz*V&&Wp8n;~hya7;jw@5kfBFj70)ss+P(pb-2{ell zOB6mt#R-ne=l;df*CrxK5<^rcApq&}KnH@TxbpW7UEs{sO4*GO*NGcN0f8i{>V>z> zBHNy?=e#|gl91|b+p2o?8tqk8@;2`Yz;E2&vF@MX|sG!3A}Z@m1jshJ^(Wk1=DB2E!+sLOz&I+iC<5BC1M~iAaZwl>j

}uA3 zJBZ51Gh-{LePn)666(D9~}hFkGgt_C%~*Ee_( zDUfKEOKU|MTSzV78qq#Xmn8DYRpK2OEK&-wH9;QdKh4^XnBZF7Io5r;E)KR-OrsQI z9TdyjBSlSLls5hI?Cq+jD`JQU+C(ZBn@SR>?52OAgnOtv%a52wmZ%MoM>46aKhs*& zf$I!if5vXeCC$O;JPyMJJ&B3gM1X_W{(CdwUQ>9dfh5sJ*(HLM?dPTQfoI@+0Qq>r zW+F=s+jHQ+bf!=b7hHS50mFt}tS#Kf<0Jc!yruHFL!64|q$r9wvRi5NM`v%S z^5537F~eXjooD2=*I6MWfP}g`{f?NlIyr^NlXAQ?BdSMC>=htpc#pE88g_Tm@0SDh z#9ZBiG~TJklU#R4AE(F86SYhv{JfrQ8l8vAXa=qjo$q%}W*f7<7Mpm)8@z2w8uG!l zfsi>AFP`|pORDVg8ntJ`QFZjqW_AA5H69&td772zec~N7$#7pY!5h6M%G!ulUqH52 z@eub02b z+Kr!~dt$IYwGsRVm=!zr2hx5YP0yZ1f8NteQ7b2=%TZUS$Ka^R`2#7m8H8)Z^>jb1 z61kXDY`Mx&fw}eI|7zf=k&`s7$8Z7td9-7&sfe52je5pzBBsq<`(8}Ajc+x_dypPT zgtfiRfNC@N$$cpBw*zhpKSc;Ocu}%K|A`~a{hHJrwXjCILg(|&ab%VFCqSxyt=M)s zti%7`2_85H|86s$Hp-*(b~?BCC6FjW=(?58)u^QCdZLM@iD~@Ep>q9yx$uEL-Yj-E P00000NkvXXu0mjfF#vB* literal 0 HcmV?d00001 diff --git a/examples/creating-source-plugins/package.json b/examples/creating-source-plugins/package.json new file mode 100644 index 0000000000000..34071a17c59ee --- /dev/null +++ b/examples/creating-source-plugins/package.json @@ -0,0 +1,14 @@ +{ + "name": "creating-source-plugins", + "version": "1.0.0", + "description": "Monorepo for examples, api, and plugins for creating first class source plugins", + "main": "index.js", + "author": "@gillkyle", + "license": "MIT", + "workspaces": [ + "api", + "example-site", + "source-plugin" + ], + "private": true +} diff --git a/examples/creating-source-plugins/source-plugin/README.md b/examples/creating-source-plugins/source-plugin/README.md new file mode 100644 index 0000000000000..1d88f045e1984 --- /dev/null +++ b/examples/creating-source-plugins/source-plugin/README.md @@ -0,0 +1,3 @@ +# Example Source Plugin + +See the root of the monorepo for details about running this plugin inside of the `example-site` folder. It is installed in the example site and can be debugged and developed while running there. diff --git a/examples/creating-source-plugins/source-plugin/gatsby-node.js b/examples/creating-source-plugins/source-plugin/gatsby-node.js new file mode 100644 index 0000000000000..935297827e34f --- /dev/null +++ b/examples/creating-source-plugins/source-plugin/gatsby-node.js @@ -0,0 +1,274 @@ +const { createRemoteFileNode } = require(`gatsby-source-filesystem`) +const WebSocket = require("ws") +const { ApolloClient } = require("apollo-client") +const { InMemoryCache } = require("apollo-cache-inmemory") +const { split } = require("apollo-link") +const { HttpLink } = require("apollo-link-http") +const { WebSocketLink } = require("apollo-link-ws") +const { getMainDefinition } = require("apollo-utilities") +const fetch = require("node-fetch") +const gql = require("graphql-tag") + +/** + * ============================================================================ + * Create a GraphQL client to subscribe to live data changes + * ============================================================================ + */ + +// Create an http link: +const httpLink = new HttpLink({ + uri: "http://localhost:4000", + fetch, +}) + +// Create a WebSocket link: +const wsLink = new WebSocketLink({ + uri: `ws://localhost:4000`, + options: { + reconnect: true, + }, + webSocketImpl: WebSocket, +}) + +// using the ability to split links, you can send data to each link/url +// depending on what kind of operation is being sent +const link = split( + // split based on operation type + ({ query }) => { + const definition = getMainDefinition(query) + return ( + definition.kind === "OperationDefinition" && + definition.operation === "subscription" + ) + }, + wsLink, + httpLink +) + +const client = new ApolloClient({ + link, + cache: new InMemoryCache(), +}) + +/** + * ============================================================================ + * Helper functions and constants + * ============================================================================ + */ + +const POST_NODE_TYPE = `Post` +const AUTHOR_NODE_TYPE = `Author` + +// helper function for creating nodes +const createNodeFromData = (item, nodeType, helpers) => { + const nodeMetadata = { + id: helpers.createNodeId(`${nodeType}-${item.id}`), + parent: null, // this is used if nodes are derived from other nodes, a little different than a foreign key relationship, more fitting for a transformer plugin that is changing the node + children: [], + internal: { + type: nodeType, + content: JSON.stringify(item), + contentDigest: helpers.createContentDigest(item), + }, + } + + const node = Object.assign({}, item, nodeMetadata) + helpers.createNode(node) + return node +} + +/** + * ============================================================================ + * Verify plugin loads + * ============================================================================ + */ + +// should see message in console when running `gatsby develop` in example-site +exports.onPreInit = () => console.log("Loaded source-plugin") + +/** + * ============================================================================ + * Link nodes together with a customized GraphQL Schema + * ============================================================================ + */ + +exports.createSchemaCustomization = ({ actions }) => { + const { createTypes } = actions + createTypes(` + type Post implements Node { + id: ID! + slug: String! + description: String! + imgUrl: String! + imgAlt: String! + # create relationships between Post and File nodes for optimized images + remoteImage: File @link + # create relationships between Post and Author nodes + author: Author @link(from: "author.name" by: "name") + } + + type Author implements Node { + id: ID! + name: String! + }`) +} + +/** + * ============================================================================ + * Source and cache nodes from the API + * ============================================================================ + */ + +exports.sourceNodes = async function sourceNodes( + { + actions, + cache, + createContentDigest, + createNodeId, + getNodesByType, + getNode, + }, + pluginOptions +) { + const { createNode, touchNode, deleteNode } = actions + const helpers = Object.assign({}, actions, { + createContentDigest, + createNodeId, + }) + + // you can access plugin options here if need be + console.log(`Space ID: ${pluginOptions.spaceId}`) + + // simple caching example, you can find in .cache/caches/source-plugin/some-diskstore + await cache.set(`hello`, `world`) + console.log(await cache.get(`hello`)) + + // touch nodes to ensure they aren't garbage collected + getNodesByType(POST_NODE_TYPE).forEach(node => touchNode({ nodeId: node.id })) + getNodesByType(AUTHOR_NODE_TYPE).forEach(node => + touchNode({ nodeId: node.id }) + ) + + // listen for updates using subscriptions from the API + if (pluginOptions.preview) { + console.log( + "Subscribing to updates on ws://localhost:4000 (plugin is in Preview mode)" + ) + const subscription = await client.subscribe({ + query: gql` + subscription { + posts { + id + slug + description + imgUrl + imgAlt + author { + id + name + } + status + } + } + `, + }) + subscription.subscribe(({ data }) => { + console.log(`Subscription received:`) + console.log(data.posts) + data.posts.forEach(post => { + const nodeId = createNodeId(`${POST_NODE_TYPE}-${post.id}`) + switch (post.status) { + case "deleted": + deleteNode({ + node: getNode(nodeId), + }) + break + case "created": + case "updated": + default: + // created and updated can be handled by the same code path + // the post's id is presumed to stay constant (or can be inferred) + createNodeFromData(post, POST_NODE_TYPE, helpers) + break + } + }) + }) + } + + // store the response from the API in the cache + const cacheKey = "your-source-data-key" + let sourceData = await cache.get(cacheKey) + + // fetch fresh data if nothiing is found in the cache or a plugin option says not to cache data + if (!sourceData || !pluginOptions.cacheResponse) { + console.log("Not using cache for source data, fetching fresh content") + const { data } = await client.query({ + query: gql` + query { + posts { + id + slug + description + imgUrl + imgAlt + author { + id + name + } + } + authors { + id + name + } + } + `, + }) + await cache.set(cacheKey, data) + sourceData = data + } + + // loop through data returned from the api and create Gatsby nodes for them + sourceData.posts.forEach(post => + createNodeFromData(post, POST_NODE_TYPE, helpers) + ) + sourceData.authors.forEach(author => + createNodeFromData(author, AUTHOR_NODE_TYPE, helpers) + ) + + return +} + +/** + * ============================================================================ + * Transform remote file nodes + * ============================================================================ + */ + +exports.onCreateNode = async ({ + actions: { createNode }, + getCache, + createNodeId, + node, +}) => { + // transfrom remote file nodes using Gatsby sharp plugins + // because onCreateNode is called for all nodes, verify that you are only running this code on nodes created by your plugin + if (node.internal.type === POST_NODE_TYPE) { + // create a FileNode in Gatsby that gatsby-transformer-sharp will create optimized images for + const fileNode = await createRemoteFileNode({ + // the url of the remote image to generate a node for + url: node.imgUrl, + getCache, + createNode, + createNodeId, + parentNodeId: node.id, + }) + + if (fileNode) { + // used to add a field `remoteImage` to the Post node from the File node in the schemaCustomization API + node.remoteImage = fileNode.id + + // inference can link these without schemaCustomization like this, but creates a less sturdy schema + // node.remoteImage___NODE = fileNode.id + } + } +} diff --git a/examples/creating-source-plugins/source-plugin/index.js b/examples/creating-source-plugins/source-plugin/index.js new file mode 100644 index 0000000000000..172f1ae6a468c --- /dev/null +++ b/examples/creating-source-plugins/source-plugin/index.js @@ -0,0 +1 @@ +// noop diff --git a/examples/creating-source-plugins/source-plugin/package.json b/examples/creating-source-plugins/source-plugin/package.json new file mode 100644 index 0000000000000..53449361a87c5 --- /dev/null +++ b/examples/creating-source-plugins/source-plugin/package.json @@ -0,0 +1,28 @@ +{ + "name": "source-plugin", + "version": "1.0.0", + "description": "A minimal boilerplate for the essential files Gatsby looks for in a plugin", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [ + "gatsby", + "gatsby-plugin" + ], + "author": "Kyle Gill ", + "license": "MIT", + "dependencies": { + "apollo-cache-inmemory": "^1.6.5", + "apollo-client": "^2.6.8", + "apollo-link": "^1.2.13", + "apollo-link-http": "^1.5.16", + "apollo-link-ws": "^1.0.19", + "apollo-utilities": "^1.3.3", + "gatsby-source-filesystem": "^2.2.2", + "graphql": "^15.0.0", + "graphql-tag": "^2.10.3", + "node-fetch": "^2.6.0", + "ws": "^7.2.3" + } +} diff --git a/package.json b/package.json index 70c0465e96888..3e0502d69e897 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "@types/babel__code-frame": "^7.0.1", "@types/bluebird": "^3.5.30", "@types/cache-manager": "^2.10.2", + "@types/common-tags": "^1.8.0", "@types/eslint": "^6.1.8", "@types/express": "^4.17.3", "@types/fast-levenshtein": "^0.0.1", @@ -18,6 +19,8 @@ "@types/lodash": "^4.14.149", "@types/node": "^12.12.30", "@types/node-fetch": "^2.5.5", + "@types/semver": "^7.1.0", + "@types/signal-exit": "^3.0.0", "@types/react": "^16.9.31", "@types/stack-trace": "^0.0.29", "@types/webpack": "^4.41.7", diff --git a/packages/gatsby-cli/CHANGELOG.md b/packages/gatsby-cli/CHANGELOG.md index a8392ff136ed7..00831b5584efc 100644 --- a/packages/gatsby-cli/CHANGELOG.md +++ b/packages/gatsby-cli/CHANGELOG.md @@ -3,6 +3,24 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.11.8](https://github.com/gatsbyjs/gatsby/compare/gatsby-cli@2.11.7...gatsby-cli@2.11.8) (2020-04-14) + +### Bug Fixes + +- **gatsby-cli:** Fix console methods incorrectly handling falsy values ([#23021](https://github.com/gatsbyjs/gatsby/issues/23021)) ([66a1b7f](https://github.com/gatsbyjs/gatsby/commit/66a1b7f)) + +## [2.11.7](https://github.com/gatsbyjs/gatsby/compare/gatsby-cli@2.11.6...gatsby-cli@2.11.7) (2020-04-10) + +### Bug Fixes + +- **gatsby-cli:** Address an issue that caused empty logs to print undefined ([#23000](https://github.com/gatsbyjs/gatsby/issues/23000)) ([be85f2e](https://github.com/gatsbyjs/gatsby/commit/be85f2e)) + +## [2.11.6](https://github.com/gatsbyjs/gatsby/compare/gatsby-cli@2.11.5...gatsby-cli@2.11.6) (2020-04-10) + +### Features + +- **gatsby-cli:** allow --recursive git url ([#22747](https://github.com/gatsbyjs/gatsby/issues/22747)) ([f4198e2](https://github.com/gatsbyjs/gatsby/commit/f4198e2)) + ## [2.11.5](https://github.com/gatsbyjs/gatsby/compare/gatsby-cli@2.11.4...gatsby-cli@2.11.5) (2020-04-03) **Note:** Version bump only for package gatsby-cli diff --git a/packages/gatsby-cli/package.json b/packages/gatsby-cli/package.json index 33c6763dd20f7..10d3f0633300d 100644 --- a/packages/gatsby-cli/package.json +++ b/packages/gatsby-cli/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-cli", "description": "Gatsby command-line interface for creating new sites and running Gatsby commands", - "version": "2.11.5", + "version": "2.11.8", "author": "Kyle Mathews ", "bin": { "gatsby": "lib/index.js" diff --git a/packages/gatsby-cli/src/index.ts b/packages/gatsby-cli/src/index.ts index f215a5f04a257..a08464ba5aed9 100755 --- a/packages/gatsby-cli/src/index.ts +++ b/packages/gatsby-cli/src/index.ts @@ -56,7 +56,7 @@ process.on(`unhandledRejection`, reason => { reason = new Error(util.format(reason)) } - report.panic(`UNHANDLED REJECTION`, reason) + report.panic(`UNHANDLED REJECTION`, reason as Error) }) process.on(`uncaughtException`, error => { diff --git a/packages/gatsby-cli/src/init-starter.ts b/packages/gatsby-cli/src/init-starter.ts index 8ed209a001734..5310cd00e0a0e 100644 --- a/packages/gatsby-cli/src/init-starter.ts +++ b/packages/gatsby-cli/src/init-starter.ts @@ -179,9 +179,14 @@ const clone = async (hostInfo: any, rootPath: string): Promise => { report.info(`Creating new site from git: ${url}`) - const args = [`clone`, ...branch, url, rootPath, `--depth=1`].filter(arg => - Boolean(arg) - ) + const args = [ + `clone`, + ...branch, + url, + rootPath, + `--recursive`, + `--depth=1`, + ].filter(arg => Boolean(arg)) await spawnWithArgs(`git`, args) diff --git a/packages/gatsby-cli/src/reporter/__tests__/index.js b/packages/gatsby-cli/src/reporter/__tests__/index.js index 68ac39f2947e2..b0423ebd15381 100644 --- a/packages/gatsby-cli/src/reporter/__tests__/index.js +++ b/packages/gatsby-cli/src/reporter/__tests__/index.js @@ -1,4 +1,4 @@ -const reporter = require(`../index.js`) +const reporter = require(`../`) const reporterActions = require(`../redux/actions`) // TODO: report.error now DOES return something. Get rid of this spying mocking stuff diff --git a/packages/gatsby-cli/src/reporter/__tests__/patch-console.ts b/packages/gatsby-cli/src/reporter/__tests__/patch-console.ts new file mode 100644 index 0000000000000..72d1cb43127e9 --- /dev/null +++ b/packages/gatsby-cli/src/reporter/__tests__/patch-console.ts @@ -0,0 +1,60 @@ +import { patchConsole } from "../patch-console" +import { reporter as gatsbyReporter } from "../reporter" + +describe(`patchConsole`, () => { + const reporter = { + log: jest.fn(), + warn: jest.fn(), + info: jest.fn(), + } + + patchConsole((reporter as unknown) as typeof gatsbyReporter) + ;[`info`, `log`, `warn`].forEach(method => { + describe(method, () => { + beforeEach(reporter[method].mockReset) + + it(`handles an empty call`, () => { + console[method]() + + expect(reporter[method]).toBeCalledWith(``) + }) + + it(`handles multiple arguments`, () => { + console[method](`foo`, `bar`, `baz`) + + expect(reporter[method]).toBeCalledWith(`foo bar baz`) + }) + + it(`handles formatting`, () => { + console[method](`%s %d`, `bar`, true) + + expect(reporter[method]).toBeCalledWith(`bar 1`) + }) + + it(`handles normal values`, () => { + console[method](1) + console[method](0) + console[method](true) + console[method](false) + console[method]([1, true, false, {}]) + console[method]({ 1: 1, true: true, false: `false`, obj: {} }) + + expect(reporter[method].mock.calls[0][0]).toBe(`1`) + expect(reporter[method].mock.calls[1][0]).toBe(`0`) + expect(reporter[method].mock.calls[2][0]).toBe(`true`) + expect(reporter[method].mock.calls[3][0]).toBe(`false`) + expect(reporter[method].mock.calls[4][0]).toBe(`[ 1, true, false, {} ]`) + expect(reporter[method].mock.calls[5][0]).toBe( + `{ '1': 1, true: true, false: 'false', obj: {} }` + ) + }) + + it(`handles undefined variables`, () => { + let a + console[method](a) + + expect(reporter[method]).toBeCalledWith(``) + }) + }) + }) +}) diff --git a/packages/gatsby-cli/src/reporter/catch-exit-signals.ts b/packages/gatsby-cli/src/reporter/catch-exit-signals.ts new file mode 100644 index 0000000000000..67c54680f50e1 --- /dev/null +++ b/packages/gatsby-cli/src/reporter/catch-exit-signals.ts @@ -0,0 +1,42 @@ +/* + * This module is used to catch if the user kills the gatsby process via cmd+c + * When this happens, there is some clean up logic we need to fire offf + */ +import signalExit from "signal-exit" +import { getStore } from "./redux" +import reporterActions from "./redux/actions" +import { ActivityStatuses } from "./constants" +import { reporter } from "./reporter" + +const interruptActivities = (): void => { + const { activities } = getStore().getState().logs + Object.keys(activities).forEach(activityId => { + const activity = activities[activityId] + if ( + activity.status === ActivityStatuses.InProgress || + activity.status === ActivityStatuses.NotStarted + ) { + reporter.completeActivity(activityId, ActivityStatuses.Interrupted) + } + }) +} + +export const prematureEnd = (): void => { + // hack so at least one activity is surely failed, so + // we are guaranteed to generate FAILED status + // if none of activity did explicitly fail + reporterActions.createPendingActivity({ + id: `panic`, + status: ActivityStatuses.Failed, + }) + + interruptActivities() +} + +export const catchExitSignals = (): void => { + signalExit((code, signal) => { + if (code !== 0 && signal !== `SIGINT` && signal !== `SIGTERM`) + prematureEnd() + else interruptActivities() + }) +} diff --git a/packages/gatsby-cli/src/reporter/index.js b/packages/gatsby-cli/src/reporter/index.js deleted file mode 100644 index 009064fcea216..0000000000000 --- a/packages/gatsby-cli/src/reporter/index.js +++ /dev/null @@ -1,430 +0,0 @@ -// @flow - -const semver = require(`semver`) -const { isCI } = require(`gatsby-core-utils`) -const signalExit = require(`signal-exit`) -const reporterActions = require(`./redux/actions`) - -const { LogLevels, ActivityStatuses, ActivityTypes } = require(`./constants`) - -let inkExists = false -try { - inkExists = require.resolve(`ink`) - // eslint-disable-next-line no-empty -} catch (err) {} - -if (!process.env.GATSBY_LOGGER) { - if ( - inkExists && - semver.satisfies(process.version, `>=8`) && - !isCI() && - typeof jest === `undefined` - ) { - process.env.GATSBY_LOGGER = `ink` - } else { - process.env.GATSBY_LOGGER = `yurnalist` - } -} -// if child process - use ipc logger -if (process.send) { - // process.env.FORCE_COLOR = `0` - - require(`./loggers/ipc`) -} - -if (process.env.GATSBY_LOGGER.includes(`json`)) { - require(`./loggers/json`) -} else if (process.env.GATSBY_LOGGER.includes(`yurnalist`)) { - require(`./loggers/yurnalist`) -} else { - require(`./loggers/ink`) -} - -const util = require(`util`) -const { stripIndent } = require(`common-tags`) -const chalk = require(`chalk`) -const { trackError } = require(`gatsby-telemetry`) -const tracer = require(`opentracing`).globalTracer() - -const { getErrorFormatter } = require(`./errors`) -const { getStore } = require(`./redux`) -import constructError from "../structured-errors/construct-error" - -const errorFormatter = getErrorFormatter() - -import type { ActivityTracker, ActivityArgs, Reporter } from "./types" - -const addMessage = level => text => reporterActions.createLog({ level, text }) - -let isVerbose = false - -const interruptActivities = () => { - const { activities } = getStore().getState().logs - Object.keys(activities).forEach(activityId => { - const activity = activities[activityId] - if ( - activity.status === ActivityStatuses.InProgress || - activity.status === ActivityStatuses.NotStarted - ) { - reporter.completeActivity(activityId, ActivityStatuses.Interrupted) - } - }) -} - -const prematureEnd = () => { - // hack so at least one activity is surely failed, so - // we are guaranteed to generate FAILED status - // if none of activity did explicitly fail - reporterActions.createPendingActivity({ - id: `panic`, - status: ActivityStatuses.Failed, - }) - - interruptActivities() -} - -signalExit((code, signal) => { - if (code !== 0 && signal !== `SIGINT` && signal !== `SIGTERM`) prematureEnd() - else interruptActivities() -}) - -/** - * Reporter module. - * @module reporter - */ -const reporter: Reporter = { - /** - * Strip initial indentation template function. - */ - stripIndent, - format: chalk, - /** - * Toggle verbosity. - * @param {boolean} [_isVerbose=true] - */ - setVerbose: (_isVerbose = true) => { - isVerbose = _isVerbose - }, - /** - * Turn off colors in error output. - * @param {boolean} [isNoColor=false] - */ - setNoColor(isNoColor = false) { - if (isNoColor) { - errorFormatter.withoutColors() - } - - // disables colors in popular terminal output coloring packages - // - chalk: see https://www.npmjs.com/package/chalk#chalksupportscolor - // - ansi-colors: see https://github.com/doowb/ansi-colors/blob/8024126c7115a0efb25a9a0e87bc5e29fd66831f/index.js#L5-L7 - if (isNoColor) { - process.env.FORCE_COLOR = `0` - // chalk determines color level at import time. Before we reach this point, - // chalk was already imported, so we need to retroactively adjust level - chalk.level = 0 - } - }, - /** - * Log arguments and exit process with status 1. - * @param {*} args - */ - panic(...args) { - const error = reporter.error(...args) - trackError(`GENERAL_PANIC`, { error }) - prematureEnd() - process.exit(1) - }, - - panicOnBuild(...args) { - const error = reporter.error(...args) - trackError(`BUILD_PANIC`, { error }) - if (process.env.gatsby_executing_command === `build`) { - prematureEnd() - process.exit(1) - } - return error - }, - - error(errorMeta, error) { - let details = {} - // Many paths to retain backcompat :scream: - if (arguments.length === 2) { - if (Array.isArray(error)) { - return error.map(errorItem => this.error(errorMeta, errorItem)) - } - details.error = error - details.context = { - sourceMessage: errorMeta + ` ` + error.message, - } - } else if (arguments.length === 1 && errorMeta instanceof Error) { - details.error = errorMeta - details.context = { - sourceMessage: errorMeta.message, - } - } else if (arguments.length === 1 && Array.isArray(errorMeta)) { - // when we get an array of messages, call this function once for each error - return errorMeta.map(errorItem => this.error(errorItem)) - } else if (arguments.length === 1 && typeof errorMeta === `object`) { - details = Object.assign({}, errorMeta) - } else if (arguments.length === 1 && typeof errorMeta === `string`) { - details.context = { - sourceMessage: errorMeta, - } - } - - const structuredError = constructError({ details }) - if (structuredError) { - reporterActions.createLog(structuredError) - } - - // TODO: remove this once Error component can render this info - // log formatted stacktrace - if (structuredError.error) { - this.log(errorFormatter.render(structuredError.error)) - } - return structuredError - }, - - /** - * Set prefix on uptime. - * @param {string} prefix - A string to prefix uptime with. - */ - uptime(prefix) { - this.verbose(`${prefix}: ${(process.uptime() * 1000).toFixed(3)}ms`) - }, - - verbose: text => { - if (isVerbose) { - reporterActions.createLog({ - level: LogLevels.Debug, - text, - }) - } - }, - - success: addMessage(LogLevels.Success), - info: addMessage(LogLevels.Info), - warn: addMessage(LogLevels.Warning), - log: addMessage(LogLevels.Log), - - pendingActivity: reporterActions.createPendingActivity, - - completeActivity: (id: string, status: string = ActivityStatuses.Success) => { - reporterActions.endActivity({ id, status }) - }, - - /** - * Time an activity. - * @param {string} text - Name of activity. - * @param {ActivityArgs} activityArgs - optional object with tracer parentSpan - * @returns {ActivityTracker} The activity tracker. - */ - activityTimer( - text: string, - activityArgs: ActivityArgs = {} - ): ActivityTracker { - let { parentSpan, id } = activityArgs - const spanArgs = parentSpan ? { childOf: parentSpan } : {} - if (!id) { - id = text - } - - const span = tracer.startSpan(text, spanArgs) - - return { - start: () => { - reporterActions.startActivity({ - id, - text, - type: ActivityTypes.Spinner, - }) - }, - setStatus: statusText => { - reporterActions.setActivityStatusText({ - id, - statusText, - }) - }, - panicOnBuild(...args) { - span.finish() - - reporterActions.setActivityErrored({ - id, - }) - - return reporter.panicOnBuild(...args) - }, - panic(...args) { - span.finish() - - reporterActions.endActivity({ - id, - status: ActivityStatuses.Failed, - }) - - return reporter.panic(...args) - }, - end() { - span.finish() - - reporterActions.endActivity({ - id, - status: ActivityStatuses.Success, - }) - }, - span, - } - }, - - /** - * Create an Activity that is not visible to the user - * - * During the lifecycle of the Gatsby process, sometimes we need to do some - * async work and wait for it to complete. A typical example of this is a job. - * This work should set the status of the process to `in progress` while running and - * `complete` (or `failure`) when complete. Activities do just this! However, they - * are visible to the user. So this function can be used to create a _hidden_ activity - * that while not displayed in the CLI, still triggers a change in process status. - * - * @param {string} text - Name of activity. - * @param {ActivityArgs} activityArgs - optional object with tracer parentSpan - * @returns {ActivityTracker} The activity tracker. - */ - phantomActivity( - text: string, - activityArgs: ActivityArgs = {} - ): ActivityTracker { - let { parentSpan, id } = activityArgs - const spanArgs = parentSpan ? { childOf: parentSpan } : {} - if (!id) { - id = text - } - - const span = tracer.startSpan(text, spanArgs) - - return { - start: () => { - reporterActions.startActivity({ - id, - text, - type: ActivityTypes.Hidden, - }) - }, - end() { - span.finish() - - reporterActions.endActivity({ - id, - status: ActivityStatuses.Success, - }) - }, - span, - } - }, - - /** - * Create a progress bar for an activity - * @param {string} text - Name of activity. - * @param {number} total - Total items to be processed. - * @param {number} start - Start count to show. - * @param {ActivityArgs} activityArgs - optional object with tracer parentSpan - * @returns {ActivityTracker} The activity tracker. - */ - createProgress( - text: string, - total = 0, - start = 0, - activityArgs: ActivityArgs = {} - ): ActivityTracker { - let { parentSpan, id } = activityArgs - const spanArgs = parentSpan ? { childOf: parentSpan } : {} - if (!id) { - id = text - } - const span = tracer.startSpan(text, spanArgs) - - let lastUpdateTime = 0 - let unflushedProgress = 0 - let unflushedTotal = 0 - const progressUpdateDelay = Math.round(1000 / 10) // 10 fps *shrug* - - const updateProgress = forced => { - const t = Date.now() - if (!forced && t - lastUpdateTime <= progressUpdateDelay) return - - if (unflushedTotal > 0) { - reporterActions.setActivityTotal({ id, total: unflushedTotal }) - unflushedTotal = 0 - } - if (unflushedProgress > 0) { - reporterActions.activityTick({ id, increment: unflushedProgress }) - unflushedProgress = 0 - } - lastUpdateTime = t - } - - return { - start: () => { - reporterActions.startActivity({ - id, - text, - type: ActivityTypes.Progress, - current: start, - total, - }) - }, - setStatus: statusText => { - reporterActions.setActivityStatusText({ - id, - statusText, - }) - }, - tick: (increment = 1) => { - unflushedProgress += increment // Have to manually track this :/ - updateProgress() - }, - panicOnBuild(...args) { - span.finish() - - reporterActions.setActivityErrored({ - id, - }) - - return reporter.panicOnBuild(...args) - }, - panic(...args) { - span.finish() - - reporterActions.endActivity({ - id, - status: ActivityStatuses.Failed, - }) - - return reporter.panic(...args) - }, - done: () => { - updateProgress(true) - span.finish() - reporterActions.endActivity({ - id, - status: ActivityStatuses.Success, - }) - }, - set total(value) { - unflushedTotal = value - updateProgress() - }, - span, - } - }, - // This method was called in older versions of gatsby, so we need to keep it to avoid - // "reporter._setStage is not a function" error when gatsby@<2.16 is used with gatsby-cli@>=2.8 - _setStage() {}, -} - -console.log = (...args) => reporter.log(util.format(...args)) -console.warn = (...args) => reporter.warn(util.format(...args)) -console.info = (...args) => reporter.info(util.format(...args)) -console.error = (...args) => reporter.error(util.format(...args)) - -module.exports = reporter diff --git a/packages/gatsby-cli/src/reporter/index.ts b/packages/gatsby-cli/src/reporter/index.ts new file mode 100644 index 0000000000000..1417ea5e2d44d --- /dev/null +++ b/packages/gatsby-cli/src/reporter/index.ts @@ -0,0 +1,11 @@ +import { startLogger } from "./start-logger" +import { patchConsole } from "./patch-console" +import { catchExitSignals } from "./catch-exit-signals" +import { reporter } from "./reporter" + +catchExitSignals() +startLogger() +patchConsole(reporter) + +export default reporter +module.exports = reporter diff --git a/packages/gatsby-cli/src/reporter/patch-console.ts b/packages/gatsby-cli/src/reporter/patch-console.ts new file mode 100644 index 0000000000000..f10d27e0e96c6 --- /dev/null +++ b/packages/gatsby-cli/src/reporter/patch-console.ts @@ -0,0 +1,24 @@ +/* + * This module is used to patch console through our reporter so we can track + * these logs + */ +import util from "util" +import { reporter as gatsbyReporter } from "./reporter" + +export const patchConsole = (reporter: typeof gatsbyReporter): void => { + console.log = (...args: any[]): void => { + const [format, ...rest] = args + reporter.log(util.format(format === undefined ? `` : format, ...rest)) + } + console.warn = (...args: any[]): void => { + const [format, ...rest] = args + reporter.warn(util.format(format === undefined ? `` : format, ...rest)) + } + console.info = (...args: any[]): void => { + const [format, ...rest] = args + reporter.info(util.format(format === undefined ? `` : format, ...rest)) + } + console.error = (format: any, ...args: any[]): void => { + reporter.error(util.format(format, ...args)) + } +} diff --git a/packages/gatsby-cli/src/reporter/reporter-phantom.ts b/packages/gatsby-cli/src/reporter/reporter-phantom.ts new file mode 100644 index 0000000000000..b052561c91eb9 --- /dev/null +++ b/packages/gatsby-cli/src/reporter/reporter-phantom.ts @@ -0,0 +1,42 @@ +import reporterActions from "./redux/actions" +import { ActivityStatuses, ActivityTypes } from "./constants" +import { Span } from "opentracing" + +interface ICreatePhantomReporterArguments { + text: string + id: string + span: Span +} + +export interface IPhantomReporter { + start(): void + end(): void + span: Span +} + +export const createPhantomReporter = ({ + text, + id, + span, +}: ICreatePhantomReporterArguments): IPhantomReporter => { + return { + start(): void { + reporterActions.startActivity({ + id, + text, + type: ActivityTypes.Hidden, + }) + }, + + end(): void { + span.finish() + + reporterActions.endActivity({ + id, + status: ActivityStatuses.Success, + }) + }, + + span, + } +} diff --git a/packages/gatsby-cli/src/reporter/reporter-progress.ts b/packages/gatsby-cli/src/reporter/reporter-progress.ts new file mode 100644 index 0000000000000..eb0477bb8d177 --- /dev/null +++ b/packages/gatsby-cli/src/reporter/reporter-progress.ts @@ -0,0 +1,122 @@ +import reporterActions from "./redux/actions" +import { ActivityStatuses, ActivityTypes } from "./constants" +import { Span } from "opentracing" +import { reporter as gatsbyReporter } from "./reporter" +import { IStructuredError } from "../structured-errors/types" +import { ErrorMeta } from "./types" + +interface ICreateProgressReporterArguments { + id: string + text: string + start: number + total: number + span: Span + reporter: typeof gatsbyReporter +} + +export interface IProgressReporter { + start(): void + setStatus(statusText: string): void + tick(increment?: number): void + panicOnBuild( + arg: any, + ...otherArgs: any[] + ): IStructuredError | IStructuredError[] + panic(arg: any, ...otherArgs: any[]): void + done(): void + total: number + span: Span +} + +export const createProgressReporter = ({ + id, + text, + start, + total, + span, + reporter, +}: ICreateProgressReporterArguments): IProgressReporter => { + let lastUpdateTime = 0 + let unflushedProgress = 0 + let unflushedTotal = 0 + const progressUpdateDelay = Math.round(1000 / 10) // 10 fps *shrug* + + const updateProgress = (forced: boolean = false): void => { + const t = Date.now() + if (!forced && t - lastUpdateTime <= progressUpdateDelay) return + + if (unflushedTotal > 0) { + reporterActions.setActivityTotal({ id, total: unflushedTotal }) + unflushedTotal = 0 + } + if (unflushedProgress > 0) { + reporterActions.activityTick({ id, increment: unflushedProgress }) + unflushedProgress = 0 + } + lastUpdateTime = t + } + + return { + start(): void { + reporterActions.startActivity({ + id, + text, + type: ActivityTypes.Progress, + current: start, + total, + }) + }, + + setStatus(statusText: string): void { + reporterActions.setActivityStatusText({ + id, + statusText, + }) + }, + + tick(increment: number = 1): void { + unflushedProgress += increment // Have to manually track this :/ + updateProgress() + }, + + panicOnBuild( + errorMeta: ErrorMeta, + error?: Error | Error[] + ): IStructuredError | IStructuredError[] { + span.finish() + + reporterActions.setActivityErrored({ + id, + }) + + return reporter.panicOnBuild(errorMeta, error) + }, + + panic(errorMeta: ErrorMeta, error?: Error | Error[]): void { + span.finish() + + reporterActions.endActivity({ + id, + status: ActivityStatuses.Failed, + }) + + return reporter.panic(errorMeta, error) + }, + + done(): void { + updateProgress(true) + span.finish() + reporterActions.endActivity({ + id, + status: ActivityStatuses.Success, + }) + }, + + set total(value: number) { + unflushedTotal = value + updateProgress() + }, + + span, + } +} diff --git a/packages/gatsby-cli/src/reporter/reporter-timer.ts b/packages/gatsby-cli/src/reporter/reporter-timer.ts new file mode 100644 index 0000000000000..3d19179422fdf --- /dev/null +++ b/packages/gatsby-cli/src/reporter/reporter-timer.ts @@ -0,0 +1,88 @@ +/* + * This module is used when calling reporter. + * these logs + */ +import reporterActions from "./redux/actions" +import { ActivityStatuses, ActivityTypes } from "./constants" +import { Span } from "opentracing" +import { reporter as gatsbyReporter } from "./reporter" +import { IStructuredError } from "../structured-errors/types" +import { ErrorMeta } from "./types" + +interface ICreateTimerReporterArguments { + text: string + id: string + span: Span + reporter: typeof gatsbyReporter +} + +export interface ITimerReporter { + start(): void + setStatus(statusText: string): void + panicOnBuild( + arg: any, + ...otherArgs: any[] + ): IStructuredError | IStructuredError[] + panic(arg: any, ...otherArgs: any[]): void + end(): void + span: Span +} + +export const createTimerReporter = ({ + text, + id, + span, + reporter, +}: ICreateTimerReporterArguments): ITimerReporter => { + return { + start(): void { + reporterActions.startActivity({ + id, + text, + type: ActivityTypes.Spinner, + }) + }, + + setStatus(statusText: string): void { + reporterActions.setActivityStatusText({ + id, + statusText, + }) + }, + + panicOnBuild( + errorMeta: ErrorMeta, + error?: Error | Error[] + ): IStructuredError | IStructuredError[] { + span.finish() + + reporterActions.setActivityErrored({ + id, + }) + + return reporter.panicOnBuild(errorMeta, error) + }, + + panic(errorMeta: ErrorMeta, error?: Error | Error[]): void { + span.finish() + + reporterActions.endActivity({ + id, + status: ActivityStatuses.Failed, + }) + + return reporter.panic(errorMeta, error) + }, + + end(): void { + span.finish() + + reporterActions.endActivity({ + id, + status: ActivityStatuses.Success, + }) + }, + + span, + } +} diff --git a/packages/gatsby-cli/src/reporter/reporter.ts b/packages/gatsby-cli/src/reporter/reporter.ts new file mode 100644 index 0000000000000..87be5a5b65f35 --- /dev/null +++ b/packages/gatsby-cli/src/reporter/reporter.ts @@ -0,0 +1,259 @@ +import { stripIndent } from "common-tags" +import chalk from "chalk" +import { trackError } from "gatsby-telemetry" +import { globalTracer, Span } from "opentracing" + +import reporterActions from "./redux/actions" +import { LogLevels, ActivityStatuses } from "./constants" +import { getErrorFormatter } from "./errors" +import constructError from "../structured-errors/construct-error" +import { prematureEnd } from "./catch-exit-signals" +import { IStructuredError } from "../structured-errors/types" +import { createTimerReporter, ITimerReporter } from "./reporter-timer" +import { createPhantomReporter, IPhantomReporter } from "./reporter-phantom" +import { createProgressReporter, IProgressReporter } from "./reporter-progress" +import { ErrorMeta, CreateLogAction } from "./types" + +const errorFormatter = getErrorFormatter() +const tracer = globalTracer() + +interface IActivityArgs { + id?: string + parentSpan?: Span +} + +let isVerbose = false + +/** + * Reporter module. + * @module reporter + */ +class Reporter { + /** + * Strip initial indentation template function. + */ + stripIndent = stripIndent + format = chalk + + /** + * Toggle verbosity. + */ + setVerbose = (_isVerbose: boolean = true): void => { + isVerbose = _isVerbose + } + + /** + * Turn off colors in error output. + */ + setNoColor = (isNoColor: boolean = false): void => { + if (isNoColor) { + errorFormatter.withoutColors() + } + + // disables colors in popular terminal output coloring packages + // - chalk: see https://www.npmjs.com/package/chalk#chalksupportscolor + // - ansi-colors: see https://github.com/doowb/ansi-colors/blob/8024126c7115a0efb25a9a0e87bc5e29fd66831f/index.js#L5-L7 + if (isNoColor) { + process.env.FORCE_COLOR = `0` + // chalk determines color level at import time. Before we reach this point, + // chalk was already imported, so we need to retroactively adjust level + chalk.level = 0 + } + } + + /** + * Log arguments and exit process with status 1. + */ + panic = (errorMeta: ErrorMeta, error?: Error | Error[]): void => { + const reporterError = this.error(errorMeta, error) + trackError(`GENERAL_PANIC`, { error: reporterError }) + prematureEnd() + process.exit(1) + } + + panicOnBuild = ( + errorMeta: ErrorMeta, + error?: Error | Error[] + ): IStructuredError | IStructuredError[] => { + const reporterError = this.error(errorMeta, error) + trackError(`BUILD_PANIC`, { error: reporterError }) + if (process.env.gatsby_executing_command === `build`) { + prematureEnd() + process.exit(1) + } + return reporterError + } + + error = ( + errorMeta: ErrorMeta, + error?: Error | Error[] + ): IStructuredError | IStructuredError[] => { + let details: { + error?: Error + context: {} + } = { + context: {}, + } + + // Many paths to retain backcompat :scream: + // 1. + // reporter.error(any, Error); + // reporter.error(any, [Error]); + if (error) { + if (Array.isArray(error)) { + return error.map(errorItem => + this.error(errorMeta, errorItem) + ) as IStructuredError[] + } + details.error = error + details.context = { + sourceMessage: errorMeta + ` ` + error.message, + } + // 2. + // reporter.error(Error); + } else if (errorMeta instanceof Error) { + details.error = errorMeta + details.context = { + sourceMessage: errorMeta.message, + } + // 3. + // reporter.error([Error]); + } else if (Array.isArray(errorMeta)) { + // when we get an array of messages, call this function once for each error + return errorMeta.map(errorItem => + this.error(errorItem) + ) as IStructuredError[] + // 4. + // reporter.error(errorMeta); + } else if (typeof errorMeta === `object`) { + details = { ...errorMeta } + // 5. + // reporter.error('foo'); + } else if (typeof errorMeta === `string`) { + details.context = { + sourceMessage: errorMeta, + } + } + + const structuredError = constructError({ details }) + if (structuredError) { + reporterActions.createLog(structuredError) + } + + // TODO: remove this once Error component can render this info + // log formatted stacktrace + if (structuredError.error) { + this.log(errorFormatter.render(structuredError.error)) + } + return structuredError + } + + /** + * Set prefix on uptime. + */ + uptime = (prefix: string): void => { + this.verbose(`${prefix}: ${(process.uptime() * 1000).toFixed(3)}ms`) + } + + verbose = (text: string): void => { + if (isVerbose) { + reporterActions.createLog({ + level: LogLevels.Debug, + text, + }) + } + } + + success = (text?: string): CreateLogAction => + reporterActions.createLog({ level: LogLevels.Success, text }) + info = (text?: string): CreateLogAction => + reporterActions.createLog({ level: LogLevels.Info, text }) + warn = (text?: string): CreateLogAction => + reporterActions.createLog({ level: LogLevels.Warning, text }) + log = (text?: string): CreateLogAction => + reporterActions.createLog({ level: LogLevels.Log, text }) + + pendingActivity = reporterActions.createPendingActivity + + completeActivity = ( + id: string, + status: ActivityStatuses = ActivityStatuses.Success + ): void => { + reporterActions.endActivity({ id, status }) + } + + /** + * Time an activity. + */ + activityTimer = ( + text: string, + activityArgs: IActivityArgs = {} + ): ITimerReporter => { + let { parentSpan, id } = activityArgs + const spanArgs = parentSpan ? { childOf: parentSpan } : {} + if (!id) { + id = text + } + + const span = tracer.startSpan(text, spanArgs) + + return createTimerReporter({ text, id, span, reporter: this }) + } + + /** + * Create an Activity that is not visible to the user + * + * During the lifecycle of the Gatsby process, sometimes we need to do some + * async work and wait for it to complete. A typical example of this is a job. + * This work should set the status of the process to `in progress` while running and + * `complete` (or `failure`) when complete. Activities do just this! However, they + * are visible to the user. So this function can be used to create a _hidden_ activity + * that while not displayed in the CLI, still triggers a change in process status. + */ + phantomActivity = ( + text: string, + activityArgs: IActivityArgs = {} + ): IPhantomReporter => { + let { parentSpan, id } = activityArgs + const spanArgs = parentSpan ? { childOf: parentSpan } : {} + if (!id) { + id = text + } + + const span = tracer.startSpan(text, spanArgs) + + return createPhantomReporter({ id, text, span }) + } + + /** + * Create a progress bar for an activity + */ + createProgress = ( + text: string, + total = 0, + start = 0, + activityArgs: IActivityArgs = {} + ): IProgressReporter => { + let { parentSpan, id } = activityArgs + const spanArgs = parentSpan ? { childOf: parentSpan } : {} + if (!id) { + id = text + } + const span = tracer.startSpan(text, spanArgs) + + return createProgressReporter({ + id, + text, + total, + start, + span, + reporter: this, + }) + } + + // This method was called in older versions of gatsby, so we need to keep it to avoid + // "reporter._setStage is not a function" error when gatsby@<2.16 is used with gatsby-cli@>=2.8 + _setStage = (): void => {} +} + +export const reporter = new Reporter() diff --git a/packages/gatsby-cli/src/reporter/start-logger.ts b/packages/gatsby-cli/src/reporter/start-logger.ts new file mode 100644 index 0000000000000..bb6166fb0cee9 --- /dev/null +++ b/packages/gatsby-cli/src/reporter/start-logger.ts @@ -0,0 +1,40 @@ +/* + * This module is a side-effect filled module to load in the proper logger. + */ +import semver from "semver" +import { isCI } from "gatsby-core-utils" + +export const startLogger = (): void => { + let inkExists = false + try { + inkExists = !!require.resolve(`ink`) + // eslint-disable-next-line no-empty + } catch (err) {} + + if (!process.env.GATSBY_LOGGER) { + if ( + inkExists && + semver.satisfies(process.version, `>=8`) && + !isCI() && + typeof jest === `undefined` + ) { + process.env.GATSBY_LOGGER = `ink` + } else { + process.env.GATSBY_LOGGER = `yurnalist` + } + } + // if child process - use ipc logger + if (process.send) { + // process.env.FORCE_COLOR = `0` + + require(`./loggers/ipc`) + } + + if (process.env.GATSBY_LOGGER.includes(`json`)) { + require(`./loggers/json`) + } else if (process.env.GATSBY_LOGGER.includes(`yurnalist`)) { + require(`./loggers/yurnalist`) + } else { + require(`./loggers/ink`) + } +} diff --git a/packages/gatsby-cli/src/reporter/types.js b/packages/gatsby-cli/src/reporter/types.js deleted file mode 100644 index e0131dbc55965..0000000000000 --- a/packages/gatsby-cli/src/reporter/types.js +++ /dev/null @@ -1,31 +0,0 @@ -// @flow - -export type ActivityTracker = { - start(): Function, - end(): Function, - setStatus(status: string): Function, - span: Object, -} - -export type ActivityArgs = { - parentSpan?: Object, -} - -type LogMessageType = (format: string, ...args: Array) => void - -export interface Reporter { - stripIndent: Function; - format: Object; - setVerbose(isVerbose: boolean): void; - setNoColor(isNoColor: boolean): void; - panic(...args: Array): void; - panicOnBuild(...args: Array): void; - error(errorMeta: string | Object, error?: Object): void; - uptime(prefix: string): void; - success: LogMessageType; - verbose: LogMessageType; - info: LogMessageType; - warn: LogMessageType; - log: LogMessageType; - activityTimer(name: string, activityArgs: ActivityArgs): ActivityTracker; -} diff --git a/packages/gatsby-cli/src/reporter/types.ts b/packages/gatsby-cli/src/reporter/types.ts new file mode 100644 index 0000000000000..7a97a7118b832 --- /dev/null +++ b/packages/gatsby-cli/src/reporter/types.ts @@ -0,0 +1,12 @@ +// TODO: This needs to be implemented when redux/acitons is converted to TS +export type CreateLogAction = any + +export type ErrorMeta = + | { + id: string + error?: Error + context: Record + [id: string]: any + } + | string + | Error diff --git a/packages/gatsby-plugin-fullstory/CHANGELOG.md b/packages/gatsby-plugin-fullstory/CHANGELOG.md index 100ebfc71327d..c78663b3ceb69 100644 --- a/packages/gatsby-plugin-fullstory/CHANGELOG.md +++ b/packages/gatsby-plugin-fullstory/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.2.2](https://github.com/gatsbyjs/gatsby/compare/gatsby-plugin-fullstory@2.2.1...gatsby-plugin-fullstory@2.2.2) (2020-04-14) + +### Bug Fixes + +- **gatsby-plugin-fullstory:** Updated to Edge URL + Add Update… ([#23089](https://github.com/gatsbyjs/gatsby/issues/23089)) ([843cf3a](https://github.com/gatsbyjs/gatsby/commit/843cf3a)), closes [#23088](https://github.com/gatsbyjs/gatsby/issues/23088) + ## [2.2.1](https://github.com/gatsbyjs/gatsby/compare/gatsby-plugin-fullstory@2.2.0...gatsby-plugin-fullstory@2.2.1) (2020-03-23) **Note:** Version bump only for package gatsby-plugin-fullstory diff --git a/packages/gatsby-plugin-fullstory/package.json b/packages/gatsby-plugin-fullstory/package.json index 5f7a2cfa248a8..55855af082567 100644 --- a/packages/gatsby-plugin-fullstory/package.json +++ b/packages/gatsby-plugin-fullstory/package.json @@ -1,6 +1,6 @@ { "name": "gatsby-plugin-fullstory", - "version": "2.2.1", + "version": "2.2.2", "description": "Plugin to add the tracking code for Fullstory.com", "main": "index.js", "scripts": { diff --git a/packages/gatsby-plugin-fullstory/src/__tests__/__snapshots__/gatsby-ssr.js.snap b/packages/gatsby-plugin-fullstory/src/__tests__/__snapshots__/gatsby-ssr.js.snap index c5abc86c05878..9bb812c868d87 100644 --- a/packages/gatsby-plugin-fullstory/src/__tests__/__snapshots__/gatsby-ssr.js.snap +++ b/packages/gatsby-plugin-fullstory/src/__tests__/__snapshots__/gatsby-ssr.js.snap @@ -10,7 +10,7 @@ Array [ "__html": " window['_fs_debug'] = false; window['_fs_host'] = 'fullstory.com'; -window['_fs_script'] = 'fullstory.com/s/fs.js'; +window['_fs_script'] = 'edge.fullstory.com/s/fs.js'; window['_fs_org'] = 'test-org'; window['_fs_namespace'] = 'FS'; (function(m,n,e,t,l,o,g,y){ @@ -19,11 +19,15 @@ window['_fs_namespace'] = 'FS'; o=n.createElement(t);o.async=1;o.crossOrigin='anonymous';o.src='https://'+_fs_script; y=n.getElementsByTagName(t)[0];y.parentNode.insertBefore(o,y); g.identify=function(i,v,s){g(l,{uid:i},s);if(v)g(l,v,s)};g.setUserVars=function(v,s){g(l,v,s)};g.event=function(i,v,s){g('event',{n:i,p:v},s)}; + g.anonymize=function(){g.identify(!!0)}; g.shutdown=function(){g(\\"rec\\",!1)};g.restart=function(){g(\\"rec\\",!0)}; - g.log = function(a,b) { g(\\"log\\", [a,b]) }; + g.log = function(a,b){g(\\"log\\",[a,b])}; g.consent=function(a){g(\\"consent\\",!arguments.length||a)}; g.identifyAccount=function(i,v){o='account';v=v||{};v.acctId=i;g(o,v)}; g.clearUserCookie=function(){}; + g._w={};y='XMLHttpRequest';g._w[y]=m[y];y='fetch';g._w[y]=m[y]; + if(m[y])m[y]=function(){return g._w[y].apply(this,arguments)}; + g._v=\\"1.2.0\\"; })(window,document,window['_fs_namespace'],'script','user'); ", } diff --git a/packages/gatsby-plugin-fullstory/src/gatsby-ssr.js b/packages/gatsby-plugin-fullstory/src/gatsby-ssr.js index 759645d98eab7..da3c4b444cf19 100644 --- a/packages/gatsby-plugin-fullstory/src/gatsby-ssr.js +++ b/packages/gatsby-plugin-fullstory/src/gatsby-ssr.js @@ -9,7 +9,7 @@ export const onRenderBody = ({ setHeadComponents }, pluginOptions) => { __html: ` window['_fs_debug'] = false; window['_fs_host'] = 'fullstory.com'; -window['_fs_script'] = 'fullstory.com/s/fs.js'; +window['_fs_script'] = 'edge.fullstory.com/s/fs.js'; window['_fs_org'] = '${pluginOptions.fs_org}'; window['_fs_namespace'] = 'FS'; (function(m,n,e,t,l,o,g,y){ @@ -18,11 +18,15 @@ window['_fs_namespace'] = 'FS'; o=n.createElement(t);o.async=1;o.crossOrigin='anonymous';o.src='https://'+_fs_script; y=n.getElementsByTagName(t)[0];y.parentNode.insertBefore(o,y); g.identify=function(i,v,s){g(l,{uid:i},s);if(v)g(l,v,s)};g.setUserVars=function(v,s){g(l,v,s)};g.event=function(i,v,s){g('event',{n:i,p:v},s)}; + g.anonymize=function(){g.identify(!!0)}; g.shutdown=function(){g("rec",!1)};g.restart=function(){g("rec",!0)}; - g.log = function(a,b) { g("log", [a,b]) }; + g.log = function(a,b){g("log",[a,b])}; g.consent=function(a){g("consent",!arguments.length||a)}; g.identifyAccount=function(i,v){o='account';v=v||{};v.acctId=i;g(o,v)}; g.clearUserCookie=function(){}; + g._w={};y='XMLHttpRequest';g._w[y]=m[y];y='fetch';g._w[y]=m[y]; + if(m[y])m[y]=function(){return g._w[y].apply(this,arguments)}; + g._v="1.2.0"; })(window,document,window['_fs_namespace'],'script','user'); `, }} diff --git a/packages/gatsby-plugin-mdx/CHANGELOG.md b/packages/gatsby-plugin-mdx/CHANGELOG.md index 4e2e592fd360b..1b227a566c288 100644 --- a/packages/gatsby-plugin-mdx/CHANGELOG.md +++ b/packages/gatsby-plugin-mdx/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.1.7](https://github.com/gatsbyjs/gatsby/compare/gatsby-plugin-mdx@1.1.6...gatsby-plugin-mdx@1.1.7) (2020-04-10) + +### Bug Fixes + +- **gatsby-plugin-mdx:** Truncate non-latin language excerpts correctly ([#22638](https://github.com/gatsbyjs/gatsby/issues/22638)) ([ec80671](https://github.com/gatsbyjs/gatsby/commit/ec80671)) + ## [1.1.6](https://github.com/gatsbyjs/gatsby/compare/gatsby-plugin-mdx@1.1.5...gatsby-plugin-mdx@1.1.6) (2020-04-07) ### Bug Fixes diff --git a/packages/gatsby-plugin-mdx/README.md b/packages/gatsby-plugin-mdx/README.md index e84135696b459..ebadfca7cec7e 100644 --- a/packages/gatsby-plugin-mdx/README.md +++ b/packages/gatsby-plugin-mdx/README.md @@ -562,6 +562,22 @@ export const pageQuery = graphql` ` ``` +## Troubleshooting + +### Excerpts for non-latin languages + +By default, `excerpt` uses `underscore.string/prune` which doesn't handle non-latin characters ([https://github.com/epeli/underscore.string/issues/418](https://github.com/epeli/underscore.string/issues/418)). + +If that is the case, you can set `truncate` option on `excerpt` field, like: + +```graphql +{ + markdownRemark { + excerpt(truncate: true) + } +} +``` + ## License MIT diff --git a/packages/gatsby-plugin-mdx/gatsby/source-nodes.js b/packages/gatsby-plugin-mdx/gatsby/source-nodes.js index e22e5dc0a0a6a..04063f32f2a34 100644 --- a/packages/gatsby-plugin-mdx/gatsby/source-nodes.js +++ b/packages/gatsby-plugin-mdx/gatsby/source-nodes.js @@ -1,4 +1,5 @@ const _ = require(`lodash`) +const { GraphQLBoolean } = require(`gatsby/graphql`) const remark = require(`remark`) const english = require(`retext-english`) const remark2retext = require(`remark-retext`) @@ -151,8 +152,12 @@ module.exports = ( type: `Int`, defaultValue: 140, }, + truncate: { + type: GraphQLBoolean, + defaultValue: false, + }, }, - async resolve(mdxNode, { pruneLength }) { + async resolve(mdxNode, { pruneLength, truncate }) { if (mdxNode.excerpt) { return Promise.resolve(mdxNode.excerpt) } @@ -166,7 +171,14 @@ module.exports = ( return }) - return prune(excerptNodes.join(` `), pruneLength, `…`) + if (!truncate) { + return prune(excerptNodes.join(` `), pruneLength, `…`) + } + + return _.truncate(excerptNodes.join(` `), { + length: pruneLength, + omission: `…`, + }) }, }, headings: { diff --git a/packages/gatsby-plugin-mdx/package.json b/packages/gatsby-plugin-mdx/package.json index c4dd73eed21c9..99dfaefc4f21b 100644 --- a/packages/gatsby-plugin-mdx/package.json +++ b/packages/gatsby-plugin-mdx/package.json @@ -1,6 +1,6 @@ { "name": "gatsby-plugin-mdx", - "version": "1.1.6", + "version": "1.1.7", "description": "MDX integration for Gatsby", "main": "index.js", "license": "MIT", diff --git a/packages/gatsby-plugin-react-helmet/CHANGELOG.md b/packages/gatsby-plugin-react-helmet/CHANGELOG.md index 31c5c8978630e..f6dd327340ae9 100644 --- a/packages/gatsby-plugin-react-helmet/CHANGELOG.md +++ b/packages/gatsby-plugin-react-helmet/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [3.2.2](https://github.com/gatsbyjs/gatsby/compare/gatsby-plugin-react-helmet@3.2.1...gatsby-plugin-react-helmet@3.2.2) (2020-04-10) + +### Bug Fixes + +- **gatsby-plugin-react-helmet:** allow the use of `react-helmet@6` ([#22993](https://github.com/gatsbyjs/gatsby/issues/22993)) ([ed2762f](https://github.com/gatsbyjs/gatsby/commit/ed2762f)) + ## [3.2.1](https://github.com/gatsbyjs/gatsby/compare/gatsby-plugin-react-helmet@3.2.0...gatsby-plugin-react-helmet@3.2.1) (2020-03-23) **Note:** Version bump only for package gatsby-plugin-react-helmet diff --git a/packages/gatsby-plugin-react-helmet/package.json b/packages/gatsby-plugin-react-helmet/package.json index e38c12715069a..c7f42cf1db541 100644 --- a/packages/gatsby-plugin-react-helmet/package.json +++ b/packages/gatsby-plugin-react-helmet/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-plugin-react-helmet", "description": "Manage document head data with react-helmet. Provides drop-in server rendering support for Gatsby.", - "version": "3.2.1", + "version": "3.2.2", "author": "Kyle Mathews ", "bugs": { "url": "https://github.com/gatsbyjs/gatsby/issues" @@ -36,7 +36,7 @@ "main": "index.js", "peerDependencies": { "gatsby": "^2.0.0", - "react-helmet": "^5.1.3" + "react-helmet": "^5.1.3 || ^6.0.0" }, "repository": { "type": "git", diff --git a/packages/gatsby-plugin-sitemap/CHANGELOG.md b/packages/gatsby-plugin-sitemap/CHANGELOG.md index ccca8926378b1..291cb26cbd6f6 100644 --- a/packages/gatsby-plugin-sitemap/CHANGELOG.md +++ b/packages/gatsby-plugin-sitemap/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.3.2](https://github.com/gatsbyjs/gatsby/compare/gatsby-plugin-sitemap@2.3.1...gatsby-plugin-sitemap@2.3.2) (2020-04-14) + +### Bug Fixes + +- **plugin-sitemap:** missing data in query results ([#22843](https://github.com/gatsbyjs/gatsby/issues/22843)) ([cff1d7f](https://github.com/gatsbyjs/gatsby/commit/cff1d7f)), closes [#22703](https://github.com/gatsbyjs/gatsby/issues/22703) + ## [2.3.1](https://github.com/gatsbyjs/gatsby/compare/gatsby-plugin-sitemap@2.3.0...gatsby-plugin-sitemap@2.3.1) (2020-03-23) **Note:** Version bump only for package gatsby-plugin-sitemap diff --git a/packages/gatsby-plugin-sitemap/package.json b/packages/gatsby-plugin-sitemap/package.json index 9832f1809401b..09277f50e83b1 100644 --- a/packages/gatsby-plugin-sitemap/package.json +++ b/packages/gatsby-plugin-sitemap/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-plugin-sitemap", "description": "Gatsby plugin that automatically creates a sitemap for your site", - "version": "2.3.1", + "version": "2.3.2", "author": "Nicholas Young <nicholas@nicholaswyoung.com>", "bugs": { "url": "https://github.com/gatsbyjs/gatsby/issues" diff --git a/packages/gatsby-plugin-sitemap/src/__tests__/internals.js b/packages/gatsby-plugin-sitemap/src/__tests__/internals.js index 8b047261d2c74..7a8b5652f25be 100644 --- a/packages/gatsby-plugin-sitemap/src/__tests__/internals.js +++ b/packages/gatsby-plugin-sitemap/src/__tests__/internals.js @@ -137,6 +137,16 @@ describe(`results using non default alternatives`, () => { }, ], }, + otherData: { + nodes: [ + { + name: `test`, + }, + { + name: `test 2`, + }, + ], + }, }, } } @@ -161,5 +171,6 @@ describe(`results using non default alternatives`, () => { const queryRecords = filterQuery(results, [], ``, customSiteResolver) expect(queryRecords.site.siteMetadata.siteUrl).toEqual(customUrl) + expect(queryRecords).toHaveProperty(`otherData`) }) }) diff --git a/packages/gatsby-plugin-sitemap/src/internals.js b/packages/gatsby-plugin-sitemap/src/internals.js index 8e61b4afec0cc..7b5a8356a8425 100644 --- a/packages/gatsby-plugin-sitemap/src/internals.js +++ b/packages/gatsby-plugin-sitemap/src/internals.js @@ -20,7 +20,9 @@ export function filterQuery( throw new Error(errors.join(`, `)) } - let { allPages, originalType } = getNodes(data.allSitePage) + const { allSitePage, ...otherData } = data + + let { allPages, originalType } = getNodes(allSitePage) // Removing excluded paths allPages = allPages.filter( @@ -53,6 +55,7 @@ export function filterQuery( siteUrl = withoutTrailingSlash(siteUrl) return { + ...otherData, allSitePage: { [originalType]: originalType === `nodes` diff --git a/packages/gatsby-remark-embed-snippet/CHANGELOG.md b/packages/gatsby-remark-embed-snippet/CHANGELOG.md index 042457e287261..a748cc1e70d1f 100644 --- a/packages/gatsby-remark-embed-snippet/CHANGELOG.md +++ b/packages/gatsby-remark-embed-snippet/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [4.2.2](https://github.com/gatsbyjs/gatsby/compare/gatsby-remark-embed-snippet@4.2.1...gatsby-remark-embed-snippet@4.2.2) (2020-04-11) + +### Features + +- **remark-embed-snippet:** embed specific lines ([#21907](https://github.com/gatsbyjs/gatsby/issues/21907)) ([109b905](https://github.com/gatsbyjs/gatsby/commit/109b905)) + ## [4.2.1](https://github.com/gatsbyjs/gatsby/compare/gatsby-remark-embed-snippet@4.2.0...gatsby-remark-embed-snippet@4.2.1) (2020-03-23) **Note:** Version bump only for package gatsby-remark-embed-snippet diff --git a/packages/gatsby-remark-embed-snippet/README.md b/packages/gatsby-remark-embed-snippet/README.md index 2e34e16a62f11..f1568b03c06fc 100644 --- a/packages/gatsby-remark-embed-snippet/README.md +++ b/packages/gatsby-remark-embed-snippet/README.md @@ -185,9 +185,8 @@ The resulting HTML generated from the markdown file above would look something l ### Highlighting Lines -You can also specify specific lines for Prism to highlight using -`highlight-line` and `highlight-next-line` comments. You can also specify a -range of lines to highlight, relative to a `highlight-range` comment. +You can specify specific lines for Prism to highlight using +`highlight-line` and `highlight-next-line` comments. You can also specify a range of lines to highlight, relative to a `highlight-range` comment. **JavaScript example**: @@ -250,8 +249,49 @@ quz: "highlighted" It's also possible to specify a range of lines to be hidden. +You can either specify line ranges in the embed using the syntax: + +- #Lx - Embed one line from a file +- #Lx-y - Embed a range of lines from a file +- #Lx-y,a-b - Embed non-consecutive ranges of lines from a file + +**Markdown example**: + +```markdown +This is the JSX of my app: + +`embed:App.js#L6-8` +``` + +With this example snippet: + +```js +import React from "react" +import ReactDOM from "react-dom" + +function App() { + return ( +

+

Hello world

+
+ ) +} +``` + +Will produce something like this: + +```markdown +This is the JSX of my app: + +
+

Hello world

+
+``` + **JavaScript example**: +You can also add `// hide-range` comments to your files. + ```jsx // hide-range{1-2} import React from "react" diff --git a/packages/gatsby-remark-embed-snippet/package.json b/packages/gatsby-remark-embed-snippet/package.json index 15862533f3f20..750f64af93a3c 100644 --- a/packages/gatsby-remark-embed-snippet/package.json +++ b/packages/gatsby-remark-embed-snippet/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-remark-embed-snippet", "description": "Gatsby plugin to embed formatted code snippets within markdown", - "version": "4.2.1", + "version": "4.2.2", "author": "Brian Vaughn ", "bugs": { "url": "https://github.com/gatsbyjs/gatsby/issues" diff --git a/packages/gatsby-remark-embed-snippet/src/__tests__/index.js b/packages/gatsby-remark-embed-snippet/src/__tests__/index.js index a1c1fca9e2831..65bac278bbd0b 100644 --- a/packages/gatsby-remark-embed-snippet/src/__tests__/index.js +++ b/packages/gatsby-remark-embed-snippet/src/__tests__/index.js @@ -36,6 +36,56 @@ describe(`gatsby-remark-embed-snippet`, () => { ) }) + it(`should display a code block of a single line`, () => { + const codeBlockValue = ` console.log('hello world')` + fs.readFileSync.mockReturnValue(`function test() { +${codeBlockValue} +}`) + + const markdownAST = remark.parse(`\`embed:hello-world.js#L2\``) + const transformed = plugin({ markdownAST }, { directory: `examples` }) + + const codeBlock = transformed.children[0].children[0] + + expect(codeBlock.value).toEqual(codeBlockValue) + }) + + it(`should display a code block of a range of lines`, () => { + const codeBlockValue = ` if (window.location.search.indexOf('query') > -1) { + console.log('The user is searching') +}` + fs.readFileSync.mockReturnValue(`function test() { +${codeBlockValue} +}`) + + const markdownAST = remark.parse(`\`embed:hello-world.js#L2-4\``) + const transformed = plugin({ markdownAST }, { directory: `examples` }) + + const codeBlock = transformed.children[0].children[0] + + expect(codeBlock.value).toEqual(codeBlockValue) + }) + + it(`should display a code block of a range of non-consecutive lines`, () => { + const notInSnippet = `lineShouldNotBeInSnippet();` + fs.readFileSync.mockReturnValue(`function test() { + if (window.location.search.indexOf('query') > -1) { + console.log('The user is searching') + } +} +${notInSnippet} +window.addEventListener('resize', () => { + test(); +})`) + + const markdownAST = remark.parse(`\`embed:hello-world.js#L2-4,7-9\``) + const transformed = plugin({ markdownAST }, { directory: `examples` }) + + const codeBlock = transformed.children[0].children[0] + + expect(codeBlock.value).not.toContain(notInSnippet) + }) + it(`should error if an invalid file path is specified`, () => { fs.existsSync.mockImplementation(path => path !== `examples/hello-world.js`) diff --git a/packages/gatsby-remark-embed-snippet/src/index.js b/packages/gatsby-remark-embed-snippet/src/index.js index dd9fec7dcdd92..c5fcb8d6ff9a4 100644 --- a/packages/gatsby-remark-embed-snippet/src/index.js +++ b/packages/gatsby-remark-embed-snippet/src/index.js @@ -4,6 +4,7 @@ const path = require(`path`) const fs = require(`fs`) const normalizePath = require(`normalize-path`) const visit = require(`unist-util-visit`) +const rangeParser = require(`parse-numeric-range`) // Language defaults to extension.toLowerCase(); // This map tracks languages that don't match their extension. @@ -46,13 +47,33 @@ module.exports = ({ markdownAST, markdownNode }, { directory } = {}) => { if (value.startsWith(`embed:`)) { const file = value.substr(6) - const snippetPath = normalizePath(path.join(directory, file)) + let snippetPath = normalizePath(path.join(directory, file)) + + // Embed specific lines numbers of a file + let lines = [] + const rangePrefixIndex = snippetPath.indexOf(`#L`) + if (rangePrefixIndex > -1) { + const range = snippetPath.slice(rangePrefixIndex + 2) + if (range.length === 1) { + lines = [Number.parseInt(range, 10)] + } else { + lines = rangeParser.parse(range) + } + // Remove everything after the range prefix from file path + snippetPath = snippetPath.slice(0, rangePrefixIndex) + } if (!fs.existsSync(snippetPath)) { throw Error(`Invalid snippet specified; no such file "${snippetPath}"`) } - const code = fs.readFileSync(snippetPath, `utf8`).trim() + let code = fs.readFileSync(snippetPath, `utf8`).trim() + if (lines.length) { + code = code + .split(`\n`) + .filter((_, lineNumber) => lines.includes(lineNumber + 1)) + .join(`\n`) + } // PrismJS's theme styles are targeting pre[class*="language-"] // to apply its styles. We do the same here so that users @@ -60,7 +81,7 @@ module.exports = ({ markdownAST, markdownNode }, { directory } = {}) => { // outcome without any additional CSS. // // @see https://github.com/PrismJS/prism/blob/1d5047df37aacc900f8270b1c6215028f6988eb1/themes/prism.css#L49-L54 - const language = getLanguage(file) + const language = getLanguage(snippetPath) // Change the node type to code, insert our file as value and set language. node.type = `code` diff --git a/packages/gatsby-source-drupal/CHANGELOG.md b/packages/gatsby-source-drupal/CHANGELOG.md index fbd96ff044527..4d4deb18e7461 100644 --- a/packages/gatsby-source-drupal/CHANGELOG.md +++ b/packages/gatsby-source-drupal/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [3.4.3](https://github.com/gatsbyjs/gatsby/compare/gatsby-source-drupal@3.4.2...gatsby-source-drupal@3.4.3) (2020-04-10) + +### Bug Fixes + +- **gatsby-source-drupal:** Verify nodes exist before looping through them ([#22898](https://github.com/gatsbyjs/gatsby/issues/22898)) ([cdbe734](https://github.com/gatsbyjs/gatsby/commit/cdbe734)) + ## [3.4.2](https://github.com/gatsbyjs/gatsby/compare/gatsby-source-drupal@3.4.1...gatsby-source-drupal@3.4.2) (2020-03-23) **Note:** Version bump only for package gatsby-source-drupal diff --git a/packages/gatsby-source-drupal/package.json b/packages/gatsby-source-drupal/package.json index 8416ff92bfce2..77c3868d5ffac 100644 --- a/packages/gatsby-source-drupal/package.json +++ b/packages/gatsby-source-drupal/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-source-drupal", "description": "Gatsby source plugin for building websites using the Drupal CMS as a data source", - "version": "3.4.2", + "version": "3.4.3", "author": "Kyle Mathews ", "bugs": { "url": "https://github.com/gatsbyjs/gatsby/issues" diff --git a/packages/gatsby-source-drupal/src/utils.js b/packages/gatsby-source-drupal/src/utils.js index 44cf6e110d66a..ba8020c98c783 100644 --- a/packages/gatsby-source-drupal/src/utils.js +++ b/packages/gatsby-source-drupal/src/utils.js @@ -147,10 +147,10 @@ const handleWebhookUpdate = async ( nodesToUpdate.push(...addedReferencedNodes) } else { // if we are inserting new node, we need to update all referenced nodes - const newNodeReferencedNodes = referencedNodesLookup - .get(newNode) - .map(id => getNode(id)) - nodesToUpdate.push(...newNodeReferencedNodes) + const newNodes = referencedNodesLookup.get(newNode) + if (typeof newNodes !== `undefined`) { + newNodes.forEach(id => nodesToUpdate.push(getNode(id))) + } } // download file diff --git a/packages/gatsby-source-graphql/CHANGELOG.md b/packages/gatsby-source-graphql/CHANGELOG.md index c2cd2581bccb6..ac5b6f24e95e7 100644 --- a/packages/gatsby-source-graphql/CHANGELOG.md +++ b/packages/gatsby-source-graphql/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [2.4.0](https://github.com/gatsbyjs/gatsby/compare/gatsby-source-graphql@2.3.2...gatsby-source-graphql@2.4.0) (2020-04-14) + +**Note:** Version bump only for package gatsby-source-graphql + ## [2.3.2](https://github.com/gatsbyjs/gatsby/compare/gatsby-source-graphql@2.3.1...gatsby-source-graphql@2.3.2) (2020-04-06) ### Bug Fixes diff --git a/packages/gatsby-source-graphql/package.json b/packages/gatsby-source-graphql/package.json index 1345e4e467375..8b3c007ab6d54 100644 --- a/packages/gatsby-source-graphql/package.json +++ b/packages/gatsby-source-graphql/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-source-graphql", "description": "Gatsby plugin which adds a third-party GraphQL API to Gatsby GraphQL", - "version": "2.3.2", + "version": "2.4.0", "author": "Mikhail Novikov ", "bugs": { "url": "https://github.com/gatsbyjs/gatsby/issues" @@ -12,7 +12,7 @@ "apollo-link-http": "^1.5.16", "dataloader": "^2.0.0", "graphql": "^14.6.0", - "graphql-tools-fork": "^8.9.6", + "graphql-tools": "^5.0.0", "invariant": "^2.2.4", "node-fetch": "^1.7.3", "uuid": "^3.4.0" diff --git a/packages/gatsby-source-graphql/src/__tests__/gatsby-node.js b/packages/gatsby-source-graphql/src/__tests__/gatsby-node.js index 2678363539881..679add513536d 100644 --- a/packages/gatsby-source-graphql/src/__tests__/gatsby-node.js +++ b/packages/gatsby-source-graphql/src/__tests__/gatsby-node.js @@ -1,4 +1,4 @@ -jest.mock(`graphql-tools-fork`, () => { +jest.mock(`graphql-tools`, () => { return { transformSchema: jest.fn(), introspectSchema: jest.fn(), diff --git a/packages/gatsby-source-graphql/src/gatsby-node.js b/packages/gatsby-source-graphql/src/gatsby-node.js index 3fddfb6445734..55463559c53ce 100644 --- a/packages/gatsby-source-graphql/src/gatsby-node.js +++ b/packages/gatsby-source-graphql/src/gatsby-node.js @@ -4,7 +4,7 @@ const { transformSchema, introspectSchema, RenameTypes, -} = require(`graphql-tools-fork`) +} = require(`graphql-tools`) const { createHttpLink } = require(`apollo-link-http`) const nodeFetch = require(`node-fetch`) const invariant = require(`invariant`) diff --git a/packages/gatsby-source-graphql/src/transforms.js b/packages/gatsby-source-graphql/src/transforms.js index c39d53fdcff3c..4f700d4470c48 100644 --- a/packages/gatsby-source-graphql/src/transforms.js +++ b/packages/gatsby-source-graphql/src/transforms.js @@ -4,7 +4,7 @@ const { cloneType, healSchema, visitSchema, -} = require(`graphql-tools-fork`) +} = require(`graphql-tools`) class NamespaceUnderFieldTransform { constructor({ typeName, fieldName, resolver }) { diff --git a/packages/gatsby-theme-blog-core/CHANGELOG.md b/packages/gatsby-theme-blog-core/CHANGELOG.md index 558d44108191f..d8d99f6a9b614 100644 --- a/packages/gatsby-theme-blog-core/CHANGELOG.md +++ b/packages/gatsby-theme-blog-core/CHANGELOG.md @@ -3,6 +3,30 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.3.22](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-blog-core@1.3.21...gatsby-theme-blog-core@1.3.22) (2020-04-14) + +**Note:** Version bump only for package gatsby-theme-blog-core + +## [1.3.21](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-blog-core@1.3.20...gatsby-theme-blog-core@1.3.21) (2020-04-14) + +**Note:** Version bump only for package gatsby-theme-blog-core + +## [1.3.20](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-blog-core@1.3.19...gatsby-theme-blog-core@1.3.20) (2020-04-11) + +**Note:** Version bump only for package gatsby-theme-blog-core + +## [1.3.19](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-blog-core@1.3.18...gatsby-theme-blog-core@1.3.19) (2020-04-10) + +**Note:** Version bump only for package gatsby-theme-blog-core + +## [1.3.18](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-blog-core@1.3.17...gatsby-theme-blog-core@1.3.18) (2020-04-10) + +**Note:** Version bump only for package gatsby-theme-blog-core + +## [1.3.17](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-blog-core@1.3.16...gatsby-theme-blog-core@1.3.17) (2020-04-09) + +**Note:** Version bump only for package gatsby-theme-blog-core + ## [1.3.16](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-blog-core@1.3.15...gatsby-theme-blog-core@1.3.16) (2020-04-08) **Note:** Version bump only for package gatsby-theme-blog-core diff --git a/packages/gatsby-theme-blog-core/package.json b/packages/gatsby-theme-blog-core/package.json index 553ab72beec27..4d8403f5826e2 100644 --- a/packages/gatsby-theme-blog-core/package.json +++ b/packages/gatsby-theme-blog-core/package.json @@ -1,6 +1,6 @@ { "name": "gatsby-theme-blog-core", - "version": "1.3.16", + "version": "1.3.22", "main": "index.js", "author": "christopherbiscardi (@chrisbiscardi)", "license": "MIT", @@ -19,7 +19,7 @@ "dependencies": { "@mdx-js/mdx": "^1.5.7", "gatsby-core-utils": "^1.1.1", - "gatsby-plugin-mdx": "^1.1.6", + "gatsby-plugin-mdx": "^1.1.7", "gatsby-plugin-sharp": "^2.5.4", "gatsby-remark-copy-linked-files": "^2.2.1", "gatsby-remark-images": "^3.2.2", @@ -30,7 +30,7 @@ }, "devDependencies": { "@mdx-js/react": "^1.5.7", - "gatsby": "^2.20.14", + "gatsby": "^2.20.20", "prettier": "^1.19.1", "react": "^16.12.0", "react-dom": "^16.12.0" diff --git a/packages/gatsby-theme-blog/CHANGELOG.md b/packages/gatsby-theme-blog/CHANGELOG.md index a7f04f3eb6ad0..cef3adc23e7be 100644 --- a/packages/gatsby-theme-blog/CHANGELOG.md +++ b/packages/gatsby-theme-blog/CHANGELOG.md @@ -3,6 +3,30 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.4.22](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-blog@1.4.21...gatsby-theme-blog@1.4.22) (2020-04-14) + +**Note:** Version bump only for package gatsby-theme-blog + +## [1.4.21](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-blog@1.4.20...gatsby-theme-blog@1.4.21) (2020-04-14) + +**Note:** Version bump only for package gatsby-theme-blog + +## [1.4.20](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-blog@1.4.19...gatsby-theme-blog@1.4.20) (2020-04-11) + +**Note:** Version bump only for package gatsby-theme-blog + +## [1.4.19](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-blog@1.4.18...gatsby-theme-blog@1.4.19) (2020-04-10) + +**Note:** Version bump only for package gatsby-theme-blog + +## [1.4.18](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-blog@1.4.17...gatsby-theme-blog@1.4.18) (2020-04-10) + +**Note:** Version bump only for package gatsby-theme-blog + +## [1.4.17](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-blog@1.4.16...gatsby-theme-blog@1.4.17) (2020-04-09) + +**Note:** Version bump only for package gatsby-theme-blog + ## [1.4.16](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-blog@1.4.15...gatsby-theme-blog@1.4.16) (2020-04-08) **Note:** Version bump only for package gatsby-theme-blog diff --git a/packages/gatsby-theme-blog/package.json b/packages/gatsby-theme-blog/package.json index 8feaef9759545..90d00de18b78c 100644 --- a/packages/gatsby-theme-blog/package.json +++ b/packages/gatsby-theme-blog/package.json @@ -1,6 +1,6 @@ { "name": "gatsby-theme-blog", - "version": "1.4.16", + "version": "1.4.22", "description": "A Gatsby theme for miscellaneous blogging with a dark/light mode", "main": "index.js", "keywords": [ @@ -26,10 +26,10 @@ "gatsby-image": "^2.3.2", "gatsby-plugin-emotion": "^4.2.1", "gatsby-plugin-feed": "^2.4.1", - "gatsby-plugin-react-helmet": "^3.2.1", + "gatsby-plugin-react-helmet": "^3.2.2", "gatsby-plugin-theme-ui": "^0.2.53", "gatsby-plugin-twitter": "^2.2.2", - "gatsby-theme-blog-core": "^1.3.16", + "gatsby-theme-blog-core": "^1.3.22", "mdx-utils": "0.2.0", "react-helmet": "^5.2.1", "react-switch": "^5.0.1", @@ -39,7 +39,7 @@ "typography-theme-wordpress-2016": "^0.16.19" }, "devDependencies": { - "gatsby": "^2.20.14", + "gatsby": "^2.20.20", "prettier": "^1.19.1", "react": "^16.12.0", "react-dom": "^16.12.0" diff --git a/packages/gatsby-theme-notes/CHANGELOG.md b/packages/gatsby-theme-notes/CHANGELOG.md index dee08540f6112..561790739a57c 100644 --- a/packages/gatsby-theme-notes/CHANGELOG.md +++ b/packages/gatsby-theme-notes/CHANGELOG.md @@ -3,6 +3,30 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.2.21](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-notes@1.2.20...gatsby-theme-notes@1.2.21) (2020-04-14) + +**Note:** Version bump only for package gatsby-theme-notes + +## [1.2.20](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-notes@1.2.19...gatsby-theme-notes@1.2.20) (2020-04-14) + +**Note:** Version bump only for package gatsby-theme-notes + +## [1.2.19](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-notes@1.2.18...gatsby-theme-notes@1.2.19) (2020-04-11) + +**Note:** Version bump only for package gatsby-theme-notes + +## [1.2.18](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-notes@1.2.17...gatsby-theme-notes@1.2.18) (2020-04-10) + +**Note:** Version bump only for package gatsby-theme-notes + +## [1.2.17](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-notes@1.2.16...gatsby-theme-notes@1.2.17) (2020-04-10) + +**Note:** Version bump only for package gatsby-theme-notes + +## [1.2.16](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-notes@1.2.15...gatsby-theme-notes@1.2.16) (2020-04-09) + +**Note:** Version bump only for package gatsby-theme-notes + ## [1.2.15](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-notes@1.2.14...gatsby-theme-notes@1.2.15) (2020-04-08) **Note:** Version bump only for package gatsby-theme-notes diff --git a/packages/gatsby-theme-notes/package.json b/packages/gatsby-theme-notes/package.json index eabcbd183d9d2..38c6a44c2287b 100644 --- a/packages/gatsby-theme-notes/package.json +++ b/packages/gatsby-theme-notes/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-theme-notes", "description": "Gatsby Theme for adding a notes section to your website", - "version": "1.2.15", + "version": "1.2.21", "author": "John Otander", "license": "MIT", "main": "index.js", @@ -20,7 +20,7 @@ }, "homepage": "https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-theme-notes#readme", "devDependencies": { - "gatsby": "^2.20.14", + "gatsby": "^2.20.20", "react": "^16.12.0", "react-dom": "^16.12.0" }, @@ -39,7 +39,7 @@ "gatsby-core-utils": "^1.1.1", "gatsby-plugin-compile-es6-packages": "^2.1.0", "gatsby-plugin-emotion": "^4.2.1", - "gatsby-plugin-mdx": "^1.1.6", + "gatsby-plugin-mdx": "^1.1.7", "gatsby-plugin-meta-redirect": "^1.1.1", "gatsby-plugin-og-image": "0.0.1", "gatsby-plugin-redirects": "^1.0.0", diff --git a/packages/gatsby-transformer-documentationjs/CHANGELOG.md b/packages/gatsby-transformer-documentationjs/CHANGELOG.md index 56f5d57f6acd8..408e701ce7a84 100644 --- a/packages/gatsby-transformer-documentationjs/CHANGELOG.md +++ b/packages/gatsby-transformer-documentationjs/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [4.2.2](https://github.com/gatsbyjs/gatsby/compare/gatsby-transformer-documentationjs@4.2.1...gatsby-transformer-documentationjs@4.2.2) (2020-04-10) + +### Bug Fixes + +- create unique Nodes ([#22774](https://github.com/gatsbyjs/gatsby/issues/22774)) ([1381a0b](https://github.com/gatsbyjs/gatsby/commit/1381a0b)) + ## [4.2.1](https://github.com/gatsbyjs/gatsby/compare/gatsby-transformer-documentationjs@4.2.0...gatsby-transformer-documentationjs@4.2.1) (2020-03-23) **Note:** Version bump only for package gatsby-transformer-documentationjs diff --git a/packages/gatsby-transformer-documentationjs/package.json b/packages/gatsby-transformer-documentationjs/package.json index 5bbbf2db25b74..42a5a9c675150 100644 --- a/packages/gatsby-transformer-documentationjs/package.json +++ b/packages/gatsby-transformer-documentationjs/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-transformer-documentationjs", "description": "Gatsby transformer plugin which uses Documentation.js to extract JavaScript documentation", - "version": "4.2.1", + "version": "4.2.2", "author": "Kyle Mathews", "bugs": { "url": "https://github.com/gatsbyjs/gatsby/issues" diff --git a/packages/gatsby-transformer-documentationjs/src/__tests__/__snapshots__/gatsby-node.js.snap b/packages/gatsby-transformer-documentationjs/src/__tests__/__snapshots__/gatsby-node.js.snap index 105d9376297cd..8c960d06742fe 100644 --- a/packages/gatsby-transformer-documentationjs/src/__tests__/__snapshots__/gatsby-node.js.snap +++ b/packages/gatsby-transformer-documentationjs/src/__tests__/__snapshots__/gatsby-node.js.snap @@ -21,11 +21,11 @@ Object { exports[`transformer-react-doc-gen: onCreateNode Complex example should handle typedefs should handle type applications 1`] = ` Object { "children": Array [ - "documentationJS node_1 path #[{\\"name\\":\\"ObjectType\\",\\"kind\\":\\"typedef\\"},{\\"fieldName\\":\\"properties\\",\\"fieldIndex\\":0}] line 3--DocumentationJSComponentDescription--comment.description", + "documentationJS documentationJS node_1 path #[{\\"name\\":\\"ObjectType\\",\\"kind\\":\\"typedef\\"}] line 12 path #[{\\"name\\":\\"ObjectType\\",\\"kind\\":\\"typedef\\"},{\\"fieldName\\":\\"properties\\",\\"fieldIndex\\":0}] line 3--DocumentationJSComponentDescription--comment.description", ], "commentNumber": null, - "description___NODE": "documentationJS node_1 path #[{\\"name\\":\\"ObjectType\\",\\"kind\\":\\"typedef\\"},{\\"fieldName\\":\\"properties\\",\\"fieldIndex\\":0}] line 3--DocumentationJSComponentDescription--comment.description", - "id": "documentationJS node_1 path #[{\\"name\\":\\"ObjectType\\",\\"kind\\":\\"typedef\\"},{\\"fieldName\\":\\"properties\\",\\"fieldIndex\\":0}] line 3", + "description___NODE": "documentationJS documentationJS node_1 path #[{\\"name\\":\\"ObjectType\\",\\"kind\\":\\"typedef\\"}] line 12 path #[{\\"name\\":\\"ObjectType\\",\\"kind\\":\\"typedef\\"},{\\"fieldName\\":\\"properties\\",\\"fieldIndex\\":0}] line 3--DocumentationJSComponentDescription--comment.description", + "id": "documentationJS documentationJS node_1 path #[{\\"name\\":\\"ObjectType\\",\\"kind\\":\\"typedef\\"}] line 12 path #[{\\"name\\":\\"ObjectType\\",\\"kind\\":\\"typedef\\"},{\\"fieldName\\":\\"properties\\",\\"fieldIndex\\":0}] line 3", "internal": Object { "contentDigest": "content-digest", "type": "DocumentationJs", diff --git a/packages/gatsby-transformer-documentationjs/src/gatsby-node.js b/packages/gatsby-transformer-documentationjs/src/gatsby-node.js index a45bddd7bc9c8..d3e34aaf4323f 100644 --- a/packages/gatsby-transformer-documentationjs/src/gatsby-node.js +++ b/packages/gatsby-transformer-documentationjs/src/gatsby-node.js @@ -274,7 +274,7 @@ exports.onCreateNode = async ({ node, actions, ...helpers }) => { const docSkeletonNode = { commentNumber, level, - id: createNodeId(docId(node.id, docsJson)), + id: createNodeId(docId(parent, docsJson)), parent, children: [], internal: { diff --git a/packages/gatsby/CHANGELOG.md b/packages/gatsby/CHANGELOG.md index b73d8dffcc0e5..0ff6dacd72283 100644 --- a/packages/gatsby/CHANGELOG.md +++ b/packages/gatsby/CHANGELOG.md @@ -3,6 +3,42 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.20.20](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.20.19...gatsby@2.20.20) (2020-04-14) + +### Performance Improvements + +- **gatsby:** Support `lte` for indexed fast filters ([#22932](https://github.com/gatsbyjs/gatsby/issues/22932)) ([fd57224](https://github.com/gatsbyjs/gatsby/commit/fd57224)) + +## [2.20.19](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.20.18...gatsby@2.20.19) (2020-04-14) + +### Bug Fixes + +- **gatsby:** call schema rebuild manually on \_\_refresh ([#23009](https://github.com/gatsbyjs/gatsby/issues/23009)) ([8493de8](https://github.com/gatsbyjs/gatsby/commit/8493de8)) +- **gatsby:** Set a timeout of 15 seconds on queries ([#23036](https://github.com/gatsbyjs/gatsby/issues/23036)) ([1e81c76](https://github.com/gatsbyjs/gatsby/commit/1e81c76)) +- Ensure component order is deterministic ([#22965](https://github.com/gatsbyjs/gatsby/issues/22965)) ([94267be](https://github.com/gatsbyjs/gatsby/commit/94267be)) + +## [2.20.18](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.20.17...gatsby@2.20.18) (2020-04-11) + +### Bug Fixes + +- **gatsby:** Use `moveSync` over `renameSync` to fix cross mount cases ([#23029](https://github.com/gatsbyjs/gatsby/issues/23029)) ([96f8d4b](https://github.com/gatsbyjs/gatsby/commit/96f8d4b)) + +## [2.20.17](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.20.16...gatsby@2.20.17) (2020-04-10) + +**Note:** Version bump only for package gatsby + +## [2.20.16](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.20.15...gatsby@2.20.16) (2020-04-10) + +### Bug Fixes + +- **gatsby:** Use tmp dir for tmp redux cache folder ([#22959](https://github.com/gatsbyjs/gatsby/issues/22959)) ([86cf920](https://github.com/gatsbyjs/gatsby/commit/86cf920)) + +## [2.20.15](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.20.14...gatsby@2.20.15) (2020-04-09) + +### Bug Fixes + +- **gatsby:** improve async commons chunking ([#22879](https://github.com/gatsbyjs/gatsby/issues/22879)) ([7cf056f](https://github.com/gatsbyjs/gatsby/commit/7cf056f)) + ## [2.20.14](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.20.13...gatsby@2.20.14) (2020-04-08) ### Performance Improvements diff --git a/packages/gatsby/index.d.ts b/packages/gatsby/index.d.ts index 020f0c8fa9a50..e5919b29a1663 100644 --- a/packages/gatsby/index.d.ts +++ b/packages/gatsby/index.d.ts @@ -1,4 +1,5 @@ import * as React from "react" +import { Renderer } from "react-dom" import { EventEmitter } from "events" import { WindowLocation, NavigateFn } from "@reach/router" import { createContentDigest } from "gatsby-core-utils" @@ -537,7 +538,7 @@ export interface GatsbyBrowser { args: ReplaceComponentRendererArgs, options: PluginOptions ): any - replaceHydrateFunction?(args: BrowserPluginArgs, options: PluginOptions): any + replaceHydrateFunction?(args: BrowserPluginArgs, options: PluginOptions): Renderer shouldUpdateScroll?(args: ShouldUpdateScrollArgs, options: PluginOptions): any wrapPageElement?( args: WrapPageElementBrowserArgs, @@ -959,7 +960,13 @@ interface ActionOptions { } export interface BuildArgs extends ParentSpanPluginArgs { - graphql: Function + graphql( + query: string, + variables?: TVariables + ): Promise<{ + errors?: any + data?: TData + }> } export interface Actions { diff --git a/packages/gatsby/package.json b/packages/gatsby/package.json index b65f1673acda9..3a1d55e15c45f 100644 --- a/packages/gatsby/package.json +++ b/packages/gatsby/package.json @@ -1,7 +1,7 @@ { "name": "gatsby", "description": "Blazing fast modern site generator for React", - "version": "2.20.14", + "version": "2.20.20", "author": "Kyle Mathews ", "bin": { "gatsby": "./dist/bin/gatsby.js" @@ -80,7 +80,7 @@ "flat": "^4.1.0", "fs-exists-cached": "1.0.0", "fs-extra": "^8.1.0", - "gatsby-cli": "^2.11.5", + "gatsby-cli": "^2.11.8", "gatsby-core-utils": "^1.1.1", "gatsby-graphiql-explorer": "^0.3.1", "gatsby-link": "^2.3.2", diff --git a/packages/gatsby/src/bootstrap/__tests__/__snapshots__/graphql-runner.js.snap b/packages/gatsby/src/bootstrap/__tests__/__snapshots__/create-graphql-runner.js.snap similarity index 100% rename from packages/gatsby/src/bootstrap/__tests__/__snapshots__/graphql-runner.js.snap rename to packages/gatsby/src/bootstrap/__tests__/__snapshots__/create-graphql-runner.js.snap diff --git a/packages/gatsby/src/bootstrap/__tests__/graphql-runner.js b/packages/gatsby/src/bootstrap/__tests__/create-graphql-runner.js similarity index 88% rename from packages/gatsby/src/bootstrap/__tests__/graphql-runner.js rename to packages/gatsby/src/bootstrap/__tests__/create-graphql-runner.js index e9dba17611223..3445cc43dec90 100644 --- a/packages/gatsby/src/bootstrap/__tests__/graphql-runner.js +++ b/packages/gatsby/src/bootstrap/__tests__/create-graphql-runner.js @@ -1,6 +1,6 @@ jest.mock(`graphql`) -const createGraphqlRunner = require(`../graphql-runner`) +import { createGraphQLRunner } from "../create-graphql-runner" const { execute, validate, parse } = require(`graphql`) parse.mockImplementation(() => { @@ -31,7 +31,7 @@ describe(`grapqhl-runner`, () => { }) it(`should return the result when grapqhl has no errors`, async () => { - const graphqlRunner = createGraphqlRunner(createStore(), reporter) + const graphqlRunner = createGraphQLRunner(createStore(), reporter) const expectation = { data: { @@ -46,7 +46,7 @@ describe(`grapqhl-runner`, () => { }) it(`should return an errors array when structured errors found`, async () => { - const graphqlRunner = createGraphqlRunner(createStore(), reporter) + const graphqlRunner = createGraphQLRunner(createStore(), reporter) const expectation = { errors: [ @@ -64,7 +64,7 @@ describe(`grapqhl-runner`, () => { }) it(`should throw a structured error when created from createPage file`, async () => { - const graphqlRunner = createGraphqlRunner(createStore(), reporter) + const graphqlRunner = createGraphQLRunner(createStore(), reporter) const errorObject = { stack: `Error diff --git a/packages/gatsby/src/bootstrap/__tests__/requires-writer.js b/packages/gatsby/src/bootstrap/__tests__/requires-writer.js index 5506421f45541..b82fa698dc0e6 100644 --- a/packages/gatsby/src/bootstrap/__tests__/requires-writer.js +++ b/packages/gatsby/src/bootstrap/__tests__/requires-writer.js @@ -326,4 +326,29 @@ describe(`requires-writer`, () => { }) }) }) + + describe(`getComponents`, () => { + it(`should return components in a deterministic order`, () => { + const pagesInput = generatePagesState([ + { + component: `component1`, + componentChunkName: `chunkName1`, + matchPath: `matchPath1`, + path: `/path1`, + }, + { + component: `component2`, + componentChunkName: `chunkName2`, + path: `/path2`, + }, + ]) + + const pages = [...pagesInput.values()] + const pagesReversed = [...pagesInput.values()].reverse() + + expect(requiresWriter.getComponents(pages)).toEqual( + requiresWriter.getComponents(pagesReversed) + ) + }) + }) }) diff --git a/packages/gatsby/src/bootstrap/graphql-runner.js b/packages/gatsby/src/bootstrap/create-graphql-runner.ts similarity index 54% rename from packages/gatsby/src/bootstrap/graphql-runner.js rename to packages/gatsby/src/bootstrap/create-graphql-runner.ts index 3d6fb71b2b94d..35967ec130eb1 100644 --- a/packages/gatsby/src/bootstrap/graphql-runner.js +++ b/packages/gatsby/src/bootstrap/create-graphql-runner.ts @@ -1,14 +1,27 @@ -const stackTrace = require(`stack-trace`) +import stackTrace from "stack-trace" +import { ExecutionResultDataDefault } from "graphql/execution/execute" +import { Store } from "redux" -const GraphQLRunner = require(`../query/graphql-runner`).default -const errorParser = require(`../query/error-parser`).default +import GraphQLRunner from "../query/graphql-runner" +import errorParser from "../query/error-parser" +import { emitter } from "../redux" +import { Reporter } from "../.." +import { ExecutionResult, Source } from "../../graphql" +import { IGatsbyState } from "../redux/types" -const { emitter } = require(`../redux`) +type Runner = ( + query: string | Source, + context: Record +) => Promise> -module.exports = (store, reporter) => { +export const createGraphQLRunner = ( + store: Store, + reporter: Reporter +): Runner => { // TODO: Move tracking of changed state inside GraphQLRunner itself. https://github.com/gatsbyjs/gatsby/issues/20941 let runner = new GraphQLRunner(store) - ;[ + + const eventTypes: string[] = [ `DELETE_CACHE`, `CREATE_NODE`, `DELETE_NODE`, @@ -17,12 +30,15 @@ module.exports = (store, reporter) => { `SET_SCHEMA`, `ADD_FIELD_TO_NODE`, `ADD_CHILD_NODE_TO_PARENT_NODE`, - ].forEach(eventType => { - emitter.on(eventType, event => { + ] + + eventTypes.forEach(type => { + emitter.on(type, () => { runner = new GraphQLRunner(store) }) }) - return (query, context) => + + return (query, context): ReturnType => runner.query(query, context).then(result => { if (result.errors) { const structuredErrors = result.errors @@ -30,15 +46,18 @@ module.exports = (store, reporter) => { // Find the file where graphql was called. const file = stackTrace .parse(e) - .find(file => /createPages/.test(file.functionName)) + .find(file => /createPages/.test(file.getFunctionName())) if (file) { const structuredError = errorParser({ message: e.message, location: { - start: { line: file.lineNumber, column: file.columnNumber }, + start: { + line: file.getLineNumber(), + column: file.getColumnNumber(), + }, }, - filePath: file.fileName, + filePath: file.getFileName(), }) structuredError.context = { ...structuredError.context, diff --git a/packages/gatsby/src/bootstrap/index.js b/packages/gatsby/src/bootstrap/index.js index 8bee7678798a5..ffc8fc8eb413e 100644 --- a/packages/gatsby/src/bootstrap/index.js +++ b/packages/gatsby/src/bootstrap/index.js @@ -28,7 +28,7 @@ process.on(`unhandledRejection`, (reason, p) => { report.panic(reason) }) -const createGraphqlRunner = require(`./graphql-runner`) +import { createGraphQLRunner } from "./create-graphql-runner" const { extractQueries } = require(`../query/query-watcher`) const requiresWriter = require(`./requires-writer`) const { writeRedirects } = require(`./redirects-writer`) @@ -469,7 +469,7 @@ module.exports = async (args: BootstrapArgs) => { payload: _.flattenDeep([extensions, apiResults]), }) - const graphqlRunner = createGraphqlRunner(store, report) + const graphqlRunner = createGraphQLRunner(store, report) // Collect pages. activity = report.activityTimer(`createPages`, { diff --git a/packages/gatsby/src/bootstrap/requires-writer.js b/packages/gatsby/src/bootstrap/requires-writer.js index f1c24b6061791..e34c0c72a948e 100644 --- a/packages/gatsby/src/bootstrap/requires-writer.js +++ b/packages/gatsby/src/bootstrap/requires-writer.js @@ -52,6 +52,7 @@ const getComponents = pages => _(pages) .map(pickComponentFields) .uniqBy(c => c.componentChunkName) + .orderBy(c => c.componentChunkName) .value() /** @@ -254,4 +255,5 @@ module.exports = { writeAll, resetLastHash, startListener, + getComponents, } diff --git a/packages/gatsby/src/bootstrap/schema-hot-reloader.ts b/packages/gatsby/src/bootstrap/schema-hot-reloader.ts index 808b0ab70b89c..2cdd1efcaeab1 100644 --- a/packages/gatsby/src/bootstrap/schema-hot-reloader.ts +++ b/packages/gatsby/src/bootstrap/schema-hot-reloader.ts @@ -7,7 +7,6 @@ import report from "gatsby-cli/lib/reporter" import { IGatsbyState } from "../redux/types" type TypeMap = IGatsbyState["inferenceMetadata"]["typeMap"] -type SchemaCustomization = IGatsbyState["schemaCustomization"] type InferenceMetadata = IGatsbyState["inferenceMetadata"] const inferredTypesChanged = ( @@ -19,41 +18,46 @@ const inferredTypesChanged = ( typeMap[type].dirty && !haveEqualFields(typeMap[type], prevTypeMap[type]) ) -const schemaChanged = ( - schemaCustomization: SchemaCustomization, - lastSchemaCustomization: SchemaCustomization -): boolean => - [`fieldExtensions`, `printConfig`, `thirdPartySchemas`, `types`].some( - key => schemaCustomization[key] !== lastSchemaCustomization[key] - ) - let lastMetadata: InferenceMetadata -let lastSchemaCustomization: SchemaCustomization // API_RUNNING_QUEUE_EMPTY could be emitted multiple types // in a short period of time, so debounce seems reasonable const maybeRebuildSchema = debounce(async (): Promise => { - const { inferenceMetadata, schemaCustomization } = store.getState() + const { inferenceMetadata } = store.getState() - if ( - !inferredTypesChanged(inferenceMetadata.typeMap, lastMetadata.typeMap) && - !schemaChanged(schemaCustomization, lastSchemaCustomization) - ) { + if (!inferredTypesChanged(inferenceMetadata.typeMap, lastMetadata.typeMap)) { return } const activity = report.activityTimer(`rebuild schema`) activity.start() - lastMetadata = cloneDeep(inferenceMetadata) - lastSchemaCustomization = schemaCustomization await rebuild({ parentSpan: activity }) await updateStateAndRunQueries(false, { parentSpan: activity }) activity.end() }, 1000) -export const bootstrapSchemaHotReloader = (): void => { - const { inferenceMetadata, schemaCustomization } = store.getState() +function snapshotInferenceMetadata(): void { + const { inferenceMetadata } = store.getState() lastMetadata = cloneDeep(inferenceMetadata) - lastSchemaCustomization = schemaCustomization +} + +export function bootstrapSchemaHotReloader(): void { + // Snapshot inference metadata at the time of the last schema rebuild + // (even if schema was rebuilt elsewhere) + // Using the snapshot later to check if inferred types actually changed since the last rebuild + snapshotInferenceMetadata() + emitter.on(`SET_SCHEMA`, snapshotInferenceMetadata) + + startSchemaHotReloader() +} + +export function startSchemaHotReloader(): void { + // Listen for node changes outside of a regular sourceNodes API call, + // e.g. markdown file update via watcher emitter.on(`API_RUNNING_QUEUE_EMPTY`, maybeRebuildSchema) } + +export function stopSchemaHotReloader(): void { + emitter.off(`API_RUNNING_QUEUE_EMPTY`, maybeRebuildSchema) + maybeRebuildSchema.cancel() +} diff --git a/packages/gatsby/src/commands/develop.ts b/packages/gatsby/src/commands/develop.ts index 3f06dea88627c..d647ea85b41bf 100644 --- a/packages/gatsby/src/commands/develop.ts +++ b/packages/gatsby/src/commands/develop.ts @@ -31,12 +31,17 @@ import * as WorkerPool from "../utils/worker/pool" import http from "http" import https from "https" -import { bootstrapSchemaHotReloader } from "../bootstrap/schema-hot-reloader" +import { + bootstrapSchemaHotReloader, + startSchemaHotReloader, + stopSchemaHotReloader, +} from "../bootstrap/schema-hot-reloader" import bootstrapPageHotReloader from "../bootstrap/page-hot-reloader" import { developStatic } from "./develop-static" import withResolverContext from "../schema/context" import sourceNodes from "../utils/source-nodes" import { createSchemaCustomization } from "../utils/create-schema-customization" +import { rebuild as rebuildSchema } from "../schema" import { websocketManager } from "../utils/websocket-manager" import getSslCert from "../utils/get-ssl-cert" import { slash } from "gatsby-core-utils" @@ -203,6 +208,7 @@ async function startServer(program: IProgram): Promise { **/ const REFRESH_ENDPOINT = `/__refresh` const refresh = async (req: express.Request): Promise => { + stopSchemaHotReloader() let activity = report.activityTimer(`createSchemaCustomization`, {}) activity.start() await createSchemaCustomization({ @@ -215,6 +221,11 @@ async function startServer(program: IProgram): Promise { webhookBody: req.body, }) activity.end() + activity = report.activityTimer(`rebuild schema`) + activity.start() + await rebuildSchema({ parentSpan: activity }) + activity.end() + startSchemaHotReloader() } app.use(REFRESH_ENDPOINT, express.json()) app.post(REFRESH_ENDPOINT, (req, res) => { diff --git a/packages/gatsby/src/redux/__tests__/index.js b/packages/gatsby/src/redux/__tests__/index.js index e90eb1742765f..addc4d52aaf4f 100644 --- a/packages/gatsby/src/redux/__tests__/index.js +++ b/packages/gatsby/src/redux/__tests__/index.js @@ -16,7 +16,7 @@ jest.mock(`fs-extra`, () => { mockWrittenContent.set(file, content) ), readFileSync: jest.fn(file => mockWrittenContent.get(file)), - renameSync: jest.fn((from, to) => { + moveSync: jest.fn((from, to) => { // This will only work for folders if they are always the full prefix // of the file... (that goes for both input dirs). That's the case here. if (mockWrittenContent.has(to)) { diff --git a/packages/gatsby/src/redux/actions/internal.ts b/packages/gatsby/src/redux/actions/internal.ts index 19c811ce50087..04a33541a1e1f 100644 --- a/packages/gatsby/src/redux/actions/internal.ts +++ b/packages/gatsby/src/redux/actions/internal.ts @@ -1,4 +1,5 @@ import { + IGatsbyPlugin, ProgramStatus, ICreatePageDependencyAction, IDeleteComponentDependenciesAction, @@ -81,7 +82,7 @@ export const replaceComponentQuery = ({ */ export const replaceStaticQuery = ( args: any, - plugin: Plugin | null | undefined = null + plugin: IGatsbyPlugin | null | undefined = null ): IReplaceStaticQueryAction => { return { type: `REPLACE_STATIC_QUERY`, @@ -98,7 +99,7 @@ export const replaceStaticQuery = ( */ export const queryExtracted = ( { componentPath, query }: { componentPath: string; query: string }, - plugin: Plugin, + plugin: IGatsbyPlugin, traceId?: string ): IQueryExtractedAction => { return { @@ -116,7 +117,7 @@ export const queryExtracted = ( */ export const queryExtractionGraphQLError = ( { componentPath, error }: { componentPath: string; error: string }, - plugin: Plugin, + plugin: IGatsbyPlugin, traceId?: string ): IQueryExtractionGraphQLErrorAction => { return { @@ -135,7 +136,7 @@ export const queryExtractionGraphQLError = ( */ export const queryExtractedBabelSuccess = ( { componentPath }, - plugin: Plugin, + plugin: IGatsbyPlugin, traceId?: string ): IQueryExtractedBabelSuccessAction => { return { @@ -153,7 +154,7 @@ export const queryExtractedBabelSuccess = ( */ export const queryExtractionBabelError = ( { componentPath, error }: { componentPath: string; error: Error }, - plugin: Plugin, + plugin: IGatsbyPlugin, traceId?: string ): IQueryExtractionBabelErrorAction => { return { @@ -170,7 +171,7 @@ export const queryExtractionBabelError = ( */ export const setProgramStatus = ( status: ProgramStatus, - plugin: Plugin, + plugin: IGatsbyPlugin, traceId?: string ): ISetProgramStatusAction => { return { @@ -187,7 +188,7 @@ export const setProgramStatus = ( */ export const pageQueryRun = ( { path, componentPath, isPage }, - plugin: Plugin, + plugin: IGatsbyPlugin, traceId?: string ): IPageQueryRunAction => { return { @@ -204,7 +205,7 @@ export const pageQueryRun = ( */ export const removeStaleJob = ( contentDigest: string, - plugin: Plugin, + plugin: IGatsbyPlugin, traceId?: string ): IRemoveStaleJobAction => { return { diff --git a/packages/gatsby/src/redux/actions/restricted.js b/packages/gatsby/src/redux/actions/restricted.js deleted file mode 100644 index 85be2a3a00b9a..0000000000000 --- a/packages/gatsby/src/redux/actions/restricted.js +++ /dev/null @@ -1,459 +0,0 @@ -// @flow -const { camelCase } = require(`lodash`) -const report = require(`gatsby-cli/lib/reporter`) -const { parseTypeDef } = require(`../../schema/types/type-defs`) - -import type { Plugin } from "./types" - -const actions = {} - -/** - * Add a third-party schema to be merged into main schema. Schema has to be a - * graphql-js GraphQLSchema object. - * - * This schema is going to be merged as-is. This can easily break the main - * Gatsby schema, so it's user's responsibility to make sure it doesn't happen - * (by e.g. namespacing the schema). - * - * @availableIn [createSchemaCustomization, sourceNodes] - * - * @param {Object} $0 - * @param {GraphQLSchema} $0.schema GraphQL schema to add - */ -actions.addThirdPartySchema = ( - { schema }: { schema: GraphQLSchema }, - plugin?: Plugin, - traceId?: string -) => { - return { - type: `ADD_THIRD_PARTY_SCHEMA`, - plugin, - traceId, - payload: schema, - } -} - -import type GatsbyGraphQLType from "../../schema/types/type-builders" -/** - * Add type definitions to the GraphQL schema. - * - * @availableIn [createSchemaCustomization, sourceNodes] - * - * @param {string | GraphQLOutputType | GatsbyGraphQLType | string[] | GraphQLOutputType[] | GatsbyGraphQLType[]} types Type definitions - * - * Type definitions can be provided either as - * [`graphql-js` types](https://graphql.org/graphql-js/), in - * [GraphQL schema definition language (SDL)](https://graphql.org/learn/) - * or using Gatsby Type Builders available on the `schema` API argument. - * - * Things to note: - * * type definitions targeting node types, i.e. `MarkdownRemark` and others - * added in `sourceNodes` or `onCreateNode` APIs, need to implement the - * `Node` interface. Interface fields will be added automatically, but it - * is mandatory to label those types with `implements Node`. - * * by default, explicit type definitions from `createTypes` will be merged - * with inferred field types, and default field resolvers for `Date` (which - * adds formatting options) and `File` (which resolves the field value as - * a `relativePath` foreign-key field) are added. This behavior can be - * customised with `@infer`, `@dontInfer` directives or extensions. Fields - * may be assigned resolver (and other option like args) with additional - * directives. Currently `@dateformat`, `@link`, `@fileByRelativePath` and - * `@proxy` are available. - * - * - * Schema customization controls: - * * `@infer` - run inference on the type and add fields that don't exist on the - * defined type to it. - * * `@dontInfer` - don't run any inference on the type - * - * Extensions to add resolver options: - * * `@dateformat` - add date formatting arguments. Accepts `formatString` and - * `locale` options that sets the defaults for this field - * * `@link` - connect to a different Node. Arguments `by` and `from`, which - * define which field to compare to on a remote node and which field to use on - * the source node - * * `@fileByRelativePath` - connect to a File node. Same arguments. The - * difference from link is that this normalizes the relative path to be - * relative from the path where source node is found. - * * `@proxy` - in case the underlying node data contains field names with - * characters that are invalid in GraphQL, `proxy` allows to explicitly - * proxy those properties to fields with valid field names. Takes a `from` arg. - * - * - * @example - * exports.createSchemaCustomization = ({ actions }) => { - * const { createTypes } = actions - * const typeDefs = ` - * """ - * Markdown Node - * """ - * type MarkdownRemark implements Node @infer { - * frontmatter: Frontmatter! - * } - * - * """ - * Markdown Frontmatter - * """ - * type Frontmatter @infer { - * title: String! - * author: AuthorJson! @link - * date: Date! @dateformat - * published: Boolean! - * tags: [String!]! - * } - * - * """ - * Author information - * """ - * # Does not include automatically inferred fields - * type AuthorJson implements Node @dontInfer { - * name: String! - * birthday: Date! @dateformat(locale: "ru") - * } - * ` - * createTypes(typeDefs) - * } - * - * // using Gatsby Type Builder API - * exports.createSchemaCustomization = ({ actions, schema }) => { - * const { createTypes } = actions - * const typeDefs = [ - * schema.buildObjectType({ - * name: 'MarkdownRemark', - * fields: { - * frontmatter: 'Frontmatter!' - * }, - * interfaces: ['Node'], - * extensions: { - * infer: true, - * }, - * }), - * schema.buildObjectType({ - * name: 'Frontmatter', - * fields: { - * title: { - * type: 'String!', - * resolve(parent) { - * return parent.title || '(Untitled)' - * } - * }, - * author: { - * type: 'AuthorJson' - * extensions: { - * link: {}, - * }, - * } - * date: { - * type: 'Date!' - * extensions: { - * dateformat: {}, - * }, - * }, - * published: 'Boolean!', - * tags: '[String!]!', - * } - * }), - * schema.buildObjectType({ - * name: 'AuthorJson', - * fields: { - * name: 'String!' - * birthday: { - * type: 'Date!' - * extensions: { - * dateformat: { - * locale: 'ru', - * }, - * }, - * }, - * }, - * interfaces: ['Node'], - * extensions: { - * infer: false, - * }, - * }), - * ] - * createTypes(typeDefs) - * } - */ -actions.createTypes = ( - types: - | string - | GraphQLOutputType - | GatsbyGraphQLType - | Array, - plugin?: Plugin, - traceId?: string -) => { - return { - type: `CREATE_TYPES`, - plugin, - traceId, - payload: Array.isArray(types) - ? types.map(parseTypeDef) - : parseTypeDef(types), - } -} - -const { reservedExtensionNames } = require(`../../schema/extensions`) -import type GraphQLFieldExtensionDefinition from "../../schema/extensions" -/** - * Add a field extension to the GraphQL schema. - * - * Extensions allow defining custom behavior which can be added to fields - * via directive (in SDL) or on the `extensions` prop (with Type Builders). - * - * The extension definition takes a `name`, an `extend` function, and optional - * extension `args` for options. The `extend` function has to return a (partial) - * field config, and receives the extension options and the previous field config - * as arguments. - * - * @availableIn [createSchemaCustomization, sourceNodes] - * - * @param {GraphQLFieldExtensionDefinition} extension The field extension definition - * @example - * exports.createSchemaCustomization = ({ actions }) => { - * const { createFieldExtension } = actions - * createFieldExtension({ - * name: 'motivate', - * args: { - * caffeine: 'Int' - * }, - * extend(options, prevFieldConfig) { - * return { - * type: 'String', - * args: { - * sunshine: { - * type: 'Int', - * defaultValue: 0, - * }, - * }, - * resolve(source, args, context, info) { - * const motivation = (options.caffeine || 0) - args.sunshine - * if (motivation > 5) return 'Work! Work! Work!' - * return 'Maybe tomorrow.' - * }, - * } - * }, - * }) - * } - */ -actions.createFieldExtension = ( - extension: GraphQLFieldExtensionDefinition, - plugin?: Plugin, - traceId?: string -) => (dispatch, getState) => { - const { name } = extension || {} - const { fieldExtensions } = getState().schemaCustomization - - if (!name) { - report.error(`The provided field extension must have a \`name\` property.`) - } else if (reservedExtensionNames.includes(name)) { - report.error( - `The field extension name \`${name}\` is reserved for internal use.` - ) - } else if (fieldExtensions[name]) { - report.error( - `A field extension with the name \`${name}\` has already been registered.` - ) - } else { - dispatch({ - type: `CREATE_FIELD_EXTENSION`, - plugin, - traceId, - payload: { name, extension }, - }) - } -} - -/** - * Write GraphQL schema to file - * - * Writes out inferred and explicitly specified type definitions. This is not - * the full GraphQL schema, but only the types necessary to recreate all type - * definitions, i.e. it does not include directives, built-ins, and derived - * types for filtering, sorting, pagination etc. Optionally, you can define a - * list of types to include/exclude. This is recommended to avoid including - * definitions for plugin-created types. - * - * @availableIn [createSchemaCustomization] - * - * @param {object} $0 - * @param {string} [$0.path] The path to the output file, defaults to `schema.gql` - * @param {object} [$0.include] Configure types to include - * @param {string[]} [$0.include.types] Only include these types - * @param {string[]} [$0.include.plugins] Only include types owned by these plugins - * @param {object} [$0.exclude] Configure types to exclude - * @param {string[]} [$0.exclude.types] Do not include these types - * @param {string[]} [$0.exclude.plugins] Do not include types owned by these plugins - * @param {boolean} [withFieldTypes] Include field types, defaults to `true` - */ -actions.printTypeDefinitions = ( - { - path = `schema.gql`, - include, - exclude, - withFieldTypes = true, - }: { - path?: string, - include?: { types?: Array, plugins?: Array }, - exclude?: { types?: Array, plugins?: Array }, - withFieldTypes?: boolean, - }, - plugin?: Plugin, - traceId?: string -) => { - return { - type: `PRINT_SCHEMA_REQUESTED`, - plugin, - traceId, - payload: { - path, - include, - exclude, - withFieldTypes, - }, - } -} - -/** - * Make functionality available on field resolver `context` - * - * @availableIn [createSchemaCustomization] - * - * @param {object} context Object to make available on `context`. - * When called from a plugin, the context value will be namespaced under - * the camel-cased plugin name without the "gatsby-" prefix - * @example - * const getHtml = md => remark().use(html).process(md) - * exports.createSchemaCustomization = ({ actions }) => { - * actions.createResolverContext({ getHtml }) - * } - * // The context value can then be accessed in any field resolver like this: - * exports.createSchemaCustomization = ({ actions }) => { - * actions.createTypes(schema.buildObjectType({ - * name: 'Test', - * interfaces: ['Node'], - * fields: { - * md: { - * type: 'String!', - * async resolve(source, args, context, info) { - * const processed = await context.transformerRemark.getHtml(source.internal.contents) - * return processed.contents - * } - * } - * } - * })) - * } - */ -actions.createResolverContext = ( - context: object, - plugin?: Plugin, - traceId?: string -) => dispatch => { - if (!context || typeof context !== `object`) { - report.error( - `Expected context value passed to \`createResolverContext\` to be an object. Received "${context}".` - ) - } else { - const { name } = plugin || {} - const payload = - !name || name === `default-site-plugin` - ? context - : { [camelCase(name.replace(/^gatsby-/, ``))]: context } - dispatch({ - type: `CREATE_RESOLVER_CONTEXT`, - plugin, - traceId, - payload, - }) - } -} - -const withDeprecationWarning = (actionName, action, api, allowedIn) => ( - ...args -) => { - report.warn( - `Calling \`${actionName}\` in the \`${api}\` API is deprecated. ` + - `Please use: ${allowedIn.map(a => `\`${a}\``).join(`, `)}.` - ) - return action(...args) -} - -const withErrorMessage = (actionName, api, allowedIn) => () => - // return a thunk that does not dispatch anything - () => { - report.error( - `\`${actionName}\` is not available in the \`${api}\` API. ` + - `Please use: ${allowedIn.map(a => `\`${a}\``).join(`, `)}.` - ) - } - -const nodeAPIs = Object.keys(require(`../../utils/api-node-docs`)) - -const ALLOWED_IN = `ALLOWED_IN` -const DEPRECATED_IN = `DEPRECATED_IN` - -const set = (availableActionsByAPI, api, actionName, action) => { - availableActionsByAPI[api] = availableActionsByAPI[api] || {} - availableActionsByAPI[api][actionName] = action -} - -const mapAvailableActionsToAPIs = restrictions => { - const availableActionsByAPI = {} - - const actionNames = Object.keys(restrictions) - actionNames.forEach(actionName => { - const action = actions[actionName] - - const allowedIn = restrictions[actionName][ALLOWED_IN] || [] - allowedIn.forEach(api => - set(availableActionsByAPI, api, actionName, action) - ) - - const deprecatedIn = restrictions[actionName][DEPRECATED_IN] || [] - deprecatedIn.forEach(api => - set( - availableActionsByAPI, - api, - actionName, - withDeprecationWarning(actionName, action, api, allowedIn) - ) - ) - - const forbiddenIn = nodeAPIs.filter( - api => ![...allowedIn, ...deprecatedIn].includes(api) - ) - forbiddenIn.forEach(api => - set( - availableActionsByAPI, - api, - actionName, - withErrorMessage(actionName, api, allowedIn) - ) - ) - }) - - return availableActionsByAPI -} - -const availableActionsByAPI = mapAvailableActionsToAPIs({ - createFieldExtension: { - [ALLOWED_IN]: [`sourceNodes`, `createSchemaCustomization`], - }, - createTypes: { - [ALLOWED_IN]: [`sourceNodes`, `createSchemaCustomization`], - [DEPRECATED_IN]: [`onPreInit`, `onPreBootstrap`], - }, - createResolverContext: { - [ALLOWED_IN]: [`createSchemaCustomization`], - }, - addThirdPartySchema: { - [ALLOWED_IN]: [`sourceNodes`, `createSchemaCustomization`], - [DEPRECATED_IN]: [`onPreInit`, `onPreBootstrap`], - }, - printTypeDefinitions: { - [ALLOWED_IN]: [`createSchemaCustomization`], - }, -}) - -module.exports = { actions, availableActionsByAPI } diff --git a/packages/gatsby/src/redux/actions/restricted.ts b/packages/gatsby/src/redux/actions/restricted.ts new file mode 100644 index 0000000000000..8cb4a68b89f0b --- /dev/null +++ b/packages/gatsby/src/redux/actions/restricted.ts @@ -0,0 +1,517 @@ +import { camelCase } from "lodash" +import { GraphQLSchema, GraphQLOutputType } from "graphql" +import { ActionCreator } from "redux" +import { ThunkAction } from "redux-thunk" +import report from "gatsby-cli/lib/reporter" +import { parseTypeDef } from "../../schema/types/type-defs" +import { + GraphQLFieldExtensionDefinition, + reservedExtensionNames, +} from "../../schema/extensions" +import { GatsbyGraphQLType } from "../../schema/types/type-builders" +import { + IGatsbyPlugin, + ActionsUnion, + IAddThirdPartySchema, + ICreateTypes, + IGatsbyState, + ICreateFieldExtension, + IPrintTypeDefinitions, + ICreateResolverContext, + IGatsbyPluginContext, +} from "../types" + +type RestrictionActionNames = + | "createFieldExtension" + | "createTypes" + | "createResolverContext" + | "addThirdPartySchema" + | "printTypeDefinitions" + +type SomeActionCreator = + | ActionCreator + | ActionCreator> + +export const actions = { + /** + * Add a third-party schema to be merged into main schema. Schema has to be a + * graphql-js GraphQLSchema object. + * + * This schema is going to be merged as-is. This can easily break the main + * Gatsby schema, so it's user's responsibility to make sure it doesn't happen + * (by e.g. namespacing the schema). + * + * @availableIn [createSchemaCustomization, sourceNodes] + * + * @param {Object} $0 + * @param {GraphQLSchema} $0.schema GraphQL schema to add + */ + addThirdPartySchema: ( + { schema }: { schema: GraphQLSchema }, + plugin: IGatsbyPlugin, + traceId?: string + ): IAddThirdPartySchema => { + return { + type: `ADD_THIRD_PARTY_SCHEMA`, + plugin, + traceId, + payload: schema, + } + }, + + /** + * Add type definitions to the GraphQL schema. + * + * @availableIn [createSchemaCustomization, sourceNodes] + * + * @param {string | GraphQLOutputType | GatsbyGraphQLType | string[] | GraphQLOutputType[] | GatsbyGraphQLType[]} types Type definitions + * + * Type definitions can be provided either as + * [`graphql-js` types](https://graphql.org/graphql-js/), in + * [GraphQL schema definition language (SDL)](https://graphql.org/learn/) + * or using Gatsby Type Builders available on the `schema` API argument. + * + * Things to note: + * * type definitions targeting node types, i.e. `MarkdownRemark` and others + * added in `sourceNodes` or `onCreateNode` APIs, need to implement the + * `Node` interface. Interface fields will be added automatically, but it + * is mandatory to label those types with `implements Node`. + * * by default, explicit type definitions from `createTypes` will be merged + * with inferred field types, and default field resolvers for `Date` (which + * adds formatting options) and `File` (which resolves the field value as + * a `relativePath` foreign-key field) are added. This behavior can be + * customised with `@infer`, `@dontInfer` directives or extensions. Fields + * may be assigned resolver (and other option like args) with additional + * directives. Currently `@dateformat`, `@link`, `@fileByRelativePath` and + * `@proxy` are available. + * + * + * Schema customization controls: + * * `@infer` - run inference on the type and add fields that don't exist on the + * defined type to it. + * * `@dontInfer` - don't run any inference on the type + * + * Extensions to add resolver options: + * * `@dateformat` - add date formatting arguments. Accepts `formatString` and + * `locale` options that sets the defaults for this field + * * `@link` - connect to a different Node. Arguments `by` and `from`, which + * define which field to compare to on a remote node and which field to use on + * the source node + * * `@fileByRelativePath` - connect to a File node. Same arguments. The + * difference from link is that this normalizes the relative path to be + * relative from the path where source node is found. + * * `@proxy` - in case the underlying node data contains field names with + * characters that are invalid in GraphQL, `proxy` allows to explicitly + * proxy those properties to fields with valid field names. Takes a `from` arg. + * + * + * @example + * exports.createSchemaCustomization = ({ actions }) => { + * const { createTypes } = actions + * const typeDefs = ` + * """ + * Markdown Node + * """ + * type MarkdownRemark implements Node @infer { + * frontmatter: Frontmatter! + * } + * + * """ + * Markdown Frontmatter + * """ + * type Frontmatter @infer { + * title: String! + * author: AuthorJson! @link + * date: Date! @dateformat + * published: Boolean! + * tags: [String!]! + * } + * + * """ + * Author information + * """ + * # Does not include automatically inferred fields + * type AuthorJson implements Node @dontInfer { + * name: String! + * birthday: Date! @dateformat(locale: "ru") + * } + * ` + * createTypes(typeDefs) + * } + * + * // using Gatsby Type Builder API + * exports.createSchemaCustomization = ({ actions, schema }) => { + * const { createTypes } = actions + * const typeDefs = [ + * schema.buildObjectType({ + * name: 'MarkdownRemark', + * fields: { + * frontmatter: 'Frontmatter!' + * }, + * interfaces: ['Node'], + * extensions: { + * infer: true, + * }, + * }), + * schema.buildObjectType({ + * name: 'Frontmatter', + * fields: { + * title: { + * type: 'String!', + * resolve(parent) { + * return parent.title || '(Untitled)' + * } + * }, + * author: { + * type: 'AuthorJson' + * extensions: { + * link: {}, + * }, + * } + * date: { + * type: 'Date!' + * extensions: { + * dateformat: {}, + * }, + * }, + * published: 'Boolean!', + * tags: '[String!]!', + * } + * }), + * schema.buildObjectType({ + * name: 'AuthorJson', + * fields: { + * name: 'String!' + * birthday: { + * type: 'Date!' + * extensions: { + * dateformat: { + * locale: 'ru', + * }, + * }, + * }, + * }, + * interfaces: ['Node'], + * extensions: { + * infer: false, + * }, + * }), + * ] + * createTypes(typeDefs) + * } + */ + createTypes: ( + types: + | string + | GraphQLOutputType + | GatsbyGraphQLType + | Array, + plugin: IGatsbyPlugin, + traceId?: string + ): ICreateTypes => { + return { + type: `CREATE_TYPES`, + plugin, + traceId, + payload: Array.isArray(types) + ? types.map(parseTypeDef) + : parseTypeDef(types), + } + }, + + /** + * Add a field extension to the GraphQL schema. + * + * Extensions allow defining custom behavior which can be added to fields + * via directive (in SDL) or on the `extensions` prop (with Type Builders). + * + * The extension definition takes a `name`, an `extend` function, and optional + * extension `args` for options. The `extend` function has to return a (partial) + * field config, and receives the extension options and the previous field config + * as arguments. + * + * @availableIn [createSchemaCustomization, sourceNodes] + * + * @param {GraphQLFieldExtensionDefinition} extension The field extension definition + * @example + * exports.createSchemaCustomization = ({ actions }) => { + * const { createFieldExtension } = actions + * createFieldExtension({ + * name: 'motivate', + * args: { + * caffeine: 'Int' + * }, + * extend(options, prevFieldConfig) { + * return { + * type: 'String', + * args: { + * sunshine: { + * type: 'Int', + * defaultValue: 0, + * }, + * }, + * resolve(source, args, context, info) { + * const motivation = (options.caffeine || 0) - args.sunshine + * if (motivation > 5) return 'Work! Work! Work!' + * return 'Maybe tomorrow.' + * }, + * } + * }, + * }) + * } + */ + createFieldExtension: ( + extension: GraphQLFieldExtensionDefinition, + plugin: IGatsbyPlugin, + traceId?: string + ): ThunkAction => ( + dispatch, + getState + ): void => { + const { name } = extension || {} + const { fieldExtensions } = getState().schemaCustomization + + if (!name) { + report.error( + `The provided field extension must have a \`name\` property.` + ) + } else if (reservedExtensionNames.includes(name)) { + report.error( + `The field extension name \`${name}\` is reserved for internal use.` + ) + } else if (fieldExtensions[name]) { + report.error( + `A field extension with the name \`${name}\` has already been registered.` + ) + } else { + dispatch({ + type: `CREATE_FIELD_EXTENSION`, + plugin, + traceId, + payload: { name, extension }, + }) + } + }, + + /** + * Write GraphQL schema to file + * + * Writes out inferred and explicitly specified type definitions. This is not + * the full GraphQL schema, but only the types necessary to recreate all type + * definitions, i.e. it does not include directives, built-ins, and derived + * types for filtering, sorting, pagination etc. Optionally, you can define a + * list of types to include/exclude. This is recommended to avoid including + * definitions for plugin-created types. + * + * @availableIn [createSchemaCustomization] + * + * @param {object} $0 + * @param {string} [$0.path] The path to the output file, defaults to `schema.gql` + * @param {object} [$0.include] Configure types to include + * @param {string[]} [$0.include.types] Only include these types + * @param {string[]} [$0.include.plugins] Only include types owned by these plugins + * @param {object} [$0.exclude] Configure types to exclude + * @param {string[]} [$0.exclude.types] Do not include these types + * @param {string[]} [$0.exclude.plugins] Do not include types owned by these plugins + * @param {boolean} [withFieldTypes] Include field types, defaults to `true` + */ + printTypeDefinitions: ( + { + path = `schema.gql`, + include, + exclude, + withFieldTypes = true, + }: { + path?: string + include?: { types?: Array; plugins?: Array } + exclude?: { types?: Array; plugins?: Array } + withFieldTypes?: boolean + }, + plugin: IGatsbyPlugin, + traceId?: string + ): IPrintTypeDefinitions => { + return { + type: `PRINT_SCHEMA_REQUESTED`, + plugin, + traceId, + payload: { + path, + include, + exclude, + withFieldTypes, + }, + } + }, + + /** + * Make functionality available on field resolver `context` + * + * @availableIn [createSchemaCustomization] + * + * @param {object} context Object to make available on `context`. + * When called from a plugin, the context value will be namespaced under + * the camel-cased plugin name without the "gatsby-" prefix + * @example + * const getHtml = md => remark().use(html).process(md) + * exports.createSchemaCustomization = ({ actions }) => { + * actions.createResolverContext({ getHtml }) + * } + * // The context value can then be accessed in any field resolver like this: + * exports.createSchemaCustomization = ({ actions }) => { + * actions.createTypes(schema.buildObjectType({ + * name: 'Test', + * interfaces: ['Node'], + * fields: { + * md: { + * type: 'String!', + * async resolve(source, args, context, info) { + * const processed = await context.transformerRemark.getHtml(source.internal.contents) + * return processed.contents + * } + * } + * } + * })) + * } + */ + createResolverContext: ( + context: IGatsbyPluginContext, + plugin: IGatsbyPlugin, + traceId?: string + ): ThunkAction => ( + dispatch + ): void => { + if (!context || typeof context !== `object`) { + report.error( + `Expected context value passed to \`createResolverContext\` to be an object. Received "${context}".` + ) + } else { + const { name } = plugin || {} + const payload = + !name || name === `default-site-plugin` + ? context + : { [camelCase(name.replace(/^gatsby-/, ``))]: context } + dispatch({ + type: `CREATE_RESOLVER_CONTEXT`, + plugin, + traceId, + payload, + }) + } + }, +} + +const withDeprecationWarning = ( + actionName: RestrictionActionNames, + action: SomeActionCreator, + api: API, + allowedIn: API[] +): SomeActionCreator => (...args: any[]): ReturnType> => { + report.warn( + `Calling \`${actionName}\` in the \`${api}\` API is deprecated. ` + + `Please use: ${allowedIn.map(a => `\`${a}\``).join(`, `)}.` + ) + return action(...args) +} + +const withErrorMessage = ( + actionName: RestrictionActionNames, + api: API, + allowedIn: API[] +) => () => + // return a thunk that does not dispatch anything + (): void => { + report.error( + `\`${actionName}\` is not available in the \`${api}\` API. ` + + `Please use: ${allowedIn.map(a => `\`${a}\``).join(`, `)}.` + ) + } + +const nodeAPIs = Object.keys(require(`../../utils/api-node-docs`)) + +const ALLOWED_IN = `ALLOWED_IN` +const DEPRECATED_IN = `DEPRECATED_IN` + +type API = string + +type Restrictions = Record< + RestrictionActionNames, + Partial<{ + ALLOWED_IN: API[] + DEPRECATED_IN: API[] + }> +> + +type AvailableActionsByAPI = Record< + API, + { [K in RestrictionActionNames]: SomeActionCreator } +> + +const set = ( + availableActionsByAPI: {}, + api: API, + actionName: RestrictionActionNames, + action: SomeActionCreator +): void => { + availableActionsByAPI[api] = availableActionsByAPI[api] || {} + availableActionsByAPI[api][actionName] = action +} + +const mapAvailableActionsToAPIs = ( + restrictions: Restrictions +): AvailableActionsByAPI => { + const availableActionsByAPI: AvailableActionsByAPI = {} + + const actionNames = Object.keys(restrictions) as (keyof typeof restrictions)[] + actionNames.forEach(actionName => { + const action = actions[actionName] + + const allowedIn: API[] = restrictions[actionName][ALLOWED_IN] || [] + allowedIn.forEach(api => + set(availableActionsByAPI, api, actionName, action) + ) + + const deprecatedIn: API[] = restrictions[actionName][DEPRECATED_IN] || [] + deprecatedIn.forEach(api => + set( + availableActionsByAPI, + api, + actionName, + withDeprecationWarning(actionName, action, api, allowedIn) + ) + ) + + const forbiddenIn = nodeAPIs.filter( + api => ![...allowedIn, ...deprecatedIn].includes(api) + ) + forbiddenIn.forEach(api => + set( + availableActionsByAPI, + api, + actionName, + withErrorMessage(actionName, api, allowedIn) + ) + ) + }) + + return availableActionsByAPI +} + +export const availableActionsByAPI = mapAvailableActionsToAPIs({ + createFieldExtension: { + [ALLOWED_IN]: [`sourceNodes`, `createSchemaCustomization`], + }, + createTypes: { + [ALLOWED_IN]: [`sourceNodes`, `createSchemaCustomization`], + [DEPRECATED_IN]: [`onPreInit`, `onPreBootstrap`], + }, + createResolverContext: { + [ALLOWED_IN]: [`createSchemaCustomization`], + }, + addThirdPartySchema: { + [ALLOWED_IN]: [`sourceNodes`, `createSchemaCustomization`], + [DEPRECATED_IN]: [`onPreInit`, `onPreBootstrap`], + }, + printTypeDefinitions: { + [ALLOWED_IN]: [`createSchemaCustomization`], + }, +}) diff --git a/packages/gatsby/src/redux/actions/types.js b/packages/gatsby/src/redux/actions/types.js deleted file mode 100644 index 5980f1797479d..0000000000000 --- a/packages/gatsby/src/redux/actions/types.js +++ /dev/null @@ -1,6 +0,0 @@ -// @flow -type Plugin = { - name: string, -} - -export type { Plugin } diff --git a/packages/gatsby/src/redux/nodes.ts b/packages/gatsby/src/redux/nodes.ts index 03c518d824304..5d952efe242ea 100644 --- a/packages/gatsby/src/redux/nodes.ts +++ b/packages/gatsby/src/redux/nodes.ts @@ -3,9 +3,27 @@ import { IGatsbyNode } from "./types" import { createPageDependency } from "./actions/add-page-dependency" import { IDbQueryElemMatch } from "../db/common/query" +// Only list supported ops here. "CacheableFilterOp" +type FilterOp = "$eq" | "$lte" +// Note: `undefined` is an encoding for a property that does not exist +type FilterValueNullable = string | number | boolean | null | undefined +// This is filter value in most cases +type FilterValue = string | number | boolean export type FilterCacheKey = string -export type FilterCache = Map> -export type FiltersCache = Map +export interface IFilterCache { + op: FilterOp + // In this set, `undefined` values represent nodes that did not have the path + byValue: Map> + meta: { + // Ordered set of all values found by this filter. No null / undefs. + valuesAsc?: Array + // Flat set of nodes, ordered by valueAsc, but not ordered per value group + nodesByValueAsc?: Array + // Ranges of nodes per value, maps to the nodesByValueAsc array + valueRanges?: Map + } +} +export type FiltersCache = Map /** * Get all nodes from redux store. @@ -152,24 +170,68 @@ export const addResolvedNodes = ( return resolvedNodes } +export const postIndexingMetaSetup = (filterCache: IFilterCache): void => { + // Create an ordered array of individual nodes, ordered (grouped) by the + // value to which the filter resolves. Nodes are not ordered per value. + // This way non-eq ops can simply slice the array to get a range. + + const entriesNullable: Array<[FilterValueNullable, Set]> = [ + ...filterCache.byValue.entries(), + ] + + // These range checks never return `null` or `undefined` so filter those out + // By filtering them out early, the sort should be faster. Could be ... + const entries: Array<[ + FilterValue, + Set + ]> = entriesNullable.filter(([v]) => v != null) as Array< + [FilterValue, Set] + > + + // Sort all sets by its value, asc. Ignore/allow potential type casting. + entries.sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0)) + + const orderedNodes: Array = [] + const orderedValues: Array = [] + const offsets: Map = new Map() + entries.forEach(([v, bucket]: [FilterValue, Set]) => { + // Record the range containing all nodes with as filter value v + // The last value of the range should be the offset of the next value + // (So you should be able to do `nodes.slice(start, stop)` to get them) + offsets.set(v, [orderedNodes.length, orderedNodes.length + bucket.size]) + // We could do `arr.push(...bucket)` here but that's not safe with very + // large sets, so we use a regular loop + bucket.forEach(node => orderedNodes.push(node)) + orderedValues.push(v) + }) + + filterCache.meta.valuesAsc = orderedValues + filterCache.meta.nodesByValueAsc = orderedNodes + // The nodesByValueAsc is ordered by value, but multiple nodes per value are + // not ordered. To make lt as fast as lte, we must know the start and stop + // index for each value. Similarly useful for for `ne`. + filterCache.meta.valueRanges = offsets +} + /** - * Given a ("flat") filter path leading up to "eq", a set of node types, and a + * Given a single non-elemMatch filter path, a set of node types, and a * cache, create a cache that for each resulting value of the filter contains - * all the Nodes in a Set (or, if the property is `id`, just the Nodes). + * all the Nodes in a Set. * This cache is used for applying the filter and is a massive improvement over - * looping over all the nodes, when the number of pages (/nodes) scale up. + * looping over all the nodes, when the number of pages (/nodes) scales up. */ -export const ensureIndexByTypedChain = ( - cacheKey: FilterCacheKey, - chain: string[], +export const ensureIndexByQuery = ( + op: FilterOp, + filterCacheKey: FilterCacheKey, + filterPath: string[], nodeTypeNames: string[], filtersCache: FiltersCache ): void => { const state = store.getState() const resolvedNodesCache = state.resolvedNodesCache - const filterCache: FilterCache = new Map() - filtersCache.set(cacheKey, filterCache) + const filterCache: IFilterCache = { op, byValue: new Map(), meta: {} } + filtersCache.set(filterCacheKey, filterCache) // We cache the subsets of nodes by type, but only one type. So if searching // through one node type we can prevent a search through all nodes, otherwise @@ -177,7 +239,7 @@ export const ensureIndexByTypedChain = ( if (nodeTypeNames.length === 1) { getNodesByType(nodeTypeNames[0]).forEach(node => { - addNodeToFilterCache(node, chain, filterCache, resolvedNodesCache) + addNodeToFilterCache(node, filterPath, filterCache, resolvedNodesCache) }) } else { // Here we must first filter for the node type @@ -187,15 +249,19 @@ export const ensureIndexByTypedChain = ( return } - addNodeToFilterCache(node, chain, filterCache, resolvedNodesCache) + addNodeToFilterCache(node, filterPath, filterCache, resolvedNodesCache) }) } + + if (op === `$lte`) { + postIndexingMetaSetup(filterCache) + } } function addNodeToFilterCache( node: IGatsbyNode, chain: Array, - filterCache: FilterCache, + filterCache: IFilterCache, resolvedNodesCache, valueOffset: any = node ): void { @@ -209,35 +275,44 @@ function addNodeToFilterCache( // - for plain query, valueOffset === node // - for elemMatch, valueOffset is sub-tree of the node to continue matching let v = valueOffset as any + let prev = v let i = 0 while (i < chain.length && v) { const nextProp = chain[i++] + prev = v v = v[nextProp] } if ( (typeof v !== `string` && typeof v !== `number` && - typeof v !== `boolean`) || + typeof v !== `boolean` && + v !== null) || i !== chain.length ) { - // Not sure whether this is supposed to happen, but this means that either - // - The node chain ended with `undefined`, or - // - The node chain ended in something other than a primitive, or - // - A part in the chain in the object was not an object - return + if (chain[i - 1] in prev) { + // This means that either + // - The filter resolved to `undefined`, or + // - The filter resolved to something other than a primitive + return + } + // The filter path did not fully exist in node. Encode this as `undefined`. + // The edge case is that `eq` will return these for `null` checks while + // range checks like `lte` do not return these, so we make a distinction. + v = undefined } - let set = filterCache.get(v) + let set = filterCache.byValue.get(v) if (!set) { set = new Set() - filterCache.set(v, set) + filterCache.byValue.set(v, set) } set.add(node) } export const ensureIndexByElemMatch = ( - cacheKey: FilterCacheKey, + op: FilterOp, + filterCacheKey: FilterCacheKey, filter: IDbQueryElemMatch, nodeTypeNames: Array, filtersCache: FiltersCache @@ -248,8 +323,8 @@ export const ensureIndexByElemMatch = ( const state = store.getState() const { resolvedNodesCache } = state - const filterCache: FilterCache = new Map() - filtersCache.set(cacheKey, filterCache) + const filterCache: IFilterCache = { op, byValue: new Map(), meta: {} } + filtersCache.set(filterCacheKey, filterCache) if (nodeTypeNames.length === 1) { getNodesByType(nodeTypeNames[0]).forEach(node => { @@ -277,13 +352,17 @@ export const ensureIndexByElemMatch = ( ) }) } + + if (op === `$lte`) { + postIndexingMetaSetup(filterCache) + } } function addNodeToBucketWithElemMatch( node: IGatsbyNode, valueAtCurrentStep: any, // Arbitrary step on the path inside the node filter: IDbQueryElemMatch, - filterCache: FilterCache, + filterCache: IFilterCache, resolvedNodesCache ): void { // There can be a filter that targets `__gatsby_resolved` so fix that first @@ -337,24 +416,127 @@ function addNodeToBucketWithElemMatch( } } +const binarySearch = ( + values: Array, + needle: FilterValue +): [number, number] | undefined => { + let min = 0 + let max = values.length - 1 + let pivot = Math.floor(values.length / 2) + while (min <= max) { + const value = values[pivot] + if (needle < value) { + // Move pivot to middle of nodes left of current pivot + // assert pivot < max + max = pivot + } else if (needle > value) { + // Move pivot to middle of nodes right of current pivot + // assert pivot > min + min = pivot + } else { + // This means needle === value + // TODO: except for NaN ... and potentially certain type casting cases + return [pivot, pivot] + } + + if (max - min <= 1) { + // End of search. Needle not found (as expected). Use pivot as index. + // If the needle was not found, max-min==1 and max is returned. + return [min, max] + } + + pivot = Math.floor((max - min) / 2) + } + + // Shouldn't be reachable, but just in case, fall back to Sift if so. + return undefined +} + /** - * Given a ("flat") filter path leading up to "eq", a target value to filter - * for, a set of node types, and a pre-generated lookup cache, return the set - * of Nodes (or, if the property is `id` just the Node) which pass the filter. - * This returns `undefined` if there is Node that passes the filter. + * Given the cache key for a filter and a target value return the set of nodes + * that resolve to this value. + * This returns `undefined` if there is no such node * * Basically if the filter was {a: {b: {slug: {eq: "foo/bar"}}}} then it will * return all the nodes that have `node.slug === "foo/bar"`. That usually (but * not always) at most one node for slug, but this filter can apply to anything. - * - * The only exception is `id`, since internally there can be at most one node - * per `id` so there's a minor optimization for that (no need for Sets). */ -export const getFilterCacheByTypedChain = ( - cacheKey: FilterCacheKey, - value: boolean | number | string, +export const getNodesFromCacheByValue = ( + filterCacheKey: FilterCacheKey, + filterValue: FilterValueNullable, filtersCache: FiltersCache ): Set | undefined => { - const byTypedKey = filtersCache?.get(cacheKey) - return byTypedKey?.get(value) + const filterCache = filtersCache?.get(filterCacheKey) + if (!filterCache) { + return undefined + } + + const op = filterCache.op + + if (op === `$eq`) { + if (filterValue == null) { + // Edge case; fetch all nodes for `null` and `undefined` because `$eq` + // also returns nodes without the path when searching for `null`. Not + // ops do so, so we map non-existing paths to `undefined`. + return new Set([ + ...(filterCache.byValue.get(null) ?? []), + ...(filterCache.byValue.get(undefined) ?? []), + ]) + } + return filterCache.byValue.get(filterValue) + } + + if (op === `$lte`) { + // First try a direct approach. If a value is queried that also exists then + // we can prevent a binary search through the whole set, O(1) vs O(log n) + + if (filterValue == null) { + // This is an edge case and this value should be directly indexed + // For `lte` this should only return nodes for `null`, not a "range" + return filterCache.byValue.get(filterValue) + } + + const ranges = filterCache.meta.valueRanges + const nodes = filterCache.meta.nodesByValueAsc + + const range = ranges!.get(filterValue) + if (range) { + return new Set(nodes!.slice(0, range[1])) + } + + // Query may ask for a value that doesn't appear in the set, like if the + // set is [1, 2, 5, 6] and the query is <= 3. In that case we have to + // apply a search (we'll do binary) to determine the offset to slice from. + + // Note: for lte, the valueAsc array must be set at this point + const values = filterCache.meta.valuesAsc as Array + // It shouldn't find the targetValue (but it might) and return the index of + // the two value between which targetValue sits, or first/last element. + const point = binarySearch(values, filterValue) + if (!point) { + return undefined + } + const [pivotMin, pivotMax] = point + // Each pivot index must have a value and a range + // The returned min/max index may include the lower/upper bound, so we still + // have to do lte checks for both values. + let pivotValue = values[pivotMax] + if (pivotValue > filterValue) { + pivotValue = values[pivotMin] + } + + // Note: the pivot value _shouldnt_ match the filter value because that + // means the value was actually found, but those should have been indexed + // so should have yielded a result in the .get() above. + + const [exclPivot, inclPivot] = ranges!.get(pivotValue) as [number, number] + + // Note: technically, `5 <= "5" === true` but `5` would not be cached. + // So we have to consider weak comparison and may have to include the pivot + const until = pivotValue <= filterValue ? inclPivot : exclPivot + return new Set(nodes!.slice(0, until)) + } + + // Unreachable because we checked all values of FilterOp (which op is) + return undefined } diff --git a/packages/gatsby/src/redux/persist.ts b/packages/gatsby/src/redux/persist.ts index 7bc4a0cba0c0c..68a049a0b7fdb 100644 --- a/packages/gatsby/src/redux/persist.ts +++ b/packages/gatsby/src/redux/persist.ts @@ -1,11 +1,12 @@ import path from "path" +import os from "os" import v8 from "v8" import { existsSync, mkdtempSync, + moveSync, // Note: moveSync over renameSync because /tmp may be on other mount readFileSync, removeSync, - renameSync, writeFileSync, } from "fs-extra" import { IGatsbyNode, ICachedReduxState } from "./types" @@ -130,7 +131,7 @@ function safelyRenameToBak(reduxCacheFolder: string): string { ++suffixCounter bakName = reduxCacheFolder + tmpSuffix + suffixCounter } - renameSync(reduxCacheFolder, bakName) + moveSync(reduxCacheFolder, bakName) return bakName } @@ -139,7 +140,7 @@ export function writeToCache(contents: ICachedReduxState): void { // Note: this should be a transactional operation. So work in a tmp dir and // make sure the cache cannot be left in a corruptable state due to errors. - const tmpDir = mkdtempSync(`reduxcache`) // linux / windows + const tmpDir = mkdtempSync(path.join(os.tmpdir(), `reduxcache`)) // linux / windows prepareCacheFolder(tmpDir, contents) @@ -156,7 +157,7 @@ export function writeToCache(contents: ICachedReduxState): void { } // The redux cache folder should now not exist so we can rename our tmp to it - renameSync(tmpDir, reduxCacheFolder) + moveSync(tmpDir, reduxCacheFolder) // Now try to yolorimraf the old cache folder try { diff --git a/packages/gatsby/src/redux/reducers/__tests__/redirects.js b/packages/gatsby/src/redux/reducers/__tests__/redirects.ts similarity index 86% rename from packages/gatsby/src/redux/reducers/__tests__/redirects.js rename to packages/gatsby/src/redux/reducers/__tests__/redirects.ts index 605500d55e604..76323bf7035fc 100644 --- a/packages/gatsby/src/redux/reducers/__tests__/redirects.js +++ b/packages/gatsby/src/redux/reducers/__tests__/redirects.ts @@ -1,9 +1,11 @@ +import { ICreateRedirectAction, IRedirect } from "../../types" + let reducer describe(`redirects`, () => { beforeEach(() => { jest.isolateModules(() => { - reducer = require(`../redirects`) + reducer = require(`../redirects`).redirectsReducer }) }) it(`lets you redirect to an internal url`, () => { @@ -15,7 +17,7 @@ describe(`redirects`, () => { }, } - let state = reducer(undefined, action) + const state = reducer(undefined, action) expect(state).toEqual([ { @@ -34,7 +36,7 @@ describe(`redirects`, () => { }, } - let state = reducer(undefined, action) + const state = reducer(undefined, action) expect(state).toEqual([ { @@ -73,7 +75,10 @@ describe(`redirects`, () => { }) it(`prevents duplicate redirects`, () => { - function createRedirect(fromPath, toPath) { + function createRedirect( + fromPath: string, + toPath: string + ): ICreateRedirectAction { return { type: `CREATE_REDIRECT`, payload: { fromPath, toPath }, @@ -92,7 +97,7 @@ describe(`redirects`, () => { }) it(`allows multiple redirects with same "fromPath" but different options`, () => { - function createRedirect(redirect) { + function createRedirect(redirect: IRedirect): ICreateRedirectAction { return { type: `CREATE_REDIRECT`, payload: redirect, diff --git a/packages/gatsby/src/redux/reducers/index.js b/packages/gatsby/src/redux/reducers/index.js index 67067487f1b42..86a4e2509a487 100644 --- a/packages/gatsby/src/redux/reducers/index.js +++ b/packages/gatsby/src/redux/reducers/index.js @@ -1,5 +1,6 @@ const reduxNodes = require(`./nodes`) const lokiNodes = require(`../../db/loki/nodes`).reducer +import { redirectsReducer } from "./redirects" const backend = process.env.GATSBY_DB_NODES || `redux` @@ -59,7 +60,7 @@ module.exports = { jobsV2: require(`./jobsv2`), webpack: require(`./webpack`), webpackCompilationHash: require(`./webpack-compilation-hash`), - redirects: require(`./redirects`), + redirects: redirectsReducer, babelrc: require(`./babelrc`), schemaCustomization: require(`./schema-customization`), themes: require(`./themes`), diff --git a/packages/gatsby/src/redux/reducers/redirects.js b/packages/gatsby/src/redux/reducers/redirects.js deleted file mode 100644 index ed8b072dc98fd..0000000000000 --- a/packages/gatsby/src/redux/reducers/redirects.js +++ /dev/null @@ -1,44 +0,0 @@ -const _ = require(`lodash`) - -const redirects = new Map() - -function exists(newRedirect) { - if (!redirects.has(newRedirect.fromPath)) { - return false - } - - return redirects - .get(newRedirect.fromPath) - .some(redirect => _.isEqual(redirect, newRedirect)) -} - -function add(redirect) { - let samePathRedirects = redirects.get(redirect.fromPath) - - if (!samePathRedirects) { - samePathRedirects = [] - redirects.set(redirect.fromPath, samePathRedirects) - } - - samePathRedirects.push(redirect) -} - -module.exports = (state = [], action) => { - switch (action.type) { - case `CREATE_REDIRECT`: { - const redirect = action.payload - - // Add redirect only if it wasn't yet added to prevent duplicates - if (!exists(redirect)) { - add(redirect) - - state.push(redirect) - } - - return state - } - - default: - return state - } -} diff --git a/packages/gatsby/src/redux/reducers/redirects.ts b/packages/gatsby/src/redux/reducers/redirects.ts new file mode 100644 index 0000000000000..716d0ebe3ed45 --- /dev/null +++ b/packages/gatsby/src/redux/reducers/redirects.ts @@ -0,0 +1,46 @@ +import _ from "lodash" +import { IGatsbyState, IRedirect, ICreateRedirectAction } from "../types" + +const redirects = new Map() + +function exists(newRedirect: IRedirect): boolean { + const fromPathRedirects = redirects.get(newRedirect.fromPath) + + if (!fromPathRedirects) return false + + return fromPathRedirects.some(redirect => _.isEqual(redirect, newRedirect)) +} + +function add(redirect: IRedirect): void { + let samePathRedirects = redirects.get(redirect.fromPath) + + if (!samePathRedirects) { + samePathRedirects = [] + redirects.set(redirect.fromPath, samePathRedirects) + } + + samePathRedirects.push(redirect) +} + +export const redirectsReducer = ( + state: IGatsbyState["redirects"] = [], + action: ICreateRedirectAction +): IGatsbyState["redirects"] => { + switch (action.type) { + case `CREATE_REDIRECT`: { + const redirect = action.payload + + // Add redirect only if it wasn't yet added to prevent duplicates + if (!exists(redirect)) { + add(redirect) + + state.push(redirect) + } + + return state + } + + default: + return state + } +} diff --git a/packages/gatsby/src/redux/run-sift.js b/packages/gatsby/src/redux/run-sift.js index bd511eaf7b2cd..0f3f1140ce963 100644 --- a/packages/gatsby/src/redux/run-sift.js +++ b/packages/gatsby/src/redux/run-sift.js @@ -14,13 +14,21 @@ const { dbQueryToSiftQuery, } = require(`../db/common/query`) const { - ensureIndexByTypedChain, + ensureIndexByQuery, ensureIndexByElemMatch, - getFilterCacheByTypedChain, + getNodesFromCacheByValue, addResolvedNodes, getNode: siftGetNode, } = require(`./nodes`) +const FAST_OPS = [ + `$eq`, + // "$lt", + `$lte`, + // "$gt", + // "$gte" +] + /** * Creates a key for one filterCache inside FiltersCache * @@ -28,7 +36,7 @@ const { * @param {DbQuery} filter * @returns {FilterCacheKey} (a string: `types.join()/path.join()/operator` ) */ -const createTypedFilterCacheKey = (typeNames, filter) => { +const createFilterCacheKey = (typeNames, filter) => { // Note: while `elemMatch` is a special case, in the key it's just `elemMatch` // (This function is future proof for elemMatch support, won't receive it yet) let f = filter @@ -129,13 +137,13 @@ function handleMany(siftArgs, nodes) { } /** - * Given the chain of a simple filter, return the set of nodes that pass the - * filter. The chain should be a property chain leading to the property to - * check, followed by the value to check against. Common example: - * `allThings(filter: { fields: { slug: { eq: $slug } } })` + * Given the path of a set of filters, return the sets of nodes that pass the + * filter. * Only nodes of given node types will be considered * A fast index is created if one doesn't exist yet so cold call is slower. - * The empty result value is null if firstOnly is false, or else an empty array. + * Returns undefined if an op was not supported for fast indexes or when no + * nodes were found for given (query) value. In the zero nodes case, we have to + * go through Sift to make sure we're not missing an edge case, for now. * * @param {Array} filters Resolved. (Should be checked by caller to exist) * @param {Array} nodeTypeNames @@ -143,23 +151,33 @@ function handleMany(siftArgs, nodes) { * @returns {Array | undefined} */ const runFiltersWithoutSift = (filters, nodeTypeNames, filtersCache) => { - const caches = getBucketsForFilters(filters, nodeTypeNames, filtersCache) + const nodesPerValueSets /*: Array> */ = getBucketsForFilters( + filters, + nodeTypeNames, + filtersCache + ) - if (!caches) { + if (!nodesPerValueSets) { // Let Sift take over as fallback return undefined } // Put smallest last (we'll pop it) - caches.sort((a, b) => b.length - a.length) + nodesPerValueSets.sort( + (a /*: Set */, b /*: Set */) => b.size - a.size + ) // Iterate on the set with the fewest elements and create the intersection - const needles = caches.pop() + const needles /*: Set*/ = nodesPerValueSets.pop() // Take the intersection of the retrieved caches-by-value - const result = [] + const result /*: Array */ = [] // This _can_ still be expensive but the set of nodes should be limited ... - needles.forEach(node => { - if (caches.every(cache => cache.has(node))) { + needles.forEach((node /*: IGatsbyNode */) => { + if ( + nodesPerValueSets.every((cache /*: Set */) => + cache.has(node) + ) + ) { // Every cache set contained this node so keep it result.push(node) } @@ -169,6 +187,9 @@ const runFiltersWithoutSift = (filters, nodeTypeNames, filtersCache) => { // Consider the case of {a: {eq: 5}, b: {eq: 10}}, do we cache the [5,10] // case for all value pairs? How likely is that to ever be reused? + if (result.length === 0) { + return undefined + } return result } @@ -180,36 +201,36 @@ const runFiltersWithoutSift = (filters, nodeTypeNames, filtersCache) => { * cache was not found. Must fallback to sift. */ const getBucketsForFilters = (filters, nodeTypeNames, filtersCache) => { - const filterCaches /*: Array*/ = [] + const nodesPerValueSets /*: Array>*/ = [] // Fail fast while trying to create and get the value-cache for each path let every = filters.every((filter /*: DbQuery*/) => { - let cacheKey = createTypedFilterCacheKey(nodeTypeNames, filter) + let filterCacheKey = createFilterCacheKey(nodeTypeNames, filter) if (filter.type === `query`) { // (Let TS warn us if a new query type gets added) const q /*: IDbQueryQuery */ = filter return getBucketsForQueryFilter( - cacheKey, + filterCacheKey, q, nodeTypeNames, filtersCache, - filterCaches + nodesPerValueSets ) } else { // (Let TS warn us if a new query type gets added) const q /*: IDbQueryElemMatch*/ = filter return collectBucketForElemMatch( - cacheKey, + filterCacheKey, q, nodeTypeNames, filtersCache, - filterCaches + nodesPerValueSets ) } }) if (every) { - return filterCaches + return nodesPerValueSets } // "failed at least one" @@ -219,62 +240,72 @@ const getBucketsForFilters = (filters, nodeTypeNames, filtersCache) => { /** * Fetch all buckets for given query filter. That means it's not elemMatch. * - * @param {FilterCacheKey} cacheKey + * @param {FilterCacheKey} filterCacheKey * @param {IDbQueryQuery} filter * @param {Array} nodeTypeNames * @param {FiltersCache} filtersCache - * @param {Array} filterCaches + * @param {Array>} nodesPerValueSets * @returns {boolean} false means soft fail, filter must go through Sift */ const getBucketsForQueryFilter = ( - cacheKey, + filterCacheKey, filter, nodeTypeNames, filtersCache, - filterCaches + nodesPerValueSets ) => { let { - path: chain, - query: { value: targetValue }, + path: filterPath, + query: { + // Note: comparator is verified to be a FilterOp in filterWithoutSift + comparator /*: as FilterOp*/, + value: filterValue, + }, } = filter - if (!filtersCache.has(cacheKey)) { - ensureIndexByTypedChain(cacheKey, chain, nodeTypeNames, filtersCache) + if (!filtersCache.has(filterCacheKey)) { + ensureIndexByQuery( + comparator, + filterCacheKey, + filterPath, + nodeTypeNames, + filtersCache + ) } - const filterCache = getFilterCacheByTypedChain( - cacheKey, - targetValue, + const nodesPerValue /*: Set | undefined */ = getNodesFromCacheByValue( + filterCacheKey, + filterValue, filtersCache ) // If we couldn't find the needle then maybe sift can, for example if the // schema contained a proxy; `slug: String @proxy(from: "slugInternal")` // There are also cases (and tests) where id exists with a different type - if (!filterCache) { + if (!nodesPerValue) { return false } // In all other cases this must be a non-empty Set because the indexing // mechanism does not create a Set unless there's a IGatsbyNode for it - filterCaches.push(filterCache) + nodesPerValueSets.push(nodesPerValue) return true } /** - * @param {string} typedKey + * @param {FilterCacheKey} filterCacheKey * @param {IDbQueryElemMatch} filter * @param {Array} nodeTypeNames * @param {FiltersCache} filtersCache - * @param {Array} filterCaches Matching node sets are put in this array + * @param {Array>} nodesPerValueSets Matching node sets are put in this array */ const collectBucketForElemMatch = ( - typedKey, + filterCacheKey, filter, nodeTypeNames, filtersCache, - filterCaches + nodesPerValueSets ) => { // Get comparator and target value for this elemMatch let comparator = `` @@ -292,22 +323,22 @@ const collectBucketForElemMatch = ( } } - if ( - ![ - `$eq`, - // "$lte", - // "$gte", - ].includes(comparator) - ) { + if (!FAST_OPS.includes(comparator)) { return false } - if (!filtersCache.has(typedKey)) { - ensureIndexByElemMatch(typedKey, filter, nodeTypeNames, filtersCache) + if (!filtersCache.has(filterCacheKey)) { + ensureIndexByElemMatch( + comparator, + filterCacheKey, + filter, + nodeTypeNames, + filtersCache + ) } - const nodesByKeyValue /*: Set | undefined*/ = getFilterCacheByTypedChain( - typedKey, + const nodesByValue /*: Set | undefined*/ = getNodesFromCacheByValue( + filterCacheKey, targetValue, filtersCache ) @@ -315,13 +346,13 @@ const collectBucketForElemMatch = ( // If we couldn't find the needle then maybe sift can, for example if the // schema contained a proxy; `slug: String @proxy(from: "slugInternal")` // There are also cases (and tests) where id exists with a different type - if (!nodesByKeyValue) { + if (!nodesByValue) { return false } // In all other cases this must be a non-empty Set because the indexing // mechanism does not create a Set unless there's a IGatsbyNode for it - filterCaches.push(nodesByKeyValue) + nodesPerValueSets.push(nodesByValue) return true } @@ -330,7 +361,6 @@ const collectBucketForElemMatch = ( * Filters and sorts a list of nodes using mongodb-like syntax. * * @param args raw graphql query filter/sort as an object - * @property {boolean | number | string} args.type gqlType. See build-node-types * @property {boolean} args.firstOnly true if you want to return only the first * result found. This will return a collection of size 1. Not a single element * @property {{filter?: Object, sort?: Object} | undefined} args.queryArgs @@ -444,9 +474,11 @@ const filterToStats = ( } /** - * Check if the filter is "flat" (single leaf) and an "$eq". If so, uses custom - * indexes based on filter and types and returns any result it finds. - * If conditions are not met or no nodes are found, returns undefined. + * Check if filter op is supported (not all are). If so, uses custom + * fast indexes based on filter and types and returns any result it finds. + * If conditions are not met or no nodes are found, returns undefined and + * a slow run through Sift is executed instead. + * This function is a noop if no filter cache is given to it. * * @param {Array} filters Resolved. (Should be checked by caller to exist) * @param {Array} nodeTypeNames @@ -454,8 +486,6 @@ const filterToStats = ( * @returns {Array | undefined} Collection of results */ const filterWithoutSift = (filters, nodeTypeNames, filtersCache) => { - // This can also be `$ne`, `$in` or any other grapqhl comparison op - if (!filtersCache) { // If no filter cache is passed on, explicitly don't use one return undefined @@ -463,17 +493,14 @@ const filterWithoutSift = (filters, nodeTypeNames, filtersCache) => { if (filters.length === 0) { // If no filters are given, go through Sift. This does not appear to be - // slower than s - // hortcutting it here. + // slower than shortcutting it here. return undefined } if ( filters.some( filter => - filter.type === `query` && // enabled - // filter.type === `elemMatch` || // disabled - ![`$eq`].includes(filter.query.comparator) + filter.type === `query` && !FAST_OPS.includes(filter.query.comparator) ) ) { // If there's a filter with non-supported op, stop now. diff --git a/packages/gatsby/src/redux/types.ts b/packages/gatsby/src/redux/types.ts index dce585b7f6970..b871c5bd76f0b 100644 --- a/packages/gatsby/src/redux/types.ts +++ b/packages/gatsby/src/redux/types.ts @@ -1,11 +1,21 @@ import { IProgram } from "../commands/types" -import { GraphQLSchema } from "graphql" +import { GraphQLFieldExtensionDefinition } from "../schema/extensions" +import { DocumentNode, GraphQLSchema } from "graphql" import { SchemaComposer } from "graphql-compose" type SystemPath = string type Identifier = string type StructuredLog = any // TODO this should come from structured log interface +export interface IRedirect { + fromPath: string + toPath: string + isPermanent?: boolean + redirectInBrowser?: boolean + // Users can add anything to this createRedirect API + [key: string]: any +} + export enum ProgramStatus { BOOTSTRAP_FINISHED = `BOOTSTRAP_FINISHED`, BOOTSTRAP_QUERY_RUNNING_FINISHED = `BOOTSTRAP_QUERY_RUNNING_FINISHED`, @@ -62,6 +72,15 @@ export interface IGatsbyNode { [key: string]: unknown } +export interface IGatsbyPlugin { + name: string + version: string +} + +export interface IGatsbyPluginContext { + [key: string]: (...args: any[]) => any +} + type GatsbyNodes = Map export interface IGatsbyState { @@ -140,7 +159,7 @@ export interface IGatsbyState { } webpack: any // TODO This should be the output from ./utils/webpack.config.js webpackCompilationHash: string - redirects: any[] // TODO + redirects: IRedirect[] babelrc: { stages: { develop: any // TODO @@ -214,6 +233,10 @@ export type ActionsUnion = | IQueryExtractionBabelErrorAction | ISetProgramStatusAction | IPageQueryRunAction + | IAddThirdPartySchema + | ICreateTypes + | ICreateFieldExtension + | IPrintTypeDefinitions export interface ICreatePageDependencyAction { type: `CREATE_COMPONENT_DEPENDENCY` @@ -242,7 +265,7 @@ export interface IReplaceComponentQueryAction { export interface IReplaceStaticQueryAction { type: `REPLACE_STATIC_QUERY` - plugin: Plugin | null | undefined + plugin: IGatsbyPlugin | null | undefined payload: { name: string componentPath: string @@ -254,28 +277,28 @@ export interface IReplaceStaticQueryAction { export interface IQueryExtractedAction { type: `QUERY_EXTRACTED` - plugin: Plugin + plugin: IGatsbyPlugin traceId: string | undefined payload: { componentPath: string; query: string } } export interface IQueryExtractionGraphQLErrorAction { type: `QUERY_EXTRACTION_GRAPHQL_ERROR` - plugin: Plugin + plugin: IGatsbyPlugin traceId: string | undefined payload: { componentPath: string; error: string } } export interface IQueryExtractedBabelSuccessAction { type: `QUERY_EXTRACTION_BABEL_SUCCESS` - plugin: Plugin + plugin: IGatsbyPlugin traceId: string | undefined payload: { componentPath: string } } export interface IQueryExtractionBabelErrorAction { type: `QUERY_EXTRACTION_BABEL_ERROR` - plugin: Plugin + plugin: IGatsbyPlugin traceId: string | undefined payload: { componentPath: string @@ -285,21 +308,71 @@ export interface IQueryExtractionBabelErrorAction { export interface ISetProgramStatusAction { type: `SET_PROGRAM_STATUS` - plugin: Plugin + plugin: IGatsbyPlugin traceId: string | undefined payload: ProgramStatus } export interface IPageQueryRunAction { type: `PAGE_QUERY_RUN` - plugin: Plugin + plugin: IGatsbyPlugin traceId: string | undefined payload: { path: string; componentPath: string; isPage: boolean } } export interface IRemoveStaleJobAction { type: `REMOVE_STALE_JOB_V2` - plugin: Plugin + plugin: IGatsbyPlugin traceId?: string payload: { contentDigest: string } } + +export interface IAddThirdPartySchema { + type: `ADD_THIRD_PARTY_SCHEMA` + plugin: IGatsbyPlugin + traceId?: string + payload: GraphQLSchema +} + +export interface ICreateTypes { + type: `CREATE_TYPES` + plugin: IGatsbyPlugin + traceId?: string + payload: DocumentNode | DocumentNode[] +} + +export interface ICreateFieldExtension { + type: `CREATE_FIELD_EXTENSION` + plugin: IGatsbyPlugin + traceId?: string + payload: { + name: string + extension: GraphQLFieldExtensionDefinition + } +} + +export interface IPrintTypeDefinitions { + type: `PRINT_SCHEMA_REQUESTED` + plugin: IGatsbyPlugin + traceId?: string + payload: { + path?: string + include?: { types?: Array; plugins?: Array } + exclude?: { types?: Array; plugins?: Array } + withFieldTypes?: boolean + } +} + +export interface ICreateResolverContext { + type: `CREATE_RESOLVER_CONTEXT` + plugin: IGatsbyPlugin + traceId?: string + payload: + | IGatsbyPluginContext + | { [camelCasedPluginNameWithoutPrefix: string]: IGatsbyPluginContext } +} + +export interface ICreateRedirectAction { + type: `CREATE_REDIRECT` + payload: IRedirect +} diff --git a/packages/gatsby/src/schema/__tests__/node-model.js b/packages/gatsby/src/schema/__tests__/node-model.js index cb736bab5680f..21222402b5bd3 100644 --- a/packages/gatsby/src/schema/__tests__/node-model.js +++ b/packages/gatsby/src/schema/__tests__/node-model.js @@ -296,7 +296,7 @@ describe(`NodeModel`, () => { filter: { frontmatter: { published: { eq: false } } }, } const firstOnly = true - nodeModel.replaceTypeKeyValueCache(createFiltersCache()) + nodeModel.replaceFiltersCache(createFiltersCache()) const result = await nodeModel.runQuery({ query, firstOnly, @@ -311,7 +311,7 @@ describe(`NodeModel`, () => { filter: { frontmatter: { published: { eq: false } } }, } const firstOnly = false - nodeModel.replaceTypeKeyValueCache(createFiltersCache()) + nodeModel.replaceFiltersCache(createFiltersCache()) const result = await nodeModel.runQuery({ query, firstOnly, @@ -328,7 +328,7 @@ describe(`NodeModel`, () => { filter: { frontmatter: { published: { eq: false } } }, } const firstOnly = false - nodeModel.replaceTypeKeyValueCache(createFiltersCache()) + nodeModel.replaceFiltersCache(createFiltersCache()) await nodeModel.runQuery( { query, @@ -354,7 +354,7 @@ describe(`NodeModel`, () => { filter: { frontmatter: { published: { eq: false } } }, } const firstOnly = false - nodeModel.replaceTypeKeyValueCache(createFiltersCache()) + nodeModel.replaceFiltersCache(createFiltersCache()) await nodeModel.withContext({ path: `/` }).runQuery({ query, firstOnly, @@ -377,7 +377,7 @@ describe(`NodeModel`, () => { filter: { frontmatter: { published: { eq: false } } }, } const firstOnly = false - nodeModel.replaceTypeKeyValueCache(createFiltersCache()) + nodeModel.replaceFiltersCache(createFiltersCache()) await nodeModel.runQuery( { query, @@ -397,7 +397,7 @@ describe(`NodeModel`, () => { const type = `AllFiles` const query = {} const firstOnly = true - nodeModel.replaceTypeKeyValueCache(createFiltersCache()) + nodeModel.replaceFiltersCache(createFiltersCache()) const result = nodeModel.runQuery({ query, firstOnly, @@ -412,7 +412,7 @@ describe(`NodeModel`, () => { const type = `TeamMember` const query = { name: { ne: null } } const firstOnly = true - nodeModel.replaceTypeKeyValueCache(createFiltersCache()) + nodeModel.replaceFiltersCache(createFiltersCache()) const result = await nodeModel.runQuery({ query, firstOnly, @@ -429,7 +429,7 @@ describe(`NodeModel`, () => { }, } const firstOnly = false - nodeModel.replaceTypeKeyValueCache(createFiltersCache()) + nodeModel.replaceFiltersCache(createFiltersCache()) const result = await nodeModel.runQuery({ query, firstOnly, @@ -448,7 +448,7 @@ describe(`NodeModel`, () => { }, } const firstOnly = true - nodeModel.replaceTypeKeyValueCache(createFiltersCache()) + nodeModel.replaceFiltersCache(createFiltersCache()) const result = await nodeModel.runQuery({ query, firstOnly, @@ -457,6 +457,33 @@ describe(`NodeModel`, () => { expect(result).toBeDefined() expect(result.id).toEqual(`post2`) }) + + // FIXME: Filters on date instances are not supported yet + // SIFT requires such filters to be expressed as Date instances but we + // don't know if date is stored as `Date` instance or `string` + // so can't really do that + // See https://github.com/crcn/sift.js#date-comparison + it.skip(`queries date instances in nodes`, async () => { + const type = `Post` + const query = { + filter: { + frontmatter: { + date: { lte: `2018-01-01T00:00:00Z` }, + }, + }, + } + const firstOnly = false + nodeModel.replaceTypeKeyValueCache(createFiltersCache()) + const result = await nodeModel.runQuery({ + query, + firstOnly, + type, + }) + expect(result).toBeDefined() + expect(result.length).toEqual(2) + expect(result[0].id).toEqual(`post2`) + expect(result[1].id).toEqual(`post3`) + }) }) }) @@ -555,7 +582,7 @@ describe(`NodeModel`, () => { { desc: `no cache`, cb: () => null }, // Always goes through sift ].forEach(({ desc, cb: createFiltersCache }) => { it(`[${desc}] should not resolve prepared nodes more than once`, async () => { - nodeModel.replaceTypeKeyValueCache(createFiltersCache()) + nodeModel.replaceFiltersCache(createFiltersCache()) await nodeModel.runQuery( { query: { filter: { betterTitle: { eq: `foo` } } }, @@ -566,7 +593,7 @@ describe(`NodeModel`, () => { ) expect(resolveBetterTitleMock.mock.calls.length).toBe(2) expect(resolveOtherTitleMock.mock.calls.length).toBe(0) - nodeModel.replaceTypeKeyValueCache(createFiltersCache()) + nodeModel.replaceFiltersCache(createFiltersCache()) await nodeModel.runQuery( { query: { filter: { betterTitle: { eq: `foo` } } }, @@ -577,7 +604,7 @@ describe(`NodeModel`, () => { ) expect(resolveBetterTitleMock.mock.calls.length).toBe(2) expect(resolveOtherTitleMock.mock.calls.length).toBe(0) - nodeModel.replaceTypeKeyValueCache(createFiltersCache()) + nodeModel.replaceFiltersCache(createFiltersCache()) await nodeModel.runQuery( { query: { @@ -590,7 +617,7 @@ describe(`NodeModel`, () => { ) expect(resolveBetterTitleMock.mock.calls.length).toBe(2) expect(resolveOtherTitleMock.mock.calls.length).toBe(2) - nodeModel.replaceTypeKeyValueCache(createFiltersCache()) + nodeModel.replaceFiltersCache(createFiltersCache()) await nodeModel.runQuery( { query: { @@ -603,7 +630,7 @@ describe(`NodeModel`, () => { ) expect(resolveBetterTitleMock.mock.calls.length).toBe(2) expect(resolveOtherTitleMock.mock.calls.length).toBe(2) - nodeModel.replaceTypeKeyValueCache(createFiltersCache()) + nodeModel.replaceFiltersCache(createFiltersCache()) await nodeModel.runQuery( { query: { @@ -619,7 +646,7 @@ describe(`NodeModel`, () => { }) it(`[${desc}] can filter by resolved fields`, async () => { - nodeModel.replaceTypeKeyValueCache(createFiltersCache()) + nodeModel.replaceFiltersCache(createFiltersCache()) const result = await nodeModel.runQuery( { query: { @@ -769,7 +796,7 @@ describe(`NodeModel`, () => { ].forEach(({ desc, cb: createFiltersCache }) => { describe(`[${desc}] Tracks nodes returned by queries`, () => { it(`Tracks objects when running query without filter`, async () => { - nodeModel.replaceTypeKeyValueCache(createFiltersCache()) + nodeModel.replaceFiltersCache(createFiltersCache()) const result = await nodeModel.runQuery({ query: {}, type: schema.getType(`Test`), @@ -786,7 +813,7 @@ describe(`NodeModel`, () => { }) it(`Tracks objects when running query with filter`, async () => { - nodeModel.replaceTypeKeyValueCache(createFiltersCache()) + nodeModel.replaceFiltersCache(createFiltersCache()) const result = await nodeModel.runQuery({ query: { filter: { diff --git a/packages/gatsby/src/schema/__tests__/run-query.js b/packages/gatsby/src/schema/__tests__/run-query.js index cad1d109f06e7..9c2d373a94790 100644 --- a/packages/gatsby/src/schema/__tests__/run-query.js +++ b/packages/gatsby/src/schema/__tests__/run-query.js @@ -216,9 +216,11 @@ function resetDb(nodes) { ) } +let nodesAfterLastRunQuery async function runQuery(queryArgs, filtersCache) { const nodes = makeNodes() resetDb(nodes) + nodesAfterLastRunQuery = nodes const { sc, type: gqlType } = makeGqlType(nodes) const args = { gqlType, @@ -248,12 +250,17 @@ it(`should use the cache argument`, async () => { // Confirm cache is not ignored expect(filtersCache.size === 1).toBe(true) - filtersCache.forEach((filterCache, cacheKey) => { + filtersCache.forEach(( + filterCache /*: FilterCache */, + cacheKey /*: FilterCacheKey */ + ) => { // This test will change when the composition of the FilterCache changes // For now it should be a Map of values to Set of nodes - expect(filterCache instanceof Map).toBe(true) + expect(filterCache instanceof Object).toBe(true) + expect(filterCache.byValue instanceof Map).toBe(true) + expect(filterCache.meta instanceof Object).toBe(true) // There ought to be at least one value mapped (probably more, shrug) - expect(filterCache.size >= 1).toBe(true) + expect(filterCache.byValue.size >= 1).toBe(true) }) }) @@ -367,8 +374,7 @@ it(`should use the cache argument`, async () => { let result = await runFilter({ hair: { lt: 2 } }) expect(result.length).toEqual(2) - expect(result[0].hair).toEqual(1) - expect(result[1].hair).toEqual(0) + result.forEach(r => expect(r.hair <= 2).toBe(true)) }) it(`handles lt operator with null`, async () => { @@ -383,9 +389,68 @@ it(`should use the cache argument`, async () => { it(`handles lte operator with number`, async () => { let result = await runFilter({ hair: { lte: 1 } }) - expect(result.length).toEqual(2) - expect(result[0].hair).toEqual(1) - expect(result[1].hair).toEqual(0) + let actual = nodesAfterLastRunQuery.reduce( + (acc, node) => (node.hair <= 1 ? acc + 1 : acc), + 0 + ) + + expect(actual).not.toBe(0) // Test should keep this invariant! + expect(result.length).toEqual(actual) + result.forEach(r => expect(r.hair <= 1).toBe(true)) + }) + + it(`should lte when value is lower than all found values`, async () => { + if (IS_LOKI) return + + let result = await runFilter({ float: { lte: 1 } }) + + let actual = nodesAfterLastRunQuery.reduce( + (acc, node) => (node.float <= 1 ? acc + 1 : acc), + 0 + ) + + expect(actual).toEqual(0) // Make sure test nodes keep this invariant! + expect(result).toEqual(null) // Zero results yields null + }) + + it(`should lte when value is in the middle of all found values`, async () => { + let result = await runFilter({ float: { lte: 2 } }) + + let actual = nodesAfterLastRunQuery.reduce( + (acc, node) => (node.float <= 2 ? acc + 1 : acc), + 0 + ) + + expect(result.length).toEqual(actual) + result.forEach(r => expect(r.float <= 2).toBe(true)) + }) + + it(`should lte when value is higher than all found values`, async () => { + let result = await runFilter({ float: { lte: 5 } }) + + let actual = nodesAfterLastRunQuery.reduce( + (acc, node) => (node.float <= 5 ? acc + 1 : acc), + 0 + ) + + expect(result.length).toEqual(actual) + }) + + it.skip(`should lte when type coercion fails direct value lookup`, async () => { + // Here 1.5 exists but only as number. However, `1.5 <= '1.5' === true` + // This test checks whether we don't incorrectly assume that if the + // value wasn't mapped, that it can't be found. + let result = await runFilter({ float: { lte: `1.5` } }) + + let actual = nodesAfterLastRunQuery.reduce( + (acc, node) => (node.float <= 1.5 ? acc + 1 : acc), + 0 + ) + + expect(result).not.toBe(undefined) + expect(result).not.toBe(null) + expect(result.length).toEqual(actual) + result.forEach(r => expect(r.float <= 2).toBe(true)) }) it(`handles lte operator with null`, async () => { @@ -393,8 +458,14 @@ it(`should use the cache argument`, async () => { let result = await runFilter({ nil: { lte: null } }) + let actual = nodesAfterLastRunQuery.reduce( + (acc, node) => (node.nil <= null ? acc + 1 : acc), + 0 + ) + // lte null matches null but no nodes without the property (NULL) - expect(result.length).toEqual(1) + expect(actual).not.toBe(0) // Test should keep this invariant! + expect(result.length).toEqual(actual) expect(result[0].name).toEqual(`The Mad Wax`) expect(result[0].nil).toEqual(null) }) @@ -419,9 +490,14 @@ it(`should use the cache argument`, async () => { it(`handles gte operator with number`, async () => { let result = await runFilter({ hair: { gte: 1 } }) - expect(result.length).toEqual(2) - expect(result[0].hair).toEqual(1) - expect(result[1].hair).toEqual(2) + let actual = nodesAfterLastRunQuery.reduce( + (acc, node) => (node.hair >= 1 ? acc + 1 : acc), + 0 + ) + + expect(actual).not.toBe(0) // Test invariant should hold + expect(result.length).toEqual(actual) + result.forEach(r => expect(r.hair >= 1).toBe(true)) }) it(`handles gte operator with null`, async () => { @@ -429,10 +505,18 @@ it(`should use the cache argument`, async () => { let result = await runFilter({ nil: { gte: null } }) - // lte null matches null but no nodes without the property (NULL) - expect(result.length).toEqual(1) - expect(result[0].name).toEqual(`The Mad Wax`) - expect(result[0].nil).toEqual(null) + let actual = nodesAfterLastRunQuery.reduce( + (acc, node) => (node.nil >= null ? acc + 1 : acc), + 0 + ) + + // gte null matches null but no nodes without the property (NULL) + expect(actual).not.toBe(0) // Test invariant should hold + expect(result.length).toEqual(actual) + result.forEach( + // Note: confirm no `null` is returned for >= null + r => expect(r.nil === null).toBe(true) + ) }) it(`handles the regex operator without flags`, async () => { @@ -590,6 +674,9 @@ it(`should use the cache argument`, async () => { }) expect(result.length).toEqual(1) + expect( + result[0]?.singleElem?.things.some(e => e?.one?.two?.three === 123) + ).toEqual(true) }) it(`handles the elemMatch operator on the second element`, async () => { @@ -803,12 +890,14 @@ it(`should use the cache argument`, async () => { // nodes that do not have the field at all (NULL). expect(result.length).toEqual(2) - result.forEach(edge => { - // Either does not exist or does not contain - expect(edge.anArray === undefined || !edge.anArray.includes(5)).toBe( - true - ) - }) + // Either does not exist or does not contain + result + .filter(edge => edge.anArray !== undefined) + .forEach(edge => { + // In this test, if the property exists it should be an array + expect(Array.isArray(edge.anArray)).toBe(true) + expect(edge.anArray.includes(5)).toBe(false) + }) }) it(`handles the nin operator for array [null]`, async () => { diff --git a/packages/gatsby/src/schema/node-model.js b/packages/gatsby/src/schema/node-model.js index a7c7fd8853afd..638378b0719b2 100644 --- a/packages/gatsby/src/schema/node-model.js +++ b/packages/gatsby/src/schema/node-model.js @@ -71,7 +71,7 @@ class LocalNodeModel { this._prepareNodesQueues = {} this._prepareNodesPromises = {} this._preparedNodesCache = new Map() - this.replaceTypeKeyValueCache() + this.replaceFiltersCache() } /** @@ -84,7 +84,7 @@ class LocalNodeModel { * actually queried. If the filter targets `id` directly, only one Node is * cached instead of a Set of Nodes. If null, don't create or use a cache. */ - replaceTypeKeyValueCache(map = new Map()) { + replaceFiltersCache(map = new Map()) { this._filtersCache = map // See redux/nodes.js for usage } diff --git a/packages/gatsby/src/types.ts b/packages/gatsby/src/types.ts index 1835e473fc1dc..66727d89500b5 100644 --- a/packages/gatsby/src/types.ts +++ b/packages/gatsby/src/types.ts @@ -2,7 +2,7 @@ export interface IMatch { id: string context: { sourceMessage: string - [key: string]: string + [key: string]: string | boolean } error?: Error | undefined [key: string]: unknown diff --git a/packages/gatsby/src/utils/webpack.config.js b/packages/gatsby/src/utils/webpack.config.js index a37c90f315bfc..993055a638cda 100644 --- a/packages/gatsby/src/utils/webpack.config.js +++ b/packages/gatsby/src/utils/webpack.config.js @@ -530,10 +530,13 @@ module.exports = async ( reuseExistingChunk: true, }, commons: { + // only bundle non-async modules + chunks: `initial`, name: `commons`, - // if a chunk is used on all components we put it in commons - minChunks: componentsCount, + // if a chunk is used on all components we put it in commons (we need at least 2 components) + minChunks: Math.max(componentsCount, 2), priority: 20, + reuseExistingChunk: true, }, // If a chunk is used in at least 2 components we create a separate chunk shared: { diff --git a/scripts/check-ts.js b/scripts/check-ts.js index 9aca0ca9641d9..68df1d3b4e551 100644 --- a/scripts/check-ts.js +++ b/scripts/check-ts.js @@ -15,7 +15,8 @@ const execa = require(`execa`) console.log(`TS Check: Running...`) -const PACKAGES_DIR = path.resolve(__dirname, `../packages`) +const toAbsolutePath = relativePath => path.join(__dirname, `..`, relativePath) +const PACKAGES_DIR = toAbsolutePath(`/packages`) const filterPackage = yargs.argv._[0] @@ -59,9 +60,34 @@ if (filterPackage) { } } +let totalTsFiles = 0 +let totalJsFiles = 0 + packagesWithTs.forEach(project => { + const tsFiles = glob.sync( + toAbsolutePath( + `./packages/${project.split(/.*packages[/\\]/)[1]}/src/**/*.ts` + ) + ).length + + const jsFiles = glob.sync( + toAbsolutePath( + `./packages/${project.split(/.*packages[/\\]/)[1]}/src/**/*.js` + ) + ).length + + totalTsFiles += tsFiles + totalJsFiles += jsFiles + + const percentConverted = Number( + ((tsFiles / (jsFiles + tsFiles)) * 100).toFixed(1) + ) + console.log( - `TS Check: Checking ./packages/${project.split(/.*packages[/\\]/)[1]}` + `TS Check: Checking ./packages/${project.split(/.*packages[/\\]/)[1]}`, + `\n - TS Files: ${tsFiles}`, + `\n - JS Files: ${jsFiles}`, + `\n - Percent Converted: ${percentConverted}%` ) const args = [ @@ -84,3 +110,15 @@ packagesWithTs.forEach(project => { }) console.log(`TS Check: Success`) + +if (!filterPackage) { + const percentConverted = Number( + ((totalTsFiles / (totalJsFiles + totalTsFiles)) * 100).toFixed(1) + ) + + console.log( + ` - Total TS Files: ${totalJsFiles}`, + `\n - Total JS Files: ${totalJsFiles}`, + `\n - Percent Converted: ${percentConverted}%` + ) +} diff --git a/scripts/e2e-test.sh b/scripts/e2e-test.sh index 1532bb95a2f0c..509f900a73c54 100755 --- a/scripts/e2e-test.sh +++ b/scripts/e2e-test.sh @@ -3,7 +3,7 @@ SRC_PATH=$1 CUSTOM_COMMAND="${2:-yarn test}" GATSBY_PATH="${CIRCLE_WORKING_DIRECTORY:-../../}" -# cypress docker does not support sudo and do not need it but the default node executor does +# cypress docker does not support sudo and does not need it, but the default node executor does command -v sudo && sudo npm install -g gatsby-dev-cli || npm install -g gatsby-dev-cli && # setting up child integration test link to gatsby packages diff --git a/scripts/i18n/README.md b/scripts/i18n/README.md index 6b7654ccce566..8211f63214653 100644 --- a/scripts/i18n/README.md +++ b/scripts/i18n/README.md @@ -70,3 +70,13 @@ When run, the script will: - Pulls the latest version of `gatsby-i18n-source`. - Creates a "sync" pull request that updates all files that do not contain conflicts from the merge. - Creates a "conflicts" pull request that contains all merge conflicts, with instructions on how to resolve them. + +### `run-all` + +Usage: + +```shell +yarn run-all [script name] +``` + +The `run-all` script runs the script provided in the argument across all languages for which there are translations of gatbyjs.org, listed in /www/src/i18n.json. diff --git a/scripts/i18n/package.json b/scripts/i18n/package.json index b8795edc8fef0..1c60f22081e4f 100644 --- a/scripts/i18n/package.json +++ b/scripts/i18n/package.json @@ -4,6 +4,7 @@ "description": "Scripts for gatsby internationalization", "scripts": { "create": "node ./create.js", + "run-all": "node ./run-all.js", "sync": "node ./sync.js", "update-source": "node ./update-source.js" }, diff --git a/scripts/i18n/run-all.js b/scripts/i18n/run-all.js new file mode 100644 index 0000000000000..3cac7e235ac4a --- /dev/null +++ b/scripts/i18n/run-all.js @@ -0,0 +1,21 @@ +// Run the provided script on all valid repos +const fs = require(`fs`) +const log4js = require(`log4js`) +const shell = require(`shelljs`) +let logger = log4js.getLogger(`run-all`) + +require(`dotenv`).config() + +function runAll(script) { + if (!script) { + logger.error(`Usage: yarn run-all `) + process.exit(1) + } + const langs = JSON.parse(fs.readFileSync(`../../www/i18n.json`)) + for (const { code } of langs) { + shell.exec(`yarn ${script} ${code}`) + } +} + +const [script] = process.argv.slice(2) +runAll(script) diff --git a/scripts/i18n/sync.js b/scripts/i18n/sync.js index fed6e12634fc8..a59690c70fda6 100644 --- a/scripts/i18n/sync.js +++ b/scripts/i18n/sync.js @@ -1,11 +1,12 @@ const log4js = require(`log4js`) const shell = require(`shelljs`) -const { graphql } = require(`@octokit/graphql`) +const { graphql: baseGraphql } = require(`@octokit/graphql`) let logger = log4js.getLogger(`sync`) require(`dotenv`).config() -const host = `https://github.com` +const token = process.env.GITHUB_API_TOKEN +const host = `https://${token}@github.com` const cacheDir = `.cache` const owner = `gatsbyjs` const repoBase = `gatsby` @@ -14,6 +15,7 @@ const sourceRepo = `gatsby-i18n-source` const sourceRepoUrl = `${host}/${owner}/${sourceRepo}` const sourceRepoGitUrl = `${sourceRepoUrl}.git` +const syncLabelName = `sync` // get the git short hash function getShortHash(hash) { @@ -33,25 +35,68 @@ function cloneOrUpdateRepo(repoName, repoUrl) { } } +// Run the query and exit if there are errors +async function graphql(query, params) { + const graphqlWithAuth = baseGraphql.defaults({ + headers: { + authorization: `token ${token}`, + }, + }) + try { + return await graphqlWithAuth(query, params) + } catch (error) { + logger.error(error.message) + return process.exit(1) + } +} + async function getRepository(owner, name) { const { repository } = await graphql( ` - query($owner: String!, $name: String!) { + query($owner: String!, $name: String!, $syncLabel: String!) { repository(owner: $owner, name: $name) { id + syncPullRequests: pullRequests(labels: [$syncLabel], first: 1) { + nodes { + id + } + } + syncLabel: label(name: $syncLabel) { + id + } } } `, { - headers: { - authorization: `token ${process.env.GITHUB_ADMIN_AUTH_TOKEN}`, - }, owner, name, + syncLabel: syncLabelName, } ) return repository } + +async function createLabel(input) { + const { createLabel } = await graphql( + ` + mutation($input: CreateLabelInput!) { + createLabel(input: $input) { + label { + id + } + } + } + `, + { + headers: { + accept: `application/vnd.github.bane-preview+json`, + }, + input, + } + ) + return createLabel.label +} + async function createPullRequest(input) { const { createPullRequest } = await graphql( ` @@ -66,7 +111,6 @@ async function createPullRequest(input) { `, { headers: { - authorization: `token ${process.env.GITHUB_BOT_AUTH_TOKEN}`, accept: `application/vnd.github.shadow-cat-preview+json`, }, input, @@ -75,6 +119,27 @@ async function createPullRequest(input) { return createPullRequest.pullRequest } +async function addLabelToPullRequest(pullRequest, label) { + await graphql( + ` + mutation($input: AddLabelsToLabelableInput!) { + addLabelsToLabelable(input: $input) { + clientMutationId + } + } + `, + { + headers: { + accept: `application/vnd.github.bane-preview+json`, + }, + input: { + labelableId: pullRequest.id, + labelIds: [label.id], + }, + } + ) +} + function conflictPRBody(conflictFiles, comparisonUrl, prNumber) { return ` Sync conflicts with the source repo. Please update the translations based on updated source content. @@ -126,7 +191,32 @@ async function syncTranslationRepo(code) { shell.exec(`git remote add source ${sourceRepoGitUrl}`) shell.exec(`git fetch source master`) - // TODO don't run the sync script if there is a current PR from the bot + const repository = await getRepository(owner, transRepoName) + + if (repository.syncPullRequests.nodes.length > 0) { + logger.info( + `There are currently open sync pull requests. Please ask the language maintainers to merge the existing PR(s) in before opening another one. Exiting...` + ) + process.exit(0) + } + + logger.info(`No currently open sync pull requests.`) + + let syncLabel + if (!repository.syncLabel) { + logger.info( + `Repository does not have a "${syncLabelName}" label. Creating one...` + ) + syncLabel = await createLabel({ + repositoryId: repository.id, + name: syncLabelName, + description: `Sync with translation source. Used by @gatsbybot to track open sync pull requests.`, + color: `fbca04`, + }) + } else { + logger.info(`Repository has an existing ${syncLabelName} label.`) + syncLabel = repository.syncLabel + } // TODO exit early if this fails // Compare these changes @@ -152,15 +242,13 @@ async function syncTranslationRepo(code) { // Remove files that are deleted by upstream // https://stackoverflow.com/a/54232519 shell.exec(`git diff --name-only --diff-filter=U | xargs git rm`) - shell.exec(`git ci --no-edit`) + shell.exec(`git commit --no-edit`) shell.exec(`git push -u origin ${syncBranch}`) - const repository = await getRepository(owner, transRepoName) - logger.info(`Creating sync pull request`) // TODO if there is already an existing PR, don't create a new one and exit early - const { number: syncPRNumber } = await createPullRequest({ + const syncPR = await createPullRequest({ repositoryId: repository.id, baseRefName: `master`, headRefName: syncBranch, @@ -168,6 +256,7 @@ async function syncTranslationRepo(code) { body: syncPRBody(), maintainerCanModify: true, }) + await addLabelToPullRequest(syncPR, syncLabel) // if we successfully publish the PR, pull again and create a new PR -- shell.exec(`git checkout master`) @@ -235,15 +324,16 @@ async function syncTranslationRepo(code) { logger.info(`Creating conflicts pull request`) // TODO assign codeowners as reviewers - await createPullRequest({ + const conflictsPR = await createPullRequest({ repositoryId: repository.id, baseRefName: `master`, headRefName: conflictBranch, title: `(sync) Resolve conflicts with ${sourceRepo} @ ${shortHash}`, - body: conflictPRBody(conflictFiles, comparisonUrl, syncPRNumber), + body: conflictPRBody(conflictFiles, comparisonUrl, syncPR.number), maintainerCanModify: true, draft: true, }) + await addLabelToPullRequest(conflictsPR, syncLabel) } const [langCode] = process.argv.slice(2) diff --git a/starters/hello-world/gatsby-config.js b/starters/hello-world/gatsby-config.js index 823925db4c737..4172a129ff405 100644 --- a/starters/hello-world/gatsby-config.js +++ b/starters/hello-world/gatsby-config.js @@ -6,4 +6,5 @@ module.exports = { /* Your site config here */ + plugins: [] } diff --git a/www/gatsby-config.js b/www/gatsby-config.js index 4bed679173af9..2e4add583a1fe 100644 --- a/www/gatsby-config.js +++ b/www/gatsby-config.js @@ -2,7 +2,7 @@ const path = require(`path`) require(`dotenv`).config({ path: `.env.${process.env.NODE_ENV}`, }) -const { langCodes } = require(`./src/utils/i18n`) +const { i18nEnabled, langCodes } = require(`./src/utils/i18n`) const GA = { identifier: `UA-93349937-5`, @@ -53,12 +53,8 @@ if (process.env.AIRTABLE_API_KEY) { }) } -// true if `env.LOCALES` has a defined list of languages -if (langCodes.length > 0) { - const naughtyFiles = [ - `docs/docs/graphql-api.md`, - `docs/docs/data-fetching.md`, - ] +if (i18nEnabled) { + const naughtyFiles = [`docs/docs/data-fetching.md`] dynamicPlugins.push( ...langCodes.map(code => ({ resolve: `gatsby-source-git`, diff --git a/www/gatsby-node.js b/www/gatsby-node.js index 84f4ee66c88a5..643f31fd51806 100644 --- a/www/gatsby-node.js +++ b/www/gatsby-node.js @@ -5,6 +5,7 @@ const child_process = require(`child_process`) const startersRedirects = require(`./starter-redirects.json`) const yaml = require(`js-yaml`) const redirects = yaml.load(fs.readFileSync(`./redirects.yaml`)) +const { i18nEnabled } = require(`./src/utils/i18n`) const docs = require(`./src/utils/node/docs.js`) const showcase = require(`./src/utils/node/showcase.js`) @@ -41,7 +42,7 @@ exports.onCreateNode = helpers => { exports.onPostBootstrap = () => { // Compile language strings if locales are enabled - if (!!process.env.LOCALES) { + if (i18nEnabled) { child_process.execSync(`yarn lingui:build`) } } diff --git a/www/src/components/I18nContext.js b/www/src/components/I18nContext.js index 8ba94e01e938b..67a21224916e4 100644 --- a/www/src/components/I18nContext.js +++ b/www/src/components/I18nContext.js @@ -1,5 +1,5 @@ import React from "react" -import { defaultLang } from "../utils/i18n" +import { i18nEnabled, defaultLang } from "../utils/i18n" import { I18nProvider as LinguiProvider } from "@lingui/react" // Lingui doesn't give access to the locale, so we need our own provider @@ -7,7 +7,7 @@ import { I18nProvider as LinguiProvider } from "@lingui/react" const LocaleContext = React.createContext(defaultLang) export function I18nProvider({ locale = defaultLang, children }) { - const catalog = !!process.env.LOCALES + const catalog = i18nEnabled ? require(`../data/locales/${locale}/messages.js`) : {} return ( diff --git a/www/src/components/events/__tests__/event-list.js b/www/src/components/events/__tests__/event-list.js index 9ccbdbb16c15f..9c67be82a8732 100644 --- a/www/src/components/events/__tests__/event-list.js +++ b/www/src/components/events/__tests__/event-list.js @@ -27,7 +27,8 @@ describe(``, () => { expect(getByText(`No events are scheduled right now.`)).toBeVisible() }) - it(`splits upcoming and past events`, () => { + + it.skip(`splits upcoming and past events`, () => { const { getByText } = render( `, () => { dateNowSpy.mockRestore() }) - it(`display's today's events as upcoming`, () => { + it.skip(`display's today's events as upcoming`, () => { const { getByText } = render( ) diff --git a/www/src/components/events/event-list.js b/www/src/components/events/event-list.js index 09b17c4abc7a3..104c4d0b4e8d0 100644 --- a/www/src/components/events/event-list.js +++ b/www/src/components/events/event-list.js @@ -5,9 +5,9 @@ import Event from "./event" export default function EventList({ events }) { const endOfDay = date => new Date(date).setHours(23, 59, 59, 999) - const upcoming = events.nodes.filter( - event => endOfDay(event.data.date) >= Date.now() - ) + // const upcoming = events.nodes.filter( + // event => endOfDay(event.data.date) >= Date.now() + // ) const past = events.nodes .filter(event => endOfDay(event.data.date) < Date.now()) @@ -15,14 +15,15 @@ export default function EventList({ events }) { return events.nodes.length > 0 ? ( <> -

Upcoming Events

+ // Temporarily removing during COVID + {/*

Upcoming Events

    {upcoming.map(event => (
  • ))} -
+ */}

Past Events

    {past.map(event => ( diff --git a/www/src/components/navigation-mobile.js b/www/src/components/navigation-mobile.js index 5887cf22178d6..b2c6121059a70 100644 --- a/www/src/components/navigation-mobile.js +++ b/www/src/components/navigation-mobile.js @@ -75,7 +75,7 @@ const MobileNavigation = ({ i18n }) => ( ))} diff --git a/www/src/components/sidebar/section-title.js b/www/src/components/sidebar/section-title.js index 47cab4712da49..e6b533594c298 100644 --- a/www/src/components/sidebar/section-title.js +++ b/www/src/components/sidebar/section-title.js @@ -138,9 +138,11 @@ const SplitButton = withI18n()(