From 4ba0b26f8c45b7de7e0264e9d218502d5c0db60a Mon Sep 17 00:00:00 2001 From: Jerel Miller <jerelmiller@gmail.com> Date: Wed, 3 Mar 2021 11:39:33 -0800 Subject: [PATCH 01/40] chore: update theme --- package.json | 2 +- yarn.lock | 91 +++++++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 80 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index ed7355b6a..fcdb55e9c 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "@emotion/styled": "^10.0.27", "@mdx-js/mdx": "^1.6.19", "@mdx-js/react": "^1.6.19", - "@newrelic/gatsby-theme-newrelic": "^1.25.0", + "@newrelic/gatsby-theme-newrelic": "^1.33.0", "@splitsoftware/splitio-react": "^1.2.0", "@xstate/react": "^1.0.2", "classnames": "^2.2.6", diff --git a/yarn.lock b/yarn.lock index 04588afd9..b4dd5e9dd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1368,7 +1368,7 @@ core-js-pure "^3.0.0" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.1.2", "@babel/runtime@^7.3.1", "@babel/runtime@^7.3.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": version "7.9.2" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06" integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q== @@ -2515,10 +2515,10 @@ eslint-plugin-promise "^4.2.1" eslint-plugin-react "^7.14.3" -"@newrelic/gatsby-theme-newrelic@^1.25.0": - version "1.25.0" - resolved "https://registry.yarnpkg.com/@newrelic/gatsby-theme-newrelic/-/gatsby-theme-newrelic-1.25.0.tgz#7abb433fd9efa68283f8bc0f2ea5fb0bc62a07d0" - integrity sha512-IYGu/K1IptmlmqesqJO47dUO1NGOU5wabQlLgoS7lVqJrgTzycYHBUUHLnW4gHEyImqoc586KbTJlx0jaC0wlA== +"@newrelic/gatsby-theme-newrelic@^1.33.0": + version "1.33.0" + resolved "https://registry.yarnpkg.com/@newrelic/gatsby-theme-newrelic/-/gatsby-theme-newrelic-1.33.0.tgz#2bb4a137cf8627fc08b555063742b97b195a77fd" + integrity sha512-fhoxxZLqvLuNueOz132mxeppAYW09r7jxEfLQztI3jBUajACBWUdaaly0HzUnPoM/CHM3uHYTuTE82URksRhgQ== dependencies: "@elastic/react-search-ui" "^1.4.1" "@elastic/react-search-ui-views" "^1.4.1" @@ -2528,9 +2528,8 @@ babel-plugin-prismjs "^2.0.1" date-fns "^2.16.1" gatsby-plugin-emotion "^4.3.10" - gatsby-plugin-gdpr-tracking "^1.2.2" gatsby-plugin-layout "^1.8.0" - gatsby-plugin-newrelic "^1.0.5" + gatsby-plugin-newrelic "^1.0.6" gatsby-plugin-react-helmet "^3.3.10" gatsby-plugin-robots-txt "^1.5.1" gatsby-plugin-sharp "^2.6.19" @@ -2538,6 +2537,7 @@ gatsby-plugin-use-dark-mode "^1.1.2" gatsby-source-filesystem "^2.3.19" gatsby-transformer-sharp "^2.5.11" + html-react-parser "^1.2.4" i18next "^19.8.4" js-cookie "^2.2.1" lodash "^4.17.20" @@ -2551,6 +2551,8 @@ react-spring "^8.0.27" react-typist "^2.0.5" react-use "^15.3.4" + terser "^4.0.0" + ua-parser-js "^0.7.24" use-dark-mode "^2.3.1" use-media "^1.4.0" use-persisted-state "^0.3.0" @@ -6860,6 +6862,11 @@ domelementtype@^2.0.1: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.2.tgz#f3b6e549201e46f588b59463dd77187131fe6971" integrity sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA== +domelementtype@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" + integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== + domexception@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" @@ -6867,6 +6874,13 @@ domexception@^2.0.1: dependencies: webidl-conversions "^5.0.0" +domhandler@4.0.0, domhandler@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.0.0.tgz#01ea7821de996d85f69029e81fa873c21833098e" + integrity sha512-KPTbnGQ1JeEMQyO1iYXoagsI6so/C96HZiFyByU3T6iAzpXn8EGEvct6unm1ZGoed8ByO2oirxgwxBmqKF9haA== + dependencies: + domelementtype "^2.1.0" + domhandler@^2.3.0: version "2.4.2" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" @@ -6913,6 +6927,15 @@ domutils@^2.0.0: domelementtype "^2.0.1" domhandler "^3.3.0" +domutils@^2.4.4: + version "2.4.4" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.4.4.tgz#282739c4b150d022d34699797369aad8d19bbbd3" + integrity sha512-jBC0vOsECI4OMdD0GC9mGn7NXPLb+Qt6KW1YDQzeQYRUFKmNG8lh7mO5HiELfr+lLQE7loDVI4QcAxV80HS+RA== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.0.1" + domhandler "^4.0.0" + dot-case@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-2.1.1.tgz#34dcf37f50a8e93c2b3bca8bb7fb9155c7da3bee" @@ -8783,12 +8806,12 @@ gatsby-plugin-meta-redirect@^1.1.1: dependencies: fs-extra "^7.0.0" -gatsby-plugin-newrelic@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/gatsby-plugin-newrelic/-/gatsby-plugin-newrelic-1.0.5.tgz#c8a09d0a047d45c50f0947ab3b91a95d2900fb33" - integrity sha512-kpuX3cLIfK8Gk2rrYxWIYXfDuznG/F/ck3Zy/zmlxl9d+RwsUBoRU4R7AJJsgy0W4sxIasZFPLRxp4Nf6vJHCg== +gatsby-plugin-newrelic@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/gatsby-plugin-newrelic/-/gatsby-plugin-newrelic-1.0.6.tgz#0f7e1855704e18a5af9c3ea551e68ffe8e8005c9" + integrity sha512-DqdDlE3g/Hm2rnv5a9kQSkAFi3c43n1S+fXiX4N6TqOMTViNBQanKnRPi8oxBx05eFbHsLpSJJBa7OHasLL3eg== dependencies: - "@babel/runtime" "^7.0.0" + "@babel/runtime" "^7.11.2" gatsby-plugin-offline@^3.2.32: version "3.3.2" @@ -10196,6 +10219,14 @@ html-comment-regex@^1.1.0: resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== +html-dom-parser@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/html-dom-parser/-/html-dom-parser-1.0.0.tgz#00d42aa3ecfc1a965a91293ca60973c08205fad0" + integrity sha512-1lKgZW6TccI5OMxRB+5+B3urj62oFB8bRx5cJPgOSHAPk9B5V+k2NM/2z7FuIwOgopnPP/KlgBMNnX/2nKy0lA== + dependencies: + domhandler "4.0.0" + htmlparser2 "6.0.0" + html-encoding-sniffer@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" @@ -10220,6 +10251,15 @@ html-parse-stringify2@2.0.1: dependencies: void-elements "^2.0.1" +html-react-parser@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/html-react-parser/-/html-react-parser-1.2.4.tgz#812ed948722a29da641e1662a9b6eaec80f8d5de" + integrity sha512-56JaGqDmYSRKGTJw8lxfiFrfwYLHnyz3qaq/A0/RivjlguOEOMPvt5WuD1zAtAz9/Cr2OZZk2eGDOJUcAKLHcw== + dependencies: + html-dom-parser "1.0.0" + react-property "1.0.1" + style-to-js "1.1.0" + html-to-react@^1.3.4: version "1.4.3" resolved "https://registry.yarnpkg.com/html-to-react/-/html-to-react-1.4.3.tgz#1430a1cb581ef29533892ec70a2fdc4554b17ffd" @@ -10235,6 +10275,16 @@ html-void-elements@^1.0.0, html-void-elements@^1.0.1: resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== +htmlparser2@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.0.0.tgz#c2da005030390908ca4c91e5629e418e0665ac01" + integrity sha512-numTQtDZMoh78zJpaNdJ9MXb2cv5G3jwUoe3dMQODubZvLoGvTE/Ofp6sHvH8OGKcN/8A47pGLi/k58xHP/Tfw== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.4.4" + entities "^2.0.0" + htmlparser2@^3.3.0, htmlparser2@^3.9.1: version "3.10.1" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" @@ -15602,6 +15652,11 @@ react-middle-ellipsis@^1.1.0: resolved "https://registry.yarnpkg.com/react-middle-ellipsis/-/react-middle-ellipsis-1.1.0.tgz#c8fb226c5621e8f0852494be05a5d1574ae37b19" integrity sha512-jEkF6l6l12/V70bYqCCEdHRDFHVG8kdR46tcE5HBssgPDaoLm7XC9hkrL1cW4eL4wi2/0g19PMORge38ReXp9A== +react-property@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/react-property/-/react-property-1.0.1.tgz#4ae4211557d0a0ae050a71aa8ad288c074bea4e6" + integrity sha512-1tKOwxFn3dXVomH6pM9IkLkq2Y8oh+fh/lYW3MJ/B03URswUTqttgckOlbxY2XHF3vPG6uanSc4dVsLW/wk3wQ== + react-refresh@^0.8.3: version "0.8.3" resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" @@ -18080,6 +18135,13 @@ style-loader@^0.23.1: loader-utils "^1.1.0" schema-utils "^1.0.0" +style-to-js@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/style-to-js/-/style-to-js-1.1.0.tgz#631cbb20fce204019b3aa1fcb5b69d951ceac4ac" + integrity sha512-1OqefPDxGrlMwcbfpsTVRyzwdhr4W0uxYQzeA2F1CBc8WG04udg2+ybRnvh3XYL4TdHQrCahLtax2jc8xaE6rA== + dependencies: + style-to-object "0.3.0" + style-to-object@0.3.0, style-to-object@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.3.0.tgz#b1b790d205991cc783801967214979ee19a76e46" @@ -18780,6 +18842,11 @@ ua-parser-js@^0.7.18: resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.21.tgz#853cf9ce93f642f67174273cc34565ae6f308777" integrity sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ== +ua-parser-js@^0.7.24: + version "0.7.24" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.24.tgz#8d3ecea46ed4f1f1d63ec25f17d8568105dc027c" + integrity sha512-yo+miGzQx5gakzVK3QFfN0/L9uVhosXBBO7qmnk7c2iw1IhL212wfA3zbnI54B0obGwC/5NWub/iT9sReMx+Fw== + unbzip2-stream@^1.0.9: version "1.4.3" resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" From cf840dc5f9b03131187b2df44809dd751dd50fa4 Mon Sep 17 00:00:00 2001 From: Jerel Miller <jerelmiller@gmail.com> Date: Wed, 3 Mar 2021 11:45:55 -0800 Subject: [PATCH 02/40] chore: update gatsby-config to match new config for related resources --- gatsby-config.js | 65 +++++++++++++++++++----------------------------- 1 file changed, 26 insertions(+), 39 deletions(-) diff --git a/gatsby-config.js b/gatsby-config.js index 8d06a96b2..0c9a8dd8d 100644 --- a/gatsby-config.js +++ b/gatsby-config.js @@ -41,48 +41,35 @@ module.exports = { }, }, }, - swiftype: { - file: `${__dirname}/src/data/related-pages.json`, - refetch: Boolean(process.env.BUILD_RELATED_CONTENT), - engineKey: 'Ad9HfGjDw4GRkcmJjUut', - limit: 5, - getPath: ({ node }) => node.frontmatter.path, - getParams: ({ node }) => { - const { - tags, - title, - redirects = [], - resources = [], - } = node.frontmatter; + relatedResources: { + swiftype: { + resultsPath: `${__dirname}/src/data/related-pages.json`, + refetch: Boolean(process.env.BUILD_RELATED_CONTENT), + engineKey: 'Ad9HfGjDw4GRkcmJjUut', + limit: 5, + getSlug: ({ node }) => node.frontmatter.path, + getParams: ({ node }) => { + const { tags, title } = node.frontmatter; - const filteredUrls = resources - .map((resource) => resource.url) - .concat(redirects); - - return { - q: tags ? tags.map(quote).join(' OR ') : title, - search_fields: { - page: ['tags^10', 'body^5', 'title^1.5', '*'], - }, - filters: { - page: { - type: ['!blog', '!forum'], - url: filteredUrls.map((url) => - url.startsWith('/') - ? `!https://developer.newrelic.com${url}` - : `!${url}` - ), - document_type: [ - '!views_page_menu', - '!term_page_api_menu', - '!term_page_landing_page', - ], + return { + q: tags ? tags.map(quote).join(' OR ') : title, + search_fields: { + page: ['tags^10', 'body^5', 'title^1.5', '*'], }, - }, - }; + filters: { + page: { + type: ['!blog', '!forum'], + document_type: [ + '!views_page_menu', + '!term_page_api_menu', + '!term_page_landing_page', + ], + }, + }, + }; + }, + filter: ({ node }) => node.frontmatter.template === 'GuideTemplate', }, - filterNode: ({ node }) => - node.frontmatter.template === 'GuideTemplate', }, newrelic: { configs: { From 88a7fd11a3d7760863016030fce1db96133e998b Mon Sep 17 00:00:00 2001 From: Jerel Miller <jerelmiller@gmail.com> Date: Wed, 3 Mar 2021 12:01:36 -0800 Subject: [PATCH 03/40] chore: add needed config for i18n to get the site to build --- gatsby-config.js | 6 ++++++ src/i18n/translations/en/translation.json | 1 + 2 files changed, 7 insertions(+) create mode 100644 src/i18n/translations/en/translation.json diff --git a/gatsby-config.js b/gatsby-config.js index 0c9a8dd8d..304661e9d 100644 --- a/gatsby-config.js +++ b/gatsby-config.js @@ -22,6 +22,12 @@ module.exports = { maxWidth: '1700px', component: require.resolve('./src/layouts'), }, + // workaround until this is no longer needed. + // https://github.com/newrelic/gatsby-theme-newrelic/issues/302 + i18n: { + translationsPath: `${__dirname}/src/i18n/translations`, + additionalLocales: [], + }, prism: { languages: ['yaml', 'sass', 'scss', 'java'], }, diff --git a/src/i18n/translations/en/translation.json b/src/i18n/translations/en/translation.json new file mode 100644 index 000000000..9e26dfeeb --- /dev/null +++ b/src/i18n/translations/en/translation.json @@ -0,0 +1 @@ +{} \ No newline at end of file From 029bd114c390f10ac3ba20c929a5465e00f14be9 Mon Sep 17 00:00:00 2001 From: Jerel Miller <jerelmiller@gmail.com> Date: Wed, 3 Mar 2021 12:08:09 -0800 Subject: [PATCH 04/40] chore: update guide template to use updated right rail format --- gatsby-node.js | 4 ---- src/templates/GuideTemplate.js | 15 ++++++++++----- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/gatsby-node.js b/gatsby-node.js index 8624fce4b..aed610cd4 100644 --- a/gatsby-node.js +++ b/gatsby-node.js @@ -91,10 +91,6 @@ exports.createPages = async ({ actions, graphql, reporter }) => { frontmatter.template === 'OverviewTemplate' ? `${frontmatter.path}/*` : undefined, - relatedResourceLimit: Math.max( - MAX_RESULTS - (frontmatter.resources || []).length, - 0 - ), }, }); }); diff --git a/src/templates/GuideTemplate.js b/src/templates/GuideTemplate.js index c5813eb60..105633aab 100644 --- a/src/templates/GuideTemplate.js +++ b/src/templates/GuideTemplate.js @@ -3,13 +3,14 @@ import { graphql } from 'gatsby'; import { css } from '@emotion/core'; import PropTypes from 'prop-types'; -import { PageUpdated, Resources } from '../components/RelatedContentModules'; +import { PageUpdated } from '../components/RelatedContentModules'; import PageLayout from '../components/PageLayout'; import FeatherIcon from '../components/FeatherIcon'; import SEO from '../components/Seo'; import { ContributingGuidelines, Layout, + RelatedResources, SimpleFeedback, } from '@newrelic/gatsby-theme-newrelic'; @@ -18,6 +19,7 @@ const GuideTemplate = ({ data }) => { const { frontmatter, body, + relatedResources, fields: { fileRelativePath }, } = mdx; const { title, description, duration, tags, path } = frontmatter; @@ -48,13 +50,13 @@ const GuideTemplate = ({ data }) => { </PageLayout.Header> <PageLayout.MarkdownContent>{body}</PageLayout.MarkdownContent> <Layout.PageTools> - <ContributingGuidelines fileRelativePath={fileRelativePath} /> - <Resources page={mdx} /> <SimpleFeedback pageTitle={title} slug={path} labels={['content', 'feedback']} /> + <ContributingGuidelines fileRelativePath={fileRelativePath} /> + <RelatedResources resources={relatedResources} /> <PageUpdated page={mdx} /> </Layout.PageTools> </PageLayout> @@ -67,7 +69,7 @@ GuideTemplate.propTypes = { }; export const pageQuery = graphql` - query($path: String!, $relatedResourceLimit: Int!) { + query($path: String!) { mdx(frontmatter: { path: { eq: $path } }) { body frontmatter { @@ -80,8 +82,11 @@ export const pageQuery = graphql` fields { fileRelativePath } + relatedResources(limit: 5) { + title + url + } - ...Resources_page ...PageUpdated_page } } From d8bbfc70b01cecaf0bfa101e4d7db9a56dcf8b84 Mon Sep 17 00:00:00 2001 From: Jerel Miller <jerelmiller@gmail.com> Date: Wed, 3 Mar 2021 13:20:03 -0800 Subject: [PATCH 05/40] chore: update to newly released version --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index fcdb55e9c..421a78980 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "@emotion/styled": "^10.0.27", "@mdx-js/mdx": "^1.6.19", "@mdx-js/react": "^1.6.19", - "@newrelic/gatsby-theme-newrelic": "^1.33.0", + "@newrelic/gatsby-theme-newrelic": "^1.34.0", "@splitsoftware/splitio-react": "^1.2.0", "@xstate/react": "^1.0.2", "classnames": "^2.2.6", diff --git a/yarn.lock b/yarn.lock index b4dd5e9dd..baa3d24b0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2515,10 +2515,10 @@ eslint-plugin-promise "^4.2.1" eslint-plugin-react "^7.14.3" -"@newrelic/gatsby-theme-newrelic@^1.33.0": - version "1.33.0" - resolved "https://registry.yarnpkg.com/@newrelic/gatsby-theme-newrelic/-/gatsby-theme-newrelic-1.33.0.tgz#2bb4a137cf8627fc08b555063742b97b195a77fd" - integrity sha512-fhoxxZLqvLuNueOz132mxeppAYW09r7jxEfLQztI3jBUajACBWUdaaly0HzUnPoM/CHM3uHYTuTE82URksRhgQ== +"@newrelic/gatsby-theme-newrelic@^1.34.0": + version "1.34.0" + resolved "https://registry.yarnpkg.com/@newrelic/gatsby-theme-newrelic/-/gatsby-theme-newrelic-1.34.0.tgz#9f05bf71ac1bf044595cd1fc350d42695a99e70f" + integrity sha512-vw5DpV6rleB5SPsi3hey4QhaO4DuKK8lbC523pQLMs1na6hyoVB4pVsmvBJ4SVUtTHIOkiDgTREJu1SszpdS1w== dependencies: "@elastic/react-search-ui" "^1.4.1" "@elastic/react-search-ui-views" "^1.4.1" From 41290c14f817127d5debc3ebb7f235f25cd9dc61 Mon Sep 17 00:00:00 2001 From: Jerel Miller <jerelmiller@gmail.com> Date: Wed, 3 Mar 2021 20:13:38 -0800 Subject: [PATCH 06/40] chore: replace sidenav.json with nav.yml --- src/data/nav.yml | 338 +++++++++++++++++++++ src/data/sidenav.json | 691 ------------------------------------------ 2 files changed, 338 insertions(+), 691 deletions(-) create mode 100644 src/data/nav.yml delete mode 100644 src/data/sidenav.json diff --git a/src/data/nav.yml b/src/data/nav.yml new file mode 100644 index 000000000..fb74089d5 --- /dev/null +++ b/src/data/nav.yml @@ -0,0 +1,338 @@ +- title: Collect data + url: '/collect-data' + pages: + - title: Collect data from any source + url: '/collect-data/collect-data-from-any-source' + - title: Create custom attributes + url: '/collect-data/custom-attributes' + - title: Create custom New Relic events + url: '/collect-data/custom-events' + - title: Query data with NRQL + url: '/collect-data/query-data-nrql' + - title: Explore NerdGraph using the API Explorer + url: '/collect-data/get-started-nerdgraph-api-explorer' +- title: Automate workflows + url: '/automate-workflows' + pages: + - title: Using Terrafom with New Relic + url: '/terraform' + pages: + - title: Set up New Relic using Terraform + url: '/automate-workflows/get-started-terraform' + - title: Using Terraform modules and remote storage + url: '/terraform/terraform-modules' + - title: Using Terragrunt to manage multiple environments + url: '/terraform/terragrunt-configuration' + - title: Get started with the New Relic CLI + url: '/automate-workflows/get-started-new-relic-cli' + - title: Set up New Relic using the Kubernetes operator + url: '/automate-workflows/get-started-kubernetes' + - title: Set up New Relic using Helm charts + url: '/automate-workflows/kubernetes-helm-deployment' + - title: Tag a set of resources efficiently + url: '/automate-workflows/5-mins-tag-resources' + - title: Automated end-to-end tagging of entities + url: '/automate-workflows/automated-tagging' + - title: Use New Relic to diagnose problems in your system + url: '/automate-workflows/diagnose-problems' + pages: + - title: High response times + url: '/automate-workflows/diagnose-problems/high-response-times' + - title: Error alerts + url: '/automate-workflows/diagnose-problems/error-alerts' +- title: Build apps + url: '/build-apps' + pages: + - title: Set up your development environment + url: '/build-apps/set-up-dev-env' + - title: Create a 'Hello, World!' app + url: '/build-apps/build-hello-world-app' + - title: Publish and deploy your app + url: '/build-apps/publish-deploy' + - title: Permissions for managing apps + url: '/build-apps/permission-manage-apps' + - title: Map pageviews by region + url: '/build-apps/map-pageviews-by-region' + - title: Add a time picker + url: '/build-apps/add-time-picker-guide' + - title: Add the NerdGraphQuery component to an app + url: '/build-apps/add-nerdgraphquery-guide' + - title: Add tables to your New Relic One application + url: '/build-apps/howto-use-nrone-table-components' + - title: Add, query, and mutate data using NerdStorage + url: '/build-apps/add-query-mutate-data-nerdstorage' + - title: See all open source apps + url: https://opensource.newrelic.com/nerdpacks/ + - title: Build custom visualizations for dashboards + url: '/build-apps/build-visualization' +- title: Try our APIs + url: '/try-our-apis' + pages: + - title: Telemetry APIs + pages: + - title: Metrics API + url: https://docs.newrelic.com/docs/telemetry-data-platform/get-data/apis/introduction-metric-api + - title: Event API + url: https://docs.newrelic.com/docs/telemetry-data-platform/ingest-manage-data/ingest-apis/use-event-api-report-custom-events + - title: Log API + url: https://docs.newrelic.com/docs/logs/log-management/log-api/introduction-log-api + - title: Trace API + url: https://docs.newrelic.com/docs/understand-dependencies/distributed-tracing/trace-api/introduction-trace-api + - title: REST & GraphQL APIs + pages: + - title: NerdGraph API Explorer + url: https://api.newrelic.com/graphiql + - title: REST API Explorer + url: https://rpm.newrelic.com/api/explore + - title: Insights API + url: https://docs.newrelic.com/docs/insights/insights-api/get-data/query-insights-event-data-api + - title: Synthetics API + url: https://docs.newrelic.com/docs/apis/synthetics-rest-api +- title: Explore docs + pages: + - title: New Relic One CLI + url: '/explore-docs/nr1-cli' + pages: + - title: Common commands + url: '/explore-docs/nr1-common' + - title: Config commands + url: '/explore-docs/nr1-config' + - title: Nerdpack commands + url: '/explore-docs/nr1-nerdpack' + - title: Subscription commands + url: '/explore-docs/nr1-subscription' + - title: Plugin commands + url: '/explore-docs/nr1-plugins' + - title: Catalog commands + url: '/explore-docs/nr1-catalog' + - title: New Relic CLI + url: '/explore-docs/newrelic-cli' + - title: Nerdpack file structure + url: '/explore-docs/nerdpack-file-structure' + - title: Intro to Nerdstorage + url: '/explore-docs/nerdstorage' + - title: Intro to NerdstorageVault + url: '/explore-docs/nerdstoragevault' + - title: Query and store data + url: '/explore-docs/query-and-store-data' + - title: New Relic One SDK Component library + url: '/explore-docs/intro-to-sdk' + pages: + - title: Controls + pages: + - title: AccountPicker + url: '/components/account-picker' + - title: Button + url: '/components/button' + - title: Checkbox + url: '/components/checkbox' + - title: Dropdown + url: '/components/dropdown' + - title: DropdownItem + url: '/components/dropdown-item' + - title: DropdownSection + url: '/components/dropdown-section' + - title: MultilineTextField + url: '/components/multiline-text-field' + - title: Radio + url: '/components/radio' + - title: RadioGroup + url: '/components/radio-group' + - title: SegmentedControl + url: '/components/segmented-control' + - title: SegmentedControlItem + url: '/components/segmented-control-item' + - title: Select + url: '/components/select' + - title: SelectItem + url: '/components/select-item' + - title: Switch + url: '/components/switch' + - title: TextField + url: '/components/text-field' + - title: Tables + pages: + - title: Table + url: '/components/table' + - title: TableHeader + url: '/components/table-header' + - title: TableHeaderCell + url: '/components/table-header-cell' + - title: TableRow + url: '/components/table-row' + - title: TableRowCell + url: '/components/table-row-cell' + - title: EntityTitleTableRowCell + url: '/components/entity-title-table-row-cell' + - title: FavoriteTableRowCell + url: '/components/favorite-table-row-cell' + - title: MetricTableRowCell + url: '/components/metric-table-row-cell' + - title: SparklineTableRowCell + url: '/components/sparkline-table-row-cell' + - title: UserTableRowCell + url: '/components/user-table-row-cell' + - title: Feedback + pages: + - title: Icon + url: '/components/icon' + - title: Spinner + url: '/components/spinner' + - title: Toast + url: '/components/toast' + - title: Indicators + pages: + - title: Badge + url: '/components/badge' + - title: Overlays + pages: + - title: Modal + url: '/components/modal' + - title: Popover + url: '/components/popover' + - title: PopoverBody + url: '/components/popover-body' + - title: PopoverTrigger + url: '/components/popover-trigger' + - title: Tooltip + url: '/components/tooltip' + - title: Structure + pages: + - title: AutoSizer + url: '/components/auto-sizer' + - title: Card + url: '/components/card' + - title: CardBody + url: '/components/card-body' + - title: CardHeader + url: '/components/card-header' + - title: Grid + url: '/components/grid' + - title: GridItem + url: '/components/grid-item' + - title: Layout + url: '/components/layout' + - title: LayoutItem + url: '/components/layout-item' + - title: List + url: '/components/list' + - title: ListItem + url: '/components/list-item' + - title: Spacing + url: '/components/spacing' + - title: Stack + url: '/components/stack' + - title: StackItem + url: '/components/stack-item' + - title: Tabs + url: '/components/tabs' + - title: TabsItem + url: '/components/tabs-item' + - title: Text + pages: + - title: BlockText + url: '/components/block-text' + - title: HeadingText + url: '/components/heading-text' + - title: Link + url: '/components/link' + - title: Charts + url: '/components/charts' + pages: + - title: AreaChart + url: '/components/area-chart' + - title: BarChart + url: '/components/bar-chart' + - title: BillboardChart + url: '/components/billboard-chart' + - title: ChartGroup + url: '/components/chart-group' + - title: FunnelChart + url: '/components/funnel-chart' + - title: HeatmapChart + url: '/components/heatmap-chart' + - title: HistogramChart + url: '/components/histogram-chart' + - title: JsonChart + url: '/components/json-chart' + - title: LineChart + url: '/components/line-chart' + - title: PieChart + url: '/components/pie-chart' + - title: ScatterChart + url: '/components/scatter-chart' + - title: SparklineChart + url: '/components/sparkline-chart' + - title: StackedBarChart + url: '/components/stacked-bar-chart' + - title: TableChart + url: '/components/table-chart' + - title: Query and storage + pages: + - title: AccountStorageMutation + url: '/components/account-storage-mutation' + - title: AccountStorageQuery + url: '/components/account-storage-query' + - title: AccountsQuery + url: '/components/accounts-query' + - title: EntitiesByDomainTypeQuery + url: '/components/entities-by-domain-type-query' + - title: EntitiesByGuidsQuery + url: '/components/entities-by-guids-query' + - title: EntitiesByNameQuery + url: '/components/entities-by-name-query' + - title: EntityByGuidQuery + url: '/components/entity-by-guid-query' + - title: EntityCountQuery + url: '/components/entity-count-query' + - title: EntitySearchQuery + url: '/components/entity-search-query' + - title: EntityStorageMutation + url: '/components/entity-storage-mutation' + - title: EntityStorageQuery + url: '/components/entity-storage-query' + - title: NerdGraphMutation + url: '/components/nerd-graph-mutation' + - title: NerdGraphQuery + url: '/components/nerd-graph-query' + - title: NrqlQuery + url: '/components/nrql-query' + - title: UserQuery + url: '/components/user-query' + - title: UserStorageMutation + url: '/components/user-storage-mutation' + - title: UserStorageQuery + url: '/components/user-storage-query' + - title: Platform APIs + pages: + - title: NerdletStateContext + url: '/components/nerdlet-state-context' + - title: PlatformStateContext + url: '/components/platform-state-context' + - title: logger + url: '/apis/logger' + - title: navigation + url: '/apis/navigation' + - title: nerdlet + url: '/apis/nerdlet' + - title: ngql + url: '/apis/ngql' +- title: Developer events + url: '/developer-events' + pages: + - title: Past events + pages: + - title: Kubecon & CloudNativeCon + url: '/kubecon-europe-2020' + - title: Nerd days 1.0 + url: '/nerd-days' + - title: All things open + url: '/all-things-open' +- title: The Relicans + url: '/relicans' +- title: Developer champions + url: '/developer-champion' +- title: New Relic Builders + url: '/builders' +- title: Podcasts + url: '/podcasts' diff --git a/src/data/sidenav.json b/src/data/sidenav.json deleted file mode 100644 index ae2612e0d..000000000 --- a/src/data/sidenav.json +++ /dev/null @@ -1,691 +0,0 @@ -[ - { - "displayName": "Collect data", - "url": "/collect-data", - "children": [ - { - "displayName": "Collect data from any source", - "url": "/collect-data/collect-data-from-any-source" - }, - { - "displayName": "Create custom attributes", - "url": "/collect-data/custom-attributes" - }, - { - "displayName": "Create custom New Relic events", - "url": "/collect-data/custom-events" - }, - { - "displayName": "Query data with NRQL", - "url": "/collect-data/query-data-nrql" - }, - { - "displayName": "Explore NerdGraph using the API Explorer", - "url": "/collect-data/get-started-nerdgraph-api-explorer" - } - ] - }, - { - "displayName": "Automate workflows", - "url": "/automate-workflows", - "children": [ - { - "displayName": "Using Terrafom with New Relic", - "url": "/terraform", - "children":[ - { - "displayName": "Set up New Relic using Terraform", - "url": "/automate-workflows/get-started-terraform" - }, - { - "displayName": "Using Terraform modules and remote storage", - "url": "/terraform/terraform-modules" - }, - { - "displayName": "Using Terragrunt to manage multiple environments", - "url": "/terraform/terragrunt-configuration" - } - ] - }, - { - "displayName": "Get started with the New Relic CLI", - "url": "/automate-workflows/get-started-new-relic-cli" - }, - { - "displayName": "Set up New Relic using the Kubernetes operator", - "url": "/automate-workflows/get-started-kubernetes" - }, - { - "displayName": "Set up New Relic using Helm charts", - "url": "/automate-workflows/kubernetes-helm-deployment" - }, - { - "displayName": "Tag a set of resources efficiently", - "url": "/automate-workflows/5-mins-tag-resources" - }, - { - "displayName": "Automated end-to-end tagging of entities", - "url": "/automate-workflows/automated-tagging" - }, - { - "displayName": "Use New Relic to diagnose problems in your system", - "url": "/automate-workflows/diagnose-problems", - "children": [ - { - "displayName": "High response times", - "url": "/automate-workflows/diagnose-problems/high-response-times" - }, - { - "displayName": "Error alerts", - "url": "/automate-workflows/diagnose-problems/error-alerts" - } - ] - } - ] - }, - { - "displayName": "Build apps", - "url": "/build-apps", - "children": [ - { - "displayName": "Set up your development environment", - "url": "/build-apps/set-up-dev-env" - }, - { - "displayName": "Create a 'Hello, World!' app", - "url": "/build-apps/build-hello-world-app" - }, - { - "displayName": "Publish and deploy your app", - "url": "/build-apps/publish-deploy" - }, - { - "displayName": "Permissions for managing apps", - "url": "/build-apps/permission-manage-apps" - }, - { - "displayName": "Map pageviews by region", - "url": "/build-apps/map-pageviews-by-region" - }, - { - "displayName": "Add a time picker", - "url": "/build-apps/add-time-picker-guide" - }, - { - "displayName": "Add the NerdGraphQuery component to an app", - "url": "/build-apps/add-nerdgraphquery-guide" - }, - { - "displayName": "Add tables to your New Relic One application", - "url": "/build-apps/howto-use-nrone-table-components" - }, - { - "displayName": "Add, query, and mutate data using NerdStorage", - "url": "/build-apps/add-query-mutate-data-nerdstorage" - }, - { - "displayName": "See all open source apps", - "url": "https://opensource.newrelic.com/nerdpacks/" - }, - { - "displayName": "Build custom visualizations for dashboards", - "url": "/build-apps/build-visualization" - } - ] - }, - { - "displayName": "Try our APIs", - "url": "/try-our-apis", - "children": [ - { - "displayName": "Telemetry APIs", - "children": [ - { - "displayName": "Metrics API", - "url": "https://docs.newrelic.com/docs/telemetry-data-platform/get-data/apis/introduction-metric-api" - }, - { - "displayName": "Event API", - "url": "https://docs.newrelic.com/docs/telemetry-data-platform/ingest-manage-data/ingest-apis/use-event-api-report-custom-events" - }, - { - "displayName": "Log API", - "url": "https://docs.newrelic.com/docs/logs/log-management/log-api/introduction-log-api" - }, - { - "displayName": "Trace API", - "url": "https://docs.newrelic.com/docs/understand-dependencies/distributed-tracing/trace-api/introduction-trace-api" - } - ] - }, - { - "displayName": "REST & GraphQL APIs", - "children": [ - { - "displayName": "NerdGraph API Explorer", - "url": "https://api.newrelic.com/graphiql" - }, - { - "displayName": "REST API Explorer", - "url": "https://rpm.newrelic.com/api/explore" - }, - { - "displayName": "Insights API", - "url": "https://docs.newrelic.com/docs/insights/insights-api/get-data/query-insights-event-data-api" - }, - { - "displayName": "Synthetics API", - "url": "https://docs.newrelic.com/docs/apis/synthetics-rest-api" - } - ] - } - ] - }, - { - "displayName": "Explore docs", - "children": [ - { - "displayName": "New Relic One CLI", - "url": "/explore-docs/nr1-cli", - "children": [ - { - "displayName": "Common commands", - "url": "/explore-docs/nr1-common" - }, - { - "displayName": "Config commands", - "url": "/explore-docs/nr1-config" - }, - { - "displayName": "Nerdpack commands", - "url": "/explore-docs/nr1-nerdpack" - }, - { - "displayName": "Subscription commands", - "url": "/explore-docs/nr1-subscription" - }, - { - "displayName": "Plugin commands", - "url": "/explore-docs/nr1-plugins" - }, - { - "displayName": "Catalog commands", - "url": "/explore-docs/nr1-catalog" - } - ] - }, - { - "displayName": "New Relic CLI", - "url": "/explore-docs/newrelic-cli" - }, - { - "displayName": "Nerdpack file structure", - "url": "/explore-docs/nerdpack-file-structure" - }, - { - "displayName": "Intro to Nerdstorage", - "url": "/explore-docs/nerdstorage" - }, - { - "displayName": "Intro to NerdstorageVault", - "url": "/explore-docs/nerdstoragevault" - }, - { - "displayName": "Query and store data", - "url": "/explore-docs/query-and-store-data" - }, - { - "displayName": "New Relic One SDK Component library", - "url": "/explore-docs/intro-to-sdk", - "children": [ - { - "displayName": "Controls", - "children": [ - { - "displayName": "AccountPicker", - "url": "/components/account-picker" - }, - { - "displayName": "Button", - "url": "/components/button" - }, - { - "displayName": "Checkbox", - "url": "/components/checkbox" - }, - { - "displayName": "Dropdown", - "url": "/components/dropdown" - }, - { - "displayName": "DropdownItem", - "url": "/components/dropdown-item" - }, - { - "displayName": "DropdownSection", - "url": "/components/dropdown-section" - }, - { - "displayName": "MultilineTextField", - "url": "/components/multiline-text-field" - }, - { - "displayName": "Radio", - "url": "/components/radio" - }, - { - "displayName": "RadioGroup", - "url": "/components/radio-group" - }, - { - "displayName": "SegmentedControl", - "url": "/components/segmented-control" - }, - { - "displayName": "SegmentedControlItem", - "url": "/components/segmented-control-item" - }, - { - "displayName": "Select", - "url": "/components/select" - }, - { - "displayName": "SelectItem", - "url": "/components/select-item" - }, - { - "displayName": "Switch", - "url": "/components/switch" - }, - { - "displayName": "TextField", - "url": "/components/text-field" - } - ] - }, - { - "displayName": "Tables", - "children": [ - { - "displayName": "Table", - "url": "/components/table" - }, - { - "displayName": "TableHeader", - "url": "/components/table-header" - }, - { - "displayName": "TableHeaderCell", - "url": "/components/table-header-cell" - }, - { - "displayName": "TableRow", - "url": "/components/table-row" - }, - { - "displayName": "TableRowCell", - "url": "/components/table-row-cell" - }, - { - "displayName": "EntityTitleTableRowCell", - "url": "/components/entity-title-table-row-cell" - }, - { - "displayName": "FavoriteTableRowCell", - "url": "/components/favorite-table-row-cell" - }, - { - "displayName": "MetricTableRowCell", - "url": "/components/metric-table-row-cell" - }, - { - "displayName": "SparklineTableRowCell", - "url": "/components/sparkline-table-row-cell" - }, - { - "displayName": "UserTableRowCell", - "url": "/components/user-table-row-cell" - } - ] - }, - { - "displayName": "Feedback", - "children": [ - { - "displayName": "Icon", - "url": "/components/icon" - }, - { - "displayName": "Spinner", - "url": "/components/spinner" - }, - { - "displayName": "Toast", - "url": "/components/toast" - } - ] - }, - { - "displayName": "Indicators", - "children": [ - { - "displayName": "Badge", - "url": "/components/badge" - } - ] - }, - { - "displayName": "Overlays", - "children": [ - { - "displayName": "Modal", - "url": "/components/modal" - }, - { - "displayName": "Popover", - "url": "/components/popover" - }, - { - "displayName": "PopoverBody", - "url": "/components/popover-body" - }, - { - "displayName": "PopoverTrigger", - "url": "/components/popover-trigger" - }, - { - "displayName": "Tooltip", - "url": "/components/tooltip" - } - ] - }, - { - "displayName": "Structure", - "children": [ - { - "displayName": "AutoSizer", - "url": "/components/auto-sizer" - }, - { - "displayName": "Card", - "url": "/components/card" - }, - { - "displayName": "CardBody", - "url": "/components/card-body" - }, - { - "displayName": "CardHeader", - "url": "/components/card-header" - }, - { - "displayName": "Grid", - "url": "/components/grid" - }, - { - "displayName": "GridItem", - "url": "/components/grid-item" - }, - { - "displayName": "Layout", - "url": "/components/layout" - }, - { - "displayName": "LayoutItem", - "url": "/components/layout-item" - }, - { - "displayName": "List", - "url": "/components/list" - }, - { - "displayName": "ListItem", - "url": "/components/list-item" - }, - { - "displayName": "Spacing", - "url": "/components/spacing" - }, - { - "displayName": "Stack", - "url": "/components/stack" - }, - { - "displayName": "StackItem", - "url": "/components/stack-item" - }, - { - "displayName": "Tabs", - "url": "/components/tabs" - }, - { - "displayName": "TabsItem", - "url": "/components/tabs-item" - } - ] - }, - { - "displayName": "Text", - "children": [ - { - "displayName": "BlockText", - "url": "/components/block-text" - }, - { - "displayName": "HeadingText", - "url": "/components/heading-text" - }, - { - "displayName": "Link", - "url": "/components/link" - } - ] - }, - { - "displayName": "Charts", - "url": "/components/charts", - "children": [ - { - "displayName": "AreaChart", - "url": "/components/area-chart" - }, - { - "displayName": "BarChart", - "url": "/components/bar-chart" - }, - { - "displayName": "BillboardChart", - "url": "/components/billboard-chart" - }, - { - "displayName": "ChartGroup", - "url": "/components/chart-group" - }, - { - "displayName": "FunnelChart", - "url": "/components/funnel-chart" - }, - { - "displayName": "HeatmapChart", - "url": "/components/heatmap-chart" - }, - { - "displayName": "HistogramChart", - "url": "/components/histogram-chart" - }, - { - "displayName": "JsonChart", - "url": "/components/json-chart" - }, - { - "displayName": "LineChart", - "url": "/components/line-chart" - }, - { - "displayName": "PieChart", - "url": "/components/pie-chart" - }, - { - "displayName": "ScatterChart", - "url": "/components/scatter-chart" - }, - { - "displayName": "SparklineChart", - "url": "/components/sparkline-chart" - }, - { - "displayName": "StackedBarChart", - "url": "/components/stacked-bar-chart" - }, - { - "displayName": "TableChart", - "url": "/components/table-chart" - } - ] - }, - { - "displayName": "Query and storage", - "children": [ - { - "displayName": "AccountStorageMutation", - "url": "/components/account-storage-mutation" - }, - { - "displayName": "AccountStorageQuery", - "url": "/components/account-storage-query" - }, - { - "displayName": "AccountsQuery", - "url": "/components/accounts-query" - }, - { - "displayName": "EntitiesByDomainTypeQuery", - "url": "/components/entities-by-domain-type-query" - }, - { - "displayName": "EntitiesByGuidsQuery", - "url": "/components/entities-by-guids-query" - }, - { - "displayName": "EntitiesByNameQuery", - "url": "/components/entities-by-name-query" - }, - { - "displayName": "EntityByGuidQuery", - "url": "/components/entity-by-guid-query" - }, - { - "displayName": "EntityCountQuery", - "url": "/components/entity-count-query" - }, - { - "displayName": "EntitySearchQuery", - "url": "/components/entity-search-query" - }, - { - "displayName": "EntityStorageMutation", - "url": "/components/entity-storage-mutation" - }, - { - "displayName": "EntityStorageQuery", - "url": "/components/entity-storage-query" - }, - { - "displayName": "NerdGraphMutation", - "url": "/components/nerd-graph-mutation" - }, - { - "displayName": "NerdGraphQuery", - "url": "/components/nerd-graph-query" - }, - { - "displayName": "NrqlQuery", - "url": "/components/nrql-query" - }, - { - "displayName": "UserQuery", - "url": "/components/user-query" - }, - { - "displayName": "UserStorageMutation", - "url": "/components/user-storage-mutation" - }, - { - "displayName": "UserStorageQuery", - "url": "/components/user-storage-query" - } - ] - }, - { - "displayName": "Platform APIs", - "children": [ - { - "displayName": "NerdletStateContext", - "url": "/components/nerdlet-state-context" - }, - { - "displayName": "PlatformStateContext", - "url": "/components/platform-state-context" - }, - { - "displayName": "logger", - "url": "/apis/logger" - }, - { - "displayName": "navigation", - "url": "/apis/navigation" - }, - { - "displayName": "nerdlet", - "url": "/apis/nerdlet" - }, - { - "displayName": "ngql", - "url": "/apis/ngql" - } - ] - } - ] - } - ] - }, - { - "displayName": "Developer events", - "url": "/developer-events", - "children": [ - { - "displayName": "Past events", - "children": [ - { - "displayName": "Kubecon & CloudNativeCon", - "url": "/kubecon-europe-2020" - }, - { - "displayName": "Nerd days 1.0", - "url": "/nerd-days" - }, - { - "displayName": "All things open", - "url": "/all-things-open" - } - ] - } - ] - }, - { - "displayName": "The Relicans", - "url": "/relicans" - }, - { - "displayName": "Developer champions", - "url": "/developer-champion" - }, - { - "displayName": "New Relic Builders", - "url": "/builders" - }, - { - "displayName": "Podcasts", - "url": "/podcasts" - } -] From bb4ac59ed32508511ed194426ba74b2f707795b6 Mon Sep 17 00:00:00 2001 From: Jerel Miller <jerelmiller@gmail.com> Date: Wed, 3 Mar 2021 20:14:57 -0800 Subject: [PATCH 07/40] chore: update the navigation to use the nav components from the theme --- src/layouts/MainLayout.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/layouts/MainLayout.js b/src/layouts/MainLayout.js index 387822bee..924a25531 100644 --- a/src/layouts/MainLayout.js +++ b/src/layouts/MainLayout.js @@ -6,13 +6,15 @@ import { GlobalHeader, Layout, Logo, + Navigation, + NavItem, SearchInput, } from '@newrelic/gatsby-theme-newrelic'; import MobileHeader from '../components/MobileHeader'; import { Link } from 'gatsby'; -import Navigation from '../components/Navigation'; import '../components/styles.scss'; import { useLocation } from '@reach/router'; +import pages from '../data/nav.yml'; const MainLayout = ({ children, pageContext }) => { const location = useLocation(); @@ -77,7 +79,11 @@ const MainLayout = ({ children, pageContext }) => { value={searchTerm} /> </div> - <Navigation searchTerm={searchTerm} /> + <Navigation searchTerm={searchTerm}> + {pages.map((page, idx) => ( + <NavItem key={idx} page={page} /> + ))} + </Navigation> </Layout.Sidebar> <Layout.Main>{children}</Layout.Main> <Layout.Footer fileRelativePath={fileRelativePath} /> From 71039b1440be829a2ea38d16133838c973721937 Mon Sep 17 00:00:00 2001 From: Jerel Miller <jerelmiller@gmail.com> Date: Wed, 3 Mar 2021 20:15:05 -0800 Subject: [PATCH 08/40] chore: set the mobile breakpoint --- gatsby-config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/gatsby-config.js b/gatsby-config.js index 304661e9d..be35308f7 100644 --- a/gatsby-config.js +++ b/gatsby-config.js @@ -21,6 +21,7 @@ module.exports = { contentPadding: '2rem', maxWidth: '1700px', component: require.resolve('./src/layouts'), + mobileBreakpoint: '760px', }, // workaround until this is no longer needed. // https://github.com/newrelic/gatsby-theme-newrelic/issues/302 From ea706276aa43f75a99ad2e3977643f14126f827e Mon Sep 17 00:00:00 2001 From: Jerel Miller <jerelmiller@gmail.com> Date: Wed, 3 Mar 2021 20:17:14 -0800 Subject: [PATCH 09/40] chore: remove breadcrumb context as it is no longer used --- gatsby/wrap-page-element.js | 11 +-- src/components/BreadcrumbContext.js | 3 - src/utils/__tests__/create-breadcrumbs.js | 86 ----------------------- src/utils/create-breadcrumbs.js | 61 ---------------- 4 files changed, 1 insertion(+), 160 deletions(-) delete mode 100644 src/components/BreadcrumbContext.js delete mode 100644 src/utils/__tests__/create-breadcrumbs.js delete mode 100644 src/utils/create-breadcrumbs.js diff --git a/gatsby/wrap-page-element.js b/gatsby/wrap-page-element.js index e3c2a9351..74634be17 100644 --- a/gatsby/wrap-page-element.js +++ b/gatsby/wrap-page-element.js @@ -1,15 +1,8 @@ -/* eslint-disable react/prop-types */ import React from 'react'; -import { BreadcrumbContext } from '../src/components/BreadcrumbContext'; import { PageContext } from '../src/components/PageContext'; import { Global, css } from '@emotion/core'; -import createBreadcrumbs from '../src/utils/create-breadcrumbs'; -import pages from '../src/data/sidenav.json'; - const wrapPageElement = ({ element, props }) => { - const crumbs = createBreadcrumbs(props.path ?? '/404', pages); - return ( <> <Global @@ -43,9 +36,7 @@ const wrapPageElement = ({ element, props }) => { `} /> <PageContext.Provider value={props.pageContext}> - <BreadcrumbContext.Provider value={crumbs}> - {element} - </BreadcrumbContext.Provider> + {element} </PageContext.Provider> </> ); diff --git a/src/components/BreadcrumbContext.js b/src/components/BreadcrumbContext.js deleted file mode 100644 index 936ae93ae..000000000 --- a/src/components/BreadcrumbContext.js +++ /dev/null @@ -1,3 +0,0 @@ -import React from 'react'; - -export const BreadcrumbContext = React.createContext([]); diff --git a/src/utils/__tests__/create-breadcrumbs.js b/src/utils/__tests__/create-breadcrumbs.js deleted file mode 100644 index 5d383cb1a..000000000 --- a/src/utils/__tests__/create-breadcrumbs.js +++ /dev/null @@ -1,86 +0,0 @@ -import createBreadcrumbs from '../create-breadcrumbs'; - -const sidenav = [ - { - displayName: 'Plants', - url: '/plants', - children: [ - { - displayName: 'Ficus', - url: '/plants/ficus', - }, - { - displayName: 'Bromeliad', - url: '/plants/bromeliad', - }, - ], - }, - { - displayName: 'Food', - url: '/food', - children: [ - { - displayName: 'Mexican', - children: [ - { - displayName: 'Chimichurri', - url: '/food/mex/chimichurri', - }, - { - displayName: 'Tacos', - url: '/food/mex/tacos', - }, - ], - }, - ], - }, -]; - -describe('util/create-breadcrumbs', () => { - it('should create breadcrumbs for a page', () => { - const result1 = createBreadcrumbs('/plants', sidenav); - const expected1 = [{ displayName: 'Plants' }]; - - const result2 = createBreadcrumbs('/plants/bromeliad', sidenav); - const expected2 = [ - { displayName: 'Plants', url: '/plants' }, - { displayName: 'Bromeliad' }, - ]; - - const result3 = createBreadcrumbs('/food/mex/tacos', sidenav); - const expected3 = [ - { displayName: 'Food', url: '/food' }, - { displayName: 'Mexican' }, - { displayName: 'Tacos' }, - ]; - - expect(result1).toEqual(expected1); - expect(result2).toEqual(expected2); - expect(result3).toEqual(expected3); - }); - - it('should return an empty array if unable to find page', () => { - const result = createBreadcrumbs('/foobar', sidenav); - const expected = []; - - expect(result).toEqual(expected); - }); - - it('should throw an error if missing parameters', () => { - const result1 = () => createBreadcrumbs(); - const result2 = () => createBreadcrumbs('/plants'); - - expect(result1).toThrow(new Error('createBreadcrumbs: Missing parameters')); - expect(result2).toThrow(new Error('createBreadcrumbs: Missing parameters')); - }); - - it('should throw an error if parameters in wrong format', () => { - const result1 = () => createBreadcrumbs(7, sidenav); - const result2 = () => createBreadcrumbs('/plants', 'foobar'); - const result3 = () => createBreadcrumbs('/plants', []); - - expect(result1).toThrow(new Error('createBreadcrumbs: Invalid parameters')); - expect(result2).toThrow(new Error('createBreadcrumbs: Invalid parameters')); - expect(result3).toThrow(new Error('createBreadcrumbs: Invalid parameters')); - }); -}); diff --git a/src/utils/create-breadcrumbs.js b/src/utils/create-breadcrumbs.js deleted file mode 100644 index 9b9e9d235..000000000 --- a/src/utils/create-breadcrumbs.js +++ /dev/null @@ -1,61 +0,0 @@ -const URL_WITH_TRAILING_SLASH = /(.+)\/$/; - -/** - * Create a flat array of breadcrumbs for a given relative url given the - * site structure (sidenav). Returns an empty array if no match found. NOTE: - * this function calls itself. - * - * @param {string} url - The relative path of the page needing breadcrumbs. - * @param {Object[]} links - An array of link objects for this level. - * @param {Object[]} [result] - An array of links representing breadcrumbs. - * @return {Object[]} An array of link objects representing breadcrumbs. - */ -const createBreadcrumbs = (url, links, result = []) => { - // if mising url or links, throw an error - if (!url || !links) { - throw new Error('createBreadcrumbs: Missing parameters'); - } - - // if url or link is in wrong format, throw an error - if (typeof url !== 'string' || !Array.isArray(links) || !links.length) { - throw new Error('createBreadcrumbs: Invalid parameters'); - } - - // check to see if any of the links at this level match the path - const match = links.find( - (link) => - link.url === url || - link.url === url.replace(URL_WITH_TRAILING_SLASH, '$1') - ); - - // if we have a link, return the displayName at the end of the result - if (match) { - return [...result, { displayName: match.displayName }]; - } - - // Find all the links at this level with children - const linksWithChildren = links.filter( - (link) => link.children && link.children.length - ); - - // loop over all links that have children (possible branches) - return linksWithChildren.reduce((acc, link) => { - // get the crumbs by calling this function on the children for this link - const crumbs = createBreadcrumbs(url, link.children, result); - - // if the crumbs are different, we found a valid match below this link - if (crumbs !== result) { - // get the details for this link without the children - const parentLink = { displayName: link.displayName }; - if (link.url) parentLink.url = link.url; - - // return the current crumbs, this link, and the crumbs found below - return [...acc, parentLink, ...crumbs]; - } else { - // otherwise, this is an invalid branch, just return the result so far - return acc; - } - }, result); -}; - -export default createBreadcrumbs; From c3ddf6af2e56635e94e5d1dd91e245359b5a0a28 Mon Sep 17 00:00:00 2001 From: Jerel Miller <jerelmiller@gmail.com> Date: Wed, 3 Mar 2021 20:20:37 -0800 Subject: [PATCH 10/40] chore: replace mobile header with the theme mobile header --- src/components/MobileHeader.js | 77 ---------------------------------- src/layouts/MainLayout.js | 18 ++++---- 2 files changed, 8 insertions(+), 87 deletions(-) delete mode 100644 src/components/MobileHeader.js diff --git a/src/components/MobileHeader.js b/src/components/MobileHeader.js deleted file mode 100644 index fbf9c6737..000000000 --- a/src/components/MobileHeader.js +++ /dev/null @@ -1,77 +0,0 @@ -import React, { useState } from 'react'; -import PropTypes from 'prop-types'; -import { css } from '@emotion/core'; -import { Link } from 'gatsby'; -import Navigation from './Navigation'; -import { - Logo, - HamburgerMenu, - SearchInput, -} from '@newrelic/gatsby-theme-newrelic'; - -const MobileHeader = ({ className, isOpen, toggle }) => { - const [searchTerm, setSearchTerm] = useState(''); - - return ( - <header - data-swiftype-index={false} - className={className} - css={css` - position: relative; - padding: 0 2rem; - - width: 100vw; - `} - > - <div - css={css` - display: flex; - align-items: center; - justify-content: space-between; - height: var(--height-mobile-nav-bar); - `} - > - <Link to="/"> - <Logo - css={css` - display: block; - width: 150px; - `} - /> - </Link> - - <HamburgerMenu onToggle={toggle} isOpen={isOpen} /> - </div> - - {isOpen && ( - <> - <SearchInput - placeholder="Filter developer docs" - onClear={() => setSearchTerm('')} - onChange={(e) => setSearchTerm(e.target.value)} - value={searchTerm} - /> - <Navigation - searchTerm={searchTerm} - css={css` - font-size: 1rem; - padding: 1.5rem 0rem; - height: calc( - 100vh - - (var(--height-mobile-nav-bar) + var(--global-header-height)) - ); - `} - /> - </> - )} - </header> - ); -}; - -MobileHeader.propTypes = { - className: PropTypes.string, - isOpen: PropTypes.bool.isRequired, - toggle: PropTypes.func.isRequired, -}; - -export default MobileHeader; diff --git a/src/layouts/MainLayout.js b/src/layouts/MainLayout.js index 924a25531..cc5e90613 100644 --- a/src/layouts/MainLayout.js +++ b/src/layouts/MainLayout.js @@ -6,11 +6,11 @@ import { GlobalHeader, Layout, Logo, + MobileHeader, Navigation, NavItem, SearchInput, } from '@newrelic/gatsby-theme-newrelic'; -import MobileHeader from '../components/MobileHeader'; import { Link } from 'gatsby'; import '../components/styles.scss'; import { useLocation } from '@reach/router'; @@ -29,15 +29,13 @@ const MainLayout = ({ children, pageContext }) => { return ( <> <GlobalHeader /> - <MobileHeader - css={css` - @media (min-width: 761px) { - display: none; - } - `} - isOpen={isMobileNavOpen} - toggle={() => setIsMobileNavOpen(!isMobileNavOpen)} - /> + <MobileHeader> + <Navigation searchTerm={searchTerm}> + {pages.map((page, idx) => ( + <NavItem key={idx} page={page} /> + ))} + </Navigation> + </MobileHeader> <Layout css={css` display: ${isMobileNavOpen ? 'none' : 'grid'}; From ab4639c3f16f354fe1dad23c98a36880125a8dc0 Mon Sep 17 00:00:00 2001 From: Jerel Miller <jerelmiller@gmail.com> Date: Wed, 3 Mar 2021 20:26:28 -0800 Subject: [PATCH 11/40] chore: shadow automation icon into nr icons --- .../gatsby-theme-newrelic/icons/newrelic.js | 7 ++++ .../icons/newrelic/automation.js | 41 +++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 src/@newrelic/gatsby-theme-newrelic/icons/newrelic.js create mode 100644 src/@newrelic/gatsby-theme-newrelic/icons/newrelic/automation.js diff --git a/src/@newrelic/gatsby-theme-newrelic/icons/newrelic.js b/src/@newrelic/gatsby-theme-newrelic/icons/newrelic.js new file mode 100644 index 000000000..51152b7a9 --- /dev/null +++ b/src/@newrelic/gatsby-theme-newrelic/icons/newrelic.js @@ -0,0 +1,7 @@ +import defaultIcons from '@newrelic/gatsby-theme-newrelic/src/icons/newrelic'; +import automation from './newrelic/automation'; + +export default { + ...defaultIcons, + automation, +}; diff --git a/src/@newrelic/gatsby-theme-newrelic/icons/newrelic/automation.js b/src/@newrelic/gatsby-theme-newrelic/icons/newrelic/automation.js new file mode 100644 index 000000000..d3404737f --- /dev/null +++ b/src/@newrelic/gatsby-theme-newrelic/icons/newrelic/automation.js @@ -0,0 +1,41 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { css } from '@emotion/core'; +import SVG from '@newrelic/gatsby-theme-newrelic/src/components/SVG'; + +const AutomationIcon = (props) => ( + <SVG + {...props} + viewBox="0 0 24 24" + css={css` + fill: none; + stroke: currentColor; + stroke-width: 1.5; + stroke-linecap: round; + stroke-linejoin: round; + `} + > + <g> + <path + d="M14.6,14.3l1.4-0.8l-1.9-3.3l-1.4,0.8c-0.7-0.6-1.5-1.1-2.4-1.4V7.9H6.4v1.6C5.5,9.8,4.7,10.3,4,10.9l-1.4-0.8 + l-1.9,3.3L2,14.3c-0.2,1-0.2,1.8,0,2.8l-1.4,0.8l1.9,3.3L4,20.4c0.7,0.6,1.5,1.1,2.4,1.4v1.6h3.9v-1.6c0.9-0.3,1.7-0.8,2.4-1.4 + l1.4,0.8l1.9-3.3l-1.4-0.8C14.8,16.1,14.8,15.2,14.6,14.3z" + /> + <circle cx="8.3" cy="15.7" r="2.6" /> + </g> + <g> + <path + d="M22.7,4.2l0.8-0.5l-1.2-2l-0.8,0.5c-0.4-0.4-0.9-0.7-1.5-0.8v-1h-2.3v1c-0.5,0.2-1,0.5-1.5,0.8l-0.8-0.5 + l-1.2,2l0.8,0.5c-0.1,0.6-0.1,1.1,0,1.7l-0.8,0.5l1.2,2l0.8-0.5c0.4,0.4,0.9,0.7,1.5,0.8v1h2.3v-1c0.5-0.2,1-0.5,1.5-0.8l0.8,0.5 + l1.2-2l-0.8-0.5C22.9,5.3,22.9,4.8,22.7,4.2z" + /> + <circle cx="18.9" cy="5.1" r="1.6" /> + </g> + </SVG> +); + +AutomationIcon.propTypes = { + size: PropTypes.string, +}; + +export default AutomationIcon; From 53ddf06772226a7d4dbc4bf54da8cb22318fce4c Mon Sep 17 00:00:00 2001 From: Jerel Miller <jerelmiller@gmail.com> Date: Wed, 3 Mar 2021 20:44:38 -0800 Subject: [PATCH 12/40] chore: Create the rest of the nr icons and update the nav to use them --- .../gatsby-theme-newrelic/icons/newrelic.js | 16 +++++++++++++ .../icons/newrelic/automation.js | 22 +++--------------- .../icons/newrelic/book.js | 15 ++++++++++++ .../icons/newrelic/build-apps.js | 13 +++++++++++ .../icons/newrelic/builders.js | 10 ++++++++ .../icons/newrelic/developer-champions.js | 18 +++++++++++++++ .../icons/newrelic/event.js | 10 ++++++++ .../icons/newrelic/podcasts.js | 14 +++++++++++ .../icons/newrelic/relicans.js | 10 ++++++++ .../icons/newrelic/share.js | 14 +++++++++++ src/components/NewRelicSVG.js | 23 +++++++++++++++++++ src/data/nav.yml | 10 ++++++++ 12 files changed, 156 insertions(+), 19 deletions(-) create mode 100644 src/@newrelic/gatsby-theme-newrelic/icons/newrelic/book.js create mode 100644 src/@newrelic/gatsby-theme-newrelic/icons/newrelic/build-apps.js create mode 100644 src/@newrelic/gatsby-theme-newrelic/icons/newrelic/builders.js create mode 100644 src/@newrelic/gatsby-theme-newrelic/icons/newrelic/developer-champions.js create mode 100644 src/@newrelic/gatsby-theme-newrelic/icons/newrelic/event.js create mode 100644 src/@newrelic/gatsby-theme-newrelic/icons/newrelic/podcasts.js create mode 100644 src/@newrelic/gatsby-theme-newrelic/icons/newrelic/relicans.js create mode 100644 src/@newrelic/gatsby-theme-newrelic/icons/newrelic/share.js create mode 100644 src/components/NewRelicSVG.js diff --git a/src/@newrelic/gatsby-theme-newrelic/icons/newrelic.js b/src/@newrelic/gatsby-theme-newrelic/icons/newrelic.js index 51152b7a9..891888d61 100644 --- a/src/@newrelic/gatsby-theme-newrelic/icons/newrelic.js +++ b/src/@newrelic/gatsby-theme-newrelic/icons/newrelic.js @@ -1,7 +1,23 @@ import defaultIcons from '@newrelic/gatsby-theme-newrelic/src/icons/newrelic'; import automation from './newrelic/automation'; +import book from './newrelic/book'; +import buildApps from './newrelic/build-apps'; +import builders from './newrelic/builders'; +import developerChampions from './newrelic/developer-champions'; +import event from './newrelic/event'; +import podcasts from './newrelic/podcasts'; +import relicans from './newrelic/relicans'; +import share from './newrelic/share'; export default { ...defaultIcons, automation, + book, + 'build-apps': buildApps, + builders, + 'developer-champions': developerChampions, + event, + relicans, + podcasts, + share, }; diff --git a/src/@newrelic/gatsby-theme-newrelic/icons/newrelic/automation.js b/src/@newrelic/gatsby-theme-newrelic/icons/newrelic/automation.js index d3404737f..d3c0cc104 100644 --- a/src/@newrelic/gatsby-theme-newrelic/icons/newrelic/automation.js +++ b/src/@newrelic/gatsby-theme-newrelic/icons/newrelic/automation.js @@ -1,20 +1,8 @@ import React from 'react'; -import PropTypes from 'prop-types'; -import { css } from '@emotion/core'; -import SVG from '@newrelic/gatsby-theme-newrelic/src/components/SVG'; +import NewRelicSVG from '../../../../components/NewRelicSVG'; const AutomationIcon = (props) => ( - <SVG - {...props} - viewBox="0 0 24 24" - css={css` - fill: none; - stroke: currentColor; - stroke-width: 1.5; - stroke-linecap: round; - stroke-linejoin: round; - `} - > + <NewRelicSVG {...props}> <g> <path d="M14.6,14.3l1.4-0.8l-1.9-3.3l-1.4,0.8c-0.7-0.6-1.5-1.1-2.4-1.4V7.9H6.4v1.6C5.5,9.8,4.7,10.3,4,10.9l-1.4-0.8 @@ -31,11 +19,7 @@ const AutomationIcon = (props) => ( /> <circle cx="18.9" cy="5.1" r="1.6" /> </g> - </SVG> + </NewRelicSVG> ); -AutomationIcon.propTypes = { - size: PropTypes.string, -}; - export default AutomationIcon; diff --git a/src/@newrelic/gatsby-theme-newrelic/icons/newrelic/book.js b/src/@newrelic/gatsby-theme-newrelic/icons/newrelic/book.js new file mode 100644 index 000000000..585265eb7 --- /dev/null +++ b/src/@newrelic/gatsby-theme-newrelic/icons/newrelic/book.js @@ -0,0 +1,15 @@ +import React from 'react'; +import NewRelicSVG from '../../../../components/NewRelicSVG'; + +const BookIcon = (props) => ( + <NewRelicSVG {...props}> + <path d="M16.5 2.5c0 0-1.893 0-2 0 -2 0-3 1.5-3 3.5 0-2-1-3.5-3-3.5 -.5 0-8 0-8 0v16c0 0 6.5 0 8 0 2 0 3 1 3 3 0-2 1-3 3-3 1.5 0 8 0 8 0v-16h-2" /> + <line x1="11.5" x2="11.5" y1="6" y2="21" /> + <polygon + stroke="var(--accent-color)" + points="20.5,10 18.5,8 16.5,10 16.5,1.5 20.5,1.5" + /> + </NewRelicSVG> +); + +export default BookIcon; diff --git a/src/@newrelic/gatsby-theme-newrelic/icons/newrelic/build-apps.js b/src/@newrelic/gatsby-theme-newrelic/icons/newrelic/build-apps.js new file mode 100644 index 000000000..db67ba208 --- /dev/null +++ b/src/@newrelic/gatsby-theme-newrelic/icons/newrelic/build-apps.js @@ -0,0 +1,13 @@ +import React from 'react'; +import NewRelicSVG from '../../../../components/NewRelicSVG'; + +const BuildAppsIcon = (props) => ( + <NewRelicSVG {...props}> + <rect x="14" y="1" width="9" height="9" /> + <rect x="14" y="14" width="9" height="9" /> + <rect x="1" y="14" width="9" height="9" /> + <rect x="1" y="1" width="9" height="9" /> + </NewRelicSVG> +); + +export default BuildAppsIcon; diff --git a/src/@newrelic/gatsby-theme-newrelic/icons/newrelic/builders.js b/src/@newrelic/gatsby-theme-newrelic/icons/newrelic/builders.js new file mode 100644 index 000000000..70c514529 --- /dev/null +++ b/src/@newrelic/gatsby-theme-newrelic/icons/newrelic/builders.js @@ -0,0 +1,10 @@ +import React from 'react'; +import NewRelicSVG from '../../../../components/NewRelicSVG'; + +const BuildersIcon = (props) => ( + <NewRelicSVG {...props}> + <path d="M12.7,5.3c-0.38,0.39-0.38,1.01,0,1.4l1.6,1.6c0.39,0.38,1.01,0.38,1.4,0l3.77-3.77 c1.37,3.02,0.03,6.57-2.99,7.94c-1.57,0.71-3.37,0.71-4.95,0l-6.91,6.91c-0.83,0.83-2.17,0.83-3,0s-0.83-2.17,0-3l6.91-6.91 C7.17,6.45,8.51,2.9,11.52,1.53c1.57-0.71,3.37-0.71,4.95,0L12.7,5.3L12.7,5.3z" /> + </NewRelicSVG> +); + +export default BuildersIcon; diff --git a/src/@newrelic/gatsby-theme-newrelic/icons/newrelic/developer-champions.js b/src/@newrelic/gatsby-theme-newrelic/icons/newrelic/developer-champions.js new file mode 100644 index 000000000..219bdbd55 --- /dev/null +++ b/src/@newrelic/gatsby-theme-newrelic/icons/newrelic/developer-champions.js @@ -0,0 +1,18 @@ +import React from 'react'; +import NewRelicSVG from '../../../../components/NewRelicSVG'; + +const DeveloperChampionsIcon = (props) => ( + <NewRelicSVG {...props}> + <path d="M5.37,15.76c-0.24,0.04-0.48,0.09-0.7,0.14c1.07,2.85,3.18,5.75,7.32,8.1v-0.76 C8.34,21.07,6.39,18.47,5.37,15.76z" /> + <path d="M4.33,10.15C4.31,9.7,4.3,9.25,4.3,8.81V3.63c0.66-0.1,1.64-0.23,2.29-0.4l3.46-1.48 c0.02-0.01,0.04-0.02,0.06-0.03c0.61-0.28,1.29-0.6,1.88-0.94V0c-0.76,0.51-1.8,0.96-2.64,1.35l-2.04,1 C6.22,2.69,4.76,2.93,3.59,3.08v5.73c0,0.49,0.01,1,0.03,1.54C3.84,10.28,4.08,10.21,4.33,10.15z" /> + <path d="M7.36,5.12" /> + <path d="M13.88,1.72c0.02,0.01,0.04,0.02,0.06,0.03l3.46,1.48c0.64,0.16,1.63,0.3,2.29,0.4v5.18 c0,0.44-0.01,0.89-0.03,1.34c0.25,0.06,0.49,0.13,0.71,0.19c0.02-0.54,0.03-1.05,0.03-1.54V3.08c-1.17-0.14-2.63-0.39-3.71-0.72 l-2.04-1C13.81,0.96,12.76,0.51,12,0l-0.12,0.4L12,0.78C12.6,1.12,13.27,1.44,13.88,1.72z" /> + <path d="M18.62,15.76c-1.02,2.71-2.97,5.31-6.61,7.47l-0.12,0.33L12,24c4.14-2.35,6.25-5.25,7.32-8.1 C19.1,15.85,18.86,15.81,18.62,15.76z" /> + <path d="M20.94,9.98C19.1,9.32,15.67,8.9,11.98,8.9v0.51H12c3.52,0,6.92,0.41,8.65,1.03c0.72,0.26,1.05,0.74,1.05,1.55 v4.78c-1.19-0.88-5.09-1.53-9.71-1.53v0.51c3.51,0,8.9,0.82,8.9,1.83c0,0.52-1.81,1-3.59,1.33c-0.06,0.11-0.13,0.22-0.19,0.33 c2.7-0.38,5.16-1.03,5.16-1.75v-5.59C22.26,10.94,21.83,10.3,20.94,9.98z" /> + <path d="M8.05,11.15" /> + <path d="M3.06,9.98C4.89,9.32,8.3,8.9,11.98,8.9v0.51h-0.01c-3.51,0-6.89,0.41-8.62,1.03C2.62,10.71,2.3,11.19,2.3,12 v4.78c1.19-0.88,5.07-1.53,9.68-1.53v0.51c-3.5,0-8.87,0.82-8.87,1.83c0,0.52,1.81,1,3.58,1.33c0.06,0.11,0.13,0.22,0.19,0.33 c-2.69-0.38-5.15-1.03-5.15-1.75v-5.59C1.74,10.94,2.17,10.3,3.06,9.98z" /> + <path d="M750.7,362.2" /> + </NewRelicSVG> +); + +export default DeveloperChampionsIcon; diff --git a/src/@newrelic/gatsby-theme-newrelic/icons/newrelic/event.js b/src/@newrelic/gatsby-theme-newrelic/icons/newrelic/event.js new file mode 100644 index 000000000..7ba1af7ed --- /dev/null +++ b/src/@newrelic/gatsby-theme-newrelic/icons/newrelic/event.js @@ -0,0 +1,10 @@ +import React from 'react'; +import NewRelicSVG from '../../../../components/NewRelicSVG'; + +const EventIcon = (props) => ( + <NewRelicSVG {...props}> + <polygon points="3 11 22 2 13 21 11 13 3 11" /> + </NewRelicSVG> +); + +export default EventIcon; diff --git a/src/@newrelic/gatsby-theme-newrelic/icons/newrelic/podcasts.js b/src/@newrelic/gatsby-theme-newrelic/icons/newrelic/podcasts.js new file mode 100644 index 000000000..b1cb5f690 --- /dev/null +++ b/src/@newrelic/gatsby-theme-newrelic/icons/newrelic/podcasts.js @@ -0,0 +1,14 @@ +import React from 'react'; +import NewRelicSVG from '../../../../components/NewRelicSVG'; + +const PodcastsIcon = (props) => ( + <NewRelicSVG {...props}> + <path d="M12,3.179c-4.85,0-8.782,4.099-8.782,9.153c0,2.589,1.031,4.927,2.689,6.593 c0.063,0.062,0.162-0.023,0.107-0.094c-1.2-1.568-1.926-3.611-1.926-5.846c0-4.938,3.542-8.15,7.911-8.15 c4.37,0,7.911,3.213,7.911,8.15c0,2.235-0.727,4.278-1.926,5.846c-0.055,0.07,0.044,0.156,0.107,0.094 c1.658-1.666,2.689-4.004,2.689-6.593C20.781,7.278,16.85,3.179,12,3.179z" /> + <path d="M7.098,12.49c-0.086-0.209-0.312-0.323-0.531-0.27L5.28,12.536c-0.281,0.068-0.428,0.378-0.304,0.64 l3.36,7.078c0.125,0.262,0.458,0.344,0.689,0.168l0.748-0.568c0.165-0.125,0.225-0.346,0.146-0.537L7.098,12.49z" /> + <path d="M4.696,13.119c-0.061-0.126-0.217-0.174-0.338-0.102H4.357c-0.057,0.033-0.092,0.096-0.09,0.162 c0.023,1.211,0.269,2.396,0.712,3.482l0.526,1.082c0.195,0.342,0.412,0.67,0.649,0.98c0.058,0.076,0.068,0.174,0.027,0.258 c0,0.002,0,0.002,0,0.002c-0.023,0.045-0.025,0.098-0.003,0.143l0.454,0.934c0.021,0.045,0.057,0.082,0.101,0.105l1.154,0.625 c0.068,0.037,0.151,0.039,0.221,0.004l0.015-0.008c0.117-0.059,0.165-0.199,0.108-0.316L4.696,13.119z" /> + <path d="M18.719,12.536l-1.287-0.315c-0.219-0.054-0.445,0.061-0.531,0.27l-2.82,6.827 c-0.079,0.191-0.02,0.412,0.146,0.537l0.748,0.568c0.23,0.176,0.564,0.094,0.688-0.168l3.36-7.078 C19.147,12.914,19,12.604,18.719,12.536z" /> + <path d="M18.494,17.746l0.527-1.084c0.442-1.086,0.688-2.271,0.711-3.482c0.001-0.066-0.033-0.129-0.09-0.162 h-0.002c-0.121-0.073-0.277-0.025-0.338,0.102l-3.535,7.352c-0.057,0.117-0.008,0.258,0.109,0.316l0.015,0.008 c0.069,0.035,0.152,0.033,0.222-0.004l1.153-0.625c0.044-0.023,0.079-0.061,0.101-0.105l0.455-0.934 c0.021-0.045,0.019-0.098-0.004-0.143c0,0,0,0,0-0.002c-0.042-0.084-0.031-0.182,0.026-0.258 C18.082,18.414,18.299,18.088,18.494,17.746z" /> + </NewRelicSVG> +); + +export default PodcastsIcon; diff --git a/src/@newrelic/gatsby-theme-newrelic/icons/newrelic/relicans.js b/src/@newrelic/gatsby-theme-newrelic/icons/newrelic/relicans.js new file mode 100644 index 000000000..56a212a6f --- /dev/null +++ b/src/@newrelic/gatsby-theme-newrelic/icons/newrelic/relicans.js @@ -0,0 +1,10 @@ +import React from 'react'; +import NewRelicSVG from '../../../../components/NewRelicSVG'; + +const RelicansIcon = (props) => ( + <NewRelicSVG {...props}> + <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z" /> + </NewRelicSVG> +); + +export default RelicansIcon; diff --git a/src/@newrelic/gatsby-theme-newrelic/icons/newrelic/share.js b/src/@newrelic/gatsby-theme-newrelic/icons/newrelic/share.js new file mode 100644 index 000000000..cc383e191 --- /dev/null +++ b/src/@newrelic/gatsby-theme-newrelic/icons/newrelic/share.js @@ -0,0 +1,14 @@ +import React from 'react'; +import NewRelicSVG from '../../../../components/NewRelicSVG'; + +const ShareIcon = (props) => ( + <NewRelicSVG {...props}> + <circle cx="18" cy="5" r="3" /> + <circle cx="6" cy="12" r="3" /> + <circle cx="18" cy="19" r="3" /> + <line x1="8.59" y1="13.51" x2="15.42" y2="17.49" /> + <line x1="15.41" y1="6.51" x2="8.59" y2="10.49" /> + </NewRelicSVG> +); + +export default ShareIcon; diff --git a/src/components/NewRelicSVG.js b/src/components/NewRelicSVG.js new file mode 100644 index 000000000..2caa20585 --- /dev/null +++ b/src/components/NewRelicSVG.js @@ -0,0 +1,23 @@ +import React from 'react'; +import { css } from '@emotion/core'; +import SVG from '@newrelic/gatsby-theme-newrelic/src/components/SVG'; + +const NewRelicSVG = (props) => ( + <SVG + {...props} + viewBox="0 0 24 24" + css={css` + fill: none; + stroke: currentColor; + stroke-width: 1; + stroke-linecap: round; + stroke-linejoin: round; + `} + /> +); + +NewRelicSVG.defaultProps = { + size: '1em', +}; + +export default NewRelicSVG; diff --git a/src/data/nav.yml b/src/data/nav.yml index fb74089d5..e1f3c859a 100644 --- a/src/data/nav.yml +++ b/src/data/nav.yml @@ -1,4 +1,5 @@ - title: Collect data + icon: nr-tdp url: '/collect-data' pages: - title: Collect data from any source @@ -12,6 +13,7 @@ - title: Explore NerdGraph using the API Explorer url: '/collect-data/get-started-nerdgraph-api-explorer' - title: Automate workflows + icon: nr-automation url: '/automate-workflows' pages: - title: Using Terrafom with New Relic @@ -41,6 +43,7 @@ - title: Error alerts url: '/automate-workflows/diagnose-problems/error-alerts' - title: Build apps + icon: nr-build-apps url: '/build-apps' pages: - title: Set up your development environment @@ -66,6 +69,7 @@ - title: Build custom visualizations for dashboards url: '/build-apps/build-visualization' - title: Try our APIs + icon: nr-share url: '/try-our-apis' pages: - title: Telemetry APIs @@ -89,6 +93,7 @@ - title: Synthetics API url: https://docs.newrelic.com/docs/apis/synthetics-rest-api - title: Explore docs + icon: nr-book pages: - title: New Relic One CLI url: '/explore-docs/nr1-cli' @@ -318,6 +323,7 @@ - title: ngql url: '/apis/ngql' - title: Developer events + icon: nr-event url: '/developer-events' pages: - title: Past events @@ -329,10 +335,14 @@ - title: All things open url: '/all-things-open' - title: The Relicans + icon: nr-relicans url: '/relicans' - title: Developer champions + icon: nr-developer-champions url: '/developer-champion' - title: New Relic Builders + icon: nr-builders url: '/builders' - title: Podcasts + icon: nr-podcasts url: '/podcasts' From 2c6750b181cf9430eda0db0f6edd444a7341df9a Mon Sep 17 00:00:00 2001 From: Jerel Miller <jerelmiller@gmail.com> Date: Wed, 3 Mar 2021 20:47:10 -0800 Subject: [PATCH 13/40] chore: remove old nav components --- src/components/Navigation.js | 64 ------ src/components/Navigation.module.scss | 9 - src/components/NavigationItems.js | 245 --------------------- src/components/NavigationItems.module.scss | 87 -------- src/utils/matchSearchString.js | 8 - 5 files changed, 413 deletions(-) delete mode 100644 src/components/Navigation.js delete mode 100644 src/components/Navigation.module.scss delete mode 100644 src/components/NavigationItems.js delete mode 100644 src/components/NavigationItems.module.scss delete mode 100644 src/utils/matchSearchString.js diff --git a/src/components/Navigation.js b/src/components/Navigation.js deleted file mode 100644 index f320092fc..000000000 --- a/src/components/Navigation.js +++ /dev/null @@ -1,64 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import cx from 'classnames'; -import NavigationItems from './NavigationItems'; -import pages from '../data/sidenav.json'; -import matchSearchString from '../utils/matchSearchString'; -import styles from './Navigation.module.scss'; - -const filterPageNames = (pages, searchTerm, parent = []) => { - return [ - ...new Set( - pages.flatMap((page) => { - if (page.children) { - return filterPageNames(page.children, searchTerm, [ - ...parent, - page.displayName, - ]); - } else if (matchSearchString(page.displayName, searchTerm)) { - return [...parent, page.displayName]; - } else if (parent.some((el) => matchSearchString(el, searchTerm))) { - return [...parent]; - } - - return null; - }) - ), - ].filter(Boolean); -}; - -const Navigation = ({ className, searchTerm }) => { - const searchTermSanitized = searchTerm?.replace( - /[.*+?^${}()|[\]\\]/g, - '\\$&' - ); - - const filteredPageNames = searchTerm - ? filterPageNames(pages, searchTermSanitized) - : undefined; - - if (filteredPageNames?.length === 0) { - return <div className={styles.emptyResults}>No results found</div>; - } - - return ( - <nav - className={cx(styles.container, className)} - role="navigation" - aria-label="Navigation" - > - <NavigationItems - searchTerm={searchTermSanitized} - pages={pages} - filteredPageNames={filteredPageNames} - /> - </nav> - ); -}; - -Navigation.propTypes = { - className: PropTypes.string, - searchTerm: PropTypes.string, -}; - -export default Navigation; diff --git a/src/components/Navigation.module.scss b/src/components/Navigation.module.scss deleted file mode 100644 index 025eb98eb..000000000 --- a/src/components/Navigation.module.scss +++ /dev/null @@ -1,9 +0,0 @@ -.container { - font-size: 0.875rem; -} - -.emptyResults { - font-size: 0.875rem; - padding-top: 1rem; - font-style: italic; -} diff --git a/src/components/NavigationItems.js b/src/components/NavigationItems.js deleted file mode 100644 index 0e4222f08..000000000 --- a/src/components/NavigationItems.js +++ /dev/null @@ -1,245 +0,0 @@ -import React, { Fragment, useState, useContext, useEffect } from 'react'; -import { css } from '@emotion/core'; -import usePrevious from '../hooks/usePrevious'; -import PropTypes from 'prop-types'; -import FeatherIcon from './FeatherIcon'; -import NewRelicIcon from './NewRelicIcon'; -import { Link } from 'gatsby'; -import cx from 'classnames'; -import { BreadcrumbContext } from './BreadcrumbContext'; -import styles from './NavigationItems.module.scss'; -import { link } from '../types'; -import { useLocation, useMatch } from '@reach/router'; -import { Icon } from '@newrelic/gatsby-theme-newrelic'; - -const iconLibrary = { - 'Collect data': 'collectData', - 'Build apps': 'buildApps', - 'Automate workflows': 'automation', - 'Explore docs': 'developerDocs', - 'Developer events': 'event', - 'Developer champions': 'developerChampions', - 'The Relicans': 'theRelicans', - 'New Relic Builders': 'builders', - Podcasts: 'podcasts', - 'Try our APIs': 'tryOurAPIs', -}; - -const getHighlightedText = (text, highlight) => { - const parts = text.split(new RegExp(`(${highlight})`, 'gi')); - return ( - <span> - {parts.map((part) => - part.toLowerCase() === highlight.toLowerCase() ? <b>{part}</b> : part - )} - </span> - ); -}; - -const isExternal = (url) => url.slice(0, 4) === 'http'; - -const NavigationItems = ({ - pages, - filteredPageNames, - searchTerm, - depthLevel = 0, -}) => { - const groupedPages = pages.reduce((groups, page) => { - const { group = '' } = page; - - return { - ...groups, - [group]: [...(groups[group] || []), page], - }; - }, {}); - - return Object.entries(groupedPages).map(([group, pages]) => { - const showGroup = - (group && !filteredPageNames) || - (group && - filteredPageNames && - pages.some((el) => filteredPageNames.includes(el.displayName))); - - return ( - <Fragment key={group}> - {showGroup && ( - <li className={cx(styles.navLink, styles.groupName)}>{group}</li> - )} - {pages.map((page, index) => - filteredPageNames?.includes(page.displayName) || - !filteredPageNames ? ( - <NavItem - page={page} - depthLevel={depthLevel} - searchTerm={searchTerm} - filteredPageNames={filteredPageNames} - key={index} - /> - ) : null - )} - </Fragment> - ); - }); -}; - -const NavIcon = ({ page }) => { - if (page.displayName === 'Collect data') { - return ( - <Icon - name="nr-tdp" - className={styles.headerIcon} - size="var(--icon-size)" - /> - ); - } - - if (iconLibrary[page.displayName]) { - return ( - <NewRelicIcon - className={styles.headerIcon} - name={iconLibrary[page.displayName]} - size="var(--icon-size)" - /> - ); - } - - return null; -}; - -const NavItem = ({ page, depthLevel, searchTerm, filteredPageNames }) => { - const location = useLocation(); - const crumbs = useContext(BreadcrumbContext).flatMap((x) => x.displayName); - const isBreadCrumb = crumbs.includes(page.displayName); - const matchesSearch = filteredPageNames?.includes(page.displayName); - const hasChangedPage = location.pathname !== usePrevious(location.pathname); - const [toggleIsExpanded, setToggleIsExpanded] = useState(isBreadCrumb); - const isExpanded = toggleIsExpanded || matchesSearch; - - useEffect(() => { - if (hasChangedPage) { - setToggleIsExpanded(isBreadCrumb); - } - }, [hasChangedPage, isBreadCrumb]); - - const isCurrentPage = Boolean(useMatch(page.url || '/')); - - const isToggleable = [ - 'Component library', - 'Explore docs', - 'Try our APIs', - 'New Relic One CLI', - ].includes(page.displayName); - const headerIcon = depthLevel === 0 && <NavIcon page={page} />; - const display = filteredPageNames - ? getHighlightedText(page.displayName, searchTerm) - : page.displayName; - - return ( - <> - <div - key={page.displayName} - data-depth={depthLevel} - className={cx({ [styles.filterOn]: filteredPageNames })} - css={css` - --icon-size: 1.5rem; - - padding-left: ${depthLevel === 0 - ? '0' - : 'calc(0.5rem + var(--icon-size))'}; - - ${depthLevel === 0 && - css` - &:not(:first-child) { - margin-top: 1rem; - } - `} - `} - > - {page.url ? ( - <Link - onClick={ - isToggleable && isCurrentPage - ? () => setToggleIsExpanded(!toggleIsExpanded) - : null - } - className={cx(styles.navLink, { - [styles.isCurrentPage]: isCurrentPage, - })} - to={page.url} - > - <span className={styles.navLinkText}> - {headerIcon} - {display} - </span> - {page.children && ( - <FeatherIcon - size="1rem" - className={cx( - { [styles.isExpanded]: isExpanded }, - styles.nestedChevron - )} - name="chevron-right" - /> - )} - {isExternal(page.url) && <FeatherIcon name="external-link" />} - </Link> - ) : ( - <div - role="button" - css={css` - cursor: pointer; - `} - className={styles.navLink} - onClick={() => setToggleIsExpanded(!toggleIsExpanded)} - onKeyPress={() => setToggleIsExpanded(!toggleIsExpanded)} - tabIndex={0} - > - <span className={styles.navLinkText}> - {headerIcon} - {display} - </span> - <FeatherIcon - size="1rem" - className={cx( - { [styles.isExpanded]: isExpanded }, - styles.nestedChevron - )} - name="chevron-right" - /> - </div> - )} - - {page.children && isExpanded && ( - <NavigationItems - pages={page.children} - filteredPageNames={filteredPageNames} - depthLevel={depthLevel + 1} - searchTerm={searchTerm} - /> - )} - </div> - </> - ); -}; - -NavIcon.propTypes = { - page: PropTypes.shape({ - displayName: PropTypes.string.isRequired, - }), -}; - -NavigationItems.propTypes = { - pages: PropTypes.array.isRequired, - filteredPageNames: PropTypes.array, - searchTerm: PropTypes.string, - depthLevel: PropTypes.number, -}; - -NavItem.propTypes = { - page: link, - filteredPageNames: PropTypes.array, - searchTerm: PropTypes.string, - depthLevel: PropTypes.number.isRequired, -}; - -export default NavigationItems; diff --git a/src/components/NavigationItems.module.scss b/src/components/NavigationItems.module.scss deleted file mode 100644 index d47d8040f..000000000 --- a/src/components/NavigationItems.module.scss +++ /dev/null @@ -1,87 +0,0 @@ -.navLink { - color: var(--primary-text-color); - display: flex; - align-items: center; - justify-content: space-between; - text-decoration: none; - transition: 0.2s ease-out; - padding: 0.5rem; - margin: 0 -0.5rem; - margin-left: calc((0.5rem + var(--icon-size)) * -1); - border-radius: 0.25rem; - padding-left: calc(0.5rem + var(--icon-size)); - - &:hover { - color: var(--primary-text-hover-color); - } - - [data-depth='0'] > & { - padding-left: 0.5rem; - margin-left: -0.5rem; - font-weight: bold; - } -} - -.headerIcon { - margin-right: 0.5rem; -} - -button.navLink { - color: var(--primary-text-color); - background: inherit; - border: none; - font-size: inherit; - font-weight: inherit; - - &:focus { - outline: none; - } -} - -.navLinkText { - display: flex; - align-items: center; -} - -.currentPageIndicator { - stroke-width: 4; - - @media (max-width: 760px) { - display: none; - } -} - -.nestedChevron { - stroke-width: 2; - transition: 0.2s; - - &.isExpanded { - transform: rotate(90deg); - } -} - -.groupName { - color: var(--secondary-text-color); - font-weight: bold; - font-size: 0.75rem; - text-transform: uppercase; - - &:not(:first-child) { - margin-top: 2rem; - } -} - -.isCurrentPage { - background: var(--color-neutrals-100); - - :global(.dark-mode) & { - color: var(--primary-text-hover-color); - background: var(--color-dark-100); - } -} - -.filterOn { - .groupName { - margin-top: 0.5rem; - } -} diff --git a/src/utils/matchSearchString.js b/src/utils/matchSearchString.js deleted file mode 100644 index bd3063610..000000000 --- a/src/utils/matchSearchString.js +++ /dev/null @@ -1,8 +0,0 @@ -const matchSearchString = (str, searchTerm) => { - return new RegExp( - searchTerm.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), - 'i' - ).test(str); -}; - -export default matchSearchString; From 9273dea78c46f52802176613359175474ff21e10 Mon Sep 17 00:00:00 2001 From: Jerel Miller <jerelmiller@gmail.com> Date: Wed, 3 Mar 2021 20:47:42 -0800 Subject: [PATCH 14/40] chore: remove unused breadcrumb bar component --- src/components/BreadcrumbBar.js | 29 ---------------- src/components/BreadcrumbBar.module.scss | 40 ----------------------- src/components/__tests__/BreadcrumbBar.js | 38 --------------------- 3 files changed, 107 deletions(-) delete mode 100644 src/components/BreadcrumbBar.js delete mode 100644 src/components/BreadcrumbBar.module.scss delete mode 100644 src/components/__tests__/BreadcrumbBar.js diff --git a/src/components/BreadcrumbBar.js b/src/components/BreadcrumbBar.js deleted file mode 100644 index 65f43df95..000000000 --- a/src/components/BreadcrumbBar.js +++ /dev/null @@ -1,29 +0,0 @@ -import React from 'react'; -import { Link } from 'gatsby'; -import styles from './BreadcrumbBar.module.scss'; -import PropTypes from 'prop-types'; -import { link } from '../types'; - -const BreadcrumbBar = ({ crumbs, duration }) => ( - <div className={styles.breadcrumbBar}> - <ul className={styles.crumbs}> - {crumbs.map((crumb, index) => ( - <li key={index}> - {crumb.url ? ( - <Link to={crumb.url}>{crumb.displayName}</Link> - ) : ( - <span>{crumb.displayName}</span> - )} - </li> - ))} - </ul> - {duration && <div className={styles.duration}>{duration}</div>} - </div> -); - -BreadcrumbBar.propTypes = { - crumbs: PropTypes.arrayOf(link), - duration: PropTypes.string, -}; - -export default BreadcrumbBar; diff --git a/src/components/BreadcrumbBar.module.scss b/src/components/BreadcrumbBar.module.scss deleted file mode 100644 index 04a696b72..000000000 --- a/src/components/BreadcrumbBar.module.scss +++ /dev/null @@ -1,40 +0,0 @@ -.breadcrumbBar { - padding: 1rem 0; - font-size: 0.9rem; - width: 100%; -} - -.container { - display: flex; - justify-content: space-between; - align-items: center; -} - -.crumbs { - display: flex; - list-style: none; - margin: 0; - padding: 0; - - a, - span { - color: var(--color-black); - text-decoration: none; - } - - li:last-child > span { - font-weight: 600; - } - - li:not(:last-child):after { - content: ''; - display: inline-block; - width: 0.9rem; - height: 0.9rem; - margin: 0 1rem; - vertical-align: middle; - background-image: url('../images/chevron-right.svg'); - background-repeat: no-repeat; - background-position: center center; - } -} diff --git a/src/components/__tests__/BreadcrumbBar.js b/src/components/__tests__/BreadcrumbBar.js deleted file mode 100644 index 2ad2f0370..000000000 --- a/src/components/__tests__/BreadcrumbBar.js +++ /dev/null @@ -1,38 +0,0 @@ -import React from 'react'; -import { render } from '@testing-library/react'; - -import BreadcrumbBar from '../BreadcrumbBar'; - -const crumbs = [ - { displayName: 'Food', url: '/food' }, - { displayName: 'Mexican' }, - { displayName: 'Tacos' }, -]; - -describe('BreadcrumbBar', () => { - it('renders a list of breadcrumbs', () => { - const { getByText } = render(<BreadcrumbBar crumbs={crumbs} />); - const crumb1 = getByText('Food'); - const crumb2 = getByText('Mexican'); - const crumb3 = getByText('Tacos'); - - expect(crumb1).toBeTruthy(); - expect(crumb2).toBeTruthy(); - expect(crumb3).toBeTruthy(); - }); - - it('render crumbs with urls as links', () => { - const { getByText } = render(<BreadcrumbBar crumbs={crumbs} />); - const crumb1 = getByText('Food'); - const expected = `${window.location.href}food`; - - expect(crumb1.href).toEqual(expected); - }); - - it('render crumbs without urls as spans', () => { - const { getByText } = render(<BreadcrumbBar crumbs={crumbs} />); - const crumb2 = getByText('Mexican'); - - expect(crumb2.href).toBeFalsy(); - }); -}); From 4928d7324a42da20fd48550cdf12b32c5eeca3e3 Mon Sep 17 00:00:00 2001 From: Jerel Miller <jerelmiller@gmail.com> Date: Wed, 3 Mar 2021 20:50:46 -0800 Subject: [PATCH 15/40] chore: update homepage to use Icon instead of NewRelicIcon --- src/pages/index.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/pages/index.js b/src/pages/index.js index bad5f431f..7555e5f89 100644 --- a/src/pages/index.js +++ b/src/pages/index.js @@ -11,7 +11,6 @@ import GuideTile from '../components/GuideTile/GuideTile'; import PageLayout from '../components/PageLayout'; import FeatherIcon from '../components/FeatherIcon'; import FeaturedGuideTile from '../components/FeaturedGuideTile'; -import NewRelicIcon from '../components/NewRelicIcon'; import { PageContext } from '../components/PageContext'; import { pageContext } from '../types'; import styles from './index.module.scss'; @@ -33,14 +32,14 @@ const getStartedGuides = [ title: 'Add tags to apps', description: `Add tags to applications you instrument for easier filtering and organization`, url: '/automate-workflows/5-mins-tag-resources', - icon: <NewRelicIcon name="automation" />, + icon: <Icon name="nr-automation" />, }, { duration: '12 min', title: 'Build a Hello, World! app', description: `Build a Hello, World! app and publish it to your local New Relic One Catalog`, url: '/build-apps/build-hello-world-app', - icon: <NewRelicIcon name="buildApps" />, + icon: <Icon name="nr-build-apps" />, }, ]; From 5dff16bf985fdcda58f6db425778c6bab9ab560c Mon Sep 17 00:00:00 2001 From: Jerel Miller <jerelmiller@gmail.com> Date: Wed, 3 Mar 2021 20:51:20 -0800 Subject: [PATCH 16/40] chore: remove old NR icon component --- src/components/NewRelicIcon.js | 118 ------------------------ src/components/NewRelicIcon.module.scss | 7 -- 2 files changed, 125 deletions(-) delete mode 100644 src/components/NewRelicIcon.js delete mode 100644 src/components/NewRelicIcon.module.scss diff --git a/src/components/NewRelicIcon.js b/src/components/NewRelicIcon.js deleted file mode 100644 index 0c1a4b358..000000000 --- a/src/components/NewRelicIcon.js +++ /dev/null @@ -1,118 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import cx from 'classnames'; -import styles from './NewRelicIcon.module.scss'; - -const NewRelicIcon = ({ className, name, size = '1em' }) => { - const paths = NEWRELIC_ICONS[name]; - - return paths ? ( - <svg - xmlns="http://www.w3.org/2000/svg" - viewBox="0 0 24 24" - className={cx(styles.icon, className)} - style={{ width: size, height: size }} - > - {paths} - </svg> - ) : null; -}; - -const NEWRELIC_ICONS = { - automation: ( - <> - <g> - <path - d="M14.6,14.3l1.4-0.8l-1.9-3.3l-1.4,0.8c-0.7-0.6-1.5-1.1-2.4-1.4V7.9H6.4v1.6C5.5,9.8,4.7,10.3,4,10.9l-1.4-0.8 - l-1.9,3.3L2,14.3c-0.2,1-0.2,1.8,0,2.8l-1.4,0.8l1.9,3.3L4,20.4c0.7,0.6,1.5,1.1,2.4,1.4v1.6h3.9v-1.6c0.9-0.3,1.7-0.8,2.4-1.4 - l1.4,0.8l1.9-3.3l-1.4-0.8C14.8,16.1,14.8,15.2,14.6,14.3z" - /> - <circle cx="8.3" cy="15.7" r="2.6" /> - </g> - <g> - <path - d="M22.7,4.2l0.8-0.5l-1.2-2l-0.8,0.5c-0.4-0.4-0.9-0.7-1.5-0.8v-1h-2.3v1c-0.5,0.2-1,0.5-1.5,0.8l-0.8-0.5 - l-1.2,2l0.8,0.5c-0.1,0.6-0.1,1.1,0,1.7l-0.8,0.5l1.2,2l0.8-0.5c0.4,0.4,0.9,0.7,1.5,0.8v1h2.3v-1c0.5-0.2,1-0.5,1.5-0.8l0.8,0.5 - l1.2-2l-0.8-0.5C22.9,5.3,22.9,4.8,22.7,4.2z" - /> - <circle cx="18.9" cy="5.1" r="1.6" /> - </g> - </> - ), - buildApps: ( - <> - <rect x="14" y="1" width="9" height="9" /> - <rect x="14" y="14" width="9" height="9" /> - <rect x="1" y="14" width="9" height="9" /> - <rect x="1" y="1" width="9" height="9" /> - </> - ), - collectData: ( - <> - <path d="M15.799 16.5h2.396c0 0 4.305-.561 4.305-4.783 0-2.675-2.209-4.874-4.955-4.773 -1.073-2.266-3.373-3.835-6.045-3.835 -3.563 0-6.468 2.784-6.676 6.294 -2.232-.467-4.324 1.232-4.324 3.509 0 3.645 3.826 3.588 3.826 3.588h2.863" /> - <line x1="11.5" x2="11.5" y1="11" y2="22" /> - <polyline points="14.5,14 11.5,11 8.5,14" /> - </> - ), - tryOurAPIs: ( - <> - <circle cx="18" cy="5" r="3" /> - <circle cx="6" cy="12" r="3" /> - <circle cx="18" cy="19" r="3" /> - <line x1="8.59" y1="13.51" x2="15.42" y2="17.49" /> - <line x1="15.41" y1="6.51" x2="8.59" y2="10.49" /> - </> - ), - developerDocs: ( - <> - <path d="M16.5 2.5c0 0-1.893 0-2 0 -2 0-3 1.5-3 3.5 0-2-1-3.5-3-3.5 -.5 0-8 0-8 0v16c0 0 6.5 0 8 0 2 0 3 1 3 3 0-2 1-3 3-3 1.5 0 8 0 8 0v-16h-2" /> - <line x1="11.5" x2="11.5" y1="6" y2="21" /> - <polygon points="20.5,10 18.5,8 16.5,10 16.5,1.5 20.5,1.5" /> - </> - ), - developerChampions: ( - <> - <path d="M5.37,15.76c-0.24,0.04-0.48,0.09-0.7,0.14c1.07,2.85,3.18,5.75,7.32,8.1v-0.76 C8.34,21.07,6.39,18.47,5.37,15.76z" /> - <path d="M4.33,10.15C4.31,9.7,4.3,9.25,4.3,8.81V3.63c0.66-0.1,1.64-0.23,2.29-0.4l3.46-1.48 c0.02-0.01,0.04-0.02,0.06-0.03c0.61-0.28,1.29-0.6,1.88-0.94V0c-0.76,0.51-1.8,0.96-2.64,1.35l-2.04,1 C6.22,2.69,4.76,2.93,3.59,3.08v5.73c0,0.49,0.01,1,0.03,1.54C3.84,10.28,4.08,10.21,4.33,10.15z" /> - <path d="M7.36,5.12" /> - <path d="M13.88,1.72c0.02,0.01,0.04,0.02,0.06,0.03l3.46,1.48c0.64,0.16,1.63,0.3,2.29,0.4v5.18 c0,0.44-0.01,0.89-0.03,1.34c0.25,0.06,0.49,0.13,0.71,0.19c0.02-0.54,0.03-1.05,0.03-1.54V3.08c-1.17-0.14-2.63-0.39-3.71-0.72 l-2.04-1C13.81,0.96,12.76,0.51,12,0l-0.12,0.4L12,0.78C12.6,1.12,13.27,1.44,13.88,1.72z" /> - <path d="M18.62,15.76c-1.02,2.71-2.97,5.31-6.61,7.47l-0.12,0.33L12,24c4.14-2.35,6.25-5.25,7.32-8.1 C19.1,15.85,18.86,15.81,18.62,15.76z" /> - <path d="M20.94,9.98C19.1,9.32,15.67,8.9,11.98,8.9v0.51H12c3.52,0,6.92,0.41,8.65,1.03c0.72,0.26,1.05,0.74,1.05,1.55 v4.78c-1.19-0.88-5.09-1.53-9.71-1.53v0.51c3.51,0,8.9,0.82,8.9,1.83c0,0.52-1.81,1-3.59,1.33c-0.06,0.11-0.13,0.22-0.19,0.33 c2.7-0.38,5.16-1.03,5.16-1.75v-5.59C22.26,10.94,21.83,10.3,20.94,9.98z" /> - <path d="M8.05,11.15" /> - <path d="M3.06,9.98C4.89,9.32,8.3,8.9,11.98,8.9v0.51h-0.01c-3.51,0-6.89,0.41-8.62,1.03C2.62,10.71,2.3,11.19,2.3,12 v4.78c1.19-0.88,5.07-1.53,9.68-1.53v0.51c-3.5,0-8.87,0.82-8.87,1.83c0,0.52,1.81,1,3.58,1.33c0.06,0.11,0.13,0.22,0.19,0.33 c-2.69-0.38-5.15-1.03-5.15-1.75v-5.59C1.74,10.94,2.17,10.3,3.06,9.98z" /> - <path d="M750.7,362.2" /> - </> - ), - theRelicans: ( - <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z" /> - ), - podcasts: ( - <> - <path d="M12,3.179c-4.85,0-8.782,4.099-8.782,9.153c0,2.589,1.031,4.927,2.689,6.593 c0.063,0.062,0.162-0.023,0.107-0.094c-1.2-1.568-1.926-3.611-1.926-5.846c0-4.938,3.542-8.15,7.911-8.15 c4.37,0,7.911,3.213,7.911,8.15c0,2.235-0.727,4.278-1.926,5.846c-0.055,0.07,0.044,0.156,0.107,0.094 c1.658-1.666,2.689-4.004,2.689-6.593C20.781,7.278,16.85,3.179,12,3.179z" /> - <path d="M7.098,12.49c-0.086-0.209-0.312-0.323-0.531-0.27L5.28,12.536c-0.281,0.068-0.428,0.378-0.304,0.64 l3.36,7.078c0.125,0.262,0.458,0.344,0.689,0.168l0.748-0.568c0.165-0.125,0.225-0.346,0.146-0.537L7.098,12.49z" /> - <path d="M4.696,13.119c-0.061-0.126-0.217-0.174-0.338-0.102H4.357c-0.057,0.033-0.092,0.096-0.09,0.162 c0.023,1.211,0.269,2.396,0.712,3.482l0.526,1.082c0.195,0.342,0.412,0.67,0.649,0.98c0.058,0.076,0.068,0.174,0.027,0.258 c0,0.002,0,0.002,0,0.002c-0.023,0.045-0.025,0.098-0.003,0.143l0.454,0.934c0.021,0.045,0.057,0.082,0.101,0.105l1.154,0.625 c0.068,0.037,0.151,0.039,0.221,0.004l0.015-0.008c0.117-0.059,0.165-0.199,0.108-0.316L4.696,13.119z" /> - <path d="M18.719,12.536l-1.287-0.315c-0.219-0.054-0.445,0.061-0.531,0.27l-2.82,6.827 c-0.079,0.191-0.02,0.412,0.146,0.537l0.748,0.568c0.23,0.176,0.564,0.094,0.688-0.168l3.36-7.078 C19.147,12.914,19,12.604,18.719,12.536z" /> - <path d="M18.494,17.746l0.527-1.084c0.442-1.086,0.688-2.271,0.711-3.482c0.001-0.066-0.033-0.129-0.09-0.162 h-0.002c-0.121-0.073-0.277-0.025-0.338,0.102l-3.535,7.352c-0.057,0.117-0.008,0.258,0.109,0.316l0.015,0.008 c0.069,0.035,0.152,0.033,0.222-0.004l1.153-0.625c0.044-0.023,0.079-0.061,0.101-0.105l0.455-0.934 c0.021-0.045,0.019-0.098-0.004-0.143c0,0,0,0,0-0.002c-0.042-0.084-0.031-0.182,0.026-0.258 C18.082,18.414,18.299,18.088,18.494,17.746z" /> - </> - ), - builders: ( - <path - d="M12.7,5.3c-0.38,0.39-0.38,1.01,0,1.4l1.6,1.6c0.39,0.38,1.01,0.38,1.4,0l3.77-3.77 - c1.37,3.02,0.03,6.57-2.99,7.94c-1.57,0.71-3.37,0.71-4.95,0l-6.91,6.91c-0.83,0.83-2.17,0.83-3,0s-0.83-2.17,0-3l6.91-6.91 - C7.17,6.45,8.51,2.9,11.52,1.53c1.57-0.71,3.37-0.71,4.95,0L12.7,5.3L12.7,5.3z" - /> - ), - event: ( - <> - <polygon points="3 11 22 2 13 21 11 13 3 11" /> - </> - ), -}; - -NewRelicIcon.propTypes = { - className: PropTypes.string, - name: PropTypes.oneOf(Object.keys(NEWRELIC_ICONS)).isRequired, - size: PropTypes.string, -}; - -export default NewRelicIcon; diff --git a/src/components/NewRelicIcon.module.scss b/src/components/NewRelicIcon.module.scss deleted file mode 100644 index 6c6f7e56f..000000000 --- a/src/components/NewRelicIcon.module.scss +++ /dev/null @@ -1,7 +0,0 @@ -.icon { - fill: none; - stroke: currentColor; - stroke-width: 1.5; - stroke-linecap: round; - stroke-linejoin: round; -} From 52f772fc78a43a50b8813d8eac3e858b5ebae4f2 Mon Sep 17 00:00:00 2001 From: Jerel Miller <jerelmiller@gmail.com> Date: Wed, 3 Mar 2021 20:59:30 -0800 Subject: [PATCH 17/40] chore: update contributing doc to use nav.yml --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6a79d90c3..f20c5edbc 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -265,7 +265,7 @@ When a new guide is added or an existing guide path frontmatter slug is changed 1. Make your guide change and submit a PR. 2. Within that PR also make the navigation change. -3. In order to change navigation you will need to update the [sidenav.json](/src/data/sidenav.json) file. +3. In order to change navigation you will need to update the [nav.yml](/src/data/nav.yml) file. 4. Given the side navigation file is JSON, be sure to close all `[ ]` and `{ }` and use trailing `,` correctly. 5. Navigation `displayName` should always be sentence case. 6. Submit your PR and add the `navigation` label. @@ -410,5 +410,5 @@ as that will contain only 3rd party SDK documentation. ### Step 3: Add any new APIs or components to the navigation If there are new APIs or components, we will want to list them in the navigation -so that a user can easily discover them. [Add an entry to `sidenav.json`](https://github.com/newrelic/developer-website/blob/develop/src/data/sidenav.json) +so that a user can easily discover them. [Add an entry to `nav.yml`](https://github.com/newrelic/developer-website/blob/develop/src/data/nav.yml) to get the new API/component in the nav. From d43954bf58d14c62aaae3f5df8d86aca2d1a0c56 Mon Sep 17 00:00:00 2001 From: David Carrington <david.carrington@gmail.com> Date: Thu, 4 Mar 2021 17:24:07 +0000 Subject: [PATCH 18/40] Correct Ali's LinkedIn URL --- src/data/relicansData.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/relicansData.js b/src/data/relicansData.js index d5f8f39f1..f207ea086 100644 --- a/src/data/relicansData.js +++ b/src/data/relicansData.js @@ -112,7 +112,7 @@ export const teamMembers = [ }, { name: 'linkedin', - url: 'https://linkedin.com/in/alifinkelsteina', + url: 'https://linkedin.com/in/alifinkelstein', }, ], }, From cf6069b0412831f7be9322b6e2a0dadf49768b84 Mon Sep 17 00:00:00 2001 From: Zack Stickles <zstickles@newrelic.com> Date: Fri, 5 Mar 2021 13:31:05 -0800 Subject: [PATCH 19/40] chore: update NR browser to new account --- gatsby-config.js | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/gatsby-config.js b/gatsby-config.js index 304661e9d..b8c102c0c 100644 --- a/gatsby-config.js +++ b/gatsby-config.js @@ -81,23 +81,23 @@ module.exports = { configs: { production: { instrumentationType: 'proAndSPA', - accountId: '10175106', + accountId: '10956800', trustKey: '1', - agentID: '22273498', - licenseKey: '23448da482', - applicationID: '22273498', - beacon: 'staging-bam.nr-data.net', - errorBeacon: 'staging-bam.nr-data.net', + agentID: '30712246', + licenseKey: '649173eb1a7b28cd6ab', + applicationID: '30712246', + beacon: 'staging-bam-cell.nr-data.net', + errorBeacon: 'staging-bam-cell.nr-data.net', }, staging: { instrumentationType: 'proAndSPA', - accountId: '10175106', + accountId: '10956800', trustKey: '1', - agentID: '22273531', - licenseKey: '23448da482', - applicationID: '22273531', - beacon: 'staging-bam.nr-data.net', - errorBeacon: 'staging-bam.nr-data.net', + agentID: '30712246', + licenseKey: '649173eb1a7b28cd6ab', + applicationID: '30712246', + beacon: 'staging-bam-cell.nr-data.net', + errorBeacon: 'staging-bam-cell.nr-data.net', }, }, }, From 955d0349cf497731101b1c462c7217843230e3a6 Mon Sep 17 00:00:00 2001 From: Zack Stickles <zstickles@newrelic.com> Date: Fri, 5 Mar 2021 15:03:50 -0800 Subject: [PATCH 20/40] chore: update licenseKey format --- gatsby-config.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gatsby-config.js b/gatsby-config.js index b8c102c0c..57e314d33 100644 --- a/gatsby-config.js +++ b/gatsby-config.js @@ -84,7 +84,7 @@ module.exports = { accountId: '10956800', trustKey: '1', agentID: '30712246', - licenseKey: '649173eb1a7b28cd6ab', + licenseKey: 'NRJS-649173eb1a7b28cd6ab', applicationID: '30712246', beacon: 'staging-bam-cell.nr-data.net', errorBeacon: 'staging-bam-cell.nr-data.net', @@ -94,7 +94,7 @@ module.exports = { accountId: '10956800', trustKey: '1', agentID: '30712246', - licenseKey: '649173eb1a7b28cd6ab', + licenseKey: 'NRJS-649173eb1a7b28cd6ab', applicationID: '30712246', beacon: 'staging-bam-cell.nr-data.net', errorBeacon: 'staging-bam-cell.nr-data.net', From 5cc93120812efde1fdc2b5e154a9abe017e4641a Mon Sep 17 00:00:00 2001 From: John P Vajda <jvajda@newrelic.com> Date: Fri, 5 Mar 2021 17:09:00 -0700 Subject: [PATCH 21/40] updated TF provider version to most current --- src/markdown-pages/automate-workflows/get-started-terraform.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/markdown-pages/automate-workflows/get-started-terraform.mdx b/src/markdown-pages/automate-workflows/get-started-terraform.mdx index 9a64bcbd5..e30ec68f6 100644 --- a/src/markdown-pages/automate-workflows/get-started-terraform.mdx +++ b/src/markdown-pages/automate-workflows/get-started-terraform.mdx @@ -66,7 +66,7 @@ terraform { required_providers { newrelic = { source = "newrelic/newrelic" - version = "~> 2.12" + version = "~> 2.21" } } } From 315c79cd82caba71aea987ca0959f7da828408ef Mon Sep 17 00:00:00 2001 From: Jerel Miller <jerelmiller@gmail.com> Date: Fri, 5 Mar 2021 21:13:34 -0800 Subject: [PATCH 22/40] chore: upgrade to react 17 --- package.json | 4 ++-- yarn.lock | 28 +++++++++++++++++----------- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index 421a78980..8c46149ec 100644 --- a/package.json +++ b/package.json @@ -37,8 +37,8 @@ "prism-react-renderer": "^1.1.1", "prismjs": "^1.21.0", "prop-types": "^15.7.2", - "react": "^16.12.0", - "react-dom": "^16.12.0", + "react": "^17.0.1", + "react-dom": "^17.0.1", "react-helmet": "^6.1.0", "react-live": "^2.2.2", "react-markdown": "^5.0.3", diff --git a/yarn.lock b/yarn.lock index baa3d24b0..04bffc40d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15548,15 +15548,14 @@ react-dev-utils@^4.2.3: strip-ansi "3.0.1" text-table "0.2.0" -react-dom@^16.12.0: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.13.1.tgz#c1bd37331a0486c078ee54c4740720993b2e0e7f" - integrity sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag== +react-dom@^17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.1.tgz#1de2560474ec9f0e334285662ede52dbc5426fc6" + integrity sha512-6eV150oJZ9U2t9svnsspTMrWNyHc6chX0KzDeAOXftRa8bNeOKTTfCJ7KorIwenkHd2xqVTBTCZd79yk/lx/Ug== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" - prop-types "^15.6.2" - scheduler "^0.19.1" + scheduler "^0.20.1" react-error-overlay@^3.0.0: version "3.0.0" @@ -15758,14 +15757,13 @@ react-use@^15.3.3, react-use@^15.3.4: ts-easing "^0.2.0" tslib "^2.0.0" -react@^16.12.0: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e" - integrity sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w== +react@^17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/react/-/react-17.0.1.tgz#6e0600416bd57574e3f86d92edba3d9008726127" + integrity sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" - prop-types "^15.6.2" read-chunk@^3.2.0: version "3.2.0" @@ -16641,6 +16639,14 @@ scheduler@^0.19.1: loose-envify "^1.1.0" object-assign "^4.1.1" +scheduler@^0.20.1: + version "0.20.1" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.1.tgz#da0b907e24026b01181ecbc75efdc7f27b5a000c" + integrity sha512-LKTe+2xNJBNxu/QhHvDR14wUXHRQbVY5ZOYpOGWRzhydZUqrLb2JBvLPY7cAqFmqrWuDED0Mjk7013SZiOz6Bw== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + schema-utils@^0.4.5: version "0.4.7" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187" From 166348eb24cc2979ecf6c8fb27221b028c41128a Mon Sep 17 00:00:00 2001 From: Jerel Miller <jerelmiller@gmail.com> Date: Fri, 5 Mar 2021 21:21:23 -0800 Subject: [PATCH 23/40] chore: update gatsby to latest v2 release --- package.json | 2 +- yarn.lock | 938 ++++++++++++++++++++++++--------------------------- 2 files changed, 448 insertions(+), 492 deletions(-) diff --git a/package.json b/package.json index 8c46149ec..b2ad0d31c 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "classnames": "^2.2.6", "date-fns": "^2.16.1", "diff": "^4.0.2", - "gatsby": "^2.30.2", + "gatsby": "^2.32.9", "gatsby-image": "^2.4.20", "gatsby-plugin-emotion": "^4.3.14", "gatsby-plugin-manifest": "^2.4.35", diff --git a/yarn.lock b/yarn.lock index 04bffc40d..9a7465ab8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2971,11 +2971,26 @@ resolved "https://registry.yarnpkg.com/@types/common-tags/-/common-tags-1.8.0.tgz#79d55e748d730b997be5b7fce4b74488d8b26a6b" integrity sha512-htRqZr5qn8EzMelhX/Xmx142z218lLyGaeZ3YR8jlze4TATRU9huKKvuBmAJEW4LCC4pnY1N6JAm6p85fMHjhg== +"@types/component-emitter@^1.2.10": + version "1.2.10" + resolved "https://registry.yarnpkg.com/@types/component-emitter/-/component-emitter-1.2.10.tgz#ef5b1589b9f16544642e473db5ea5639107ef3ea" + integrity sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg== + "@types/configstore@^2.1.1": version "2.1.1" resolved "https://registry.yarnpkg.com/@types/configstore/-/configstore-2.1.1.tgz#cd1e8553633ad3185c3f2f239ecff5d2643e92b6" integrity sha1-zR6FU2M60xhcPy8jns/10mQ+krY= +"@types/cookie@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.0.tgz#14f854c0f93d326e39da6e3b6f34f7d37513d108" + integrity sha512-y7mImlc/rNkvCRmg8gC3/lj87S7pTUIJ6QGjwHR9WQJcFs+ZMTOaoPrkdFA/YdbuqVEmEbb5RdhVxMkAcgOnpg== + +"@types/cors@^2.8.8": + version "2.8.10" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.10.tgz#61cc8469849e5bcdd0c7044122265c39cec10cf4" + integrity sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ== + "@types/debug@^0.0.30": version "0.0.30" resolved "https://registry.yarnpkg.com/@types/debug/-/debug-0.0.30.tgz#dc1e40f7af3b9c815013a7860e6252f6352a84df" @@ -3042,11 +3057,6 @@ dependencies: "@types/unist" "*" -"@types/history@*": - version "4.7.8" - resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.8.tgz#49348387983075705fe8f4e02fb67f7daaec4934" - integrity sha512-S78QIYirQcUoo6UJZx9CSP0O2ix9IaeAXwQi26Rhr/+mg7qqPy8TzaxHSUut7eGjL8WmLccT7/MXf304WjqHcA== - "@types/hosted-git-info@^2.7.0": version "2.7.0" resolved "https://registry.yarnpkg.com/@types/hosted-git-info/-/hosted-git-info-2.7.0.tgz#5199b4df62d53f51d60520d61513eaa4b2dd3d3d" @@ -3163,6 +3173,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-13.13.0.tgz#30d2d09f623fe32cde9cb582c7a6eda2788ce4a8" integrity sha512-WE4IOAC6r/yBZss1oQGM5zs2D7RuKR6Q+w+X2SouPofnWn+LbCqClRyhO3ZE7Ix8nmFgo/oVuuE01cJT2XB13A== +"@types/node@^14.14.10": + version "14.14.31" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.31.tgz#72286bd33d137aa0d152d47ec7c1762563d34055" + integrity sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g== + "@types/node@^6.14.7": version "6.14.13" resolved "https://registry.yarnpkg.com/@types/node/-/node-6.14.13.tgz#b6649578fc0b5dac88c4ef48a46cab33c50a6c72" @@ -3203,12 +3218,11 @@ resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== -"@types/reach__router@^1.3.6": - version "1.3.6" - resolved "https://registry.yarnpkg.com/@types/reach__router/-/reach__router-1.3.6.tgz#413417ce74caab331c70ce6a03a4c825188e4709" - integrity sha512-RHYataCUPQnt+GHoASyRLq6wmZ0n8jWlBW8Lxcwd30NN6vQfbmTeoSDfkgxO0S1lEzArp8OFDsq5KIs7FygjtA== +"@types/reach__router@^1.3.7": + version "1.3.7" + resolved "https://registry.yarnpkg.com/@types/reach__router/-/reach__router-1.3.7.tgz#de8ab374259ae7f7499fc1373b9697a5f3cd6428" + integrity sha512-cyBEb8Ef3SJNH5NYEIDGPoMMmYUxROatuxbICusVRQIqZUB85UCt6R2Ok60tKS/TABJsJYaHyNTW3kqbpxlMjg== dependencies: - "@types/history" "*" "@types/react" "*" "@types/react-dom@*": @@ -3626,11 +3640,6 @@ address@1.1.2: resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== -after@0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" - integrity sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8= - agent-base@4, agent-base@^4.2.0, agent-base@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" @@ -3961,11 +3970,6 @@ array.prototype.flatmap@^1.2.3: es-abstract "^1.17.0-next.1" function-bind "^1.1.1" -arraybuffer.slice@~0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675" - integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog== - arrify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -4115,17 +4119,10 @@ axe-core@^3.5.4: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-3.5.5.tgz#84315073b53fa3c0c51676c588d59da09a192227" integrity sha512-5P0QZ6J5xGikH780pghEdbEKijCTrruK9KxtPZCFWUpef0f6GipO+xEZ5GKCb020mmqgbiNO6TcA55CriL784Q== -axios@^0.19.0: - version "0.19.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" - integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== - dependencies: - follow-redirects "1.5.10" - -axios@^0.20.0: - version "0.20.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.20.0.tgz#057ba30f04884694993a8cd07fa394cff11c50bd" - integrity sha512-ANA4rr2BDcmmAQLOKft2fufrtuvlqR+cXNNinUmvfeSNCOF98PZL+7M/v1zIdGo7OLjEA9J2gXJL+j4zGsl0bA== +axios@^0.21.0, axios@^0.21.1: + version "0.21.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" + integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== dependencies: follow-redirects "^1.10.0" @@ -4192,12 +4189,10 @@ babel-loader@^8.1.0: pify "^4.0.1" schema-utils "^2.6.5" -babel-plugin-add-module-exports@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.3.3.tgz#b9f7c0a93b989170dce07c3e97071a905a13fc29" - integrity sha512-hC37mm7aAdEb1n8SgggG8a1QuhZapsY/XLCi4ETSH6AVjXBCWEa50CXlOsAMPPWLnSx5Ns6mzz39uvuseh0Xjg== - optionalDependencies: - chokidar "^2.0.4" +babel-plugin-add-module-exports@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-1.0.4.tgz#6caa4ddbe1f578c6a5264d4d3e6c8a2720a7ca2b" + integrity sha512-g+8yxHUZ60RcyaUpfNzy56OtWW+x9cyEe9j+CranqLiqbju2yf/Cy6ZtYK40EZxtrdHllzlVZgLmcOUCTlJ7Jg== babel-plugin-apply-mdx-type-prop@1.6.21: version "1.6.21" @@ -4275,7 +4270,7 @@ babel-plugin-jest-hoist@^26.0.0: "@babel/types" "^7.3.3" "@types/babel__traverse" "^7.0.6" -babel-plugin-lodash@3.3.4: +babel-plugin-lodash@^3.3.4: version "3.3.4" resolved "https://registry.yarnpkg.com/babel-plugin-lodash/-/babel-plugin-lodash-3.3.4.tgz#4f6844358a1340baed182adbeffa8df9967bc196" integrity sha512-yDZLjK7TCkWl1gpBeBGmuaDIFhZKmkoL+Cu2MUUjv5VxUZx/z7tBGBCBcQs5RI1Bkz5LLmNdjx7paOyQtMovyg== @@ -4300,10 +4295,10 @@ babel-plugin-prismjs@^2.0.1: resolved "https://registry.yarnpkg.com/babel-plugin-prismjs/-/babel-plugin-prismjs-2.0.1.tgz#b56095f423926662259de8f5ee50a7afbcf0fd92" integrity sha512-GqQGa3xX3Z2ft97oDbGvEFoxD8nKqb3ZVszrOc5H7icnEUA56BIjVYm86hfZZA82uuHLwTIfCXbEKzKG1BzKzg== -babel-plugin-remove-graphql-queries@^2.14.0: - version "2.14.0" - resolved "https://registry.yarnpkg.com/babel-plugin-remove-graphql-queries/-/babel-plugin-remove-graphql-queries-2.14.0.tgz#d34dbc8aaa4eb2b6f11165c63bf3c226b283194b" - integrity sha512-7uc3CzyMZRuGVU69RZ/vJ4+jYeuyIbT9dTMjX2wu3QJ+TcRAaW3MJVxG5cN7YhCBv0S0/KIqXdh6BpSYswzUkw== +babel-plugin-remove-graphql-queries@^2.16.1: + version "2.16.1" + resolved "https://registry.yarnpkg.com/babel-plugin-remove-graphql-queries/-/babel-plugin-remove-graphql-queries-2.16.1.tgz#bacfcd87eabdfffe025072c11602a9586cd0285a" + integrity sha512-PkHJuRodMp4p617a/ZVhV8elBhRoFpOTpdu2DaApXJFIsDJWhjZ8d4BGbbFCT/yKJrhRDTdqg1r5AhWEaEUKkw== babel-plugin-syntax-jsx@^6.18.0: version "6.18.0" @@ -4344,10 +4339,10 @@ babel-preset-current-node-syntax@^0.1.2: "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -babel-preset-gatsby@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/babel-preset-gatsby/-/babel-preset-gatsby-0.10.0.tgz#a7870e340f1125622cc70bd43a722982c587bdda" - integrity sha512-lcP5h4hUUUDRGTXvJfhDjY6NNSNeOagZlN1fW9HwBTk9ZnkExImDCclNdh88Bq7Wvygnmm/3CHcahCU8lcGMmA== +babel-preset-gatsby@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/babel-preset-gatsby/-/babel-preset-gatsby-0.11.0.tgz#06e769ec8888dfa3bda17762def15dca3cc59bae" + integrity sha512-0kZ5KK02RKmnCab897XOP1xWcFthumcmI6Y3R0gFBv4w4qZR4fTLk/iIeNz24oQGaRXO0QprsssdVEVfDlewNw== dependencies: "@babel/plugin-proposal-class-properties" "^7.12.1" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" @@ -4361,18 +4356,19 @@ babel-preset-gatsby@^0.10.0: babel-plugin-dynamic-import-node "^2.3.3" babel-plugin-macros "^2.8.0" babel-plugin-transform-react-remove-prop-types "^0.4.24" - gatsby-core-utils "^1.8.0" - gatsby-legacy-polyfills "^0.5.0" + gatsby-core-utils "^1.9.0" + gatsby-legacy-polyfills "^0.6.0" -babel-preset-gatsby@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/babel-preset-gatsby/-/babel-preset-gatsby-0.11.0.tgz#06e769ec8888dfa3bda17762def15dca3cc59bae" - integrity sha512-0kZ5KK02RKmnCab897XOP1xWcFthumcmI6Y3R0gFBv4w4qZR4fTLk/iIeNz24oQGaRXO0QprsssdVEVfDlewNw== +babel-preset-gatsby@^0.12.2: + version "0.12.2" + resolved "https://registry.yarnpkg.com/babel-preset-gatsby/-/babel-preset-gatsby-0.12.2.tgz#784d41fd622afd50fbf8d9bcde0cdf48d5b78152" + integrity sha512-MQhUnp+DO9FFCdSyhXkLsNpuTxIkB02NnA9eOkV5HtJsRIhX85ZYw+pJeSTPl9d3QdEP/GyiQWPHigU6TAOyqg== dependencies: "@babel/plugin-proposal-class-properties" "^7.12.1" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" "@babel/plugin-proposal-optional-chaining" "^7.12.1" "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-transform-classes" "^7.12.1" "@babel/plugin-transform-runtime" "^7.12.1" "@babel/plugin-transform-spread" "^7.12.1" "@babel/preset-env" "^7.12.1" @@ -4381,8 +4377,8 @@ babel-preset-gatsby@^0.11.0: babel-plugin-dynamic-import-node "^2.3.3" babel-plugin-macros "^2.8.0" babel-plugin-transform-react-remove-prop-types "^0.4.24" - gatsby-core-utils "^1.9.0" - gatsby-legacy-polyfills "^0.6.0" + gatsby-core-utils "^1.10.1" + gatsby-legacy-polyfills "^0.7.0" babel-preset-jest@^26.0.0: version "26.0.0" @@ -4405,7 +4401,7 @@ babylon@^6.18.0: resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== -backo2@1.0.2, backo2@^1.0.2: +backo2@^1.0.2, backo2@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" integrity sha1-MasayLEpNjRj41s+u2n038+6eUc= @@ -4425,17 +4421,12 @@ base64-arraybuffer@0.1.4: resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz#9818c79e059b1355f97e0428a017c838e90ba812" integrity sha1-mBjHngWbE1X5fgQooBfIOOkLqBI= -base64-arraybuffer@0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" - integrity sha1-c5JncZI7Whl0etZmqlzUv5xunOg= - base64-js@^1.0.2: version "1.3.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== -base64id@2.0.0: +base64id@2.0.0, base64id@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== @@ -4465,13 +4456,6 @@ bcrypt-pbkdf@^1.0.0, bcrypt-pbkdf@^1.0.2: dependencies: tweetnacl "^0.14.3" -better-assert@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" - integrity sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI= - dependencies: - callsite "1.0.0" - better-opn@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/better-opn/-/better-opn-2.1.1.tgz#94a55b4695dc79288f31d7d0e5f658320759f7c6" @@ -4572,11 +4556,6 @@ bl@^1.0.0, bl@^4.0.0, bl@^4.0.1, bl@^4.0.3: inherits "^2.0.4" readable-stream "^3.4.0" -blob@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" - integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== - block-stream@*: version "0.0.9" resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" @@ -4882,11 +4861,6 @@ bufferutil@^4.0.1: dependencies: node-gyp-build "~3.7.0" -builtin-modules@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" - integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== - builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" @@ -5037,11 +5011,6 @@ caller-path@^2.0.0: dependencies: caller-callsite "^2.0.0" -callsite@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" - integrity sha1-KAOY5dZkvXQDi28JBRU+borxvCA= - callsites@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" @@ -5304,7 +5273,7 @@ child-process@^1.0.2: resolved "https://registry.yarnpkg.com/child-process/-/child-process-1.0.2.tgz#98974dc7ed1ee4c6229f8e305fa7313a6885a7f2" integrity sha1-mJdNx+0e5MYin44wX6cxOmiFp/I= -chokidar@^2.0.4, chokidar@^2.1.8: +chokidar@^2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== @@ -5323,7 +5292,7 @@ chokidar@^2.0.4, chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" -chokidar@^3.4.1, chokidar@^3.4.2, chokidar@^3.4.3: +chokidar@^3.4.1, chokidar@^3.4.2: version "3.4.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ== @@ -5338,6 +5307,21 @@ chokidar@^3.4.1, chokidar@^3.4.2, chokidar@^3.4.3: optionalDependencies: fsevents "~2.1.2" +chokidar@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" + integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.5.0" + optionalDependencies: + fsevents "~2.3.1" + chownr@^1.1.1, chownr@^1.1.2: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" @@ -5412,16 +5396,6 @@ cli-spinner@0.2.10: resolved "https://registry.yarnpkg.com/cli-spinner/-/cli-spinner-0.2.10.tgz#f7d617a36f5c47a7bc6353c697fc9338ff782a47" integrity sha512-U0sSQ+JJvSLi1pAYuJykwiA8Dsr15uHEy85iCJ6A+0DjVxivr3d+N2Wjvodeg89uP5K6TswFkKBfAD7B3YSn/Q== -cli-table3@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" - integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== - dependencies: - object-assign "^4.1.0" - string-width "^2.1.1" - optionalDependencies: - colors "^1.1.2" - cli-width@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" @@ -5571,11 +5545,6 @@ colorette@^1.2.0, colorette@^1.2.1: resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== -colors@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -5613,26 +5582,11 @@ compare-versions@^3.6.0: resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== -component-bind@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" - integrity sha1-AMYIq33Nk4l8AAllGx06jh5zu9E= - -component-emitter@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" - integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= - component-emitter@^1.2.1, component-emitter@~1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== -component-inherit@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" - integrity sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM= - component-props@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/component-props/-/component-props-1.1.1.tgz#f9b7df9b9927b6e6d97c9bd272aa867670f34944" @@ -5758,23 +5712,24 @@ content-type@^1.0.4, content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -contentful-management@^5.26.3: - version "5.28.0" - resolved "https://registry.yarnpkg.com/contentful-management/-/contentful-management-5.28.0.tgz#f3b58d60400d66e42439bbd9085cecb0e486f0bb" - integrity sha512-o+qihN3zrD6+/BT/e8n26jl/zQvmV6+9S6NY5QDmzM+IaiSeCk6yvPMq74s+IZT9mOS54igl6qFTbeIpdJ9FDA== +contentful-management@^7.5.1: + version "7.9.0" + resolved "https://registry.yarnpkg.com/contentful-management/-/contentful-management-7.9.0.tgz#161a55b91473332542abe3030d16f8bb0805edd4" + integrity sha512-9jXsX1QJrHFl2ao1j2pwHteW7vUe4/pus0Xm9GObMnyASeG1g9d/VCP6b4FoPek0Y8uEe1YjLGYxzM3YJha1kg== dependencies: - axios "^0.19.0" - contentful-sdk-core "^6.4.0" - lodash "^4.17.11" - type-fest "0.15.1" + axios "^0.21.0" + contentful-sdk-core "^6.7.0" + fast-copy "^2.1.0" + lodash.isplainobject "^4.0.6" + type-fest "0.20.2" -contentful-sdk-core@^6.4.0: - version "6.4.6" - resolved "https://registry.yarnpkg.com/contentful-sdk-core/-/contentful-sdk-core-6.4.6.tgz#a94b1355afd292dfddb0cdc16b565980f9a03c47" - integrity sha512-6KVLeCdn1akqjGvVMUgMxQ3B+zNIYeq3MUlqWsSLLJozr++0ZYWU76XmHf4n5MPTMoX9RGbRSR8hJAaKcUNDFw== +contentful-sdk-core@^6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/contentful-sdk-core/-/contentful-sdk-core-6.7.0.tgz#c014f12d7a716548c248e905dd8e095a6dbf7a0f" + integrity sha512-+b8UXVE249Z6WzMLXvsu3CIvN/s5xXRZ9o+zY7zDdPkIYBMW15xcs9N2ATI6ncmc+s1uj4XZij/2skflletHiw== dependencies: - lodash "^4.17.10" - qs "^6.5.2" + fast-copy "^2.1.0" + qs "^6.9.4" convert-hrtime@^3.0.0: version "3.0.0" @@ -5793,16 +5748,16 @@ cookie-signature@1.0.6: resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= -cookie@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" - integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= - cookie@0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== +cookie@~0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" + integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== + copy-concurrently@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" @@ -5881,7 +5836,7 @@ core-util-is@1.0.2, core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cors@^2.8.5: +cors@^2.8.5, cors@~2.8.5: version "2.8.5" resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== @@ -5931,10 +5886,10 @@ create-emotion@^9.2.12: stylis "^3.5.0" stylis-rule-sheet "^0.0.10" -create-gatsby@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/create-gatsby/-/create-gatsby-0.3.0.tgz#f3dc214d81397d9ee0ff9b90dfcaa43712536e91" - integrity sha512-s2uKhikANIqFY/v2mBkB3D7JgGUx3P5tMdewLfd2gnAIoJnFO3F94M+xPGkpWhJ3E8k3t2BkLIAZPC80tNIY2w== +create-gatsby@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/create-gatsby/-/create-gatsby-0.5.1.tgz#a99519416c1a73ae27562b9035b6357f22748319" + integrity sha512-iQ3Z757x02uw9Z3ereR/+RNjiQPCKLEAh3GLqfcTNNVeGgRd07XdgIgGIZrbuNaKL/3EGdfejd7ElJ1UBLQSHQ== create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" @@ -6334,7 +6289,7 @@ debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.6, de dependencies: ms "2.0.0" -debug@3.1.0, debug@=3.1.0, debug@~3.1.0: +debug@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== @@ -6348,21 +6303,28 @@ debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: dependencies: ms "2.1.2" -debug@^3.0.0, debug@^3.1.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: +debug@^3.0.0, debug@^3.1.0, debug@^3.1.1, debug@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== dependencies: ms "^2.1.1" -debug@^4.0.0, debug@~4.1.0: +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.0.0: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== dependencies: ms "^2.1.1" -debug@^4.2.0: +debug@^4.2.0, debug@^4.3.1, debug@~4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== @@ -6473,7 +6435,7 @@ decompress@^4.0.0, decompress@^4.2.0: pify "^2.3.0" strip-dirs "^2.0.0" -deep-equal@^1.0.1, deep-equal@^1.1.0: +deep-equal@^1.0.1: version "1.1.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== @@ -6628,11 +6590,6 @@ detab@2.0.3, detab@^2.0.0: dependencies: repeat-string "^1.5.4" -detect-indent@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" - integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== - detect-libc@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" @@ -7135,45 +7092,41 @@ endian-reader@^0.3.0: resolved "https://registry.yarnpkg.com/endian-reader/-/endian-reader-0.3.0.tgz#84eca436b80aed0d0639c47291338b932efe50a0" integrity sha1-hOykNrgK7Q0GOcRykTOLky7+UKA= -engine.io-client@~3.4.0: - version "3.4.4" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.4.4.tgz#77d8003f502b0782dd792b073a4d2cf7ca5ab967" - integrity sha512-iU4CRr38Fecj8HoZEnFtm2EiKGbYZcPn3cHxqNGl/tmdWRf60KhK+9vE0JeSjgnlS/0oynEfLgKbT9ALpim0sQ== +engine.io-client@~4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-4.1.2.tgz#823b4f005360321c41445fc23ce8ee028ef2e36b" + integrity sha512-1mwvwKYMa0AaCy+sPgvJ/SnKyO5MJZ1HEeXfA3Rm/KHkHGiYD5bQVq8QzvIrkI01FuVtOdZC5lWdRw1BGXB2NQ== dependencies: + base64-arraybuffer "0.1.4" component-emitter "~1.3.0" - component-inherit "0.0.3" - debug "~3.1.0" - engine.io-parser "~2.2.0" + debug "~4.3.1" + engine.io-parser "~4.0.1" has-cors "1.1.0" - indexof "0.0.1" parseqs "0.0.6" parseuri "0.0.6" - ws "~6.1.0" + ws "~7.4.2" xmlhttprequest-ssl "~1.5.4" yeast "0.1.2" -engine.io-parser@~2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.2.1.tgz#57ce5611d9370ee94f99641b589f94c97e4f5da7" - integrity sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg== +engine.io-parser@~4.0.0, engine.io-parser@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-4.0.2.tgz#e41d0b3fb66f7bf4a3671d2038a154024edb501e" + integrity sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg== dependencies: - after "0.8.2" - arraybuffer.slice "~0.0.7" base64-arraybuffer "0.1.4" - blob "0.0.5" - has-binary2 "~1.0.2" -engine.io@~3.4.0: - version "3.4.2" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.4.2.tgz#8fc84ee00388e3e228645e0a7d3dfaeed5bd122c" - integrity sha512-b4Q85dFkGw+TqgytGPrGgACRUhsdKc9S9ErRAXpPGy/CXKs4tYoHDkvIRdsseAF7NjfVwjRFIn6KTnbw7LwJZg== +engine.io@~4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-4.1.1.tgz#9a8f8a5ac5a5ea316183c489bf7f5b6cf91ace5b" + integrity sha512-t2E9wLlssQjGw0nluF6aYyfX8LwYU8Jj0xct+pAhfWfv/YrBn6TSNtEYsgxHIfaMqfrLx07czcMg9bMN6di+3w== dependencies: accepts "~1.3.4" base64id "2.0.0" - cookie "0.3.1" - debug "~4.1.0" - engine.io-parser "~2.2.0" - ws "^7.1.2" + cookie "~0.4.1" + cors "~2.8.5" + debug "~4.3.1" + engine.io-parser "~4.0.0" + ws "~7.4.2" enhanced-resolve@^4.3.0: version "4.3.0" @@ -7276,7 +7229,7 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -es5-ext@^0.10.35, es5-ext@^0.10.50: +es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: version "0.10.53" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== @@ -7285,7 +7238,7 @@ es5-ext@^0.10.35, es5-ext@^0.10.50: es6-symbol "~3.1.3" next-tick "~1.0.0" -es6-iterator@~2.0.3: +es6-iterator@^2.0.3, es6-iterator@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= @@ -7314,6 +7267,16 @@ es6-symbol@^3.1.1, es6-symbol@~3.1.3: d "^1.0.1" ext "^1.1.2" +es6-weak-map@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" + integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== + dependencies: + d "1" + es5-ext "^0.10.46" + es6-iterator "^2.0.3" + es6-symbol "^3.1.1" + escalade@^3.1.0, escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -7735,6 +7698,14 @@ eval@^0.1.0, eval@^0.1.4: dependencies: require-like ">= 0.1.1" +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= + dependencies: + d "1" + es5-ext "~0.10.14" + event-loop-spinner@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/event-loop-spinner/-/event-loop-spinner-2.0.0.tgz#3aa949264a7d80be45d6cb782ab5e97ffc87b9e1" @@ -8025,6 +7996,11 @@ extsprintf@1.3.0, extsprintf@^1.2.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= +fast-copy@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/fast-copy/-/fast-copy-2.1.1.tgz#f5cbcf2df64215e59b8e43f0b2caabc19848083a" + integrity sha512-Qod3DdRgFZ8GUIM6ygeoZYpQ0QLW9cf/FS9KhhjlYggcSZXWAemAw8BOCO5LuYCrR3Uj3qXDVTUzOUwG8C7beQ== + fast-deep-equal@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" @@ -8082,6 +8058,13 @@ fastparse@^1.1.2: resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== +fastq@^1.10.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858" + integrity sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g== + dependencies: + reusify "^1.0.4" + fastq@^1.6.0: version "1.8.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.8.0.tgz#550e1f9f59bbc65fe185cb6a9b4d95357107f481" @@ -8089,14 +8072,7 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" -faye-websocket@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" - integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= - dependencies: - websocket-driver ">=0.5.1" - -faye-websocket@~0.11.0, faye-websocket@~0.11.1: +faye-websocket@^0.11.3, faye-websocket@~0.11.0: version "0.11.3" resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== @@ -8365,13 +8341,6 @@ flush-write-stream@^1.0.0: inherits "^2.0.3" readable-stream "^2.3.6" -follow-redirects@1.5.10: - version "1.5.10" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" - integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== - dependencies: - debug "=3.1.0" - follow-redirects@^1.0.0, follow-redirects@^1.10.0: version "1.13.0" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.0.tgz#b42e8d93a2a7eea5ed88633676d6597bc8e384db" @@ -8512,6 +8481,11 @@ fsevents@^2.1.2, fsevents@~2.1.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== +fsevents@~2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + fstream@^1.0.0, fstream@^1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" @@ -8540,10 +8514,10 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -gatsby-cli@^2.17.1: - version "2.17.1" - resolved "https://registry.yarnpkg.com/gatsby-cli/-/gatsby-cli-2.17.1.tgz#94f271f8ad4d1207d09c8ff21509e0f6216d4fb4" - integrity sha512-uyM1dZx8ALQp5UO30oPDPttEX5eASAM/FLjC9DA7f5cAy0xflMNs9CZB+w6xVoUKDadabZzdyGWB2INMiQn36A== +gatsby-cli@^2.19.2: + version "2.19.2" + resolved "https://registry.yarnpkg.com/gatsby-cli/-/gatsby-cli-2.19.2.tgz#0a0c3b719af4ec49fef066081d09be41a7eda892" + integrity sha512-Z6y0MgYC07uLF1jBtcLoFJfD9iX+CeaNMbpet7qrolNjig8v5ukyttvn5GUAliwC4ifwCJpbURkXKPFicr0KrA== dependencies: "@babel/code-frame" "^7.10.4" "@hapi/joi" "^15.1.1" @@ -8554,14 +8528,14 @@ gatsby-cli@^2.17.1: common-tags "^1.8.0" configstore "^5.0.1" convert-hrtime "^3.0.0" - create-gatsby "^0.3.0" + create-gatsby "^0.5.1" envinfo "^7.7.3" execa "^3.4.0" fs-exists-cached "^1.0.0" fs-extra "^8.1.0" - gatsby-core-utils "^1.8.0" - gatsby-recipes "^0.7.1" - gatsby-telemetry "^1.8.1" + gatsby-core-utils "^1.10.1" + gatsby-recipes "^0.9.2" + gatsby-telemetry "^1.10.1" hosted-git-info "^3.0.6" is-valid-path "^0.1.1" lodash "^4.17.20" @@ -8582,7 +8556,20 @@ gatsby-cli@^2.17.1: uuid "3.4.0" yargs "^15.4.1" yoga-layout-prebuilt "^1.9.6" - yurnalist "^1.1.2" + yurnalist "^2.1.0" + +gatsby-core-utils@^1.10.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/gatsby-core-utils/-/gatsby-core-utils-1.10.1.tgz#97bed40df3fa79800e7ce0c0491680f0aadd6ce7" + integrity sha512-4P3feGCJckg+DRWWl2beFk7N9c63zmCryEGPaU1OHCp+ZT2bO0ihCBuXywDWuuEp6SYP9PZ1fs0YJ/Rt6q6lag== + dependencies: + ci-info "2.0.0" + configstore "^5.0.1" + fs-extra "^8.1.0" + node-object-hash "^2.0.0" + proper-lockfile "^4.1.1" + tmp "^0.2.1" + xdg-basedir "^4.0.0" gatsby-core-utils@^1.3.22, gatsby-core-utils@^1.3.23: version "1.3.23" @@ -8636,19 +8623,6 @@ gatsby-core-utils@^1.6.0: tmp "^0.2.1" xdg-basedir "^4.0.0" -gatsby-core-utils@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/gatsby-core-utils/-/gatsby-core-utils-1.8.0.tgz#712579cd94d28c71f50202f073e15b8781f8b195" - integrity sha512-MurWnytVVG9rOai0oAdcCsLODqj7P7Y9ndoAswHDk6hrlsWwiRMOsDS1kEyL7n2BM7lhgzZ+gz9OaOukqU1BhA== - dependencies: - ci-info "2.0.0" - configstore "^5.0.1" - fs-extra "^8.1.0" - node-object-hash "^2.0.0" - proper-lockfile "^4.1.1" - tmp "^0.2.1" - xdg-basedir "^4.0.0" - gatsby-core-utils@^1.9.0: version "1.9.0" resolved "https://registry.yarnpkg.com/gatsby-core-utils/-/gatsby-core-utils-1.9.0.tgz#ff349cc2013fd06a85099b3aee061b01f64ceabb" @@ -8662,10 +8636,10 @@ gatsby-core-utils@^1.9.0: tmp "^0.2.1" xdg-basedir "^4.0.0" -gatsby-graphiql-explorer@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/gatsby-graphiql-explorer/-/gatsby-graphiql-explorer-0.9.0.tgz#5c0c1df9c5fc3d3275f158599349d97859f6395e" - integrity sha512-n6eAbeVuHn67/8n0iHJ0hOIKs3Cuw4qvukbPF0iWbGQsJSoR6X+eFB4jreaAYagyPheWSdMUSD9pnDovYaBncg== +gatsby-graphiql-explorer@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/gatsby-graphiql-explorer/-/gatsby-graphiql-explorer-0.11.0.tgz#2fe20ddb756180cf3a86defb2f24326ba0c9b062" + integrity sha512-mmxQhQSDUkbtOhQUek9a9sSg6LpiQUytNNR2hec8iklau2D4MDA5CvHTk9GUGhjdUgtnHSe/MPyZVJGmXSnYAA== dependencies: "@babel/runtime" "^7.12.5" @@ -8678,13 +8652,6 @@ gatsby-image@^2.4.20: object-fit-images "^3.2.4" prop-types "^15.7.2" -gatsby-legacy-polyfills@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/gatsby-legacy-polyfills/-/gatsby-legacy-polyfills-0.5.0.tgz#a4d12df5dd107993543021b6127b73d568d17d22" - integrity sha512-BdUQnMYd1o49+TwcTvhHeptwWzkRVFPIMA1a5FmdACZt0jl2SE5MNXiiPpa1U4hOG0e7fnMJtwm/sbarPO5Ymg== - dependencies: - core-js-compat "^3.6.5" - gatsby-legacy-polyfills@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/gatsby-legacy-polyfills/-/gatsby-legacy-polyfills-0.6.0.tgz#e751864f179f8e61de8bfdd1aab4532496b9be9a" @@ -8692,25 +8659,32 @@ gatsby-legacy-polyfills@^0.6.0: dependencies: core-js-compat "^3.6.5" -gatsby-link@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/gatsby-link/-/gatsby-link-2.9.0.tgz#8507653835503f554426d054ab0007174d0b6030" - integrity sha512-MT1qAVYhkWPaTSAizVABVMt6WuSv7O8b0YZSbGIUx4vRKIq3DcbjY1Kikf2RrysXDa3/p3c+E5fUMiy8h5lfuQ== +gatsby-legacy-polyfills@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/gatsby-legacy-polyfills/-/gatsby-legacy-polyfills-0.7.0.tgz#8ef8aeeb59b6679920489edb2493ac16bcd03c82" + integrity sha512-fHDJeFib1iNaFuNRMWOpTmu2aw0AZ1ViIzwY2ar4kL3X3fYDL4RLnoBaw6Fcyc/sCCYHdBDSGzb/imvsddkRaA== + dependencies: + core-js-compat "^3.6.5" + +gatsby-link@^2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/gatsby-link/-/gatsby-link-2.11.0.tgz#15e99c89bdde1c99686ce53bda72beb3c9c39455" + integrity sha512-AYXxndlSx5mnYv+/PBPdPBRvdv1LeSGE3WO8uYj2ReYDSbhiAlF3KKz30D62ErartXP0deySPtRKx4Dd3nCFYw== dependencies: "@babel/runtime" "^7.12.5" - "@types/reach__router" "^1.3.6" + "@types/reach__router" "^1.3.7" prop-types "^15.7.2" -gatsby-page-utils@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/gatsby-page-utils/-/gatsby-page-utils-0.7.0.tgz#1bdd9a617bc6eb33458bc04632cce5698bef1c20" - integrity sha512-3tts3ItXERhA9rDtiCw/Xdni+ALqC7EWUPd4Yg8JsfRAifGE078Ai2x52rO+7r7u0KzaO8PnOKUsOVFlkWVmSw== +gatsby-page-utils@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/gatsby-page-utils/-/gatsby-page-utils-0.9.1.tgz#93cf757bda303f66ca5ffd14c4308effae883a5b" + integrity sha512-UHedSs64HXzoivCk7ZdE9139hi34CcZfexP+Vxe2Zt4aK+MeXowec8VdxKD3Pp08O/YEGKBv2TtSV9gSR/lt2g== dependencies: "@babel/runtime" "^7.12.5" bluebird "^3.7.2" - chokidar "^3.4.3" + chokidar "^3.5.1" fs-exists-cached "^1.0.0" - gatsby-core-utils "^1.8.0" + gatsby-core-utils "^1.10.1" glob "^7.1.6" lodash "^4.17.20" micromatch "^4.0.2" @@ -8826,18 +8800,18 @@ gatsby-plugin-offline@^3.2.32: lodash "^4.17.20" workbox-build "^4.3.1" -gatsby-plugin-page-creator@^2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-2.8.1.tgz#c8b17a062332e4ba7c940ffbe8025ee2d4d244c9" - integrity sha512-jMdPVBcpmoHkneknP/t03W1DxwW9SGHTaOFi15tOovDZ10/qpmOoz9gM4Toej0Ap0tjHTuPelLm8GgS7vlX2LQ== +gatsby-plugin-page-creator@^2.10.1: + version "2.10.1" + resolved "https://registry.yarnpkg.com/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-2.10.1.tgz#2b2e651d12a605d91047b99893fa41720e18b45d" + integrity sha512-hNckbeemjTm0SFpellmwkgw5RkjaEiw31ekSesZgRkh+IrlB3HXfRtXRCXtEkVPbrnbOpHrSLgWrNmyM8KcI4w== dependencies: "@babel/traverse" "^7.12.5" "@sindresorhus/slugify" "^1.1.0" - chokidar "^3.4.2" + chokidar "^3.5.1" fs-exists-cached "^1.0.0" - gatsby-page-utils "^0.7.0" - gatsby-telemetry "^1.8.1" - globby "^11.0.1" + gatsby-page-utils "^0.9.1" + gatsby-telemetry "^1.10.1" + globby "^11.0.2" lodash "^4.17.20" gatsby-plugin-react-helmet@^3.3.10, gatsby-plugin-react-helmet@^3.3.12: @@ -8908,10 +8882,10 @@ gatsby-plugin-sitemap@^2.4.17: pify "^3.0.0" sitemap "^1.13.0" -gatsby-plugin-typescript@^2.10.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/gatsby-plugin-typescript/-/gatsby-plugin-typescript-2.10.0.tgz#d6cd190384804eb8b7d1e1fb1e6e132b8fa0bdda" - integrity sha512-1mf7zrFVE5UEut+3YRnb3N2XareM0Xk4Mfzw0K89ASqWT4R4QaEIxycsjPERBZMFy0GLWt8e0Hl93Wwn+eefwg== +gatsby-plugin-typescript@^2.12.1: + version "2.12.1" + resolved "https://registry.yarnpkg.com/gatsby-plugin-typescript/-/gatsby-plugin-typescript-2.12.1.tgz#cb2f009d5c015a7703578b86608e90d71b55e9ae" + integrity sha512-p32qJVDi5Xw1Oo5vLMUXdRBxSDlMrfxTGb7etMAsVfyLRlRhMLb2YsuXJIvN1IfybQ6Z3EbhlH293cpxn5jozg== dependencies: "@babel/core" "^7.12.3" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" @@ -8919,7 +8893,7 @@ gatsby-plugin-typescript@^2.10.0: "@babel/plugin-proposal-optional-chaining" "^7.12.1" "@babel/preset-typescript" "^7.12.1" "@babel/runtime" "^7.12.5" - babel-plugin-remove-graphql-queries "^2.14.0" + babel-plugin-remove-graphql-queries "^2.16.1" gatsby-plugin-use-dark-mode@^1.1.2: version "1.1.2" @@ -8944,24 +8918,24 @@ gatsby-plugin-utils@^0.2.40: dependencies: joi "^17.2.1" -gatsby-plugin-utils@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/gatsby-plugin-utils/-/gatsby-plugin-utils-0.7.0.tgz#bc511319a25241b31456f8178b8414bae8c48838" - integrity sha512-fClolFlWQvczukRQhLfdFtz9GXIehgf567HJbggC2oPkVT0NCwwNPAAjVq1CcmxQE8k/kcp7kxQVc86pVcWuzA== +gatsby-plugin-utils@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/gatsby-plugin-utils/-/gatsby-plugin-utils-0.9.0.tgz#64b35a0faaabad5b5c99ee8951a9c08cd64be289" + integrity sha512-InM8PNHtx1kF87qQOlf4pVeNA8lSIsvSjImvN6dvpUjeQqOMRN1avY0W9Trh6LKTF/keWWj975Gk8Vcr+PYyDA== dependencies: joi "^17.2.1" -gatsby-react-router-scroll@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/gatsby-react-router-scroll/-/gatsby-react-router-scroll-3.5.0.tgz#4b1e92058dab346e13f7479037c7ef8ec4332a22" - integrity sha512-VAwM6UqYPmIz9POpeHdKv+t/0bv7S6+LyVOP6zou0HhbBruRMcx5HfBFLTnmI1vFf8NwH/JwpOvHYPvI8eBeYw== +gatsby-react-router-scroll@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/gatsby-react-router-scroll/-/gatsby-react-router-scroll-3.7.0.tgz#4b519c517f09f263275d3ac9001efe3d1f2b5957" + integrity sha512-8sm04EQac7fccJZlllFEo349wAlNEuPVu35juuL0hgMDTyWlk4nPwPH/ACdpn2MgpEmrTSfp2yPxyzaRKVyzeQ== dependencies: "@babel/runtime" "^7.12.5" -gatsby-recipes@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/gatsby-recipes/-/gatsby-recipes-0.7.1.tgz#a9abda5dc1c6be55858490cfc0aae3f3bef3920b" - integrity sha512-DVamMJ9dIxcdd5K9F0WINEhfZv1eF4ls/t4swUPsy8v6kQB8DC9suYYCueyFZl9waCR7dNeX4jAPs+2Z7eUeSw== +gatsby-recipes@^0.9.2: + version "0.9.2" + resolved "https://registry.yarnpkg.com/gatsby-recipes/-/gatsby-recipes-0.9.2.tgz#04ece7eaec2c6f08ac0b71fa2ef1829344b07153" + integrity sha512-+jcVzYh7RUxvU1yxdUdUfp06nrwl8y/G9FUWC7izho/t65R3IYTJo2danTwxiva6jPRWLfjfolNwD7m1rQ1KRA== dependencies: "@babel/core" "^7.12.3" "@babel/generator" "^7.12.5" @@ -8977,23 +8951,23 @@ gatsby-recipes@^0.7.1: "@hapi/joi" "^15.1.1" better-queue "^3.8.10" chokidar "^3.4.2" - contentful-management "^5.26.3" + contentful-management "^7.5.1" cors "^2.8.5" - debug "^4.1.1" + debug "^4.3.1" detect-port "^1.3.0" dotenv "^8.2.0" execa "^4.0.2" express "^4.17.1" express-graphql "^0.9.0" fs-extra "^8.1.0" - gatsby-core-utils "^1.8.0" - gatsby-telemetry "^1.8.1" + gatsby-core-utils "^1.10.1" + gatsby-telemetry "^1.10.1" glob "^7.1.6" graphql "^14.6.0" graphql-compose "^6.3.8" graphql-subscriptions "^1.1.0" graphql-type-json "^0.3.2" - hicat "^0.7.0" + hicat "^0.8.0" is-binary-path "^2.1.0" is-url "^1.2.4" jest-diff "^25.5.0" @@ -9091,10 +9065,10 @@ gatsby-source-filesystem@^2.3.35: valid-url "^1.0.9" xstate "^4.13.0" -gatsby-telemetry@^1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/gatsby-telemetry/-/gatsby-telemetry-1.8.1.tgz#c9fefb0a16d437c9ddb4722fd92909c390bf0c4e" - integrity sha512-Az+2rArUf2Qxef6dOxYIo6SadRSFHWCckZGThiedwWguvjz4WLF4G4d7k1q/6BvzIu+tk/SrH+/fQ/Un6WOXPQ== +gatsby-telemetry@^1.10.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/gatsby-telemetry/-/gatsby-telemetry-1.10.1.tgz#f32ed4fa9bb4d352cf9f1f973e5474d3d6d4a2d0" + integrity sha512-iIXWHD6CSePzL77ZeBnWVRHKh9MxB8QaEf1eRUODH8uqK7GnyV34zJclSD4EIGVFWwd419MhrWqI1oE9iouskA== dependencies: "@babel/code-frame" "^7.10.4" "@babel/runtime" "^7.12.5" @@ -9104,7 +9078,7 @@ gatsby-telemetry@^1.8.1: boxen "^4.2.0" configstore "^5.0.1" fs-extra "^8.1.0" - gatsby-core-utils "^1.8.0" + gatsby-core-utils "^1.10.1" git-up "^4.0.2" is-docker "^2.1.1" lodash "^4.17.20" @@ -9164,10 +9138,10 @@ gatsby-transformer-sharp@^2.5.20: semver "^7.3.2" sharp "^0.25.4" -gatsby@^2.30.2: - version "2.30.2" - resolved "https://registry.yarnpkg.com/gatsby/-/gatsby-2.30.2.tgz#e3dba172457aadd4d02e2510bea3dca1e7e673de" - integrity sha512-ioJnAFTyq2BoNL6BECXx6ZWyLY3yu7ZrmT2T4PSFhef8MQeeflL4lbdom3tv3J4R4YQO0bY4vV5yGlxgQtQfBw== +gatsby@^2.32.9: + version "2.32.9" + resolved "https://registry.yarnpkg.com/gatsby/-/gatsby-2.32.9.tgz#8ce47133b143acaa577f8cf0907be89afa3fa514" + integrity sha512-4QyrOUGLG6V51YSOJW+cFmRDcey6DnF8YMbsOQ1efp9MJ91fSgOI3r6dYd6lc1lJwppN4KZWbqE9WOXtFgda7w== dependencies: "@babel/code-frame" "^7.10.4" "@babel/core" "^7.12.3" @@ -9188,15 +9162,15 @@ gatsby@^2.30.2: anser "^2.0.1" ansi-html "^0.0.7" autoprefixer "^9.8.4" - axios "^0.20.0" + axios "^0.21.1" babel-core "7.0.0-bridge.0" babel-eslint "^10.1.0" babel-loader "^8.1.0" - babel-plugin-add-module-exports "^0.3.3" + babel-plugin-add-module-exports "^1.0.4" babel-plugin-dynamic-import-node "^2.3.3" - babel-plugin-lodash "3.3.4" - babel-plugin-remove-graphql-queries "^2.14.0" - babel-preset-gatsby "^0.10.0" + babel-plugin-lodash "^3.3.4" + babel-plugin-remove-graphql-queries "^2.16.1" + babel-preset-gatsby "^0.12.2" better-opn "^2.0.0" better-queue "^3.8.10" bluebird "^3.7.2" @@ -9213,7 +9187,7 @@ gatsby@^2.30.2: cors "^2.8.5" css-loader "^1.0.1" date-fns "^2.14.0" - debug "^3.2.6" + debug "^3.2.7" del "^5.1.0" detect-port "^1.3.0" devcert "^1.1.3" @@ -9232,20 +9206,21 @@ gatsby@^2.30.2: express "^4.17.1" express-graphql "^0.9.0" fastest-levenshtein "^1.0.12" + fastq "^1.10.0" file-loader "^1.1.11" find-cache-dir "^3.3.1" fs-exists-cached "1.0.0" fs-extra "^8.1.0" - gatsby-cli "^2.17.1" - gatsby-core-utils "^1.8.0" - gatsby-graphiql-explorer "^0.9.0" - gatsby-legacy-polyfills "^0.5.0" - gatsby-link "^2.9.0" - gatsby-plugin-page-creator "^2.8.1" - gatsby-plugin-typescript "^2.10.0" - gatsby-plugin-utils "^0.7.0" - gatsby-react-router-scroll "^3.5.0" - gatsby-telemetry "^1.8.1" + gatsby-cli "^2.19.2" + gatsby-core-utils "^1.10.1" + gatsby-graphiql-explorer "^0.11.0" + gatsby-legacy-polyfills "^0.7.0" + gatsby-link "^2.11.0" + gatsby-plugin-page-creator "^2.10.1" + gatsby-plugin-typescript "^2.12.1" + gatsby-plugin-utils "^0.9.0" + gatsby-react-router-scroll "^3.7.0" + gatsby-telemetry "^1.10.1" glob "^7.1.6" got "8.3.2" graphql "^14.6.0" @@ -9264,6 +9239,7 @@ gatsby@^2.30.2: lodash "^4.17.20" md5-file "^5.0.0" meant "^1.0.1" + memoizee "^0.4.15" micromatch "^4.0.2" mime "^2.4.6" mini-css-extract-plugin "^0.11.2" @@ -9295,8 +9271,8 @@ gatsby@^2.30.2: shallow-compare "^1.2.2" signal-exit "^3.0.3" slugify "^1.4.4" - socket.io "2.3.0" - socket.io-client "2.3.0" + socket.io "3.1.1" + socket.io-client "3.1.1" source-map "^0.7.3" source-map-support "^0.5.19" st "^2.0.0" @@ -9304,7 +9280,6 @@ gatsby@^2.30.2: string-similarity "^1.2.2" strip-ansi "^5.2.0" style-loader "^0.23.1" - terminal-link "^2.1.1" terser-webpack-plugin "^2.3.8" tmp "^0.2.1" "true-case-path" "^2.2.1" @@ -9312,10 +9287,10 @@ gatsby@^2.30.2: url-loader "^1.1.2" util.promisify "^1.0.1" uuid "3.4.0" - v8-compile-cache "^1.1.2" + v8-compile-cache "^2.2.0" webpack "^4.44.1" webpack-dev-middleware "^3.7.2" - webpack-dev-server "^3.11.0" + webpack-dev-server "^3.11.2" webpack-hot-middleware "^2.25.0" webpack-merge "^4.2.2" webpack-stats-plugin "^0.3.2" @@ -9554,7 +9529,7 @@ globals@^12.1.0: dependencies: type-fest "^0.8.1" -globby@11.0.1, globby@^11.0.1: +globby@11.0.1: version "11.0.1" resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== @@ -9580,6 +9555,18 @@ globby@^10.0.0, globby@^10.0.1: merge2 "^1.2.3" slash "^3.0.0" +globby@^11.0.2: + version "11.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.2.tgz#1af538b766a3b540ebfb58a32b2e2d5897321d83" + integrity sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + globby@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" @@ -9858,13 +9845,6 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" -has-binary2@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.3.tgz#7776ac627f3ea77250cfc332dab7ddf5e4f5d11d" - integrity sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw== - dependencies: - isarray "2.0.1" - has-cors@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" @@ -10134,18 +10114,18 @@ hex-color-regex@^1.1.0: resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== -hicat@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/hicat/-/hicat-0.7.0.tgz#a704cb3f57e49fbd7d38c2edd7aba38ff0b35263" - integrity sha1-pwTLP1fkn719OMLt16ujj/CzUmM= +hicat@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/hicat/-/hicat-0.8.0.tgz#20cd71f58aaf1bd84d52e54f1aeea0c90fa74251" + integrity sha512-om8L9O5XwqeSdwl5NtHgrzK3wcF4fT9T4gb/NktoH8EyoZipas/tvUZLV48xT7fQfMYr9qvb0WEutqdf0LWSqA== dependencies: - highlight.js "^8.1.0" - minimist "^0.2.0" + highlight.js "^10.4.1" + minimist "^1.2.5" -highlight.js@^8.1.0: - version "8.9.1" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-8.9.1.tgz#b8a9c5493212a9392f0222b649c9611497ebfb88" - integrity sha1-uKnFSTISqTkvAiK2SclhFJfr+4g= +highlight.js@^10.4.1: + version "10.6.0" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.6.0.tgz#0073aa71d566906965ba6e1b7be7b2682f5e18b6" + integrity sha512-8mlRcn5vk/r4+QcqerapwBYTe+iPL5ih6xrNylxrnBdHQiijDETfXX7VIxC3UiCRiINBJfANBAsPzAvRQj8RpQ== history@^4.9.0: version "4.10.1" @@ -10365,6 +10345,11 @@ http-errors@~1.6.2: setprototypeof "1.1.0" statuses ">= 1.4.0 < 2" +http-parser-js@>=0.5.1: + version "0.5.3" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" + integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== + http-proxy-agent@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405" @@ -10644,11 +10629,6 @@ indexes-of@^1.0.1: resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= -indexof@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" - integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= - infer-owner@^1.0.3, infer-owner@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" @@ -10759,7 +10739,7 @@ into-stream@^3.1.0: from2 "^2.1.1" p-is-promise "^1.1.0" -invariant@^2.2.0, invariant@^2.2.3, invariant@^2.2.4: +invariant@^2.2.3, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -10882,13 +10862,6 @@ is-buffer@^2.0.0: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== -is-builtin-module@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.0.0.tgz#137d3d2425023a19a660fb9dd6ddfabe52c03466" - integrity sha512-/93sDihsAD652hrMEbJGbMAVBf1qc96kyThHQ0CAOONHaE3aROLpTjDe4WQ5aoC5ITHFxEq1z8XqSU7km+8amw== - dependencies: - builtin-modules "^3.0.0" - is-callable@^1.1.4, is-callable@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" @@ -11207,6 +11180,11 @@ is-promise@^2.1.0: resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= +is-promise@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== + is-regex@^1.0.4, is-regex@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" @@ -11367,11 +11345,6 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= -isarray@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" - integrity sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4= - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -11999,7 +11972,7 @@ json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= -json3@^3.3.2: +json3@^3.3.2, json3@^3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== @@ -12397,6 +12370,11 @@ lodash.isequal@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= +lodash.isplainobject@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" + integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= + lodash.map@^4.4.0, lodash.map@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" @@ -12462,11 +12440,6 @@ lodash.templatesettings@^4.0.0: dependencies: lodash._reinterpolate "^3.0.0" -lodash.toarray@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" - integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= - lodash.topairs@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.topairs/-/lodash.topairs-4.3.0.tgz#3b6deaa37d60fb116713c46c5f17ea190ec48d64" @@ -12530,14 +12503,6 @@ loud-rejection@^1.0.0: currently-unhandled "^0.4.1" signal-exit "^3.0.0" -loud-rejection@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-2.2.0.tgz#4255eb6e9c74045b0edc021fa7397ab655a8517c" - integrity sha512-S0FayMXku80toa5sZ6Ro4C+s+EtFDCsyJNG/AzFMfX3AxD5Si4dZsgzm/kKnbOxHl5Cv8jBlno8+3XYIh2pNjQ== - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.2" - lower-case-first@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/lower-case-first/-/lower-case-first-1.0.2.tgz#e5da7c26f29a7073be02d52bac9980e5922adfa1" @@ -12612,6 +12577,13 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +lru-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" + integrity sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM= + dependencies: + es5-ext "~0.10.2" + macos-release@^2.2.0: version "2.4.1" resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.4.1.tgz#64033d0ec6a5e6375155a74b1a1eba8e509820ac" @@ -12864,6 +12836,20 @@ memoize-one@^5.0.0: resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.1.1.tgz#047b6e3199b508eaec03504de71229b8eb1d75c0" integrity sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA== +memoizee@^0.4.15: + version "0.4.15" + resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.15.tgz#e6f3d2da863f318d02225391829a6c5956555b72" + integrity sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ== + dependencies: + d "^1.0.1" + es5-ext "^0.10.53" + es6-weak-map "^2.0.3" + event-emitter "^0.3.5" + is-promise "^2.2.2" + lru-queue "^0.1.0" + next-tick "^1.1.0" + timers-ext "^0.1.7" + memory-fs@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" @@ -13083,11 +13069,6 @@ minimist-options@4.1.0: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.2.1.tgz#827ba4e7593464e7c221e8c5bed930904ee2c455" - integrity sha512-GY8fANSrTMfBVfInqJAY41QkOM+upUTytK1jZ0c8+3HdHrJxBJ3rF5i9moClXTE8uUSnUo8cAsCoxDXvSY4DHg== - minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" @@ -13321,6 +13302,11 @@ netmask@^1.0.6: resolved "https://registry.yarnpkg.com/netmask/-/netmask-1.0.6.tgz#20297e89d86f6f6400f250d9f4f6b4c1945fcd35" integrity sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU= +next-tick@1, next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + next-tick@^1.0.0, next-tick@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c" @@ -13363,13 +13349,6 @@ node-addon-api@^3.0.0: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.0.0.tgz#812446a1001a54f71663bed188314bba07e09247" integrity sha512-sSHCgWfJ+Lui/u+0msF3oyCgvdkhxDbkCS6Q8uiJquzOimkJBvX6hl5aSSA7DR1XbMpdM8r7phjcF63sF4rkKg== -node-emoji@^1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da" - integrity sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw== - dependencies: - lodash.toarray "^4.4.0" - node-eta@^0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/node-eta/-/node-eta-0.9.0.tgz#9fb0b099bcd2a021940e603c64254dc003d9a7a8" @@ -13657,11 +13636,6 @@ object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1 resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= -object-component@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" - integrity sha1-8MaapQ78lbhmwYb0AKM3acsvEpE= - object-copy@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" @@ -13709,7 +13683,7 @@ object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object-path@^0.11.2, object-path@^0.11.4: +object-path@^0.11.4: version "0.11.5" resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.5.tgz#d4e3cf19601a5140a55a16ad712019a9c50b577a" integrity sha512-jgSbThcoR/s+XumvGMTMf81QVBmah+/Q7K7YduKeKVWL7N111unR2d6pZZarSk6kY/caeNxUDyxOvMWyzoU2eg== @@ -14354,25 +14328,11 @@ parse5@^6.0.0: resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== -parseqs@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" - integrity sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0= - dependencies: - better-assert "~1.0.0" - parseqs@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.6.tgz#8e4bb5a19d1cdc844a08ac974d34e273afa670d5" integrity sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w== -parseuri@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" - integrity sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo= - dependencies: - better-assert "~1.0.0" - parseuri@0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.6.tgz#e1496e829e3ac2ff47f39a4dd044b32823c4a25a" @@ -15377,11 +15337,16 @@ q@^1.1.2: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= -qs@6.7.0, qs@^6.5.2, qs@^6.7.0: +qs@6.7.0, qs@^6.7.0: version "6.7.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== +qs@^6.9.4: + version "6.9.6" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee" + integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ== + qs@~6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" @@ -16556,7 +16521,7 @@ safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, s resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@^5.2.0: +safe-buffer@>=5.1.0, safe-buffer@^5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -16711,7 +16676,7 @@ select@^1.1.2: resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" integrity sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0= -selfsigned@^1.10.7: +selfsigned@^1.10.8: version "1.10.8" resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.8.tgz#0d17208b7d12c33f8eac85c41835f27fc3d81a30" integrity sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w== @@ -17393,60 +17358,47 @@ snyk@^1.437.4: uuid "^3.3.2" wrap-ansi "^5.1.0" -socket.io-adapter@~1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz#ab3f0d6f66b8fc7fca3959ab5991f82221789be9" - integrity sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g== +socket.io-adapter@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.1.0.tgz#edc5dc36602f2985918d631c1399215e97a1b527" + integrity sha512-+vDov/aTsLjViYTwS9fPy5pEtTkrbEKsw2M+oVSoFGw6OD1IpvlV1VPhUzNbofCQ8oyMbdYJqDtGdmHQK6TdPg== -socket.io-client@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.3.0.tgz#14d5ba2e00b9bcd145ae443ab96b3f86cbcc1bb4" - integrity sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA== - dependencies: - backo2 "1.0.2" - base64-arraybuffer "0.1.5" - component-bind "1.0.0" - component-emitter "1.2.1" - debug "~4.1.0" - engine.io-client "~3.4.0" - has-binary2 "~1.0.2" - has-cors "1.1.0" - indexof "0.0.1" - object-component "0.0.3" - parseqs "0.0.5" - parseuri "0.0.5" - socket.io-parser "~3.3.0" - to-array "0.1.4" - -socket.io-parser@~3.3.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.3.1.tgz#f07d9c8cb3fb92633aa93e76d98fd3a334623199" - integrity sha512-1QLvVAe8dTz+mKmZ07Swxt+LAo4Y1ff50rlyoEx00TQmDFVQYPfcqGvIDJLGaBdhdNCecXtyKpD+EgKGcmmbuQ== +socket.io-client@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-3.1.1.tgz#43dfc3feddbb675b274a724f685d6b6af319b3e3" + integrity sha512-BLgIuCjI7Sf3mDHunKddX9zKR/pbkP7IACM3sJS3jha+zJ6/pGKRV6Fz5XSBHCfUs9YzT8kYIqNwOOuFNLtnYA== dependencies: + "@types/component-emitter" "^1.2.10" + backo2 "~1.0.2" component-emitter "~1.3.0" - debug "~3.1.0" - isarray "2.0.1" + debug "~4.3.1" + engine.io-client "~4.1.0" + parseuri "0.0.6" + socket.io-parser "~4.0.4" -socket.io-parser@~3.4.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.4.1.tgz#b06af838302975837eab2dc980037da24054d64a" - integrity sha512-11hMgzL+WCLWf1uFtHSNvliI++tcRUWdoeYuwIl+Axvwy9z2gQM+7nJyN3STj1tLj5JyIUH8/gpDGxzAlDdi0A== +socket.io-parser@~4.0.3, socket.io-parser@~4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.0.4.tgz#9ea21b0d61508d18196ef04a2c6b9ab630f4c2b0" + integrity sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g== dependencies: - component-emitter "1.2.1" - debug "~4.1.0" - isarray "2.0.1" + "@types/component-emitter" "^1.2.10" + component-emitter "~1.3.0" + debug "~4.3.1" -socket.io@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.3.0.tgz#cd762ed6a4faeca59bc1f3e243c0969311eb73fb" - integrity sha512-2A892lrj0GcgR/9Qk81EaY2gYhCBxurV0PfmmESO6p27QPrUK1J3zdns+5QPqvUYK2q657nSj0guoIil9+7eFg== +socket.io@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-3.1.1.tgz#905e3d4a3b37d8e7970e67a4a6eb81110a5778ba" + integrity sha512-7cBWdsDC7bbyEF6WbBqffjizc/H4YF1wLdZoOzuYfo2uMNSFjJKuQ36t0H40o9B20DO6p+mSytEd92oP4S15bA== dependencies: - debug "~4.1.0" - engine.io "~3.4.0" - has-binary2 "~1.0.2" - socket.io-adapter "~1.1.0" - socket.io-client "2.3.0" - socket.io-parser "~3.4.0" + "@types/cookie" "^0.4.0" + "@types/cors" "^2.8.8" + "@types/node" "^14.14.10" + accepts "~1.3.4" + base64id "~2.0.0" + debug "~4.3.1" + engine.io "~4.1.0" + socket.io-adapter "~2.1.0" + socket.io-parser "~4.0.3" sockjs-client@1.1.4: version "1.1.4" @@ -17460,26 +17412,26 @@ sockjs-client@1.1.4: json3 "^3.3.2" url-parse "^1.1.8" -sockjs-client@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" - integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== +sockjs-client@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.5.0.tgz#2f8ff5d4b659e0d092f7aba0b7c386bd2aa20add" + integrity sha512-8Dt3BDi4FYNrCFGTL/HtwVzkARrENdwOUf1ZoW/9p3M8lZdFT35jVdrHza+qgxuG9H3/shR4cuX/X9umUrjP8Q== dependencies: - debug "^3.2.5" + debug "^3.2.6" eventsource "^1.0.7" - faye-websocket "~0.11.1" - inherits "^2.0.3" - json3 "^3.3.2" - url-parse "^1.4.3" + faye-websocket "^0.11.3" + inherits "^2.0.4" + json3 "^3.3.3" + url-parse "^1.4.7" -sockjs@0.3.20: - version "0.3.20" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.20.tgz#b26a283ec562ef8b2687b44033a4eeceac75d855" - integrity sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA== +sockjs@^0.3.21: + version "0.3.21" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417" + integrity sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw== dependencies: - faye-websocket "^0.10.0" + faye-websocket "^0.11.3" uuid "^3.4.0" - websocket-driver "0.6.5" + websocket-driver "^0.7.4" socks-proxy-agent@^4.0.1: version "4.0.2" @@ -17915,7 +17867,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -18361,7 +18313,7 @@ term-size@^2.1.0: resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" integrity sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw== -terminal-link@^2.0.0, terminal-link@^2.1.1: +terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== @@ -18474,6 +18426,14 @@ timers-browserify@^2.0.4: dependencies: setimmediate "^1.0.4" +timers-ext@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" + integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== + dependencies: + es5-ext "~0.10.46" + next-tick "1" + timm@^1.6.1: version "1.6.2" resolved "https://registry.yarnpkg.com/timm/-/timm-1.6.2.tgz#dfd8c6719f7ba1fcfc6295a32670a1c6d166c0bd" @@ -18538,11 +18498,6 @@ tmpl@1.0.x: resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE= -to-array@0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" - integrity sha1-F+bBH3PdTz10zaek/zI46a2b+JA= - to-arraybuffer@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" @@ -18778,10 +18733,10 @@ type-detect@4.0.8: resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== -type-fest@0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.15.1.tgz#d2c4e73d3e4a53cf1a906396dd460a1c5178ca00" - integrity sha512-n+UXrN8i5ioo7kqT/nF8xsEzLaqFra7k32SEsSPwvXVGyAcRgV/FUQN/sgfptJTR1oRmmq7z4IXMFSM7im7C9A== +type-fest@0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== type-fest@^0.10.0: version "0.10.0" @@ -19306,6 +19261,14 @@ url-parse@^1.1.8, url-parse@^1.4.3: querystringify "^2.1.1" requires-port "^1.0.0" +url-parse@^1.4.7: + version "1.5.1" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.1.tgz#d5fa9890af8a5e1f274a2c98376510f6425f6e3b" + integrity sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + url-to-options@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" @@ -19429,16 +19392,16 @@ uuid@^8.2.0, uuid@^8.3.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.1.tgz#2ba2e6ca000da60fce5a196954ab241131e05a31" integrity sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg== -v8-compile-cache@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-1.1.2.tgz#8d32e4f16974654657e676e0e467a348e89b0dc4" - integrity sha512-ejdrifsIydN1XDH7EuR2hn8ZrkRKUYF7tUcBjBy/lhrCvs2K+zRlbW9UHc0IQ9RsYFZJFqJrieoIHfkCa0DBRA== - v8-compile-cache@^2.0.3: version "2.1.1" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== +v8-compile-cache@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + v8-to-istanbul@^4.1.3: version "4.1.4" resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-4.1.4.tgz#b97936f21c0e2d9996d4985e5c5156e9d4e49cd6" @@ -19640,10 +19603,10 @@ webpack-dev-middleware@^3.7.2: range-parser "^1.2.1" webpack-log "^2.0.0" -webpack-dev-server@^3.11.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz#8f154a3bce1bcfd1cc618ef4e703278855e7ff8c" - integrity sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg== +webpack-dev-server@^3.11.2: + version "3.11.2" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz#695ebced76a4929f0d5de7fd73fafe185fe33708" + integrity sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ== dependencies: ansi-html "0.0.7" bonjour "^3.5.0" @@ -19665,11 +19628,11 @@ webpack-dev-server@^3.11.0: p-retry "^3.0.1" portfinder "^1.0.26" schema-utils "^1.0.0" - selfsigned "^1.10.7" + selfsigned "^1.10.8" semver "^6.3.0" serve-index "^1.9.1" - sockjs "0.3.20" - sockjs-client "1.4.0" + sockjs "^0.3.21" + sockjs-client "^1.5.0" spdy "^4.0.2" strip-ansi "^3.0.1" supports-color "^6.1.0" @@ -19761,13 +19724,22 @@ webpack@^4.44.1: watchpack "^1.7.4" webpack-sources "^1.4.1" -websocket-driver@0.6.5, websocket-driver@>=0.5.1: +websocket-driver@>=0.5.1: version "0.6.5" resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36" integrity sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY= dependencies: websocket-extensions ">=0.1.1" +websocket-driver@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + websocket-extensions@>=0.1.1: version "0.1.4" resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" @@ -20057,7 +20029,7 @@ ws@^6.2.1: dependencies: async-limiter "~1.0.0" -ws@^7.1.2, ws@^7.2.3: +ws@^7.2.3: version "7.2.3" resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.3.tgz#a5411e1fb04d5ed0efee76d26d5c46d830c39b46" integrity sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ== @@ -20067,12 +20039,10 @@ ws@^7.3.0: resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA== -ws@~6.1.0: - version "6.1.4" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.4.tgz#5b5c8800afab925e94ccb29d153c8d02c1776ef9" - integrity sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA== - dependencies: - async-limiter "~1.0.0" +ws@~7.4.2: + version "7.4.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.3.tgz#1f9643de34a543b8edb124bdcbc457ae55a6e5cd" + integrity sha512-hr6vCR76GsossIRsr8OLR9acVVm1jyfEWvhbNjtgPOrfvAlKzvyeg/P6r8RuDjRyrcQoPQT7K0DGEPc7Ae6jzA== x-is-string@^0.1.0: version "0.1.0" @@ -20298,30 +20268,16 @@ yoga-layout-prebuilt@^1.9.6: dependencies: "@types/yoga-layout" "1.9.2" -yurnalist@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/yurnalist/-/yurnalist-1.1.2.tgz#0fce283f1c53ea25ec278e2d1ab58537323b63e0" - integrity sha512-y7bsTXqL+YMJQ2De2CBtSftJNLQnB7gWIzzKm10GDyC8Fg4Dsmd2LG5YhT8pudvUiuotic80WVXt/g1femRVQg== +yurnalist@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/yurnalist/-/yurnalist-2.1.0.tgz#44cf7ea5a33a8fab4968cc8c2970489f93760902" + integrity sha512-PgrBqosQLM3gN2xBFIMDLACRTV9c365VqityKKpSTWpwR+U4LAFR3rSVyEoscWlu3EzX9+Y0I86GXUKxpHFl6w== dependencies: - babel-runtime "^6.26.0" chalk "^2.4.2" - cli-table3 "^0.5.1" - debug "^4.1.1" - deep-equal "^1.1.0" - detect-indent "^6.0.0" inquirer "^7.0.0" - invariant "^2.2.0" - is-builtin-module "^3.0.0" is-ci "^2.0.0" - leven "^3.1.0" - loud-rejection "^2.2.0" - node-emoji "^1.10.0" - object-path "^0.11.2" read "^1.0.7" - rimraf "^3.0.0" - semver "^6.3.0" strip-ansi "^5.2.0" - strip-bom "^4.0.0" zwitch@^1.0.0: version "1.0.5" From fc386347c18858a2cc15f04ae261224990c6e3ef Mon Sep 17 00:00:00 2001 From: Jerel Miller <jerelmiller@gmail.com> Date: Fri, 5 Mar 2021 21:34:36 -0800 Subject: [PATCH 24/40] chore: update babel-plugin-gatsby --- package.json | 2 +- yarn.lock | 118 ++++++++++++++++++++++++++++++++++++++------------- 2 files changed, 90 insertions(+), 30 deletions(-) diff --git a/package.json b/package.json index b2ad0d31c..91b89f406 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "@semantic-release/git": "^9.0.0", "@testing-library/react": "^10.0.4", "babel-jest": "^26.0.1", - "babel-preset-gatsby": "^0.11.0", + "babel-preset-gatsby": "^1.0.0", "core-js": "^2.4.0", "eslint": "^7.11.0", "eslint-plugin-jsx-a11y": "^6.3.1", diff --git a/yarn.lock b/yarn.lock index 9a7465ab8..fbb29f550 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2906,6 +2906,11 @@ "@testing-library/dom" "^7.2.2" "@types/testing-library__react" "^10.0.1" +"@tokenizer/token@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.1.1.tgz#f0d92c12f87079ddfd1b29f614758b9696bc29e3" + integrity sha512-XO6INPbZCxdprl+9qa/AAbFFOMzzwqYxpjPgLICrMD6C2FCw6qfJOPcBk6JqqPLSaZ/Qx87qn4rpPmPMwaAK6w== + "@turist/fetch@^7.1.7": version "7.1.7" resolved "https://registry.yarnpkg.com/@turist/fetch/-/fetch-7.1.7.tgz#a2b1f7ec0265e6fe0946c51eef34bad9b9efc865" @@ -2996,7 +3001,7 @@ resolved "https://registry.yarnpkg.com/@types/debug/-/debug-0.0.30.tgz#dc1e40f7af3b9c815013a7860e6252f6352a84df" integrity sha512-orGL5LXERPYsLov6CWs3Fh6203+dXzJkR7OnddIr2514Hsecwc8xRpzCapshBbKFImCsvS/mk6+FWiN5LyZJAQ== -"@types/debug@^4.1.4": +"@types/debug@^4.1.4", "@types/debug@^4.1.5": version "4.1.5" resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.5.tgz#b14efa8852b7768d898906613c23f688713e02cd" integrity sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ== @@ -3240,6 +3245,14 @@ "@types/prop-types" "*" csstype "^2.2.0" +"@types/readable-stream@^2.3.9": + version "2.3.9" + resolved "https://registry.yarnpkg.com/@types/readable-stream/-/readable-stream-2.3.9.tgz#40a8349e6ace3afd2dd1b6d8e9b02945de4566a9" + integrity sha512-sqsgQqFT7HmQz/V5jH1O0fvQQnXAJO46Gg9LRO/JPfjmVmGUlcx831TZZO3Y3HtWhIkzf3kTsNT0Z0kzIhIvZw== + dependencies: + "@types/node" "*" + safe-buffer "*" + "@types/responselike@*", "@types/responselike@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" @@ -4339,15 +4352,16 @@ babel-preset-current-node-syntax@^0.1.2: "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -babel-preset-gatsby@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/babel-preset-gatsby/-/babel-preset-gatsby-0.11.0.tgz#06e769ec8888dfa3bda17762def15dca3cc59bae" - integrity sha512-0kZ5KK02RKmnCab897XOP1xWcFthumcmI6Y3R0gFBv4w4qZR4fTLk/iIeNz24oQGaRXO0QprsssdVEVfDlewNw== +babel-preset-gatsby@^0.12.2: + version "0.12.2" + resolved "https://registry.yarnpkg.com/babel-preset-gatsby/-/babel-preset-gatsby-0.12.2.tgz#784d41fd622afd50fbf8d9bcde0cdf48d5b78152" + integrity sha512-MQhUnp+DO9FFCdSyhXkLsNpuTxIkB02NnA9eOkV5HtJsRIhX85ZYw+pJeSTPl9d3QdEP/GyiQWPHigU6TAOyqg== dependencies: "@babel/plugin-proposal-class-properties" "^7.12.1" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" "@babel/plugin-proposal-optional-chaining" "^7.12.1" "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-transform-classes" "^7.12.1" "@babel/plugin-transform-runtime" "^7.12.1" "@babel/plugin-transform-spread" "^7.12.1" "@babel/preset-env" "^7.12.1" @@ -4356,13 +4370,13 @@ babel-preset-gatsby@^0.11.0: babel-plugin-dynamic-import-node "^2.3.3" babel-plugin-macros "^2.8.0" babel-plugin-transform-react-remove-prop-types "^0.4.24" - gatsby-core-utils "^1.9.0" - gatsby-legacy-polyfills "^0.6.0" + gatsby-core-utils "^1.10.1" + gatsby-legacy-polyfills "^0.7.0" -babel-preset-gatsby@^0.12.2: - version "0.12.2" - resolved "https://registry.yarnpkg.com/babel-preset-gatsby/-/babel-preset-gatsby-0.12.2.tgz#784d41fd622afd50fbf8d9bcde0cdf48d5b78152" - integrity sha512-MQhUnp+DO9FFCdSyhXkLsNpuTxIkB02NnA9eOkV5HtJsRIhX85ZYw+pJeSTPl9d3QdEP/GyiQWPHigU6TAOyqg== +babel-preset-gatsby@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/babel-preset-gatsby/-/babel-preset-gatsby-1.0.0.tgz#14bcb46e45bfee12d095819f1f439415401377b7" + integrity sha512-3jCjp/yhbgbvSxj9j6ieF6h1JKi9Kfot8N+NSh80GDQ5iwhg/x+Ev7ocyU0UKm89t5QaZuPcGY/RopK0gck+pg== dependencies: "@babel/plugin-proposal-class-properties" "^7.12.1" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.12.1" @@ -4377,8 +4391,8 @@ babel-preset-gatsby@^0.12.2: babel-plugin-dynamic-import-node "^2.3.3" babel-plugin-macros "^2.8.0" babel-plugin-transform-react-remove-prop-types "^0.4.24" - gatsby-core-utils "^1.10.1" - gatsby-legacy-polyfills "^0.7.0" + gatsby-core-utils "^2.0.0" + gatsby-legacy-polyfills "^1.0.0" babel-preset-jest@^26.0.0: version "26.0.0" @@ -8163,6 +8177,16 @@ file-type@^12.0.0, file-type@^12.4.2: resolved "https://registry.yarnpkg.com/file-type/-/file-type-12.4.2.tgz#a344ea5664a1d01447ee7fb1b635f72feb6169d9" integrity sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg== +file-type@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-16.2.0.tgz#d4f1da71ddda758db7f15f93adfaed09ce9e2715" + integrity sha512-1Wwww3mmZCMmLjBfslCluwt2mxH80GsAXYrvPnfQ42G1EGWag336kB1iyCgyn7UXiKY3cJrNykXPrCwA7xb5Ag== + dependencies: + readable-web-to-node-stream "^3.0.0" + strtok3 "^6.0.3" + token-types "^2.0.0" + typedarray-to-buffer "^3.1.5" + file-type@^3.8.0: version "3.9.0" resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" @@ -8623,13 +8647,14 @@ gatsby-core-utils@^1.6.0: tmp "^0.2.1" xdg-basedir "^4.0.0" -gatsby-core-utils@^1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/gatsby-core-utils/-/gatsby-core-utils-1.9.0.tgz#ff349cc2013fd06a85099b3aee061b01f64ceabb" - integrity sha512-AWq9E+rBY+fWJrhdOx0rn/LlZ0eCjpqLYlDcUmLZ5NjwLARgkEXNf4JsvDETLtThcNlSOibEMQex8arsYatmkA== +gatsby-core-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/gatsby-core-utils/-/gatsby-core-utils-2.0.0.tgz#00fdc1f2efcaabe7426e63b020a7117ca613780c" + integrity sha512-+DrClKZ/ScTbzhIHZXuU3DoIhEJ95uJV+swR7VVqYVhEpV1CnjUGR/dB+tMd0VqlPdrXB38FuR8O5kuSvYm+/A== dependencies: ci-info "2.0.0" configstore "^5.0.1" + file-type "^16.2.0" fs-extra "^8.1.0" node-object-hash "^2.0.0" proper-lockfile "^4.1.1" @@ -8652,13 +8677,6 @@ gatsby-image@^2.4.20: object-fit-images "^3.2.4" prop-types "^15.7.2" -gatsby-legacy-polyfills@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/gatsby-legacy-polyfills/-/gatsby-legacy-polyfills-0.6.0.tgz#e751864f179f8e61de8bfdd1aab4532496b9be9a" - integrity sha512-w6ZnPi3JWhvfEwNgxGA42XFzytsKsGj5uQnEsQzDU8JgVD7WXT4vPlbLUF/RjqIjcVrbLWkYWkLLeZG4fdX28Q== - dependencies: - core-js-compat "^3.6.5" - gatsby-legacy-polyfills@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/gatsby-legacy-polyfills/-/gatsby-legacy-polyfills-0.7.0.tgz#8ef8aeeb59b6679920489edb2493ac16bcd03c82" @@ -8666,6 +8684,13 @@ gatsby-legacy-polyfills@^0.7.0: dependencies: core-js-compat "^3.6.5" +gatsby-legacy-polyfills@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gatsby-legacy-polyfills/-/gatsby-legacy-polyfills-1.0.0.tgz#42e740b9a62df1a4be022b7519e77a504788f857" + integrity sha512-whGt//oMbsQvr2uok4qkd1MrlbpSKYXl1lifkwZnrHTvAAf5wreeOZKbzM/C3SWLb0lmD2X7WO7gAamOBj7PwA== + dependencies: + core-js-compat "^3.6.5" + gatsby-link@^2.11.0: version "2.11.0" resolved "https://registry.yarnpkg.com/gatsby-link/-/gatsby-link-2.11.0.tgz#15e99c89bdde1c99686ce53bda72beb3c9c39455" @@ -10481,6 +10506,11 @@ ieee754@^1.1.4: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== +ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + iferr@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" @@ -14486,6 +14516,11 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" +peek-readable@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-3.1.3.tgz#932480d46cf6aa553c46c68566c4fb69a82cd2b1" + integrity sha512-mpAcysyRJxmICBcBa5IXH7SZPvWkcghm6Fk8RekoS3v+BpbSzlZzuWbMx+GXrlUwESi9qHar4nVEZNMKylIHvg== + peek-stream@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/peek-stream/-/peek-stream-1.1.3.tgz#3b35d84b7ccbbd262fff31dc10da56856ead6d67" @@ -15840,6 +15875,14 @@ readable-stream@~1.0.31: isarray "0.0.1" string_decoder "~0.10.x" +readable-web-to-node-stream@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.1.tgz#3f619b1bc5dd73a4cfe5c5f9b4f6faba55dff845" + integrity sha512-4zDC6CvjUyusN7V0QLsXVB7pJCD9+vtrM9bYDRv6uBQ+SKfx36rp5AFNPRgh9auKRul/a1iFZJYXcCbwRL+SaA== + dependencies: + "@types/readable-stream" "^2.3.9" + readable-stream "^3.6.0" + readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" @@ -16516,16 +16559,16 @@ rxjs@^6.6.0: dependencies: tslib "^1.9.0" +safe-buffer@*, safe-buffer@>=5.1.0, safe-buffer@^5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@>=5.1.0, safe-buffer@^5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -18085,6 +18128,15 @@ strip-outer@^1.0.0: dependencies: escape-string-regexp "^1.0.2" +strtok3@^6.0.3: + version "6.0.8" + resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.0.8.tgz#c839157f615c10ba0f4ae35067dad9959eeca346" + integrity sha512-QLgv+oiXwXgCgp2PdPPa+Jpp4D9imK9e/0BsyfeFMr6QL6wMVqoVn9+OXQ9I7MZbmUzN6lmitTJ09uwS2OmGcw== + dependencies: + "@tokenizer/token" "^0.1.1" + "@types/debug" "^4.1.5" + peek-readable "^3.1.3" + style-loader@^0.23.1: version "0.23.1" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925" @@ -18565,6 +18617,14 @@ toidentifier@1.0.0: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== +token-types@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/token-types/-/token-types-2.1.1.tgz#bd585d64902aaf720b8979d257b4b850b4d45c45" + integrity sha512-wnQcqlreS6VjthyHO3Y/kpK/emflxDBNhlNUPfh7wE39KnuDdOituXomIbyI79vBtF0Ninpkh72mcuRHo+RG3Q== + dependencies: + "@tokenizer/token" "^0.1.1" + ieee754 "^1.2.1" + toml@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" From dae6400571793ebfcd4dcb6fb749e9ffdbadcfde Mon Sep 17 00:00:00 2001 From: Jerel Miller <jerelmiller@gmail.com> Date: Fri, 5 Mar 2021 21:48:56 -0800 Subject: [PATCH 25/40] chore: enable automatic runtime. turn off unneeded eslint rules --- .babelrc | 11 +++++++++++ .eslintrc.js | 2 ++ 2 files changed, 13 insertions(+) create mode 100644 .babelrc diff --git a/.babelrc b/.babelrc new file mode 100644 index 000000000..3cb4a9332 --- /dev/null +++ b/.babelrc @@ -0,0 +1,11 @@ +{ + "presets": [ + [ + "babel-preset-gatsby", + { + "reactRuntime": "automatic", + "reactImportSource": "@emotion/core" + } + ] + ] +} diff --git a/.eslintrc.js b/.eslintrc.js index 4efaf3108..398b2d8f6 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -36,5 +36,7 @@ module.exports = { ignoreRestSiblings: false, }, ], + 'react/jsx-uses-react': 'off', + 'react/react-in-jsx-scope': 'off', }, }; From 36761c58df418740baafdbf9984a562c868215e8 Mon Sep 17 00:00:00 2001 From: Jerel Miller <jerelmiller@gmail.com> Date: Fri, 5 Mar 2021 21:56:56 -0800 Subject: [PATCH 26/40] chore: remove babelrc for now to leave as classic --- .babelrc | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 .babelrc diff --git a/.babelrc b/.babelrc deleted file mode 100644 index 3cb4a9332..000000000 --- a/.babelrc +++ /dev/null @@ -1,11 +0,0 @@ -{ - "presets": [ - [ - "babel-preset-gatsby", - { - "reactRuntime": "automatic", - "reactImportSource": "@emotion/core" - } - ] - ] -} From 90d9456a24cad15a4770e7a739139acf9c52dc5e Mon Sep 17 00:00:00 2001 From: Jerel Miller <jerelmiller@gmail.com> Date: Fri, 5 Mar 2021 22:00:50 -0800 Subject: [PATCH 27/40] chore: reenable eslint rules --- .eslintrc.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 398b2d8f6..4efaf3108 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -36,7 +36,5 @@ module.exports = { ignoreRestSiblings: false, }, ], - 'react/jsx-uses-react': 'off', - 'react/react-in-jsx-scope': 'off', }, }; From 9a6e49c94f72a20acd305fe480773ccd991c1428 Mon Sep 17 00:00:00 2001 From: Jerel Miller <jerelmiller@gmail.com> Date: Sun, 7 Mar 2021 20:47:35 -0800 Subject: [PATCH 28/40] chore: install react spring v9 and newest version of the theme --- package.json | 3 ++- yarn.lock | 70 ++++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 67 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 91b89f406..bf3a9dc32 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "@emotion/styled": "^10.0.27", "@mdx-js/mdx": "^1.6.19", "@mdx-js/react": "^1.6.19", - "@newrelic/gatsby-theme-newrelic": "^1.34.0", + "@newrelic/gatsby-theme-newrelic": "^1.35.1", "@splitsoftware/splitio-react": "^1.2.0", "@xstate/react": "^1.0.2", "classnames": "^2.2.6", @@ -45,6 +45,7 @@ "react-middle-ellipsis": "^1.1.0", "react-shadow": "^18.6.1", "react-simple-code-editor": "^0.11.0", + "react-spring": "npm:@react-spring/web@9.0.0-rc.3", "react-typist": "^2.0.5", "react-use": "^15.3.4", "snyk": "^1.437.4", diff --git a/yarn.lock b/yarn.lock index fbb29f550..158487da5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,11 @@ # yarn lockfile v1 +"@alloc/types@^1.2.1": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@alloc/types/-/types-1.3.0.tgz#904245b8d3260a4b7d8a801c12501968f64fac08" + integrity sha512-mH7LiFiq9g6rX2tvt1LtwsclfG5hnsmtIfkZiauAGrm1AwXhoRS0sF2WrN9JGN7eV5vFXqNaB0eXZ3IvMsVi9g== + "@ardatan/aggregate-error@0.0.6": version "0.0.6" resolved "https://registry.yarnpkg.com/@ardatan/aggregate-error/-/aggregate-error-0.0.6.tgz#fe6924771ea40fc98dc7a7045c2e872dc8527609" @@ -2515,10 +2520,10 @@ eslint-plugin-promise "^4.2.1" eslint-plugin-react "^7.14.3" -"@newrelic/gatsby-theme-newrelic@^1.34.0": - version "1.34.0" - resolved "https://registry.yarnpkg.com/@newrelic/gatsby-theme-newrelic/-/gatsby-theme-newrelic-1.34.0.tgz#9f05bf71ac1bf044595cd1fc350d42695a99e70f" - integrity sha512-vw5DpV6rleB5SPsi3hey4QhaO4DuKK8lbC523pQLMs1na6hyoVB4pVsmvBJ4SVUtTHIOkiDgTREJu1SszpdS1w== +"@newrelic/gatsby-theme-newrelic@^1.35.1": + version "1.35.1" + resolved "https://registry.yarnpkg.com/@newrelic/gatsby-theme-newrelic/-/gatsby-theme-newrelic-1.35.1.tgz#16bec25a8c7d44b4fd9842b0da4aab1ac3c5819e" + integrity sha512-y4Ikx0vtxiJbw30FASrtDFnrIda8+O/5NMeUWQq3Eey/DnqltDP7JmYMU77ZXJgbuupBkv6ziqnOMQwZxf7wGQ== dependencies: "@elastic/react-search-ui" "^1.4.1" "@elastic/react-search-ui-views" "^1.4.1" @@ -2612,6 +2617,36 @@ prop-types "^15.6.1" react-lifecycles-compat "^3.0.4" +"@react-spring/animated@9.0.0-rc.3": + version "9.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@react-spring/animated/-/animated-9.0.0-rc.3.tgz#e792cb76aacecfc78db2be6020ac11ce96503eb5" + integrity sha512-dAvgtKhkYpzzr+EkmZ4ZuJ5CujxCW0LaT109DvO/2MQNk3EWIxcgl+ik4tSulSbgau1GN8RlkRKyDp0wISdQ3Q== + dependencies: + "@babel/runtime" "^7.3.1" + "@react-spring/shared" "9.0.0-rc.3" + react-layout-effect "^1.0.1" + +"@react-spring/core@9.0.0-rc.3": + version "9.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@react-spring/core/-/core-9.0.0-rc.3.tgz#c8e697573936c525bd0f6ca0c0869f75c86e8a83" + integrity sha512-3OzsVFxpfMJNkkQj8TwAH3NhUAX76AXu6WkslQF4EgBeEoG5eY3m+VvM9RsAsGWDuBKpscZ/wBpFt5Ih6KdGHA== + dependencies: + "@babel/runtime" "^7.3.1" + "@react-spring/animated" "9.0.0-rc.3" + "@react-spring/shared" "9.0.0-rc.3" + react-layout-effect "^1.0.1" + use-memo-one "^1.1.0" + +"@react-spring/shared@9.0.0-rc.3": + version "9.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@react-spring/shared/-/shared-9.0.0-rc.3.tgz#3f4c9d90accc20fef51a283a7806d78390b84161" + integrity sha512-dd50TxwwMWd+dSB0InjndUN9w17cbnMCPy+0sag6zRxxKIo7eOyWSliOtLKxvufgmdC8Prm4M3GT5dmB1yxKEQ== + dependencies: + "@alloc/types" "^1.2.1" + "@babel/runtime" "^7.3.1" + fluids "^0.1.6" + tslib "^1.11.1" + "@semantic-release/changelog@^5.0.1": version "5.0.1" resolved "https://registry.yarnpkg.com/@semantic-release/changelog/-/changelog-5.0.1.tgz#50a84b63e5d391b7debfe021421589fa2bcdafe4" @@ -8357,6 +8392,11 @@ flatted@^2.0.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== +fluids@^0.1.6: + version "0.1.10" + resolved "https://registry.yarnpkg.com/fluids/-/fluids-0.1.10.tgz#0517e7a53dbce1db011dddec301b75178518ba0e" + integrity sha512-66FLmUJOrkvEHIsRVeM+88MG0bjd2TOBuR0BkM0hzyCb68W9drzqeX/AHDNp3ouZALQN7JvBvmKdVhHI+PZsdg== + flush-write-stream@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" @@ -15611,6 +15651,11 @@ react-is@^16.12.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.6, react-i resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== +react-layout-effect@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/react-layout-effect/-/react-layout-effect-1.0.5.tgz#0dc4e24452aee5de66c93c166f0ec512dfb1be80" + integrity sha512-zdRXHuch+OBHU6bvjTelOGUCM+UDr/iCY+c0wXLEAc+G4/FlcJruD/hUOzlKH5XgO90Y/BUJPNhI/g9kl+VAsA== + react-lifecycles-compat@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" @@ -15705,6 +15750,16 @@ react-spring@^8.0.27: "@babel/runtime" "^7.3.1" prop-types "^15.5.8" +"react-spring@npm:@react-spring/web@9.0.0-rc.3": + version "9.0.0-rc.3" + resolved "https://registry.yarnpkg.com/@react-spring/web/-/web-9.0.0-rc.3.tgz#da977382f91d9af4c400e4aa7dc37d3db07b87e0" + integrity sha512-rEvipblmihiz8+Eo01zDp5dqWn6XfYk8q2rlN9c18YIOL4o6nuY/VplDoocUMHYfH4liurpO4o1QudKOO1nAiQ== + dependencies: + "@babel/runtime" "^7.3.1" + "@react-spring/animated" "9.0.0-rc.3" + "@react-spring/core" "9.0.0-rc.3" + "@react-spring/shared" "9.0.0-rc.3" + react-test-renderer@^16.13.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.13.1.tgz#de25ea358d9012606de51e012d9742e7f0deabc1" @@ -18740,7 +18795,7 @@ tslib@1.11.1, tslib@^1, tslib@^1.8.1, tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== -tslib@^1.10.0, tslib@^1.11.2, tslib@^1.13.0, tslib@^1.9.3: +tslib@^1.10.0, tslib@^1.11.1, tslib@^1.11.2, tslib@^1.13.0, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -19360,6 +19415,11 @@ use-media@^1.4.0: resolved "https://registry.yarnpkg.com/use-media/-/use-media-1.4.0.tgz#e777bf1f382a7aacabbd1f9ce3da2b62e58b2a98" integrity sha512-XsgyUAf3nhzZmEfhc5MqLHwyaPjs78bgytpVJ/xDl0TF4Bptf3vEpBNBBT/EIKOmsOc8UbuECq3mrP3mt1QANA== +use-memo-one@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/use-memo-one/-/use-memo-one-1.1.2.tgz#0c8203a329f76e040047a35a1197defe342fab20" + integrity sha512-u2qFKtxLsia/r8qG0ZKkbytbztzRb317XCkT7yP8wxL0tZ/CzK2G+WWie5vWvpyeP7+YoPIwbJoIHJ4Ba4k0oQ== + use-persisted-state@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/use-persisted-state/-/use-persisted-state-0.3.0.tgz#f8e3d2fd8eee67e0c86fd596c3ea3e8121c07402" From 7961233649dd3f59885bfa979ba7aea98723a96a Mon Sep 17 00:00:00 2001 From: Jerel Miller <jerelmiller@gmail.com> Date: Sun, 7 Mar 2021 20:50:03 -0800 Subject: [PATCH 29/40] chore: force trailing slashes --- gatsby-config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/gatsby-config.js b/gatsby-config.js index 13322bfc2..f2e7484ad 100644 --- a/gatsby-config.js +++ b/gatsby-config.js @@ -16,6 +16,7 @@ module.exports = { { resolve: '@newrelic/gatsby-theme-newrelic', options: { + forceTrailingSlashes: true, gaTrackingId: 'UA-3047412-33', layout: { contentPadding: '2rem', From fae45816434750e4032d4d5f641ad42b0cbe1f42 Mon Sep 17 00:00:00 2001 From: Jerel Miller <jerelmiller@gmail.com> Date: Sun, 7 Mar 2021 20:54:41 -0800 Subject: [PATCH 30/40] chore: no need for react-spring install --- package.json | 1 - yarn.lock | 62 +--------------------------------------------------- 2 files changed, 1 insertion(+), 62 deletions(-) diff --git a/package.json b/package.json index bf3a9dc32..a6a3dc860 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,6 @@ "react-middle-ellipsis": "^1.1.0", "react-shadow": "^18.6.1", "react-simple-code-editor": "^0.11.0", - "react-spring": "npm:@react-spring/web@9.0.0-rc.3", "react-typist": "^2.0.5", "react-use": "^15.3.4", "snyk": "^1.437.4", diff --git a/yarn.lock b/yarn.lock index 158487da5..5f43aceff 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,11 +2,6 @@ # yarn lockfile v1 -"@alloc/types@^1.2.1": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@alloc/types/-/types-1.3.0.tgz#904245b8d3260a4b7d8a801c12501968f64fac08" - integrity sha512-mH7LiFiq9g6rX2tvt1LtwsclfG5hnsmtIfkZiauAGrm1AwXhoRS0sF2WrN9JGN7eV5vFXqNaB0eXZ3IvMsVi9g== - "@ardatan/aggregate-error@0.0.6": version "0.0.6" resolved "https://registry.yarnpkg.com/@ardatan/aggregate-error/-/aggregate-error-0.0.6.tgz#fe6924771ea40fc98dc7a7045c2e872dc8527609" @@ -2617,36 +2612,6 @@ prop-types "^15.6.1" react-lifecycles-compat "^3.0.4" -"@react-spring/animated@9.0.0-rc.3": - version "9.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@react-spring/animated/-/animated-9.0.0-rc.3.tgz#e792cb76aacecfc78db2be6020ac11ce96503eb5" - integrity sha512-dAvgtKhkYpzzr+EkmZ4ZuJ5CujxCW0LaT109DvO/2MQNk3EWIxcgl+ik4tSulSbgau1GN8RlkRKyDp0wISdQ3Q== - dependencies: - "@babel/runtime" "^7.3.1" - "@react-spring/shared" "9.0.0-rc.3" - react-layout-effect "^1.0.1" - -"@react-spring/core@9.0.0-rc.3": - version "9.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@react-spring/core/-/core-9.0.0-rc.3.tgz#c8e697573936c525bd0f6ca0c0869f75c86e8a83" - integrity sha512-3OzsVFxpfMJNkkQj8TwAH3NhUAX76AXu6WkslQF4EgBeEoG5eY3m+VvM9RsAsGWDuBKpscZ/wBpFt5Ih6KdGHA== - dependencies: - "@babel/runtime" "^7.3.1" - "@react-spring/animated" "9.0.0-rc.3" - "@react-spring/shared" "9.0.0-rc.3" - react-layout-effect "^1.0.1" - use-memo-one "^1.1.0" - -"@react-spring/shared@9.0.0-rc.3": - version "9.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@react-spring/shared/-/shared-9.0.0-rc.3.tgz#3f4c9d90accc20fef51a283a7806d78390b84161" - integrity sha512-dd50TxwwMWd+dSB0InjndUN9w17cbnMCPy+0sag6zRxxKIo7eOyWSliOtLKxvufgmdC8Prm4M3GT5dmB1yxKEQ== - dependencies: - "@alloc/types" "^1.2.1" - "@babel/runtime" "^7.3.1" - fluids "^0.1.6" - tslib "^1.11.1" - "@semantic-release/changelog@^5.0.1": version "5.0.1" resolved "https://registry.yarnpkg.com/@semantic-release/changelog/-/changelog-5.0.1.tgz#50a84b63e5d391b7debfe021421589fa2bcdafe4" @@ -8392,11 +8357,6 @@ flatted@^2.0.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== -fluids@^0.1.6: - version "0.1.10" - resolved "https://registry.yarnpkg.com/fluids/-/fluids-0.1.10.tgz#0517e7a53dbce1db011dddec301b75178518ba0e" - integrity sha512-66FLmUJOrkvEHIsRVeM+88MG0bjd2TOBuR0BkM0hzyCb68W9drzqeX/AHDNp3ouZALQN7JvBvmKdVhHI+PZsdg== - flush-write-stream@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" @@ -15651,11 +15611,6 @@ react-is@^16.12.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.6, react-i resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react-layout-effect@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/react-layout-effect/-/react-layout-effect-1.0.5.tgz#0dc4e24452aee5de66c93c166f0ec512dfb1be80" - integrity sha512-zdRXHuch+OBHU6bvjTelOGUCM+UDr/iCY+c0wXLEAc+G4/FlcJruD/hUOzlKH5XgO90Y/BUJPNhI/g9kl+VAsA== - react-lifecycles-compat@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362" @@ -15750,16 +15705,6 @@ react-spring@^8.0.27: "@babel/runtime" "^7.3.1" prop-types "^15.5.8" -"react-spring@npm:@react-spring/web@9.0.0-rc.3": - version "9.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@react-spring/web/-/web-9.0.0-rc.3.tgz#da977382f91d9af4c400e4aa7dc37d3db07b87e0" - integrity sha512-rEvipblmihiz8+Eo01zDp5dqWn6XfYk8q2rlN9c18YIOL4o6nuY/VplDoocUMHYfH4liurpO4o1QudKOO1nAiQ== - dependencies: - "@babel/runtime" "^7.3.1" - "@react-spring/animated" "9.0.0-rc.3" - "@react-spring/core" "9.0.0-rc.3" - "@react-spring/shared" "9.0.0-rc.3" - react-test-renderer@^16.13.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.13.1.tgz#de25ea358d9012606de51e012d9742e7f0deabc1" @@ -18795,7 +18740,7 @@ tslib@1.11.1, tslib@^1, tslib@^1.8.1, tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== -tslib@^1.10.0, tslib@^1.11.1, tslib@^1.11.2, tslib@^1.13.0, tslib@^1.9.3: +tslib@^1.10.0, tslib@^1.11.2, tslib@^1.13.0, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -19415,11 +19360,6 @@ use-media@^1.4.0: resolved "https://registry.yarnpkg.com/use-media/-/use-media-1.4.0.tgz#e777bf1f382a7aacabbd1f9ce3da2b62e58b2a98" integrity sha512-XsgyUAf3nhzZmEfhc5MqLHwyaPjs78bgytpVJ/xDl0TF4Bptf3vEpBNBBT/EIKOmsOc8UbuECq3mrP3mt1QANA== -use-memo-one@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/use-memo-one/-/use-memo-one-1.1.2.tgz#0c8203a329f76e040047a35a1197defe342fab20" - integrity sha512-u2qFKtxLsia/r8qG0ZKkbytbztzRb317XCkT7yP8wxL0tZ/CzK2G+WWie5vWvpyeP7+YoPIwbJoIHJ4Ba4k0oQ== - use-persisted-state@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/use-persisted-state/-/use-persisted-state-0.3.0.tgz#f8e3d2fd8eee67e0c86fd596c3ea3e8121c07402" From 794ca3fc796d770c36fc45bcbd9c7f194c944528 Mon Sep 17 00:00:00 2001 From: Jerel Miller <jerelmiller@gmail.com> Date: Sun, 7 Mar 2021 20:54:54 -0800 Subject: [PATCH 31/40] chore: polyfill requestAnimationFrame in ssr --- gatsby-ssr.js | 1 + 1 file changed, 1 insertion(+) diff --git a/gatsby-ssr.js b/gatsby-ssr.js index 83bbf8c51..2cec2ee99 100644 --- a/gatsby-ssr.js +++ b/gatsby-ssr.js @@ -8,6 +8,7 @@ import React, { createContext } from 'react'; import wrapPageElement from './gatsby/wrap-page-element'; global.window = { + requestAnimationFrame: () => {}, __NR1_SDK__: { default: { PlatformStateContext: createContext(), From e6406d40cb64603fea81b34f42d9138ec9c195d0 Mon Sep 17 00:00:00 2001 From: Jerel Miller <jerelmiller@gmail.com> Date: Sun, 7 Mar 2021 20:59:28 -0800 Subject: [PATCH 32/40] chore: dont add trailing slashes for now. Need more testing --- gatsby-config.js | 1 - 1 file changed, 1 deletion(-) diff --git a/gatsby-config.js b/gatsby-config.js index f2e7484ad..13322bfc2 100644 --- a/gatsby-config.js +++ b/gatsby-config.js @@ -16,7 +16,6 @@ module.exports = { { resolve: '@newrelic/gatsby-theme-newrelic', options: { - forceTrailingSlashes: true, gaTrackingId: 'UA-3047412-33', layout: { contentPadding: '2rem', From 06a6d695a0952a47a005356c0002ad06e65a326c Mon Sep 17 00:00:00 2001 From: Aaron Bassett <me@aaronbassett.com> Date: Mon, 8 Mar 2021 15:28:16 -0500 Subject: [PATCH 33/40] chore(podcasts): Add The Relicans Launchies and Polyglot podcast embeds --- src/pages/podcasts.js | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/src/pages/podcasts.js b/src/pages/podcasts.js index 63a2f6549..b6252fe3a 100644 --- a/src/pages/podcasts.js +++ b/src/pages/podcasts.js @@ -1,11 +1,26 @@ +import PageLayout from '../components/PageLayout'; import React from 'react'; -import cx from 'classnames'; import SEO from '../components/Seo'; -import PageLayout from '../components/PageLayout'; +import cx from 'classnames'; import podcastsHeader from '../images/podcasts/podcasts.jpg'; import styles from './podcasts.module.scss'; const PodcastsPage = () => { + const podcastIds = ['1225223', '1677727', '1677670']; + + const podcastEmbeds = podcastIds.map((podcastId) => { + return ( + <section className={cx(styles.section, styles.player)} key={podcastId}> + <div> + <iframe + title="buzzsprout" + src={`https://www.buzzsprout.com/${podcastId}?client_source=large_player&iframe=true&referrer=https://www.buzzsprout.com/${podcastId}.js?container_id=buzzsprout-large-player-${podcastId}&player=large`} + /> + </div> + </section> + ); + }); + return ( <> <SEO /> @@ -54,14 +69,8 @@ const PodcastsPage = () => { alt="podcasts header" /> </section> - <section className={cx(styles.section, styles.player)}> - <div id="buzzsprout-player"> - <iframe - title="buzzsprout" - src="https://www.buzzsprout.com/1225223?client_source=large_player&iframe=true&referrer=https://www.buzzsprout.com/1225223.js?container_id=buzzsprout-large-player-1225223&player=large" - /> - </div> - </section> + + {podcastEmbeds} </PageLayout.Content> </PageLayout> </> From e9f50c3d1c823d3f7134b37572f0c5ef998a11c4 Mon Sep 17 00:00:00 2001 From: Aaron Bassett <me@aaronbassett.com> Date: Mon, 8 Mar 2021 16:12:17 -0500 Subject: [PATCH 34/40] chore(podcast): Apply requested changes from review - Add meaningful title to iframes - Remove superfluous div from embed code - Move emebed map inline --- src/pages/podcasts.js | 42 +++++++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/src/pages/podcasts.js b/src/pages/podcasts.js index b6252fe3a..12fa21940 100644 --- a/src/pages/podcasts.js +++ b/src/pages/podcasts.js @@ -6,20 +6,20 @@ import podcastsHeader from '../images/podcasts/podcasts.jpg'; import styles from './podcasts.module.scss'; const PodcastsPage = () => { - const podcastIds = ['1225223', '1677727', '1677670']; - - const podcastEmbeds = podcastIds.map((podcastId) => { - return ( - <section className={cx(styles.section, styles.player)} key={podcastId}> - <div> - <iframe - title="buzzsprout" - src={`https://www.buzzsprout.com/${podcastId}?client_source=large_player&iframe=true&referrer=https://www.buzzsprout.com/${podcastId}.js?container_id=buzzsprout-large-player-${podcastId}&player=large`} - /> - </div> - </section> - ); - }); + const podcastsMeta = [ + { + id: '1225223', + title: 'Observy McObservface', + }, + { + id: '1677727', + title: 'Polyglot', + }, + { + id: '1677670', + title: 'Launchies', + }, + ]; return ( <> @@ -70,7 +70,19 @@ const PodcastsPage = () => { /> </section> - {podcastEmbeds} + {podcastsMeta.map((podcastMeta) => { + return ( + <section + className={cx(styles.section, styles.player)} + key={podcastMeta.id} + > + <iframe + title={`${podcastMeta.title} podcast player`} + src={`https://www.buzzsprout.com/${podcastMeta.id}?client_source=large_player&iframe=true&referrer=https://www.buzzsprout.com/${podcastMeta.id}.js?container_id=buzzsprout-large-player-${podcastMeta.id}&player=large`} + /> + </section> + ); + })} </PageLayout.Content> </PageLayout> </> From 2f0ea5600e9bef3fbe738383abd5c1ce9c97d1d0 Mon Sep 17 00:00:00 2001 From: lbaker <lizbaker.pdx@gmail.com> Date: Mon, 8 Mar 2021 14:55:39 -0800 Subject: [PATCH 35/40] fix: Use correct path for set-up-dev-env guide link --- src/markdown-pages/build-apps/add-nerdgraphquery-guide.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/markdown-pages/build-apps/add-nerdgraphquery-guide.mdx b/src/markdown-pages/build-apps/add-nerdgraphquery-guide.mdx index 3706a2470..eb267e1d7 100644 --- a/src/markdown-pages/build-apps/add-nerdgraphquery-guide.mdx +++ b/src/markdown-pages/build-apps/add-nerdgraphquery-guide.mdx @@ -50,7 +50,7 @@ If you've already installed the New Relic One CLI, but you can't remember your a </Callout> -For additional details, see [Set up your development environment](set-up-dev-env). +For additional details, see [Set up your development environment](/build-apps/set-up-dev-env). ## Prepare the sample code From 2736ad82b96af23ffa938b29332c5562695e843e Mon Sep 17 00:00:00 2001 From: lbaker <lizbaker.pdx@gmail.com> Date: Mon, 8 Mar 2021 14:56:17 -0800 Subject: [PATCH 36/40] fix: Swap guide linked for permissions --- src/markdown-pages/explore-docs/nr1-cli.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/markdown-pages/explore-docs/nr1-cli.mdx b/src/markdown-pages/explore-docs/nr1-cli.mdx index c605a3953..d4ef26b30 100644 --- a/src/markdown-pages/explore-docs/nr1-cli.mdx +++ b/src/markdown-pages/explore-docs/nr1-cli.mdx @@ -56,7 +56,7 @@ Use the [NR1 VS Code extension](https://marketplace.visualstudio.com/items?itemN This table provides descriptions for the New Relic One commands. For more context, including usage and option details, click any individual command or the command category. -For details on user permissions, see [Authentication and permissions](/build-apps/set-up-dev-env). +For details on user permissions, see [Authentication and permissions](/build-apps/permission-manage-apps). For more on how to serve and publish your application, see our guide on [Deploying your New Relic One app](/build-tools/new-relic-one-applications/publish-deploy). From d2bb6a8795e987b89a1c1058390d4052b48163c1 Mon Sep 17 00:00:00 2001 From: lbaker <lizbaker.pdx@gmail.com> Date: Mon, 8 Mar 2021 15:07:41 -0800 Subject: [PATCH 37/40] chore: Add a couple more set-up-dev-env path tweaks --- src/markdown-pages/build-apps/add-time-picker-guide.mdx | 2 +- src/markdown-pages/build-apps/build-hello-world-app.mdx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/markdown-pages/build-apps/add-time-picker-guide.mdx b/src/markdown-pages/build-apps/add-time-picker-guide.mdx index b5d834218..28288383c 100644 --- a/src/markdown-pages/build-apps/add-time-picker-guide.mdx +++ b/src/markdown-pages/build-apps/add-time-picker-guide.mdx @@ -43,7 +43,7 @@ If you've already installed the New Relic One CLI, but you can't remember your a </Callout> -For additional details, see [Set up your development environment](set-up-dev-env). +For additional details, see [Set up your development environment](/build-apps/set-up-dev-env). ## Prepare the time picker sample code diff --git a/src/markdown-pages/build-apps/build-hello-world-app.mdx b/src/markdown-pages/build-apps/build-hello-world-app.mdx index 25568e69d..4f307b2cf 100644 --- a/src/markdown-pages/build-apps/build-hello-world-app.mdx +++ b/src/markdown-pages/build-apps/build-hello-world-app.mdx @@ -41,7 +41,7 @@ If you haven't already installed it, do the following: - Install [Node.js](https://nodejs.org/en/download/). - Complete all the steps in the [CLI quick start](https://one.newrelic.com/launcher/developer-center.launcher?pane=eyJuZXJkbGV0SWQiOiJkZXZlbG9wZXItY2VudGVyLmRldmVsb3Blci1jZW50ZXIifQ==). -For additional details about setting up your environment, see [Set up your development environment](set-up-dev-env). +For additional details about setting up your environment, see [Set up your development environment](/build-apps/set-up-dev-env). <Callout variant="tip"> From 0ddfd97a03f7a85232faf0928c03f31d2013b605 Mon Sep 17 00:00:00 2001 From: nr-opensource-bot <opensource+bot@newrelic.com> Date: Tue, 9 Mar 2021 21:43:11 +0000 Subject: [PATCH 38/40] chore(release): 1.35.6 ## [1.35.6](https://github.com/newrelic/developer-website/compare/v1.35.5...v1.35.6) (2021-03-09) ### Bug Fixes * Swap guide linked for permissions ([2736ad8](https://github.com/newrelic/developer-website/commit/2736ad82b96af23ffa938b29332c5562695e843e)) * Use correct path for set-up-dev-env guide link ([2f0ea56](https://github.com/newrelic/developer-website/commit/2f0ea5600e9bef3fbe738383abd5c1ce9c97d1d0)) --- CHANGELOG.md | 8 ++++++++ package.json | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3386a9dbd..2051fd4d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ +## [1.35.6](https://github.com/newrelic/developer-website/compare/v1.35.5...v1.35.6) (2021-03-09) + + +### Bug Fixes + +* Swap guide linked for permissions ([2736ad8](https://github.com/newrelic/developer-website/commit/2736ad82b96af23ffa938b29332c5562695e843e)) +* Use correct path for set-up-dev-env guide link ([2f0ea56](https://github.com/newrelic/developer-website/commit/2f0ea5600e9bef3fbe738383abd5c1ce9c97d1d0)) + ## [1.35.5](https://github.com/newrelic/developer-website/compare/v1.35.4...v1.35.5) (2021-02-25) diff --git a/package.json b/package.json index a6a3dc860..fa3d906de 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "developer-website", "private": true, - "version": "1.35.5", + "version": "1.35.6", "dependencies": { "@emotion/core": "^10.1.1", "@emotion/styled": "^10.0.27", From b82372bba6be823c4ee6c06fa6a2ae34e32e4921 Mon Sep 17 00:00:00 2001 From: Jemiah Sius <jsius@newrelic.com> Date: Wed, 10 Mar 2021 16:03:13 -0500 Subject: [PATCH 39/40] add fs registration banner --- src/pages/index.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/pages/index.js b/src/pages/index.js index 7555e5f89..69a9e88d3 100644 --- a/src/pages/index.js +++ b/src/pages/index.js @@ -16,6 +16,7 @@ import { pageContext } from '../types'; import styles from './index.module.scss'; import devChampionBadge from '../images/developer-champion/dev-champion-badge.png'; import podcastBadge from '../images/podcasts/podcasts-badge.png'; +import fsBanner from '../images/futurestack-registration.png'; import Video from '../components/Video'; const getStartedGuides = [ @@ -58,6 +59,19 @@ const IndexPage = ({ data, pageContext }) => { <PageLayout.Header title="Getting started with New Relic and Terraform" /> <PageLayout.Content> + <section> + <a href="https://newrelic.com/futurestack"> + <img + css={css` + display: block; + width: 99%; + margin-bottom: 25px; + `} + src={fsBanner} + alt="Register for FutureStack 2021" + /> + </a> + </section> <section css={css` margin-top: 0; From 3344d9e0c7765a14a2403492ce991b822998c7b9 Mon Sep 17 00:00:00 2001 From: Jemiah Sius <jsius@newrelic.com> Date: Wed, 10 Mar 2021 16:14:03 -0500 Subject: [PATCH 40/40] Add fs banner image --- src/images/futurestack-registration.png | Bin 0 -> 37088 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/images/futurestack-registration.png diff --git a/src/images/futurestack-registration.png b/src/images/futurestack-registration.png new file mode 100644 index 0000000000000000000000000000000000000000..9b9a210893997440f7e0a030d31319a5790e0db0 GIT binary patch literal 37088 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 literal 0 HcmV?d00001