diff --git a/firebase.json b/firebase.json index cddae0f439..1eca9c9001 100644 --- a/firebase.json +++ b/firebase.json @@ -100,6 +100,16 @@ "source": "/docs/*", "destination": "/api/", "type": "301" + }, + { + "source": "/api/", + "destination": "/api/v18/documentation/", + "type": "301" + }, + { + "source": "/api/v18/", + "destination": "/api/v18/documentation/", + "type": "301" } ] } \ No newline at end of file diff --git a/gatsby-config.js b/gatsby-config.js index ddb0785d19..a6791ee894 100644 --- a/gatsby-config.js +++ b/gatsby-config.js @@ -5,11 +5,26 @@ require('dotenv').config(); const config = require('./src/config.json'); const { localesAsString, defaultLanguage } = require('./locales'); -const gatsbyConfig = { - flags: { - FAST_DEV: true, - PARALLEL_SOURCING: true, +const markdownSources = [ + 'about', + 'api', + 'community', + 'download', + 'homepage', + 'learn', + 'blog', +]; + +const gatsbyFsMarkdownSources = markdownSources.map(name => ({ + resolve: 'gatsby-source-filesystem', + options: { + name, + path: path.resolve(__dirname, `./content/${name}`), }, +})); + +const gatsbyConfig = { + flags: { FAST_DEV: true }, pathPrefix: process.env.PATH_PREFIX, siteMetadata: { title: config.title, @@ -24,10 +39,15 @@ const gatsbyConfig = { 'Mdx.frontmatter.category': `CategoriesYaml.name`, }, plugins: [ + 'gatsby-plugin-typescript', 'gatsby-plugin-catch-links', '@skagami/gatsby-plugin-dark-mode', 'gatsby-transformer-yaml', - 'gatsby-plugin-sharp', + 'gatsby-plugin-sitemap', + // This generates the redirects for the I18N redirects + // It also creates meta redirects for any usage of `createRedirect` + 'gatsby-plugin-meta-redirect', + ...gatsbyFsMarkdownSources, { resolve: 'gatsby-plugin-canonical-urls', options: { @@ -45,41 +65,6 @@ const gatsbyConfig = { }, }, }, - { - resolve: 'gatsby-source-filesystem', - options: { - name: 'learn', - path: path.resolve(__dirname, './content/learn'), - }, - }, - { - resolve: 'gatsby-source-filesystem', - options: { - name: 'sites', - path: path.resolve(__dirname, './src/pages'), - }, - }, - { - resolve: 'gatsby-source-filesystem', - options: { - name: 'homepage', - path: path.resolve(__dirname, './content/homepage'), - }, - }, - { - resolve: 'gatsby-source-filesystem', - options: { - name: 'community', - path: path.resolve(__dirname, './content/community'), - }, - }, - { - resolve: 'gatsby-source-filesystem', - options: { - name: 'blog', - path: path.resolve(__dirname, './content/blog'), - }, - }, { resolve: 'gatsby-source-filesystem', options: { @@ -87,34 +72,13 @@ const gatsbyConfig = { path: path.resolve(__dirname, './src/data'), }, }, - { - resolve: 'gatsby-source-filesystem', - options: { - name: 'about', - path: path.resolve(__dirname, './content/about'), - }, - }, - { - resolve: 'gatsby-source-filesystem', - options: { - name: 'download', - path: path.resolve(__dirname, './content/download'), - }, - }, - { - resolve: 'gatsby-source-filesystem', - options: { - name: 'api', - path: path.resolve(__dirname, './content/api'), - }, - }, - 'gatsby-plugin-typescript', { resolve: 'gatsby-plugin-mdx', options: { extensions: ['.mdx', '.md'], + // Disables Babel Loader for MDX which fastens the build time + lessBabel: true, gatsbyRemarkPlugins: [ - { resolve: 'gatsby-remark-copy-linked-files' }, { resolve: 'gatsby-remark-autolink-headers', options: { @@ -125,13 +89,6 @@ const gatsbyConfig = { removeAccents: true, }, }, - { - resolve: 'gatsby-remark-images', - options: { - maxWidth: 590, - backgroundColor: 'transparent', - }, - }, ], }, }, @@ -226,9 +183,6 @@ const gatsbyConfig = { cache_busting_mode: 'none', }, }, - 'gatsby-plugin-sitemap', - 'gatsby-plugin-meta-redirect', - 'gatsby-plugin-minify-html', ], }; diff --git a/gatsby-node.js b/gatsby-node.js index 5f0554b163..53d0e60376 100644 --- a/gatsby-node.js +++ b/gatsby-node.js @@ -8,11 +8,13 @@ const createSlug = require('./util-node/createSlug'); const getNodeReleasesData = require('./util-node/getNodeReleasesData'); const getBannersData = require('./util-node/getBannersData'); const getNvmData = require('./util-node/getNvmData'); -const createPagesQuery = require('./util-node/createPagesQuery'); +const createBlogQuery = require('./util-node/createBlogQuery'); const createLearnQuery = require('./util-node/createLearnQuery'); const createApiQuery = require('./util-node/createApiQuery'); -const createMarkdownPages = require('./util-node/createMarkdownPages'); +const createBlogPages = require('./util-node/createBlogPages'); +const createLearnPages = require('./util-node/createLearnPages'); const createApiPages = require('./util-node/createApiPages'); +const generateRedirects = require('./util-node/generateRedirects'); const redirects = require('./redirects'); const nodeLocales = require('./locales'); const { learnPath, apiPath, blogPath } = require('./pathPrefixes'); @@ -69,34 +71,28 @@ exports.createSchemaCustomization = ({ actions }) => { createTypes(typeDefs); }; -exports.createPages = async ({ graphql, actions, reporter }) => { +exports.createPages = async ({ graphql, actions }) => { const { createPage, createRedirect } = actions; const pageRedirects = { ...redirects }; - const apiTemplate = path.resolve(__dirname, './src/templates/api.tsx'); - const learnTemplate = path.resolve(__dirname, './src/templates/learn.tsx'); - const blogTemplate = path.resolve(__dirname, './src/templates/blog.tsx'); - const blogCategoryTemplate = path.resolve( - __dirname, - './src/templates/blog-category.tsx' - ); + const templates = path.resolve(__dirname, './src/templates/'); + + const apiTemplate = `${templates}/api.tsx`; + const learnTemplate = `${templates}/learn.tsx`; + const postTemplate = `${templates}/post.tsx`; + const blogTemplate = `${templates}/blog.tsx`; - const [learnResult, pagesResult, apiResult] = await Promise.all([ + const [learnResult, blogResult, apiResult] = await Promise.all([ graphql(createLearnQuery), - graphql(createPagesQuery), + graphql(createBlogQuery), graphql(createApiQuery), ]); - if (pagesResult.errors || learnResult.errors || apiResult.errors) { - reporter.panicOnBuild('Error while running GraphQL queries.'); - return; - } - const { - pages: { edges: pageEdges }, + pages: { edges: blogEdges }, categories: { edges: categoryEdges }, - } = pagesResult.data; + } = blogResult.data; const { allMdx: { edges: learnEdges }, @@ -104,44 +100,72 @@ exports.createPages = async ({ graphql, actions, reporter }) => { const { pages: { edges: apiEdges }, - nodeReleases: { nodeReleasesVersion }, + nodeReleases: { nodeReleasesData, apiAvailableVersions }, } = apiResult.data; - const { - markdownPages, - learnPages, - firstLearnPage, - navigationData: learNavigationData, - } = createMarkdownPages(pageEdges, learnEdges, learnYamlNavigationData); + const { blogPages } = createBlogPages(blogEdges); + + const { learnPages, navigationData: learnNavigationData } = createLearnPages( + learnEdges, + learnYamlNavigationData + ); const { apiPages, latestVersion, navigationData: apiNavigationData, defaultNavigationRedirects: apiRedirects, - } = createApiPages(apiEdges, apiTypesNavigationData, nodeReleasesVersion); + } = createApiPages(apiEdges, apiTypesNavigationData, nodeReleasesData); + + createPage({ + path: learnPath, + component: learnTemplate, + context: { ...learnPages[0], navigationData: learnNavigationData }, + }); - if (firstLearnPage) { + createPage({ + path: blogPath, + component: blogTemplate, + context: { categories: categoryEdges, posts: blogEdges }, + }); + + learnPages.forEach(page => { createPage({ - path: learnPath, + path: page.slug, component: learnTemplate, - context: { ...firstLearnPage, navigationData: learNavigationData }, + context: { ...page, navigationData: learnNavigationData }, }); - } + }); - learnPages.forEach(page => { + blogPages.forEach(page => { createPage({ path: page.slug, - component: learnTemplate, - context: { ...page, navigationData: learNavigationData }, + component: postTemplate, + context: { ...page, recent: blogEdges.slice(0, 9) }, }); }); categoryEdges.forEach(({ node }) => { + const posts = blogEdges.filter( + ({ node: item }) => item.fields.categoryName === node.name + ); + createPage({ path: `${blogPath}${node.name}/`, - component: blogCategoryTemplate, - context: { categoryName: node.name }, + component: blogTemplate, + context: { categories: categoryEdges, category: node, posts }, + }); + }); + + apiPages.forEach(page => { + createPage({ + path: page.slug, + component: apiTemplate, + context: { + ...page, + navigationData: apiNavigationData[page.version], + nodeReleases: { nodeReleasesData, apiAvailableVersions }, + }, }); }); @@ -150,6 +174,11 @@ exports.createPages = async ({ graphql, actions, reporter }) => { pageRedirects[apiPath] = `${latestApiPath}documentation/`; pageRedirects[latestApiPath] = `${latestApiPath}documentation/`; + // Updates `firebase.json` with new redirects + // This is used for our static hosting redirects (npm run build) + // When using `npm run serve` or `npm run start` this will not be needed + generateRedirects(pageRedirects); + apiRedirects.forEach(({ from, to }) => { pageRedirects[`${apiPath}${from}`] = `${apiPath}${to}`; @@ -158,33 +187,13 @@ exports.createPages = async ({ graphql, actions, reporter }) => { pageRedirects[`${apiPath}${from.slice(0, -1)}.html`] = `${apiPath}${to}`; }); - apiPages.forEach(page => { - createPage({ - path: page.slug, - component: apiTemplate, - context: { ...page, navigationData: apiNavigationData[page.version] }, - }); - }); - - markdownPages - .filter(page => page.realPath.match(blogPath)) - .forEach(page => { - // Blog Pages don't necessary need to be within the `blog` category - // But actually inside /content/blog/ section of the repository - createPage({ - path: page.slug, - component: blogTemplate, - context: page, - }); - }); - // Create Redirects for Pages Object.keys(pageRedirects).forEach(from => { const metadata = { fromPath: from, toPath: pageRedirects[from], isPermanent: true, - redirectInBrowser: true, + redirectInBrowser: process.env.NODE_ENV === 'development', statusCode: 200, }; diff --git a/package-lock.json b/package-lock.json index bf718fe49f..8e2f802f4a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,22 +41,16 @@ "gatsby-plugin-manifest": "^4.20.0", "gatsby-plugin-mdx": "^3.20.0", "gatsby-plugin-meta-redirect": "^1.1.1", - "gatsby-plugin-minify-html": "^1.0.4", "gatsby-plugin-offline-next": "^5.2.3", "gatsby-plugin-sass": "^5.20.0", - "gatsby-plugin-sharp": "^4.20.0", "gatsby-plugin-sitemap": "^5.20.0", "gatsby-plugin-svgr": "^3.0.0-beta.0", "gatsby-plugin-typescript": "^4.20.0", "gatsby-plugin-webfonts": "^2.2.2", - "gatsby-react-router-scroll": "^5.20.0", "gatsby-remark-autolink-headers": "^5.21.0", - "gatsby-remark-copy-linked-files": "^5.21.0", - "gatsby-remark-images": "^6.21.0", "gatsby-remark-prismjs": "^6.21.0", "gatsby-source-filesystem": "^4.20.0", "gatsby-theme-i18n": "^3.0.0", - "gatsby-transformer-remark": "^5.20.0", "gatsby-transformer-yaml": "^4.20.0", "highlight.js": "^11.6.0", "intersection-observer": "^0.12.2", @@ -6610,11 +6604,6 @@ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" }, - "node_modules/@types/q": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", - "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==" - }, "node_modules/@types/reach__router": { "version": "1.3.10", "resolved": "https://registry.npmjs.org/@types/reach__router/-/reach__router-1.3.10.tgz", @@ -7713,24 +7702,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.reduce": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz", - "integrity": "sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/arrify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", @@ -9097,25 +9068,6 @@ "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" }, - "node_modules/clean-css": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", - "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/clean-css/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/cli-boxes": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", @@ -9381,19 +9333,6 @@ "node": ">= 0.12.0" } }, - "node_modules/coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "dependencies": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - }, - "engines": { - "node": ">= 4.0" - } - }, "node_modules/collapse-white-space": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", @@ -10034,11 +9973,6 @@ "url": "https://github.com/sponsors/fb55" } }, - "node_modules/css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" - }, "node_modules/css-selector-parser": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.4.1.tgz", @@ -11098,11 +11032,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" - }, "node_modules/es-module-lexer": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", @@ -12639,30 +12568,6 @@ "node": ">=10" } }, - "node_modules/filename-reserved-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/filenamify": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", - "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", - "dependencies": { - "filename-reserved-regex": "^2.0.0", - "strip-outer": "^1.0.1", - "trim-repeated": "^1.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/filesize": { "version": "8.0.7", "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", @@ -14064,15 +13969,6 @@ "node": ">= 4.0.0" } }, - "node_modules/gatsby-plugin-minify-html": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/gatsby-plugin-minify-html/-/gatsby-plugin-minify-html-1.0.4.tgz", - "integrity": "sha512-K+/CyZwjXBU6G/whXPtKbECxmpmqSvqfn2PqRuOjhEGrwt9PDuCZ66r0KyV/tHo+FPGkJrEVHfVGEp/Wn6LD5Q==", - "dependencies": { - "glob": "^7.1.6", - "html-minifier-terser": "^5.1.1" - } - }, "node_modules/gatsby-plugin-offline-next": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/gatsby-plugin-offline-next/-/gatsby-plugin-offline-next-5.2.3.tgz", @@ -14258,177 +14154,6 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, - "node_modules/gatsby-plugin-sharp": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/gatsby-plugin-sharp/-/gatsby-plugin-sharp-4.22.0.tgz", - "integrity": "sha512-LL9M6aa5lXXRg1CrjIs10v2gMyjnVWBwWNXZCQzhP2OHdfxPhL4YapYIWPIJXqQSZG85bOP09fEnFfOpttfgUQ==", - "dependencies": { - "@babel/runtime": "^7.15.4", - "@gatsbyjs/potrace": "^2.3.0", - "async": "^3.2.4", - "bluebird": "^3.7.2", - "debug": "^4.3.4", - "filenamify": "^4.3.0", - "fs-extra": "^10.1.0", - "gatsby-core-utils": "^3.22.0", - "gatsby-plugin-utils": "^3.16.0", - "lodash": "^4.17.21", - "mini-svg-data-uri": "^1.4.4", - "probe-image-size": "^7.2.3", - "semver": "^7.3.7", - "sharp": "^0.30.7", - "svgo": "1.3.2" - }, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "gatsby": "^4.0.0-next" - } - }, - "node_modules/gatsby-plugin-sharp/node_modules/css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "node_modules/gatsby-plugin-sharp/node_modules/css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", - "dependencies": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/gatsby-plugin-sharp/node_modules/css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/gatsby-plugin-sharp/node_modules/dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dependencies": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - } - }, - "node_modules/gatsby-plugin-sharp/node_modules/domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "node_modules/gatsby-plugin-sharp/node_modules/domutils/node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, - "node_modules/gatsby-plugin-sharp/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/gatsby-plugin-sharp/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/gatsby-plugin-sharp/node_modules/mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" - }, - "node_modules/gatsby-plugin-sharp/node_modules/nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dependencies": { - "boolbase": "~1.0.0" - } - }, - "node_modules/gatsby-plugin-sharp/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/gatsby-plugin-sharp/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gatsby-plugin-sharp/node_modules/svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", - "dependencies": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/gatsby-plugin-sharp/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/gatsby-plugin-sitemap": { "version": "5.22.0", "resolved": "https://registry.npmjs.org/gatsby-plugin-sitemap/-/gatsby-plugin-sitemap-5.22.0.tgz", @@ -14584,116 +14309,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/gatsby-remark-copy-linked-files": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/gatsby-remark-copy-linked-files/-/gatsby-remark-copy-linked-files-5.22.0.tgz", - "integrity": "sha512-n+HNVZDtog7o4LX0yS0uQbcPectfcf1VuOou/rhkzeGR1vKXTcTHpfc4A+n9MfvoBoV8N4FyZCGjSzxF9nqS2g==", - "dependencies": { - "@babel/runtime": "^7.15.4", - "cheerio": "^1.0.0-rc.10", - "fs-extra": "^10.1.0", - "is-relative-url": "^3.0.0", - "lodash": "^4.17.21", - "path-is-inside": "^1.0.2", - "probe-image-size": "^7.2.3", - "unist-util-visit": "^2.0.3" - }, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "gatsby": "^4.0.0-next" - } - }, - "node_modules/gatsby-remark-images": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/gatsby-remark-images/-/gatsby-remark-images-6.22.0.tgz", - "integrity": "sha512-4H/NTHaeika9ftDSQjEWvrlRhTSgHHVK07blqqQM1wsvknjphtjB5S4i6SuByYD8U+j8Lment5BEP9HJVNx+LA==", - "dependencies": { - "@babel/runtime": "^7.15.4", - "@gatsbyjs/potrace": "^2.3.0", - "chalk": "^4.1.2", - "cheerio": "^1.0.0-rc.10", - "gatsby-core-utils": "^3.22.0", - "is-relative-url": "^3.0.0", - "lodash": "^4.17.21", - "mdast-util-definitions": "^4.0.0", - "query-string": "^6.14.1", - "unist-util-select": "^3.0.4", - "unist-util-visit-parents": "^3.1.1" - }, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "gatsby": "^4.0.0-next", - "gatsby-plugin-sharp": "^4.0.0-next" - } - }, - "node_modules/gatsby-remark-images/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/gatsby-remark-images/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/gatsby-remark-images/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/gatsby-remark-images/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/gatsby-remark-images/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/gatsby-remark-images/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/gatsby-remark-prismjs": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/gatsby-remark-prismjs/-/gatsby-remark-prismjs-6.22.0.tgz", @@ -14895,205 +14510,6 @@ "react-helmet": "^6.1.0" } }, - "node_modules/gatsby-transformer-remark": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/gatsby-transformer-remark/-/gatsby-transformer-remark-5.22.0.tgz", - "integrity": "sha512-kN/HZ1rh43ltcTye+YVjD7OddOouHmHK/KHRb0saSyeQWtQKe5HQZxFayHruynhSb3pFjx13l08eadEpCko6SQ==", - "dependencies": { - "@babel/runtime": "^7.15.4", - "gatsby-core-utils": "^3.22.0", - "gray-matter": "^4.0.3", - "hast-util-raw": "^6.0.2", - "hast-util-to-html": "^7.1.3", - "lodash": "^4.17.21", - "mdast-util-to-hast": "^10.2.0", - "mdast-util-to-string": "^2.0.0", - "mdast-util-toc": "^5.1.0", - "remark": "^13.0.0", - "remark-footnotes": "^3.0.0", - "remark-gfm": "^1.0.0", - "remark-parse": "^9.0.0", - "remark-retext": "^4.0.0", - "remark-stringify": "^9.0.1", - "retext-english": "^3.0.4", - "sanitize-html": "^1.27.5", - "underscore.string": "^3.3.6", - "unified": "^9.2.2", - "unist-util-remove-position": "^3.0.0", - "unist-util-select": "^3.0.4", - "unist-util-visit": "^2.0.3" - }, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "gatsby": "^4.0.0-next" - } - }, - "node_modules/gatsby-transformer-remark/node_modules/hast-util-raw": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.1.0.tgz", - "integrity": "sha512-5FoZLDHBpka20OlZZ4I/+RBw5piVQ8iI1doEvffQhx5CbCyTtP8UCq8Tw6NmTAMtXgsQxmhW7Ly8OdFre5/YMQ==", - "dependencies": { - "@types/hast": "^2.0.0", - "hast-util-from-parse5": "^6.0.0", - "hast-util-to-parse5": "^6.0.0", - "html-void-elements": "^1.0.0", - "parse5": "^6.0.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0", - "vfile": "^4.0.0", - "web-namespaces": "^1.0.0", - "xtend": "^4.0.0", - "zwitch": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/gatsby-transformer-remark/node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/gatsby-transformer-remark/node_modules/mdast-util-to-hast": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.2.0.tgz", - "integrity": "sha512-JoPBfJ3gBnHZ18icCwHR50orC9kNH81tiR1gs01D8Q5YpV6adHNO9nKNuFBCJQ941/32PT1a63UF/DitmS3amQ==", - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "mdast-util-definitions": "^4.0.0", - "mdurl": "^1.0.0", - "unist-builder": "^2.0.0", - "unist-util-generated": "^1.0.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/gatsby-transformer-remark/node_modules/mdast-util-to-nlcst": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-to-nlcst/-/mdast-util-to-nlcst-4.0.1.tgz", - "integrity": "sha512-Y4ffygj85MTt70STKnEquw6k73jYWJBaYcb4ITAKgSNokZF7fH8rEHZ1GsRY/JaxqUevMaEnsDmkVv5Z9uVRdg==", - "dependencies": { - "nlcst-to-string": "^2.0.0", - "repeat-string": "^1.0.0", - "unist-util-position": "^3.0.0", - "vfile-location": "^3.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/gatsby-transformer-remark/node_modules/mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/gatsby-transformer-remark/node_modules/mdast-util-toc": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-toc/-/mdast-util-toc-5.1.0.tgz", - "integrity": "sha512-csimbRIVkiqc+PpFeKDGQ/Ck2N4f9FYH3zzBMMJzcxoKL8m+cM0n94xXm0I9eaxHnKdY9n145SGTdyJC7i273g==", - "dependencies": { - "@types/mdast": "^3.0.3", - "@types/unist": "^2.0.3", - "extend": "^3.0.2", - "github-slugger": "^1.2.1", - "mdast-util-to-string": "^2.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/gatsby-transformer-remark/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" - }, - "node_modules/gatsby-transformer-remark/node_modules/remark": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", - "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==", - "dependencies": { - "remark-parse": "^9.0.0", - "remark-stringify": "^9.0.0", - "unified": "^9.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/gatsby-transformer-remark/node_modules/remark-footnotes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-3.0.0.tgz", - "integrity": "sha512-ZssAvH9FjGYlJ/PBVKdSmfyPc3Cz4rTWgZLI4iE/SX8Nt5l3o3oEjv3wwG5VD7xOjktzdwp5coac+kJV9l4jgg==", - "dependencies": { - "mdast-util-footnote": "^0.1.0", - "micromark-extension-footnote": "^0.3.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/gatsby-transformer-remark/node_modules/remark-parse": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", - "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", - "dependencies": { - "mdast-util-from-markdown": "^0.8.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/gatsby-transformer-remark/node_modules/remark-retext": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-retext/-/remark-retext-4.0.0.tgz", - "integrity": "sha512-cYCchalpf25bTtfXF24ribYvqytPKq0TiEhqQDBHvVEEsApebwruPWP1cTcvTFBidmpXyqzycm+y8ng7Kmvc8Q==", - "dependencies": { - "mdast-util-to-nlcst": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/gatsby-transformer-remark/node_modules/unified": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", - "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", - "dependencies": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/gatsby-transformer-yaml": { "version": "4.22.0", "resolved": "https://registry.npmjs.org/gatsby-transformer-yaml/-/gatsby-transformer-yaml-4.22.0.tgz", @@ -16452,15 +15868,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-is-element": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz", - "integrity": "sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/hast-util-parse-selector": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", @@ -16496,27 +15903,6 @@ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" }, - "node_modules/hast-util-to-html": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-7.1.3.tgz", - "integrity": "sha512-yk2+1p3EJTEE9ZEUkgHsUSVhIpCsL/bvT8E5GzmWc+N1Po5gBw+0F8bo7dpxXR0nu0bQVxVZGX2lBGF21CmeDw==", - "dependencies": { - "ccount": "^1.0.0", - "comma-separated-tokens": "^1.0.0", - "hast-util-is-element": "^1.0.0", - "hast-util-whitespace": "^1.0.0", - "html-void-elements": "^1.0.0", - "property-information": "^5.0.0", - "space-separated-tokens": "^1.0.0", - "stringify-entities": "^3.0.1", - "unist-util-is": "^4.0.0", - "xtend": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/hast-util-to-parse5": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz", @@ -16533,15 +15919,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-whitespace": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz", - "integrity": "sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/hastscript": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", @@ -16668,63 +16045,6 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "node_modules/html-minifier-terser": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", - "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", - "dependencies": { - "camel-case": "^4.1.1", - "clean-css": "^4.2.3", - "commander": "^4.1.1", - "he": "^1.2.0", - "param-case": "^3.0.3", - "relateurl": "^0.2.7", - "terser": "^4.6.3" - }, - "bin": { - "html-minifier-terser": "cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/html-minifier-terser/node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/html-minifier-terser/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/html-minifier-terser/node_modules/terser": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", - "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/html-minifier-terser/node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, "node_modules/html-tags": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz", @@ -20882,16 +20202,9 @@ } }, "node_modules/markdown-table": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", - "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", - "dependencies": { - "repeat-string": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", + "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==" }, "node_modules/markdown-yaml-metadata-parser": { "version": "3.0.0", @@ -21009,37 +20322,11 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-find-and-replace": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-1.1.1.tgz", - "integrity": "sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==", - "dependencies": { - "escape-string-regexp": "^4.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-footnote": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/mdast-util-footnote/-/mdast-util-footnote-0.1.7.tgz", - "integrity": "sha512-QxNdO8qSxqbO2e3m09KwDKfWiLgqyCurdWTQ198NpbZ2hxntdc+VKS4fDJCmNWbAroUdYnSthu+XbZ8ovh8C3w==", - "dependencies": { - "mdast-util-to-markdown": "^0.6.0", - "micromark": "~2.11.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/mdast-util-from-markdown": { "version": "0.8.5", "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", + "dev": true, "dependencies": { "@types/mdast": "^3.0.0", "mdast-util-to-string": "^2.0.0", @@ -21056,6 +20343,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "dev": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -21074,36 +20362,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-gfm": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.2.tgz", - "integrity": "sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==", - "dependencies": { - "mdast-util-gfm-autolink-literal": "^0.1.0", - "mdast-util-gfm-strikethrough": "^0.2.0", - "mdast-util-gfm-table": "^0.1.0", - "mdast-util-gfm-task-list-item": "^0.1.0", - "mdast-util-to-markdown": "^0.6.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-autolink-literal": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.3.tgz", - "integrity": "sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==", - "dependencies": { - "ccount": "^1.0.0", - "mdast-util-find-and-replace": "^1.1.0", - "micromark": "^2.11.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/mdast-util-gfm-footnote": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.1.tgz", @@ -21207,43 +20465,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/mdast-util-gfm-strikethrough": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz", - "integrity": "sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==", - "dependencies": { - "mdast-util-to-markdown": "^0.6.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-table": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz", - "integrity": "sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==", - "dependencies": { - "markdown-table": "^2.0.0", - "mdast-util-to-markdown": "~0.6.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-task-list-item": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz", - "integrity": "sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==", - "dependencies": { - "mdast-util-to-markdown": "~0.6.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/mdast-util-heading-style": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-heading-style/-/mdast-util-heading-style-2.0.0.tgz", @@ -21462,32 +20683,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-to-markdown": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", - "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", - "dependencies": { - "@types/unist": "^2.0.0", - "longest-streak": "^2.0.0", - "mdast-util-to-string": "^2.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.0.0", - "zwitch": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-markdown/node_modules/mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/mdast-util-to-nlcst": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/mdast-util-to-nlcst/-/mdast-util-to-nlcst-3.2.3.tgz", @@ -21694,6 +20889,7 @@ "version": "2.11.4", "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "dev": true, "funding": [ { "type": "GitHub Sponsors", @@ -21743,18 +20939,6 @@ "uvu": "^0.5.0" } }, - "node_modules/micromark-extension-footnote": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/micromark-extension-footnote/-/micromark-extension-footnote-0.3.2.tgz", - "integrity": "sha512-gr/BeIxbIWQoUm02cIfK7mdMZ/fbroRpLsck4kvFtjbzP4yi+OPVbnukTc/zy0i7spC2xYE/dbX1Sur8BEDJsQ==", - "dependencies": { - "micromark": "~2.11.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/micromark-extension-frontmatter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-1.0.0.tgz", @@ -21770,35 +20954,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/micromark-extension-gfm": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-0.3.3.tgz", - "integrity": "sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==", - "dependencies": { - "micromark": "~2.11.0", - "micromark-extension-gfm-autolink-literal": "~0.5.0", - "micromark-extension-gfm-strikethrough": "~0.6.5", - "micromark-extension-gfm-table": "~0.4.0", - "micromark-extension-gfm-tagfilter": "~0.3.0", - "micromark-extension-gfm-task-list-item": "~0.3.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-autolink-literal": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz", - "integrity": "sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==", - "dependencies": { - "micromark": "~2.11.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/micromark-extension-gfm-footnote": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.4.tgz", @@ -21819,51 +20974,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/micromark-extension-gfm-strikethrough": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.5.tgz", - "integrity": "sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==", - "dependencies": { - "micromark": "~2.11.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-table": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.3.tgz", - "integrity": "sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==", - "dependencies": { - "micromark": "~2.11.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-tagfilter": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-0.3.0.tgz", - "integrity": "sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-task-list-item": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz", - "integrity": "sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==", - "dependencies": { - "micromark": "~2.11.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/micromark-factory-destination": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz", @@ -22548,30 +21658,6 @@ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" }, - "node_modules/needle": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", - "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==", - "dependencies": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" - }, - "engines": { - "node": ">= 4.4.x" - } - }, - "node_modules/needle/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -22922,11 +22008,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/not": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/not/-/not-0.1.0.tgz", - "integrity": "sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==" - }, "node_modules/npm-normalize-package-bin": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", @@ -23071,23 +22152,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz", - "integrity": "sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==", - "dependencies": { - "array.prototype.reduce": "^1.0.4", - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/object.hasown": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz", @@ -23665,11 +22729,6 @@ "protocols": "^2.0.0" } }, - "node_modules/parse-srcset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", - "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==" - }, "node_modules/parse-url": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-7.0.2.tgz", @@ -23980,11 +23039,6 @@ "node": ">=0.10.0" } }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==" - }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -25137,16 +24191,6 @@ "node": ">=6" } }, - "node_modules/probe-image-size": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-7.2.3.tgz", - "integrity": "sha512-HubhG4Rb2UH8YtV4ba0Vp5bQ7L78RTONYu/ujmCu5nBI8wGv24s4E9xSKBi0N1MowRpxk76pFCpJtW0KPzOK0w==", - "dependencies": { - "lodash.merge": "^4.6.2", - "needle": "^2.5.2", - "stream-parser": "~0.3.1" - } - }, "node_modules/proc-log": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", @@ -25354,15 +24398,6 @@ } } }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, "node_modules/qs": { "version": "6.10.3", "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", @@ -26177,14 +25212,6 @@ "jsesc": "bin/jsesc" } }, - "node_modules/relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", - "engines": { - "node": ">= 0.10" - } - }, "node_modules/relay-runtime": { "version": "12.0.0", "resolved": "https://registry.npmjs.org/relay-runtime/-/relay-runtime-12.0.0.tgz", @@ -26609,19 +25636,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-gfm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-1.0.0.tgz", - "integrity": "sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA==", - "dependencies": { - "mdast-util-gfm": "^0.1.0", - "micromark-extension-gfm": "^0.3.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/remark-lint": { "version": "9.1.1", "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-9.1.1.tgz", @@ -33685,21 +32699,38 @@ } }, "node_modules/remark-stringify": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", - "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-6.0.4.tgz", + "integrity": "sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg==", "dependencies": { - "mdast-util-to-markdown": "^0.6.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "ccount": "^1.0.0", + "is-alphanumeric": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "longest-streak": "^2.0.1", + "markdown-escapes": "^1.0.0", + "markdown-table": "^1.1.0", + "mdast-util-compact": "^1.0.0", + "parse-entities": "^1.0.2", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "stringify-entities": "^1.0.1", + "unherit": "^1.0.4", + "xtend": "^4.0.1" } }, - "node_modules/remark/node_modules/markdown-table": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", - "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==" + "node_modules/remark-stringify/node_modules/parse-entities": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz", + "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==", + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } }, "node_modules/remark/node_modules/parse-entities": { "version": "1.2.2", @@ -33736,38 +32767,6 @@ "xtend": "^4.0.1" } }, - "node_modules/remark/node_modules/remark-stringify": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-6.0.4.tgz", - "integrity": "sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg==", - "dependencies": { - "ccount": "^1.0.0", - "is-alphanumeric": "^1.0.0", - "is-decimal": "^1.0.0", - "is-whitespace-character": "^1.0.0", - "longest-streak": "^2.0.1", - "markdown-escapes": "^1.0.0", - "markdown-table": "^1.1.0", - "mdast-util-compact": "^1.0.0", - "parse-entities": "^1.0.2", - "repeat-string": "^1.5.4", - "state-toggle": "^1.0.0", - "stringify-entities": "^1.0.1", - "unherit": "^1.0.4", - "xtend": "^4.0.1" - } - }, - "node_modules/remark/node_modules/stringify-entities": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.2.tgz", - "integrity": "sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==", - "dependencies": { - "character-entities-html4": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-hexadecimal": "^1.0.0" - } - }, "node_modules/remark/node_modules/unified": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/unified/-/unified-7.1.0.tgz", @@ -33783,44 +32782,11 @@ "x-is-string": "^0.1.0" } }, - "node_modules/remark/node_modules/unist-util-is": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==" - }, - "node_modules/remark/node_modules/unist-util-remove-position": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz", - "integrity": "sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==", - "dependencies": { - "unist-util-visit": "^1.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/remark/node_modules/unist-util-stringify-position": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz", "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==" }, - "node_modules/remark/node_modules/unist-util-visit": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", - "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", - "dependencies": { - "unist-util-visit-parents": "^2.0.0" - } - }, - "node_modules/remark/node_modules/unist-util-visit-parents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", - "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", - "dependencies": { - "unist-util-is": "^3.0.0" - } - }, "node_modules/remark/node_modules/vfile": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/vfile/-/vfile-3.0.1.tgz", @@ -34381,133 +33347,6 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "node_modules/sanitize-html": { - "version": "1.27.5", - "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.27.5.tgz", - "integrity": "sha512-M4M5iXDAUEcZKLXkmk90zSYWEtk5NH3JmojQxKxV371fnMh+x9t1rqdmXaGoyEHw3z/X/8vnFhKjGL5xFGOJ3A==", - "dependencies": { - "htmlparser2": "^4.1.0", - "lodash": "^4.17.15", - "parse-srcset": "^1.0.2", - "postcss": "^7.0.27" - } - }, - "node_modules/sanitize-html/node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/sanitize-html/node_modules/dom-serializer/node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/sanitize-html/node_modules/domhandler": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", - "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", - "dependencies": { - "domelementtype": "^2.0.1" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/sanitize-html/node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/sanitize-html/node_modules/domutils/node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/sanitize-html/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/sanitize-html/node_modules/htmlparser2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz", - "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^3.0.0", - "domutils": "^2.0.0", - "entities": "^2.0.0" - } - }, - "node_modules/sanitize-html/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" - }, - "node_modules/sanitize-html/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/sanitize-html/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/sass": { "version": "1.54.8", "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.8.tgz", @@ -35119,6 +33958,7 @@ "version": "0.5.13", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -35128,6 +33968,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -35421,27 +34262,6 @@ "node": ">= 0.8" } }, - "node_modules/stream-parser": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz", - "integrity": "sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==", - "dependencies": { - "debug": "2" - } - }, - "node_modules/stream-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/stream-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, "node_modules/streamsearch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", @@ -35559,17 +34379,14 @@ } }, "node_modules/stringify-entities": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.1.0.tgz", - "integrity": "sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.2.tgz", + "integrity": "sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==", "dependencies": { "character-entities-html4": "^1.0.0", "character-entities-legacy": "^1.0.0", - "xtend": "^4.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "is-alphanumerical": "^1.0.0", + "is-hexadecimal": "^1.0.0" } }, "node_modules/stringify-object": { @@ -35668,25 +34485,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strip-outer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", - "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", - "dependencies": { - "escape-string-regexp": "^1.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-outer/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/strtok3": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", @@ -36686,25 +35484,6 @@ "node": ">=8" } }, - "node_modules/trim-repeated": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", - "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", - "dependencies": { - "escape-string-regexp": "^1.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/trim-repeated/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/trim-trailing-lines": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", @@ -37542,38 +36321,43 @@ } }, "node_modules/unist-util-remove-position": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-3.0.0.tgz", - "integrity": "sha512-17kIOuolVuK16LMb9KyMJlqdfCtlfQY5FjY3Sdo9iC7F5wqdXhNjMq0PBvMpkVNNnAmHxXssUW+rZ9T2zbP0Rg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz", + "integrity": "sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==", "dependencies": { - "unist-util-visit": "^2.0.0" + "unist-util-visit": "^1.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-remove/node_modules/unist-util-is": { + "node_modules/unist-util-remove-position/node_modules/unist-util-is": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==" }, - "node_modules/unist-util-select": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/unist-util-select/-/unist-util-select-3.0.4.tgz", - "integrity": "sha512-xf1zCu4okgPqGLdhCDpRnjwBNyv3EqjiXRUbz2SdK1+qnLMB7uXXajfzuBvvbHoQ+JLyp4AEbFCGndmc6S72sw==", + "node_modules/unist-util-remove-position/node_modules/unist-util-visit": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", + "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", "dependencies": { - "css-selector-parser": "^1.0.0", - "not": "^0.1.0", - "nth-check": "^2.0.0", - "unist-util-is": "^4.0.0", - "zwitch": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "unist-util-visit-parents": "^2.0.0" + } + }, + "node_modules/unist-util-remove-position/node_modules/unist-util-visit-parents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", + "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", + "dependencies": { + "unist-util-is": "^3.0.0" } }, + "node_modules/unist-util-remove/node_modules/unist-util-is": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", + "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==" + }, "node_modules/unist-util-stringify-position": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", @@ -37660,11 +36444,6 @@ "node": ">= 0.8" } }, - "node_modules/unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==" - }, "node_modules/upath": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", @@ -37940,20 +36719,6 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, - "node_modules/util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/utila": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", @@ -43743,11 +42508,6 @@ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" }, - "@types/q": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", - "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==" - }, "@types/reach__router": { "version": "1.3.10", "resolved": "https://registry.npmjs.org/@types/reach__router/-/reach__router-1.3.10.tgz", @@ -44584,18 +43344,6 @@ "es-shim-unscopables": "^1.0.0" } }, - "array.prototype.reduce": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz", - "integrity": "sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - } - }, "arrify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", @@ -45615,21 +44363,6 @@ "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" }, - "clean-css": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", - "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", - "requires": { - "source-map": "~0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, "cli-boxes": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", @@ -45825,16 +44558,6 @@ "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true }, - "coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - } - }, "collapse-white-space": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", @@ -46331,11 +45054,6 @@ "nth-check": "^2.0.1" } }, - "css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==" - }, "css-selector-parser": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.4.1.tgz", @@ -47126,11 +45844,6 @@ "unbox-primitive": "^1.0.2" } }, - "es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" - }, "es-module-lexer": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", @@ -48270,21 +46983,6 @@ } } }, - "filename-reserved-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==" - }, - "filenamify": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", - "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", - "requires": { - "filename-reserved-regex": "^2.0.0", - "strip-outer": "^1.0.1", - "trim-repeated": "^1.0.0" - } - }, "filesize": { "version": "8.0.7", "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", @@ -49859,15 +48557,6 @@ } } }, - "gatsby-plugin-minify-html": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/gatsby-plugin-minify-html/-/gatsby-plugin-minify-html-1.0.4.tgz", - "integrity": "sha512-K+/CyZwjXBU6G/whXPtKbECxmpmqSvqfn2PqRuOjhEGrwt9PDuCZ66r0KyV/tHo+FPGkJrEVHfVGEp/Wn6LD5Q==", - "requires": { - "glob": "^7.1.6", - "html-minifier-terser": "^5.1.1" - } - }, "gatsby-plugin-offline-next": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/gatsby-plugin-offline-next/-/gatsby-plugin-offline-next-5.2.3.tgz", @@ -49986,144 +48675,6 @@ } } }, - "gatsby-plugin-sharp": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/gatsby-plugin-sharp/-/gatsby-plugin-sharp-4.22.0.tgz", - "integrity": "sha512-LL9M6aa5lXXRg1CrjIs10v2gMyjnVWBwWNXZCQzhP2OHdfxPhL4YapYIWPIJXqQSZG85bOP09fEnFfOpttfgUQ==", - "requires": { - "@babel/runtime": "^7.15.4", - "@gatsbyjs/potrace": "^2.3.0", - "async": "^3.2.4", - "bluebird": "^3.7.2", - "debug": "^4.3.4", - "filenamify": "^4.3.0", - "fs-extra": "^10.1.0", - "gatsby-core-utils": "^3.22.0", - "gatsby-plugin-utils": "^3.16.0", - "lodash": "^4.17.21", - "mini-svg-data-uri": "^1.4.4", - "probe-image-size": "^7.2.3", - "semver": "^7.3.7", - "sharp": "^0.30.7", - "svgo": "1.3.2" - }, - "dependencies": { - "css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "requires": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", - "requires": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - } - }, - "css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==" - }, - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - }, - "dependencies": { - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - } - } - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==" - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "requires": { - "boolbase": "~1.0.0" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "requires": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - } - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - } - } - }, "gatsby-plugin-sitemap": { "version": "5.22.0", "resolved": "https://registry.npmjs.org/gatsby-plugin-sitemap/-/gatsby-plugin-sitemap-5.22.0.tgz", @@ -50232,84 +48783,6 @@ } } }, - "gatsby-remark-copy-linked-files": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/gatsby-remark-copy-linked-files/-/gatsby-remark-copy-linked-files-5.22.0.tgz", - "integrity": "sha512-n+HNVZDtog7o4LX0yS0uQbcPectfcf1VuOou/rhkzeGR1vKXTcTHpfc4A+n9MfvoBoV8N4FyZCGjSzxF9nqS2g==", - "requires": { - "@babel/runtime": "^7.15.4", - "cheerio": "^1.0.0-rc.10", - "fs-extra": "^10.1.0", - "is-relative-url": "^3.0.0", - "lodash": "^4.17.21", - "path-is-inside": "^1.0.2", - "probe-image-size": "^7.2.3", - "unist-util-visit": "^2.0.3" - } - }, - "gatsby-remark-images": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/gatsby-remark-images/-/gatsby-remark-images-6.22.0.tgz", - "integrity": "sha512-4H/NTHaeika9ftDSQjEWvrlRhTSgHHVK07blqqQM1wsvknjphtjB5S4i6SuByYD8U+j8Lment5BEP9HJVNx+LA==", - "requires": { - "@babel/runtime": "^7.15.4", - "@gatsbyjs/potrace": "^2.3.0", - "chalk": "^4.1.2", - "cheerio": "^1.0.0-rc.10", - "gatsby-core-utils": "^3.22.0", - "is-relative-url": "^3.0.0", - "lodash": "^4.17.21", - "mdast-util-definitions": "^4.0.0", - "query-string": "^6.14.1", - "unist-util-select": "^3.0.4", - "unist-util-visit-parents": "^3.1.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, "gatsby-remark-prismjs": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/gatsby-remark-prismjs/-/gatsby-remark-prismjs-6.22.0.tgz", @@ -50447,158 +48920,6 @@ "integrity": "sha512-M8r498/x0IwAQIbt8CQ3G7I9D2bUTBv4dvxD9EPgOGCW9qTVjH5al31vTkxSQ9ialn9BewMQugWQ7AEWwIDrhQ==", "requires": {} }, - "gatsby-transformer-remark": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/gatsby-transformer-remark/-/gatsby-transformer-remark-5.22.0.tgz", - "integrity": "sha512-kN/HZ1rh43ltcTye+YVjD7OddOouHmHK/KHRb0saSyeQWtQKe5HQZxFayHruynhSb3pFjx13l08eadEpCko6SQ==", - "requires": { - "@babel/runtime": "^7.15.4", - "gatsby-core-utils": "^3.22.0", - "gray-matter": "^4.0.3", - "hast-util-raw": "^6.0.2", - "hast-util-to-html": "^7.1.3", - "lodash": "^4.17.21", - "mdast-util-to-hast": "^10.2.0", - "mdast-util-to-string": "^2.0.0", - "mdast-util-toc": "^5.1.0", - "remark": "^13.0.0", - "remark-footnotes": "^3.0.0", - "remark-gfm": "^1.0.0", - "remark-parse": "^9.0.0", - "remark-retext": "^4.0.0", - "remark-stringify": "^9.0.1", - "retext-english": "^3.0.4", - "sanitize-html": "^1.27.5", - "underscore.string": "^3.3.6", - "unified": "^9.2.2", - "unist-util-remove-position": "^3.0.0", - "unist-util-select": "^3.0.4", - "unist-util-visit": "^2.0.3" - }, - "dependencies": { - "hast-util-raw": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.1.0.tgz", - "integrity": "sha512-5FoZLDHBpka20OlZZ4I/+RBw5piVQ8iI1doEvffQhx5CbCyTtP8UCq8Tw6NmTAMtXgsQxmhW7Ly8OdFre5/YMQ==", - "requires": { - "@types/hast": "^2.0.0", - "hast-util-from-parse5": "^6.0.0", - "hast-util-to-parse5": "^6.0.0", - "html-void-elements": "^1.0.0", - "parse5": "^6.0.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0", - "vfile": "^4.0.0", - "web-namespaces": "^1.0.0", - "xtend": "^4.0.0", - "zwitch": "^1.0.0" - } - }, - "is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" - }, - "mdast-util-to-hast": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.2.0.tgz", - "integrity": "sha512-JoPBfJ3gBnHZ18icCwHR50orC9kNH81tiR1gs01D8Q5YpV6adHNO9nKNuFBCJQ941/32PT1a63UF/DitmS3amQ==", - "requires": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "mdast-util-definitions": "^4.0.0", - "mdurl": "^1.0.0", - "unist-builder": "^2.0.0", - "unist-util-generated": "^1.0.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0" - } - }, - "mdast-util-to-nlcst": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-to-nlcst/-/mdast-util-to-nlcst-4.0.1.tgz", - "integrity": "sha512-Y4ffygj85MTt70STKnEquw6k73jYWJBaYcb4ITAKgSNokZF7fH8rEHZ1GsRY/JaxqUevMaEnsDmkVv5Z9uVRdg==", - "requires": { - "nlcst-to-string": "^2.0.0", - "repeat-string": "^1.0.0", - "unist-util-position": "^3.0.0", - "vfile-location": "^3.1.0" - } - }, - "mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==" - }, - "mdast-util-toc": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-toc/-/mdast-util-toc-5.1.0.tgz", - "integrity": "sha512-csimbRIVkiqc+PpFeKDGQ/Ck2N4f9FYH3zzBMMJzcxoKL8m+cM0n94xXm0I9eaxHnKdY9n145SGTdyJC7i273g==", - "requires": { - "@types/mdast": "^3.0.3", - "@types/unist": "^2.0.3", - "extend": "^3.0.2", - "github-slugger": "^1.2.1", - "mdast-util-to-string": "^2.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit": "^2.0.0" - } - }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" - }, - "remark": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", - "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==", - "requires": { - "remark-parse": "^9.0.0", - "remark-stringify": "^9.0.0", - "unified": "^9.1.0" - } - }, - "remark-footnotes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-3.0.0.tgz", - "integrity": "sha512-ZssAvH9FjGYlJ/PBVKdSmfyPc3Cz4rTWgZLI4iE/SX8Nt5l3o3oEjv3wwG5VD7xOjktzdwp5coac+kJV9l4jgg==", - "requires": { - "mdast-util-footnote": "^0.1.0", - "micromark-extension-footnote": "^0.3.0" - } - }, - "remark-parse": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", - "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", - "requires": { - "mdast-util-from-markdown": "^0.8.0" - } - }, - "remark-retext": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-retext/-/remark-retext-4.0.0.tgz", - "integrity": "sha512-cYCchalpf25bTtfXF24ribYvqytPKq0TiEhqQDBHvVEEsApebwruPWP1cTcvTFBidmpXyqzycm+y8ng7Kmvc8Q==", - "requires": { - "mdast-util-to-nlcst": "^4.0.0" - } - }, - "unified": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", - "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", - "requires": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - } - } - } - }, "gatsby-transformer-yaml": { "version": "4.22.0", "resolved": "https://registry.npmjs.org/gatsby-transformer-yaml/-/gatsby-transformer-yaml-4.22.0.tgz", @@ -51084,11 +49405,6 @@ "web-namespaces": "^1.0.0" } }, - "hast-util-is-element": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz", - "integrity": "sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ==" - }, "hast-util-parse-selector": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", @@ -51118,23 +49434,6 @@ } } }, - "hast-util-to-html": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-7.1.3.tgz", - "integrity": "sha512-yk2+1p3EJTEE9ZEUkgHsUSVhIpCsL/bvT8E5GzmWc+N1Po5gBw+0F8bo7dpxXR0nu0bQVxVZGX2lBGF21CmeDw==", - "requires": { - "ccount": "^1.0.0", - "comma-separated-tokens": "^1.0.0", - "hast-util-is-element": "^1.0.0", - "hast-util-whitespace": "^1.0.0", - "html-void-elements": "^1.0.0", - "property-information": "^5.0.0", - "space-separated-tokens": "^1.0.0", - "stringify-entities": "^3.0.1", - "unist-util-is": "^4.0.0", - "xtend": "^4.0.0" - } - }, "hast-util-to-parse5": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz", @@ -51147,11 +49446,6 @@ "zwitch": "^1.0.0" } }, - "hast-util-whitespace": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz", - "integrity": "sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A==" - }, "hastscript": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", @@ -51257,49 +49551,6 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "html-minifier-terser": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", - "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", - "requires": { - "camel-case": "^4.1.1", - "clean-css": "^4.2.3", - "commander": "^4.1.1", - "he": "^1.2.0", - "param-case": "^3.0.3", - "relateurl": "^0.2.7", - "terser": "^4.6.3" - }, - "dependencies": { - "commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "terser": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", - "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - } - } - } - } - }, "html-tags": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.2.0.tgz", @@ -54391,12 +52642,9 @@ "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==" }, "markdown-table": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", - "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", - "requires": { - "repeat-string": "^1.0.0" - } + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", + "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==" }, "markdown-yaml-metadata-parser": { "version": "3.0.0", @@ -54485,29 +52733,11 @@ "unist-util-visit": "^2.0.0" } }, - "mdast-util-find-and-replace": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-1.1.1.tgz", - "integrity": "sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==", - "requires": { - "escape-string-regexp": "^4.0.0", - "unist-util-is": "^4.0.0", - "unist-util-visit-parents": "^3.0.0" - } - }, - "mdast-util-footnote": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/mdast-util-footnote/-/mdast-util-footnote-0.1.7.tgz", - "integrity": "sha512-QxNdO8qSxqbO2e3m09KwDKfWiLgqyCurdWTQ198NpbZ2hxntdc+VKS4fDJCmNWbAroUdYnSthu+XbZ8ovh8C3w==", - "requires": { - "mdast-util-to-markdown": "^0.6.0", - "micromark": "~2.11.0" - } - }, "mdast-util-from-markdown": { "version": "0.8.5", "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", + "dev": true, "requires": { "@types/mdast": "^3.0.0", "mdast-util-to-string": "^2.0.0", @@ -54519,7 +52749,8 @@ "mdast-util-to-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==" + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "dev": true } } }, @@ -54532,28 +52763,6 @@ "micromark-extension-frontmatter": "^1.0.0" } }, - "mdast-util-gfm": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.2.tgz", - "integrity": "sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==", - "requires": { - "mdast-util-gfm-autolink-literal": "^0.1.0", - "mdast-util-gfm-strikethrough": "^0.2.0", - "mdast-util-gfm-table": "^0.1.0", - "mdast-util-gfm-task-list-item": "^0.1.0", - "mdast-util-to-markdown": "^0.6.1" - } - }, - "mdast-util-gfm-autolink-literal": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.3.tgz", - "integrity": "sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==", - "requires": { - "ccount": "^1.0.0", - "mdast-util-find-and-replace": "^1.1.0", - "micromark": "^2.11.3" - } - }, "mdast-util-gfm-footnote": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.1.tgz", @@ -54627,31 +52836,6 @@ } } }, - "mdast-util-gfm-strikethrough": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz", - "integrity": "sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==", - "requires": { - "mdast-util-to-markdown": "^0.6.0" - } - }, - "mdast-util-gfm-table": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz", - "integrity": "sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==", - "requires": { - "markdown-table": "^2.0.0", - "mdast-util-to-markdown": "~0.6.0" - } - }, - "mdast-util-gfm-task-list-item": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz", - "integrity": "sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==", - "requires": { - "mdast-util-to-markdown": "~0.6.0" - } - }, "mdast-util-heading-style": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdast-util-heading-style/-/mdast-util-heading-style-2.0.0.tgz", @@ -54814,26 +52998,6 @@ "unist-util-visit": "^2.0.0" } }, - "mdast-util-to-markdown": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", - "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", - "requires": { - "@types/unist": "^2.0.0", - "longest-streak": "^2.0.0", - "mdast-util-to-string": "^2.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.0.0", - "zwitch": "^1.0.0" - }, - "dependencies": { - "mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==" - } - } - }, "mdast-util-to-nlcst": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/mdast-util-to-nlcst/-/mdast-util-to-nlcst-3.2.3.tgz", @@ -55009,6 +53173,7 @@ "version": "2.11.4", "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", + "dev": true, "requires": { "debug": "^4.0.0", "parse-entities": "^2.0.0" @@ -55038,14 +53203,6 @@ "uvu": "^0.5.0" } }, - "micromark-extension-footnote": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/micromark-extension-footnote/-/micromark-extension-footnote-0.3.2.tgz", - "integrity": "sha512-gr/BeIxbIWQoUm02cIfK7mdMZ/fbroRpLsck4kvFtjbzP4yi+OPVbnukTc/zy0i7spC2xYE/dbX1Sur8BEDJsQ==", - "requires": { - "micromark": "~2.11.0" - } - }, "micromark-extension-frontmatter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-1.0.0.tgz", @@ -55057,27 +53214,6 @@ "micromark-util-symbol": "^1.0.0" } }, - "micromark-extension-gfm": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-0.3.3.tgz", - "integrity": "sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==", - "requires": { - "micromark": "~2.11.0", - "micromark-extension-gfm-autolink-literal": "~0.5.0", - "micromark-extension-gfm-strikethrough": "~0.6.5", - "micromark-extension-gfm-table": "~0.4.0", - "micromark-extension-gfm-tagfilter": "~0.3.0", - "micromark-extension-gfm-task-list-item": "~0.3.0" - } - }, - "micromark-extension-gfm-autolink-literal": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz", - "integrity": "sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==", - "requires": { - "micromark": "~2.11.3" - } - }, "micromark-extension-gfm-footnote": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.4.tgz", @@ -55094,35 +53230,6 @@ "uvu": "^0.5.0" } }, - "micromark-extension-gfm-strikethrough": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.5.tgz", - "integrity": "sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==", - "requires": { - "micromark": "~2.11.0" - } - }, - "micromark-extension-gfm-table": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.3.tgz", - "integrity": "sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==", - "requires": { - "micromark": "~2.11.0" - } - }, - "micromark-extension-gfm-tagfilter": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-0.3.0.tgz", - "integrity": "sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==" - }, - "micromark-extension-gfm-task-list-item": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz", - "integrity": "sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==", - "requires": { - "micromark": "~2.11.0" - } - }, "micromark-factory-destination": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz", @@ -55531,26 +53638,6 @@ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" }, - "needle": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", - "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==", - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - } - } - }, "negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -55812,11 +53899,6 @@ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" }, - "not": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/not/-/not-0.1.0.tgz", - "integrity": "sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==" - }, "npm-normalize-package-bin": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", @@ -55916,17 +53998,6 @@ "es-abstract": "^1.19.1" } }, - "object.getownpropertydescriptors": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz", - "integrity": "sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==", - "requires": { - "array.prototype.reduce": "^1.0.4", - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.1" - } - }, "object.hasown": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz", @@ -56357,11 +54428,6 @@ "protocols": "^2.0.0" } }, - "parse-srcset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-srcset/-/parse-srcset-1.0.2.tgz", - "integrity": "sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==" - }, "parse-url": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-7.0.2.tgz", @@ -56601,11 +54667,6 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==" - }, "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -57378,16 +55439,6 @@ "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==" }, - "probe-image-size": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-7.2.3.tgz", - "integrity": "sha512-HubhG4Rb2UH8YtV4ba0Vp5bQ7L78RTONYu/ujmCu5nBI8wGv24s4E9xSKBi0N1MowRpxk76pFCpJtW0KPzOK0w==", - "requires": { - "lodash.merge": "^4.6.2", - "needle": "^2.5.2", - "stream-parser": "~0.3.1" - } - }, "proc-log": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", @@ -57557,11 +55608,6 @@ } } }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==" - }, "qs": { "version": "6.10.3", "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", @@ -58165,11 +56211,6 @@ } } }, - "relateurl": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==" - }, "relay-runtime": { "version": "12.0.0", "resolved": "https://registry.npmjs.org/relay-runtime/-/relay-runtime-12.0.0.tgz", @@ -58190,11 +56231,6 @@ "unified": "^7.0.0" }, "dependencies": { - "markdown-table": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", - "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==" - }, "parse-entities": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz", @@ -58230,38 +56266,6 @@ "xtend": "^4.0.1" } }, - "remark-stringify": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-6.0.4.tgz", - "integrity": "sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg==", - "requires": { - "ccount": "^1.0.0", - "is-alphanumeric": "^1.0.0", - "is-decimal": "^1.0.0", - "is-whitespace-character": "^1.0.0", - "longest-streak": "^2.0.1", - "markdown-escapes": "^1.0.0", - "markdown-table": "^1.1.0", - "mdast-util-compact": "^1.0.0", - "parse-entities": "^1.0.2", - "repeat-string": "^1.5.4", - "state-toggle": "^1.0.0", - "stringify-entities": "^1.0.1", - "unherit": "^1.0.4", - "xtend": "^4.0.1" - } - }, - "stringify-entities": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.2.tgz", - "integrity": "sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==", - "requires": { - "character-entities-html4": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-hexadecimal": "^1.0.0" - } - }, "unified": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/unified/-/unified-7.1.0.tgz", @@ -58277,40 +56281,11 @@ "x-is-string": "^0.1.0" } }, - "unist-util-is": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", - "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==" - }, - "unist-util-remove-position": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz", - "integrity": "sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==", - "requires": { - "unist-util-visit": "^1.1.0" - } - }, "unist-util-stringify-position": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz", "integrity": "sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ==" }, - "unist-util-visit": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", - "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", - "requires": { - "unist-util-visit-parents": "^2.0.0" - } - }, - "unist-util-visit-parents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", - "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", - "requires": { - "unist-util-is": "^3.0.0" - } - }, "vfile": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/vfile/-/vfile-3.0.1.tgz", @@ -58624,15 +56599,6 @@ } } }, - "remark-gfm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-1.0.0.tgz", - "integrity": "sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA==", - "requires": { - "mdast-util-gfm": "^0.1.0", - "micromark-extension-gfm": "^0.3.0" - } - }, "remark-lint": { "version": "9.1.1", "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-9.1.1.tgz", @@ -63647,11 +61613,39 @@ } }, "remark-stringify": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", - "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-6.0.4.tgz", + "integrity": "sha512-eRWGdEPMVudijE/psbIDNcnJLRVx3xhfuEsTDGgH4GsFF91dVhw5nhmnBppafJ7+NWINW6C7ZwWbi30ImJzqWg==", "requires": { - "mdast-util-to-markdown": "^0.6.0" + "ccount": "^1.0.0", + "is-alphanumeric": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "longest-streak": "^2.0.1", + "markdown-escapes": "^1.0.0", + "markdown-table": "^1.1.0", + "mdast-util-compact": "^1.0.0", + "parse-entities": "^1.0.2", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "stringify-entities": "^1.0.1", + "unherit": "^1.0.4", + "xtend": "^4.0.1" + }, + "dependencies": { + "parse-entities": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-1.2.2.tgz", + "integrity": "sha512-NzfpbxW/NPrzZ/yYSoQxyqUZMZXIdCfE0OIN4ESsnptHJECoUk3FZktxNuzQf4tjt5UEopnxpYJbvYuxIFDdsg==", + "requires": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + } + } } }, "remove-trailing-separator": { @@ -64051,102 +62045,6 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "sanitize-html": { - "version": "1.27.5", - "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.27.5.tgz", - "integrity": "sha512-M4M5iXDAUEcZKLXkmk90zSYWEtk5NH3JmojQxKxV371fnMh+x9t1rqdmXaGoyEHw3z/X/8vnFhKjGL5xFGOJ3A==", - "requires": { - "htmlparser2": "^4.1.0", - "lodash": "^4.17.15", - "parse-srcset": "^1.0.2", - "postcss": "^7.0.27" - }, - "dependencies": { - "dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "dependencies": { - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "requires": { - "domelementtype": "^2.2.0" - } - } - } - }, - "domhandler": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", - "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", - "requires": { - "domelementtype": "^2.0.1" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "dependencies": { - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "requires": { - "domelementtype": "^2.2.0" - } - } - } - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" - }, - "htmlparser2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz", - "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==", - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^3.0.0", - "domutils": "^2.0.0", - "entities": "^2.0.0" - } - }, - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==" - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, "sass": { "version": "1.54.8", "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.8.tgz", @@ -64604,6 +62502,7 @@ "version": "0.5.13", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -64612,7 +62511,8 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true } } }, @@ -64870,29 +62770,6 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" }, - "stream-parser": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz", - "integrity": "sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==", - "requires": { - "debug": "2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, "streamsearch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", @@ -64991,13 +62868,14 @@ } }, "stringify-entities": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.1.0.tgz", - "integrity": "sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-1.3.2.tgz", + "integrity": "sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A==", "requires": { "character-entities-html4": "^1.0.0", "character-entities-legacy": "^1.0.0", - "xtend": "^4.0.0" + "is-alphanumerical": "^1.0.0", + "is-hexadecimal": "^1.0.0" } }, "stringify-object": { @@ -65065,21 +62943,6 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" }, - "strip-outer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", - "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", - "requires": { - "escape-string-regexp": "^1.0.2" - }, - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - } - } - }, "strtok3": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", @@ -65826,21 +63689,6 @@ "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true }, - "trim-repeated": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", - "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", - "requires": { - "escape-string-regexp": "^1.0.2" - }, - "dependencies": { - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - } - } - }, "trim-trailing-lines": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", @@ -66468,23 +64316,34 @@ } }, "unist-util-remove-position": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-3.0.0.tgz", - "integrity": "sha512-17kIOuolVuK16LMb9KyMJlqdfCtlfQY5FjY3Sdo9iC7F5wqdXhNjMq0PBvMpkVNNnAmHxXssUW+rZ9T2zbP0Rg==", - "requires": { - "unist-util-visit": "^2.0.0" - } - }, - "unist-util-select": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/unist-util-select/-/unist-util-select-3.0.4.tgz", - "integrity": "sha512-xf1zCu4okgPqGLdhCDpRnjwBNyv3EqjiXRUbz2SdK1+qnLMB7uXXajfzuBvvbHoQ+JLyp4AEbFCGndmc6S72sw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-1.1.4.tgz", + "integrity": "sha512-tLqd653ArxJIPnKII6LMZwH+mb5q+n/GtXQZo6S6csPRs5zB0u79Yw8ouR3wTw8wxvdJFhpP6Y7jorWdCgLO0A==", "requires": { - "css-selector-parser": "^1.0.0", - "not": "^0.1.0", - "nth-check": "^2.0.0", - "unist-util-is": "^4.0.0", - "zwitch": "^1.0.0" + "unist-util-visit": "^1.1.0" + }, + "dependencies": { + "unist-util-is": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-3.0.0.tgz", + "integrity": "sha512-sVZZX3+kspVNmLWBPAB6r+7D9ZgAFPNWm66f7YNb420RlQSbn+n8rG8dGZSkrER7ZIXGQYNm5pqC3v3HopH24A==" + }, + "unist-util-visit": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-1.4.1.tgz", + "integrity": "sha512-AvGNk7Bb//EmJZyhtRUnNMEpId/AZ5Ph/KUpTI09WHQuDZHKovQ1oEv3mfmKpWKtoMzyMC4GLBm1Zy5k12fjIw==", + "requires": { + "unist-util-visit-parents": "^2.0.0" + } + }, + "unist-util-visit-parents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-2.1.2.tgz", + "integrity": "sha512-DyN5vD4NE3aSeB+PXYNKxzGsfocxp6asDc2XXE3b0ekO2BaRUpBicbbUygfSvYfUz1IkmjFR1YF7dPklraMZ2g==", + "requires": { + "unist-util-is": "^3.0.0" + } + } } }, "unist-util-stringify-position": { @@ -66547,11 +64406,6 @@ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" }, - "unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==" - }, "upath": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", @@ -66747,17 +64601,6 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, - "util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - } - }, "utila": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", diff --git a/package.json b/package.json index afabb89950..d5ea638271 100644 --- a/package.json +++ b/package.json @@ -36,22 +36,16 @@ "gatsby-plugin-manifest": "^4.20.0", "gatsby-plugin-mdx": "^3.20.0", "gatsby-plugin-meta-redirect": "^1.1.1", - "gatsby-plugin-minify-html": "^1.0.4", "gatsby-plugin-offline-next": "^5.2.3", "gatsby-plugin-sass": "^5.20.0", - "gatsby-plugin-sharp": "^4.20.0", "gatsby-plugin-sitemap": "^5.20.0", "gatsby-plugin-svgr": "^3.0.0-beta.0", "gatsby-plugin-typescript": "^4.20.0", "gatsby-plugin-webfonts": "^2.2.2", - "gatsby-react-router-scroll": "^5.20.0", "gatsby-remark-autolink-headers": "^5.21.0", - "gatsby-remark-copy-linked-files": "^5.21.0", - "gatsby-remark-images": "^6.21.0", "gatsby-remark-prismjs": "^6.21.0", "gatsby-source-filesystem": "^4.20.0", "gatsby-theme-i18n": "^3.0.0", - "gatsby-transformer-remark": "^5.20.0", "gatsby-transformer-yaml": "^4.20.0", "highlight.js": "^11.6.0", "intersection-observer": "^0.12.2", @@ -78,10 +72,9 @@ "license": "MIT", "scripts": { "cleanup": "gatsby clean", - "pre-build": "node scripts/generateRedirects.js", "sync-api": "node scripts/syncApiDocs.js", - "build": "npm run pre-build && gatsby build", - "build-ci": "npm run cleanup && npm run pre-build && gatsby build --prefix-paths", + "build": "gatsby build", + "build-ci": "gatsby build --prefix-paths", "start": "gatsby develop", "format": "prettier --write \"**/*.{ts,tsx,js,scss}\" && npm run lint:fix", "format-check": "prettier --check \"**/*.{ts,tsx,js,scss}\"", diff --git a/scripts/generateRedirects.js b/scripts/generateRedirects.js deleted file mode 100644 index 5ff0db3b4b..0000000000 --- a/scripts/generateRedirects.js +++ /dev/null @@ -1,54 +0,0 @@ -const { resolve } = require('path'); -const { readFileSync, writeFile } = require('fs'); -const redirects = require('../redirects'); - -const firebaseConfig = resolve(__dirname, '../firebase.json'); - -const firebaseJSON = JSON.parse(readFileSync(firebaseConfig)); - -/** - * Map data as firebase expects it to be - */ -const firebaseRedirects = {}; -Object.entries(redirects).forEach(([key, value]) => { - firebaseRedirects[key] = { - source: key, - destination: value, - type: '301', - }; -}); - -/** - * Delete keys that already exists in the firebase.json - */ -Object.entries(firebaseJSON.redirects).forEach(([key]) => { - delete firebaseRedirects[key]; -}); - -/** - * Serialize the redirects as firebase expects it to be - */ -const newRedirects = []; -Object.keys(firebaseRedirects).forEach(value => - newRedirects.push({ - source: value, - destination: firebaseRedirects[value].destination, - type: '301', - }) -); - -writeFile( - firebaseConfig, - JSON.stringify( - { - ...firebaseJSON, - redirects: newRedirects, - }, - null, - 2 - ), - err => { - // eslint-disable-next-line no-console - if (err) console.error('error writing redirects', err); - } -); diff --git a/src/__fixtures__/page.tsx b/src/__fixtures__/page.tsx index 59ac46d7b0..2ee51fdcd2 100644 --- a/src/__fixtures__/page.tsx +++ b/src/__fixtures__/page.tsx @@ -1,14 +1,14 @@ import { PaginationInfo, - LearnPageContext, + LearnTemplateContext, NavigationSectionData, - BlogPosts, - BlogPageData, - BlogPageContext, - ArticleProps, + PostTemplateData, + PostTemplateContext, NodeReleaseData, PageTableOfContents, - BlogCategories, + BlogCategory, + BlogPost, + ArticleData, } from '../types'; import mockMDXBodyContent from './mockMDXBodyContent'; @@ -59,7 +59,7 @@ export const createNavigationSectionData = (): NavigationSectionData => }, } as NavigationSectionData); -export const createLearnPageData = (): ArticleProps => ({ +export const createLearnPageData = () => ({ data: { articleCurrentLanguage: { body: mockMDXBodyContent, @@ -71,7 +71,7 @@ export const createLearnPageData = (): ArticleProps => ({ fields: { authors: ['test-user1', 'test-user2'], }, - }, + } as ArticleData, }, }); @@ -112,26 +112,51 @@ export const createNodeReleasesData = (): NodeReleaseData[] => }, ] as NodeReleaseData[]; -export const createLearnPageContext = (): LearnPageContext => +export const createLearnPageContext = (): LearnTemplateContext => ({ slug: 'test-slug', relativePath: 'test-path', next: createPaginationInfo(), previous: createPaginationInfo(), navigationData: createNavigationSectionData(), - } as LearnPageContext); + } as LearnTemplateContext); -export const createBlogPageContext = (): BlogPageContext => ({ +export const createBlogPageContext = (): PostTemplateContext => ({ slug: 'test-slug', relativePath: 'test-path', next: createPaginationInfo(), previous: createPaginationInfo(), navigationData: createNavigationSectionData(), + recent: [ + { + node: { + frontmatter: { + title: 'title-mock', + category: { + name: 'category-mock', + slug: 'category-mock-slug', + }, + blogAuthors: [ + { + id: 'id-mock', + name: 'name-mock', + website: 'url-mock', + }, + ], + }, + fields: { + date: '11/11/2022', + slug: 'slug-mock', + readingTime: { text: 'text-mock' }, + }, + }, + }, + ], }); export const createBlogData = (): { - posts: BlogPosts; - categories: BlogCategories; + posts: { edges: BlogPost[] }; + categories: { edges: BlogCategory[] }; } => ({ posts: { edges: [ @@ -166,8 +191,8 @@ export const createBlogData = (): { }, }); -export const createBlogPageData = (): BlogPageData => ({ - blog: { +export const createBlogPageData = (): PostTemplateData => ({ + mdx: { body: mockMDXBodyContent, excerpt: 'excerpt-mock', frontmatter: { @@ -182,36 +207,9 @@ export const createBlogPageData = (): BlogPageData => ({ }, fields: { slug: 'slug-mock', date: '11/11/2022' }, }, - recent: { - edges: [ - { - node: { - frontmatter: { - title: 'title-mock', - category: { - name: 'category-mock', - slug: 'category-mock-slug', - }, - blogAuthors: [ - { - id: 'id-mock', - name: 'name-mock', - website: 'url-mock', - }, - ], - }, - fields: { - date: '11/11/2022', - slug: 'slug-mock', - readingTime: { text: 'text-mock' }, - }, - }, - }, - ], - }, }); -export const createGeneralPageData = (): ArticleProps => ({ +export const createGeneralPageData = () => ({ data: { articleCurrentLanguage: { fields: { @@ -223,11 +221,11 @@ export const createGeneralPageData = (): ArticleProps => ({ }, body: mockMDXBodyContent, tableOfContents: mockTableOfContents, - }, + } as ArticleData, }, }); -export const createResourcesData = (): ArticleProps => ({ +export const createResourcesData = () => ({ data: { articleCurrentLanguage: { fields: { @@ -239,11 +237,11 @@ export const createResourcesData = (): ArticleProps => ({ }, body: mockMDXBodyContent, tableOfContents: mockTableOfContents, - }, + } as ArticleData, }, }); -export const createPrivacyData = (): ArticleProps => ({ +export const createPrivacyData = () => ({ data: { articleCurrentLanguage: { fields: { @@ -255,6 +253,6 @@ export const createPrivacyData = (): ArticleProps => ({ }, body: mockMDXBodyContent, tableOfContents: mockTableOfContents, - }, + } as ArticleData, }, }); diff --git a/src/components/ApiComponents/Components/index.tsx b/src/components/ApiComponents/Components/index.tsx index 173083ea51..fd77b82790 100644 --- a/src/components/ApiComponents/Components/index.tsx +++ b/src/components/ApiComponents/Components/index.tsx @@ -2,5 +2,6 @@ export { default as ApiLink } from './ApiLink'; export { default as Stability } from './Stability'; export { default as SourceLink } from './SourceLink'; export { default as Changes } from './Changes'; +export { default as VersionSelector } from './VersionSelector'; export { default as Span } from './Span'; export * from './ApiHeading'; diff --git a/src/components/RecentPosts/__tests__/index.test.tsx b/src/components/RecentPosts/__tests__/index.test.tsx index 619b4f83a0..1a1a36aa79 100644 --- a/src/components/RecentPosts/__tests__/index.test.tsx +++ b/src/components/RecentPosts/__tests__/index.test.tsx @@ -1,15 +1,13 @@ import React from 'react'; import { render } from '@testing-library/react'; import RecentPosts from '..'; -import { createBlogPageData } from '../../../__fixtures__/page'; +import { createBlogPageContext } from '../../../__fixtures__/page'; describe('RecentPosts component', (): void => { it('should render correctly', (): void => { - const { - recent: { edges: recentPosts }, - } = createBlogPageData(); + const { recent } = createBlogPageContext(); - const { container } = render(); + const { container } = render(); expect(container).toMatchSnapshot(); }); diff --git a/src/components/SideNavBar/__tests__/__snapshots__/index.test.tsx.snap b/src/components/SideNavBar/__tests__/__snapshots__/index.test.tsx.snap index f2d3fd6c09..7f29e9bef0 100644 --- a/src/components/SideNavBar/__tests__/__snapshots__/index.test.tsx.snap +++ b/src/components/SideNavBar/__tests__/__snapshots__/index.test.tsx.snap @@ -59,8 +59,8 @@ exports[`SideNavBar renders correctly 1`] = ` Resources diff --git a/src/components/SideNavBar/__tests__/index.test.tsx b/src/components/SideNavBar/__tests__/index.test.tsx index 9d6c151b0f..9174d51e67 100644 --- a/src/components/SideNavBar/__tests__/index.test.tsx +++ b/src/components/SideNavBar/__tests__/index.test.tsx @@ -46,7 +46,9 @@ describe('SideNavBar', () => { it('should contain a href to `~/about/resources`', () => { render(); const resourcesNavBarElement = screen.getByText('Resources'); - expect(resourcesNavBarElement.getAttribute('href')).toBe('/resources/'); + expect(resourcesNavBarElement.getAttribute('href')).toBe( + '/about/resources/' + ); }); it('should contain a href to `~/about/privacy`', () => { diff --git a/src/components/SideNavBar/index.tsx b/src/components/SideNavBar/index.tsx index 4589d2b897..d65c8bae6d 100644 --- a/src/components/SideNavBar/index.tsx +++ b/src/components/SideNavBar/index.tsx @@ -13,7 +13,7 @@ export enum SideNavBarKeys { community = '/community/', workingGroups = '/about/working-groups/', releases = '/about/releases/', - resources = '/resources/', + resources = '/about/resources/', privacy = '/about/privacy/', security = '/about/security/', packageManager = '/download/package-manager/', diff --git a/src/components/connectGraphQlArticle.tsx b/src/components/connectGraphQlArticle.tsx index 82011f4005..a27ca5872f 100644 --- a/src/components/connectGraphQlArticle.tsx +++ b/src/components/connectGraphQlArticle.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { useLocalization } from 'gatsby-theme-i18n'; -import { ArticleProps, ArticleData } from '../types'; +import { ArticleData } from '../types'; import { ArticleLayoutProps } from './Layout/article'; import { SideNavBarKeys } from './SideNavBar'; @@ -66,6 +66,15 @@ export const connectGraphQlCustom = (Comp: React.FC) => { return ConnectCustomComponent; }; +interface ArticleProps { + editPath?: string; + data: { + articleCurrentLanguage?: ArticleData; + articleDefaultLanguage?: ArticleData; + }; + location?: Location; +} + const connectGraphQlArticle = ( Component: React.FC, extraProps: PageDefaultProps = {} diff --git a/src/containers/BlogContainer/index.tsx b/src/containers/BlogContainer/index.tsx index 7a8eb859a1..bab78f19c3 100644 --- a/src/containers/BlogContainer/index.tsx +++ b/src/containers/BlogContainer/index.tsx @@ -7,7 +7,7 @@ import styles from './index.module.scss'; const parseNavigationData = (categories: BlogCategory[]) => { return categories.map(({ node }) => ({ title: node.slug, - slug: `blog/${node.name}/`, + slug: `/blog/${node.name}/`, })); }; @@ -21,7 +21,7 @@ const BlogContainer = ({ categories, posts, currentCategory }: Props) => ( <>
diff --git a/src/pages/__tests__/__snapshots__/blog.test.tsx.snap b/src/pages/__tests__/__snapshots__/blog.test.tsx.snap deleted file mode 100644 index 5238cf51bf..0000000000 --- a/src/pages/__tests__/__snapshots__/blog.test.tsx.snap +++ /dev/null @@ -1,154 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Blog page renders correctly 1`] = ` -
- -
-
-

- Node.js Blog -

- - The latest Node.js news, case studies, tutorials, and resources. - -
-
-
- -
-

- 11/11/2022 -

-

- by - - - Mock author name - -

-
-
-
-
-
-`; - -exports[`Blog page renders correctly for empty blogs list 1`] = ` -
- -
-
-

- Node.js Blog -

- - The latest Node.js news, case studies, tutorials, and resources. - -
-
-
-
-`; diff --git a/src/pages/__tests__/__snapshots__/community.test.tsx.snap b/src/pages/__tests__/__snapshots__/community.test.tsx.snap index c9cdaf3dfd..49dde3f120 100644 --- a/src/pages/__tests__/__snapshots__/community.test.tsx.snap +++ b/src/pages/__tests__/__snapshots__/community.test.tsx.snap @@ -79,8 +79,8 @@ exports[`Community Page renders correctly 1`] = ` Resources diff --git a/src/pages/__tests__/blog.test.tsx b/src/pages/__tests__/blog.test.tsx deleted file mode 100644 index 3a909e7d32..0000000000 --- a/src/pages/__tests__/blog.test.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import React from 'react'; -import { render } from '@testing-library/react'; -import AllBlogPosts from '../blog'; -import { createBlogData } from '../../__fixtures__/page'; - -const mockData = createBlogData(); - -describe('Blog page', () => { - it('renders correctly', () => { - const { container } = render(); - // eslint-disable-next-line testing-library/no-container, testing-library/no-node-access - const pageContent = container.querySelector('main'); - - expect(pageContent).toMatchSnapshot(); - }); - - it('renders correctly for empty blogs list', () => { - const { container } = render( - - ); - // eslint-disable-next-line testing-library/no-container, testing-library/no-node-access - const pageContent = container.querySelector('main'); - - expect(pageContent).toMatchSnapshot(); - }); -}); diff --git a/src/pages/about/__tests__/__snapshots__/governance.test.tsx.snap b/src/pages/about/__tests__/__snapshots__/governance.test.tsx.snap index c101f70985..4f1ae2f1e4 100644 --- a/src/pages/about/__tests__/__snapshots__/governance.test.tsx.snap +++ b/src/pages/about/__tests__/__snapshots__/governance.test.tsx.snap @@ -79,8 +79,8 @@ exports[`Governance Page renders correctly 1`] = ` Resources diff --git a/src/pages/about/__tests__/__snapshots__/index.test.tsx.snap b/src/pages/about/__tests__/__snapshots__/index.test.tsx.snap index 129ca5435d..9c53668ade 100644 --- a/src/pages/about/__tests__/__snapshots__/index.test.tsx.snap +++ b/src/pages/about/__tests__/__snapshots__/index.test.tsx.snap @@ -79,8 +79,8 @@ exports[`About page renders correctly 1`] = ` Resources diff --git a/src/pages/about/__tests__/__snapshots__/privacy.test.tsx.snap b/src/pages/about/__tests__/__snapshots__/privacy.test.tsx.snap index 6471288afc..e48d58f3ac 100644 --- a/src/pages/about/__tests__/__snapshots__/privacy.test.tsx.snap +++ b/src/pages/about/__tests__/__snapshots__/privacy.test.tsx.snap @@ -79,8 +79,8 @@ exports[`Privacy Page renders correctly 1`] = ` Resources diff --git a/src/pages/about/__tests__/__snapshots__/releases.test.tsx.snap b/src/pages/about/__tests__/__snapshots__/releases.test.tsx.snap index c6eb13f23b..4a1d9594e2 100644 --- a/src/pages/about/__tests__/__snapshots__/releases.test.tsx.snap +++ b/src/pages/about/__tests__/__snapshots__/releases.test.tsx.snap @@ -79,8 +79,8 @@ exports[`Releases page renders correctly 1`] = ` Resources diff --git a/src/pages/resources/__tests__/__snapshots__/index.test.tsx.snap b/src/pages/about/__tests__/__snapshots__/resources.test.tsx.snap similarity index 99% rename from src/pages/resources/__tests__/__snapshots__/index.test.tsx.snap rename to src/pages/about/__tests__/__snapshots__/resources.test.tsx.snap index 379af077ca..0f353b14cb 100644 --- a/src/pages/resources/__tests__/__snapshots__/index.test.tsx.snap +++ b/src/pages/about/__tests__/__snapshots__/resources.test.tsx.snap @@ -260,8 +260,8 @@ exports[`Resources page renders correctly 1`] = ` Resources diff --git a/src/pages/about/__tests__/__snapshots__/security.test.tsx.snap b/src/pages/about/__tests__/__snapshots__/security.test.tsx.snap index cc6d003b61..323422e9eb 100644 --- a/src/pages/about/__tests__/__snapshots__/security.test.tsx.snap +++ b/src/pages/about/__tests__/__snapshots__/security.test.tsx.snap @@ -78,8 +78,8 @@ exports[`Security page renders correctly 1`] = ` Resources diff --git a/src/pages/about/__tests__/__snapshots__/working-groups.test.tsx.snap b/src/pages/about/__tests__/__snapshots__/working-groups.test.tsx.snap index 35c9389f9f..246cb83616 100644 --- a/src/pages/about/__tests__/__snapshots__/working-groups.test.tsx.snap +++ b/src/pages/about/__tests__/__snapshots__/working-groups.test.tsx.snap @@ -78,8 +78,8 @@ exports[`Working Groups page renders correctly 1`] = ` Resources diff --git a/src/pages/resources/__tests__/index.test.tsx b/src/pages/about/__tests__/resources.test.tsx similarity index 90% rename from src/pages/resources/__tests__/index.test.tsx rename to src/pages/about/__tests__/resources.test.tsx index 02bfac8dda..93efa976c3 100644 --- a/src/pages/resources/__tests__/index.test.tsx +++ b/src/pages/about/__tests__/resources.test.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { render } from '@testing-library/react'; -import ResourcesPage from '../../about'; +import ResourcesPage from '..'; import { createResourcesData } from '../../../__fixtures__/page'; const mockData = createResourcesData(); diff --git a/src/pages/resources/index.tsx b/src/pages/about/resources.tsx similarity index 95% rename from src/pages/resources/index.tsx rename to src/pages/about/resources.tsx index dde36b155e..5ddcfe29ee 100644 --- a/src/pages/resources/index.tsx +++ b/src/pages/about/resources.tsx @@ -4,7 +4,7 @@ import { SideNavBarKeys } from '../../components/SideNavBar'; import connectGraphQlArticle from '../../components/connectGraphQlArticle'; export default connectGraphQlArticle(ArticleLayout, { - editPath: 'content/resources/resources.md', + editPath: 'content/about/resources.md', sidenavKey: SideNavBarKeys.resources, }); diff --git a/src/pages/blog.tsx b/src/pages/blog.tsx deleted file mode 100644 index a7a87c5171..0000000000 --- a/src/pages/blog.tsx +++ /dev/null @@ -1,74 +0,0 @@ -import React from 'react'; -import { injectIntl, WrappedComponentProps } from 'react-intl'; -import { graphql } from 'gatsby'; -import Layout from '../components/Layout'; -import { BlogCategories, BlogPosts } from '../types'; -import BlogContainer from '../containers/BlogContainer'; - -interface Props { - data: { - posts: BlogPosts; - categories: BlogCategories; - }; -} - -const Blog = ({ - data: { posts, categories }, - intl, -}: Props & WrappedComponentProps): JSX.Element => ( - -
- -
-
-); - -export default injectIntl(Blog); - -export const pageQuery = graphql` - query { - posts: allMdx( - filter: { fileAbsolutePath: { regex: "/blog/" } } - sort: { fields: [fields___date], order: DESC } - ) { - edges { - node { - frontmatter { - title - blogAuthors { - id - name - } - category { - name - slug - } - } - fields { - date(formatString: "MMMM DD, YYYY") - slug - readingTime { - text - } - } - } - } - } - categories: allCategoriesYaml { - edges { - node { - name - slug - } - } - } - } -`; diff --git a/src/pages/download/__tests__/__snapshots__/package-manager.test.tsx.snap b/src/pages/download/__tests__/__snapshots__/package-manager.test.tsx.snap index 6af1234441..bcc923d108 100644 --- a/src/pages/download/__tests__/__snapshots__/package-manager.test.tsx.snap +++ b/src/pages/download/__tests__/__snapshots__/package-manager.test.tsx.snap @@ -260,8 +260,8 @@ exports[`Package Manager Page renders correctly 1`] = ` Resources diff --git a/src/templates/api.module.scss b/src/styles/templates/api.module.scss similarity index 90% rename from src/templates/api.module.scss rename to src/styles/templates/api.module.scss index 4b8874d168..b0e6dd3bed 100644 --- a/src/templates/api.module.scss +++ b/src/styles/templates/api.module.scss @@ -1,4 +1,4 @@ -@use '../styles/containers.scss'; +@use '../containers.scss'; .api-container { @extend .grid-container; diff --git a/src/templates/blog.module.scss b/src/styles/templates/post.module.scss similarity index 84% rename from src/templates/blog.module.scss rename to src/styles/templates/post.module.scss index 6bdfb0e82c..c7af5353a2 100644 --- a/src/templates/blog.module.scss +++ b/src/styles/templates/post.module.scss @@ -1,4 +1,4 @@ -.blog-container { +.post-container { grid-gap: var(--space-24); article { diff --git a/src/templates/__tests__/__snapshots__/blog.test.tsx.snap b/src/templates/__tests__/__snapshots__/post.test.tsx.snap similarity index 99% rename from src/templates/__tests__/__snapshots__/blog.test.tsx.snap rename to src/templates/__tests__/__snapshots__/post.test.tsx.snap index a84dafd225..d43745a4e7 100644 --- a/src/templates/__tests__/__snapshots__/blog.test.tsx.snap +++ b/src/templates/__tests__/__snapshots__/post.test.tsx.snap @@ -183,7 +183,7 @@ exports[`LearnLayout Template renders correctly 1`] = `
(
@@ -44,7 +48,7 @@ const Api = ({ category="api" isApiDocs > - ( - -
- -
-
-); - -export default Blog; - -export const pageQuery = graphql` - query ($categoryName: String!) { - posts: allMdx( - filter: { - fileAbsolutePath: { regex: "/blog/" } - fields: { categoryName: { eq: $categoryName } } - } - sort: { fields: [fields___date], order: DESC } - ) { - edges { - node { - frontmatter { - title - blogAuthors { - id - name - } - } - fields { - date(formatString: "MMMM DD, YYYY") - slug - readingTime { - text - } - } - } - } - } - category: categoriesYaml(name: { eq: $categoryName }) { - name - slug - description - } - categories: allCategoriesYaml { - edges { - node { - name - slug - } - } - } - } -`; diff --git a/src/templates/blog.tsx b/src/templates/blog.tsx index dd1863cd1f..a1545e339a 100644 --- a/src/templates/blog.tsx +++ b/src/templates/blog.tsx @@ -1,80 +1,34 @@ -import { graphql } from 'gatsby'; import React from 'react'; -import Article from '../components/Article'; +import { injectIntl, WrappedComponentProps } from 'react-intl'; import Layout from '../components/Layout'; -import RecentPosts from '../components/RecentPosts'; -import { BlogPageData, BlogPageContext } from '../types'; -import styles from './blog.module.scss'; +import { BlogTemplateContext } from '../types'; +import BlogContainer from '../containers/BlogContainer'; interface Props { - data: BlogPageData; - pageContext: BlogPageContext; + pageContext: BlogTemplateContext; } -const BlogLayout = ({ - data: { - blog: { - frontmatter: { title, blogAuthors }, - body, - excerpt, - fields: { date }, - }, - recent: { edges: recentPosts }, - }, - pageContext: { next, previous, relativePath }, -}: Props): JSX.Element => ( - -
- -
-
-
-); +const BlogTemplate = ({ + pageContext: { posts, category, categories }, + intl, +}: Props & WrappedComponentProps): JSX.Element => { + const currentCategory = category || { + name: intl.formatMessage({ id: 'blog.title' }), + slug: intl.formatMessage({ id: 'blog.title' }), + description: intl.formatMessage({ id: 'blog.description' }), + }; -export default BlogLayout; + return ( + +
+ +
+
+ ); +}; -export const query = graphql` - query ($slug: String!) { - blog: mdx(fields: { slug: { eq: $slug } }) { - body - excerpt(pruneLength: 500) - frontmatter { - title - blogAuthors { - id - name - website - } - } - fields { - slug - date(formatString: "MMMM DD, YYYY") - } - } - recent: allMdx( - limit: 10 - filter: { fileAbsolutePath: { regex: "/blog/" } } - sort: { fields: fields___date, order: DESC } - ) { - edges { - node { - frontmatter { - title - } - fields { - slug - } - } - } - } - } -`; +export default injectIntl(BlogTemplate); diff --git a/src/templates/learn.tsx b/src/templates/learn.tsx index fa0a05fe5d..a53ac58f17 100644 --- a/src/templates/learn.tsx +++ b/src/templates/learn.tsx @@ -4,11 +4,11 @@ import Article from '../components/Article'; import Layout from '../components/Layout'; import Navigation from '../containers/Navigation'; import { connectGraphQlCustom } from '../components/connectGraphQlArticle'; -import { LearnPageContext, LearnPageData } from '../types'; +import { LearnTemplateContext, LearnTemplateData } from '../types'; interface Props { - data: LearnPageData; - pageContext: LearnPageContext; + data: LearnTemplateData; + pageContext: LearnTemplateContext; location: Location; } diff --git a/src/templates/post.tsx b/src/templates/post.tsx new file mode 100644 index 0000000000..23e837c4c7 --- /dev/null +++ b/src/templates/post.tsx @@ -0,0 +1,63 @@ +import { graphql } from 'gatsby'; +import React from 'react'; +import Article from '../components/Article'; +import Layout from '../components/Layout'; +import RecentPosts from '../components/RecentPosts'; +import { PostTemplateData, PostTemplateContext } from '../types'; +import styles from '../styles/templates/post.module.scss'; + +interface Props { + data: PostTemplateData; + pageContext: PostTemplateContext; +} + +const PostTemplate = ({ + data: { + mdx: { + frontmatter: { title, blogAuthors }, + body, + excerpt, + fields: { date }, + }, + }, + pageContext: { next, previous, relativePath, recent }, +}: Props): JSX.Element => ( + +
+ +
+
+
+); + +export default PostTemplate; + +export const query = graphql` + query ($slug: String!) { + mdx(fields: { slug: { eq: $slug } }) { + body + excerpt(pruneLength: 500) + frontmatter { + title + blogAuthors { + id + name + website + } + } + fields { + slug + date(formatString: "MMMM DD, YYYY") + } + } + } +`; diff --git a/src/types/api.ts b/src/types/api.ts new file mode 100644 index 0000000000..8c7b9fd2fa --- /dev/null +++ b/src/types/api.ts @@ -0,0 +1,24 @@ +export interface ApiChange { + version: string | string[]; + 'pr-url': string; + description: string; +} + +export interface ApiUpdate { + type: 'added' | 'removed' | 'deprecated' | 'introduced_in' | 'napiVersion'; + version: string[]; +} + +export interface ApiComponentData { + type?: string; + name?: string; + source_link?: string; + update?: ApiUpdate; + stability?: { level: number; text: string }; + changes?: ApiChange[]; +} + +export interface ApiType { + name: string; + slug: string; +} diff --git a/src/types/article.ts b/src/types/article.ts new file mode 100644 index 0000000000..8127c93ac0 --- /dev/null +++ b/src/types/article.ts @@ -0,0 +1,12 @@ +import { PageTableOfContents } from './markdown'; + +export interface ArticleData { + body: string; + tableOfContents: PageTableOfContents; + frontmatter: { + title: string; + description: string; + displayTitle?: string; + }; + fields: { authors: string[]; slug?: string }; +} diff --git a/src/types/banners.ts b/src/types/banners.ts new file mode 100644 index 0000000000..fe319f2708 --- /dev/null +++ b/src/types/banners.ts @@ -0,0 +1,20 @@ +export interface BannersIndex { + endDate: string; + link: string; + text?: string; + html?: string; + startDate: string; +} + +export interface BannersBLM { + link: string; + text: string; + visible: boolean; +} + +export interface Banners { + banners: { + index: BannersIndex; + blacklivesmatter: BannersBLM; + }; +} diff --git a/src/types/blog.ts b/src/types/blog.ts new file mode 100644 index 0000000000..048310c022 --- /dev/null +++ b/src/types/blog.ts @@ -0,0 +1,24 @@ +export interface BlogCategory { + node: { + name: string; + slug: string; + description?: string; + }; +} + +export interface BlogPostAuthor { + id?: string; + name: string; + website: string; +} + +export interface BlogPost { + node: { + frontmatter: { + title: string; + blogAuthors: BlogPostAuthor[]; + category?: BlogCategory['node']; + }; + fields: { date: string; slug: string; readingTime: { text: string } }; + }; +} diff --git a/src/types/index.ts b/src/types/index.ts index da3aa6408f..a26a181c98 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -1,52 +1,14 @@ import type { GatsbyBrowser, GatsbySSR } from 'gatsby'; +import { GenericPageContext } from './pages'; -export interface ApiChange { - version: string | string[]; - 'pr-url': string; - description: string; -} - -export interface ApiUpdate { - type: 'added' | 'removed' | 'deprecated' | 'introduced_in' | 'napiVersion'; - version: string[]; -} - -export interface ApiComponentData { - type?: string; - name?: string; - source_link?: string; - update?: ApiUpdate; - stability?: { level: number; text: string }; - changes?: ApiChange[]; -} - -export interface ApiType { - name: string; - slug: string; -} - -export interface ApiPageData { - api: { - id: string; - body: string; - tableOfContents: PageTableOfContents; - frontmatter: { - title: string; - version: string; - displayTitle: string; - editPage: string; - }; - }; - nodeReleases: { - nodeReleasesData: NodeReleaseData[]; - apiAvailableVersions: string[]; - }; -} - -export interface GenericPageContext { - intlMessages: Record; - locale: string; -} +export * from './api'; +export * from './banners'; +export * from './blog'; +export * from './releases'; +export * from './navigation'; +export * from './markdown'; +export * from './article'; +export * from './pages'; export interface HomepageData { article: { @@ -73,219 +35,6 @@ export interface HomepageData { }; } -export interface LearnPageContext { - slug: string; - relativePath: string; - next: PaginationInfo; - previous: PaginationInfo; - navigationData: NavigationSectionData; -} - -export interface ApiPageContext { - slug: string; - relativePath: string; - next: PaginationInfo; - previous: PaginationInfo; - navigationData: NavigationSectionData; -} - -export interface TableOfContentsItem { - title: string; - url: string; - items?: TableOfContentsItem[]; -} - -export interface PageTableOfContents { - items: TableOfContentsItem[]; -} - -export interface LearnPageData { - article: { - id: string; - body: string; - tableOfContents: PageTableOfContents; - frontmatter: { title: string; description: string }; - fields: { authors: string[] }; - }; -} - -export interface PaginationInfo { - slug: string; - title: string; -} - -export interface BlogCategory { - node: { - name: string; - slug: string; - description?: string; - }; -} - -export interface NavigationSectionItem { - slug: string; - title: string; - category: string; -} - -export interface NavigationSectionData { - [index: string]: { category: string; data: NavigationSectionItem[] }; -} - -/** - * Payload on the `stickychange` custom event - */ -export interface StickyChange { - stuck: boolean; - target: HTMLElement; -} - -export interface SentinelObserverSetupOptions { - container: HTMLElement; - stickyElementsClassName: string; - root?: HTMLElement | null; - headerRootMargin?: string; - footerRootMargin?: string; -} - -declare global { - interface Window { - previousPath: string; - } -} - -export interface ArticleData { - body: string; - tableOfContents: PageTableOfContents; - frontmatter: { - title: string; - description: string; - displayTitle?: string; - }; - fields: { authors: string[]; slug?: string }; -} - -export interface ArticleProps { - editPath?: string; - data: { - articleCurrentLanguage?: ArticleData; - articleDefaultLanguage?: ArticleData; - }; - location?: Location; -} - -export interface CommunityNavigationSection { - title: string; - sections: string[]; -} - -export interface BlogPostAuthor { - id?: string; - name: string; - website: string; -} - -export interface BlogPost { - node: { - frontmatter: { - title: string; - blogAuthors: BlogPostAuthor[]; - category?: BlogCategory['node']; - }; - fields: { date: string; slug: string; readingTime: { text: string } }; - }; -} - -export interface BlogPosts { - edges: BlogPost[]; -} - -export interface BlogCategories { - edges: BlogCategory[]; -} - -export interface BlogPageData { - blog: { - body: string; - excerpt: string; - frontmatter: { title: string; blogAuthors: BlogPostAuthor[] }; - fields: { slug: string; date: string }; - }; - recent: { - edges: BlogPost[]; - }; -} - -export interface BlogPageContext { - slug: string; - relativePath: string; - next: PaginationInfo; - previous: PaginationInfo; - navigationData: NavigationSectionData; -} - -export interface SideNavBarItem { - title: string; - slug: string; -} - -// eslint-disable-next-line no-shadow -export enum ReleaseTypes { - current = 'Current', - lts = 'LTS', - maintenance = 'Maintenance', - endoflife = 'End-of-life', -} - -export interface UpcomingReleaseData { - releaseDate: string; - releaseType: ReleaseTypes; - alreadyReleased: boolean; -} - -export interface UpcomingRelease { - title: string; - releases: UpcomingReleaseData[]; -} - -export interface NodeReleaseData { - version: string; - fullVersion: string; - codename: string; - isLts: boolean; - status: - | 'Maintenance LTS' - | 'Active LTS' - | 'Current' - | 'End-of-life' - | 'Pending'; - initialRelease: string; - ltsStart: string | null; - maintenanceStart: string | null; - endOfLife: string; -} - -export interface BannersIndex { - endDate: string; - link: string; - text?: string; - html?: string; - startDate: string; -} - -export interface BannersBLM { - link: string; - text: string; - visible: boolean; -} - -export interface Banners { - banners: { - index: BannersIndex; - blacklivesmatter: BannersBLM; - }; -} - export type SearchResult = { id: React.Key | null | undefined; slug: string; diff --git a/src/types/markdown.ts b/src/types/markdown.ts new file mode 100644 index 0000000000..1b37faca3a --- /dev/null +++ b/src/types/markdown.ts @@ -0,0 +1,14 @@ +export interface TableOfContentsItem { + title: string; + url: string; + items?: TableOfContentsItem[]; +} + +export interface PageTableOfContents { + items: TableOfContentsItem[]; +} + +export interface PaginationInfo { + slug: string; + title: string; +} diff --git a/src/types/navigation.ts b/src/types/navigation.ts new file mode 100644 index 0000000000..524621eb83 --- /dev/null +++ b/src/types/navigation.ts @@ -0,0 +1,14 @@ +export interface NavigationSectionItem { + slug: string; + title: string; + category: string; +} + +export interface NavigationSectionData { + [index: string]: { category: string; data: NavigationSectionItem[] }; +} + +export interface SideNavBarItem { + title: string; + slug: string; +} diff --git a/src/types/pages/api.ts b/src/types/pages/api.ts new file mode 100644 index 0000000000..6a71cc64fb --- /dev/null +++ b/src/types/pages/api.ts @@ -0,0 +1,29 @@ +import { PageTableOfContents, PaginationInfo } from '../markdown'; +import { NavigationSectionData } from '../navigation'; +import { NodeReleaseData } from '../releases'; + +export interface ApiTemplateData { + mdx: { + id: string; + body: string; + tableOfContents: PageTableOfContents; + frontmatter: { + title: string; + version: string; + displayTitle: string; + editPage: string; + }; + }; +} + +export interface ApiTemplateContext { + slug: string; + relativePath: string; + next: PaginationInfo; + previous: PaginationInfo; + navigationData: NavigationSectionData; + nodeReleases: { + nodeReleasesData: NodeReleaseData[]; + apiAvailableVersions: string[]; + }; +} diff --git a/src/types/pages/blog.ts b/src/types/pages/blog.ts new file mode 100644 index 0000000000..2ad319dd7f --- /dev/null +++ b/src/types/pages/blog.ts @@ -0,0 +1,7 @@ +import { BlogCategory, BlogPost } from '../blog'; + +export interface BlogTemplateContext { + posts: BlogPost[]; + categories: BlogCategory[]; + category: BlogCategory['node']; +} diff --git a/src/types/pages/index.ts b/src/types/pages/index.ts new file mode 100644 index 0000000000..14de759a58 --- /dev/null +++ b/src/types/pages/index.ts @@ -0,0 +1,9 @@ +export interface GenericPageContext { + intlMessages: Record; + locale: string; +} + +export * from './api'; +export * from './learn'; +export * from './post'; +export * from './blog'; diff --git a/src/types/pages/learn.ts b/src/types/pages/learn.ts new file mode 100644 index 0000000000..c135c4445d --- /dev/null +++ b/src/types/pages/learn.ts @@ -0,0 +1,20 @@ +import { PageTableOfContents, PaginationInfo } from '../markdown'; +import { NavigationSectionData } from '../navigation'; + +export interface LearnTemplateContext { + slug: string; + relativePath: string; + next: PaginationInfo; + previous: PaginationInfo; + navigationData: NavigationSectionData; +} + +export interface LearnTemplateData { + article: { + id: string; + body: string; + tableOfContents: PageTableOfContents; + frontmatter: { title: string; description: string }; + fields: { authors: string[] }; + }; +} diff --git a/src/types/pages/post.ts b/src/types/pages/post.ts new file mode 100644 index 0000000000..33a281c3cc --- /dev/null +++ b/src/types/pages/post.ts @@ -0,0 +1,21 @@ +import { BlogPost, BlogPostAuthor } from '../blog'; +import { PaginationInfo } from '../markdown'; +import { NavigationSectionData } from '../navigation'; + +export interface PostTemplateData { + mdx: { + body: string; + excerpt: string; + frontmatter: { title: string; blogAuthors: BlogPostAuthor[] }; + fields: { slug: string; date: string }; + }; +} + +export interface PostTemplateContext { + slug: string; + relativePath: string; + next: PaginationInfo; + previous: PaginationInfo; + navigationData: NavigationSectionData; + recent: BlogPost[]; +} diff --git a/src/types/releases.ts b/src/types/releases.ts new file mode 100644 index 0000000000..789b3c9f79 --- /dev/null +++ b/src/types/releases.ts @@ -0,0 +1,35 @@ +// eslint-disable-next-line no-shadow +export enum ReleaseTypes { + current = 'Current', + lts = 'LTS', + maintenance = 'Maintenance', + endoflife = 'End-of-life', +} + +export interface UpcomingReleaseData { + releaseDate: string; + releaseType: ReleaseTypes; + alreadyReleased: boolean; +} + +export interface UpcomingRelease { + title: string; + releases: UpcomingReleaseData[]; +} + +export interface NodeReleaseData { + version: string; + fullVersion: string; + codename: string; + isLts: boolean; + status: + | 'Maintenance LTS' + | 'Active LTS' + | 'Current' + | 'End-of-life' + | 'Pending'; + initialRelease: string; + ltsStart: string | null; + maintenanceStart: string | null; + endOfLife: string; +} diff --git a/util-node/createApiPages.js b/util-node/createApiPages.js index 97b08da973..587b14c222 100644 --- a/util-node/createApiPages.js +++ b/util-node/createApiPages.js @@ -4,10 +4,13 @@ const path = require('path'); const { iterateEdges, mapToNavigationData } = require('./createPageUtils'); const { apiPath } = require('../pathPrefixes'); -function createApiPages(pagesEdges, apiTypes, nodeReleases) { - const apiPages = iterateEdges(pagesEdges); +function createApiPages(apiEdges, apiTypes, nodeReleases) { const navigationData = {}; + const apiPages = iterateEdges(apiEdges, node => ({ + version: node.frontmatter.version, + })); + const apiDocsPath = path.resolve(__dirname, `../content${apiPath}`); const majorNodeReleases = [ diff --git a/util-node/createApiQuery.js b/util-node/createApiQuery.js index fdf7d238be..76ad0cad20 100644 --- a/util-node/createApiQuery.js +++ b/util-node/createApiQuery.js @@ -19,29 +19,21 @@ module.exports = ` categoryName } } - next { - frontmatter { - title - } - fields { - slug - } - } - previous { - frontmatter { - title - } - fields { - slug - } - } } } nodeReleases { - nodeReleasesVersion: nodeReleasesData { - version + nodeReleasesData { fullVersion + version + codename + isLts + status + initialRelease + ltsStart + maintenanceStart + endOfLife } + apiAvailableVersions } } `; diff --git a/util-node/createBlogPages.js b/util-node/createBlogPages.js new file mode 100644 index 0000000000..12e19d8b39 --- /dev/null +++ b/util-node/createBlogPages.js @@ -0,0 +1,15 @@ +const { iterateEdges } = require('./createPageUtils'); + +function createMarkdownPages(blogEdges) { + const blogPages = iterateEdges(blogEdges, node => { + const { + fields: { readingTime, date }, + } = node; + + return { readingTime, date }; + }); + + return { blogPages }; +} + +module.exports = createMarkdownPages; diff --git a/util-node/createBlogQuery.js b/util-node/createBlogQuery.js new file mode 100644 index 0000000000..db48e776ee --- /dev/null +++ b/util-node/createBlogQuery.js @@ -0,0 +1,43 @@ +module.exports = ` +{ + pages: allMdx( + filter: { fileAbsolutePath: { regex: "/blog/" } } + sort: { fields: fields___date, order: DESC } + ) { + edges { + node { + id + fileAbsolutePath + parent { + ... on File { + relativePath + } + } + frontmatter { + title + blogAuthors { + id + name + } + } + fields { + slug + categoryName + date(formatString: "MMMM DD, YYYY") + readingTime { + text + } + } + } + } + } + categories: allCategoriesYaml { + edges { + node { + slug + name + } + } + } +} +`; diff --git a/util-node/createMarkdownPages.js b/util-node/createLearnPages.js similarity index 81% rename from util-node/createMarkdownPages.js rename to util-node/createLearnPages.js index 295b898b4a..60c409e796 100644 --- a/util-node/createMarkdownPages.js +++ b/util-node/createLearnPages.js @@ -8,13 +8,10 @@ function getYamlPageIdentifier(relativePath) { : relativePath.replace(/(\.[a-z]+)?\.(mdx|md)/, ''); } -function createMarkdownPages(pagesEdges, learnEdges, yamlNavigationData) { +function createLearnPages(learnEdges, yamlNavigationData) { const learnPages = []; const navigationData = {}; - // Iterates the non-Learn edges and transforms them in Pages - const markdownPages = iterateEdges(pagesEdges); - const getLearnEdgeByPageId = pageId => edge => getYamlPageIdentifier(edge.node.parent.relativePath) === pageId; @@ -41,12 +38,7 @@ function createMarkdownPages(pagesEdges, learnEdges, yamlNavigationData) { learnPages.push(...iteratedPages); }); - return { - markdownPages, - learnPages, - navigationData, - firstLearnPage: learnPages[0], - }; + return { learnPages, navigationData }; } -module.exports = createMarkdownPages; +module.exports = createLearnPages; diff --git a/util-node/createLearnQuery.js b/util-node/createLearnQuery.js index f910b96ba5..7f9d56e9b1 100644 --- a/util-node/createLearnQuery.js +++ b/util-node/createLearnQuery.js @@ -1,13 +1,6 @@ module.exports = ` { - allMdx( - filter: { - fields: { - categoryName: { eq: "learn" } - } - } - sort: { fields: [fileAbsolutePath], order: ASC } - ) { + allMdx(filter: { fields: { categoryName: { eq: "learn" } } }) { edges { node { id diff --git a/util-node/createPageUtils.js b/util-node/createPageUtils.js index 85127ea4ac..cc952e8f87 100644 --- a/util-node/createPageUtils.js +++ b/util-node/createPageUtils.js @@ -36,12 +36,12 @@ function mapToNavigationData(page) { }; } -function iterateEdges(edges) { +function iterateEdges(edges, extraProperties = () => ({})) { function updateMarkdownPage({ node }, index) { const { fields: { slug, categoryName }, parent: { relativePath }, - frontmatter: { title, version }, + frontmatter: { title, displayTitle }, fileAbsolutePath, } = node; @@ -54,22 +54,16 @@ function iterateEdges(edges) { const result = { slug, title, + categoryName, relativePath, next: nextNodeData, previous: previousNodeData, + displayTitle: displayTitle || '', realPath: fileAbsolutePath || '', id: node.id, }; - if (categoryName) { - result.category = categoryName; - } - - if (version) { - result.version = version; - } - - return result; + return { ...result, ...extraProperties(node) }; } return edges.map(updateMarkdownPage); diff --git a/util-node/createPagesQuery.js b/util-node/createPagesQuery.js deleted file mode 100644 index 57a9fb88f2..0000000000 --- a/util-node/createPagesQuery.js +++ /dev/null @@ -1,69 +0,0 @@ -module.exports = ` -{ - pages: allMdx( - filter: { - fields: { - slug: { - nin: [ - "" - "nodejs-community" - "homepage" - "trademark-policy" - "working-groups" - "resources" - "privacy-policy" - "about" - "governance" - "security" - "package-manager" - ] - } - categoryName: { nin: ["learn", "api"] } - } - } - sort: { fields: [fileAbsolutePath], order: ASC } - ) { - edges { - node { - id - fileAbsolutePath - parent { - ... on File { - relativePath - } - } - frontmatter { - title - } - fields { - slug - categoryName - } - } - next { - frontmatter { - title - } - fields { - slug - } - } - previous { - frontmatter { - title - } - fields { - slug - } - } - } - } - categories: allCategoriesYaml { - edges { - node { - name - } - } - } -} -`; diff --git a/util-node/generateRedirects.js b/util-node/generateRedirects.js new file mode 100644 index 0000000000..11a7dbd080 --- /dev/null +++ b/util-node/generateRedirects.js @@ -0,0 +1,41 @@ +const { resolve } = require('path'); +const { readFileSync, writeFileSync } = require('fs'); + +const updateRedirects = redirects => { + const firebaseConfig = resolve(__dirname, '../firebase.json'); + const firebaseJSON = JSON.parse(readFileSync(firebaseConfig)); + + // Map data as firebase expects it to be + const firebaseRedirects = {}; + + Object.entries(redirects).forEach(([key, value]) => { + firebaseRedirects[key] = { + source: key, + destination: value, + type: '301', + }; + }); + + // Delete keys that already exists in the firebase.json + Object.entries(firebaseJSON.redirects).forEach(([key]) => { + delete firebaseRedirects[key]; + }); + + // Serialize the redirects as firebase expects it to be + const newRedirects = []; + + Object.keys(firebaseRedirects).forEach(value => + newRedirects.push({ + source: value, + destination: firebaseRedirects[value].destination, + type: '301', + }) + ); + + writeFileSync( + firebaseConfig, + JSON.stringify({ ...firebaseJSON, redirects: newRedirects }, null, 2) + ); +}; + +module.exports = updateRedirects;