From fd8883f3faf7e6f4c13325b19299e5be65252433 Mon Sep 17 00:00:00 2001 From: rayangler <27821750+rayangler@users.noreply.github.com> Date: Tue, 3 Dec 2024 17:16:06 -0500 Subject: [PATCH 01/23] Move file; add branding shape --- .../Banner/SiteBanner/BrandingShape.js | 27 +++++++++++++++++++ .../{SiteBanner.js => SiteBanner/index.js} | 14 +++++----- 2 files changed, 34 insertions(+), 7 deletions(-) create mode 100644 src/components/Banner/SiteBanner/BrandingShape.js rename src/components/Banner/{SiteBanner.js => SiteBanner/index.js} (81%) diff --git a/src/components/Banner/SiteBanner/BrandingShape.js b/src/components/Banner/SiteBanner/BrandingShape.js new file mode 100644 index 000000000..4467d9c01 --- /dev/null +++ b/src/components/Banner/SiteBanner/BrandingShape.js @@ -0,0 +1,27 @@ +import React from 'react'; + +const BrandingShape = ({ size }) => { + let width = 0; + let height = 0; + + if (size === 'desktop') { + width = 109; + height = 40; + } else if (['tablet', 'mobile'].includes(size)) { + width = 119; + height = 56; + } + + const viewBox = `0 0 ${width} ${height}`; + + return ( + + + + ); +}; + +export default BrandingShape; diff --git a/src/components/Banner/SiteBanner.js b/src/components/Banner/SiteBanner/index.js similarity index 81% rename from src/components/Banner/SiteBanner.js rename to src/components/Banner/SiteBanner/index.js index f2c2efe41..952be9f29 100644 --- a/src/components/Banner/SiteBanner.js +++ b/src/components/Banner/SiteBanner/index.js @@ -1,12 +1,12 @@ import React, { useContext, useEffect } from 'react'; import styled from '@emotion/styled'; -import { HeaderContext } from '../Header/header-context'; -import { SNOOTY_REALM_APP_ID } from '../../build-constants'; -import { useSiteMetadata } from '../../hooks/use-site-metadata'; -import { theme } from '../../theme/docsTheme'; -import { isBrowser } from '../../utils/is-browser'; -import { normalizePath } from '../../utils/normalize-path'; -import { fetchBanner } from '../../utils/realm'; +import { HeaderContext } from '../../Header/header-context'; +import { SNOOTY_REALM_APP_ID } from '../../../build-constants'; +import { useSiteMetadata } from '../../../hooks/use-site-metadata'; +import { theme } from '../../../theme/docsTheme'; +import { isBrowser } from '../../../utils/is-browser'; +import { normalizePath } from '../../../utils/normalize-path'; +import { fetchBanner } from '../../../utils/realm'; const getBannerSource = (src) => { if (src == null || src === '') return null; From 37afd9c7f3f769083904be68a66e540d87e01d27 Mon Sep 17 00:00:00 2001 From: rayangler <27821750+rayangler@users.noreply.github.com> Date: Tue, 3 Dec 2024 17:17:43 -0500 Subject: [PATCH 02/23] Banner by text --- src/components/Banner/SiteBanner/index.js | 72 ++++++++++++++++++++++- 1 file changed, 71 insertions(+), 1 deletion(-) diff --git a/src/components/Banner/SiteBanner/index.js b/src/components/Banner/SiteBanner/index.js index 952be9f29..d41e62b97 100644 --- a/src/components/Banner/SiteBanner/index.js +++ b/src/components/Banner/SiteBanner/index.js @@ -1,5 +1,7 @@ import React, { useContext, useEffect } from 'react'; import styled from '@emotion/styled'; +import { palette } from '@leafygreen-ui/palette'; +import { css } from '@leafygreen-ui/emotion'; import { HeaderContext } from '../../Header/header-context'; import { SNOOTY_REALM_APP_ID } from '../../../build-constants'; import { useSiteMetadata } from '../../../hooks/use-site-metadata'; @@ -7,6 +9,7 @@ import { theme } from '../../../theme/docsTheme'; import { isBrowser } from '../../../utils/is-browser'; import { normalizePath } from '../../../utils/normalize-path'; import { fetchBanner } from '../../../utils/realm'; +import BrandingShape from './BrandingShape'; const getBannerSource = (src) => { if (src == null || src === '') return null; @@ -20,6 +23,8 @@ const StyledBannerContainer = styled.a` width: 100%; position: absolute; z-index: ${theme.zIndexes.header}; + color: white; + text-decoration: none; `; const StyledBannerContent = styled.div( @@ -27,7 +32,12 @@ const StyledBannerContent = styled.div( background-image: url(${getBannerSource(props.imgPath)}); background-position: center; background-size: cover; + background-color: ${props.bgColor}; height: 100%; + display: flex; + justify-content: center; + gap: 20px; + padding: 0 11px; @media ${theme.screenSize.upToMedium} { background-image: url(${getBannerSource(props.tabletImgPath)}); @@ -39,6 +49,44 @@ const StyledBannerContent = styled.div( ` ); +const bannerTextStyle = css` + align-self: center; +`; + +const pillContainer = css` + display: grid; + justify-items: center; + align-items: center; +`; + +// Forces components to be in the same cell to create an overlap +const gridCell = css` + grid-row: 1; + grid-column: 1; +`; + +const brandingContainer = css` + ${gridCell} + height: 40px; +`; + +const pillStyle = css` + ${gridCell} + color: ${palette.green.dark3}; + font-weight: 600; + line-height: 16px; + font-size: 12px; + background-color: ${palette.green.base}; + border: 1px solid ${palette.green.dark2}; + border-radius: 6px; + height: 22px; + padding: 3px 8px; + z-index: 1; + display: flex; + align-items: center; + justify-content: center; +`; + const SiteBanner = () => { const { bannerContent, setBannerContent } = useContext(HeaderContext); const { snootyEnv } = useSiteMetadata(); @@ -47,6 +95,15 @@ const SiteBanner = () => { const fetchBannerContent = async () => { try { setBannerContent(await fetchBanner(snootyEnv)); + // TODO-5132: Remove and test with App Services when done + const bannerContentMock = { + text: 'Join us at AWS re:Invent 2024! Learn how to use MongoDB for AI use cases.', + altText: 'Hello World!', + pillText: 'LEARN MORE', + bgColor: palette.green.dark3, + url: 'https://www.mongodb.com/docs/', + }; + setBannerContent(bannerContentMock); } catch (err) { console.error(err); } @@ -66,7 +123,20 @@ const SiteBanner = () => { imgPath={bannerContent.imgPath} tabletImgPath={bannerContent.tabletImgPath ?? bannerContent.mobileImgPath} mobileImgPath={bannerContent.mobileImgPath} - /> + bgColor={bannerContent.bgColor} + > + {bannerContent.text && ( + <> + {bannerContent.text} +
+
+ +
+ {bannerContent.pillText && {bannerContent.pillText}} +
+ + )} + ); }; From c6577424b69d7333882aff5dc9fa95aa8ae93359 Mon Sep 17 00:00:00 2001 From: rayangler <27821750+rayangler@users.noreply.github.com> Date: Tue, 3 Dec 2024 18:55:09 -0500 Subject: [PATCH 03/23] Adjust for screen sizes --- src/components/Banner/SiteBanner/index.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/components/Banner/SiteBanner/index.js b/src/components/Banner/SiteBanner/index.js index d41e62b97..9cfafac49 100644 --- a/src/components/Banner/SiteBanner/index.js +++ b/src/components/Banner/SiteBanner/index.js @@ -38,19 +38,25 @@ const StyledBannerContent = styled.div( justify-content: center; gap: 20px; padding: 0 11px; + font-size: 13px; + line-height: 20px; @media ${theme.screenSize.upToMedium} { background-image: url(${getBannerSource(props.tabletImgPath)}); + gap: 104px; } @media ${theme.screenSize.upToSmall} { background-image: url(${getBannerSource(props.mobileImgPath)}); + gap: 28px; + font-size: 11px; } ` ); const bannerTextStyle = css` align-self: center; + max-height: 40px; `; const pillContainer = css` From 4a93fe8b5a78eda8aba41a0ddf654f2983563109 Mon Sep 17 00:00:00 2001 From: rayangler <27821750+rayangler@users.noreply.github.com> Date: Wed, 4 Dec 2024 15:30:53 -0500 Subject: [PATCH 04/23] Remove customization of branding shape --- src/components/Banner/SiteBanner/BrandingShape.js | 15 +++------------ src/components/Banner/SiteBanner/index.js | 2 +- 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/src/components/Banner/SiteBanner/BrandingShape.js b/src/components/Banner/SiteBanner/BrandingShape.js index 4467d9c01..d7d0915ea 100644 --- a/src/components/Banner/SiteBanner/BrandingShape.js +++ b/src/components/Banner/SiteBanner/BrandingShape.js @@ -1,17 +1,8 @@ import React from 'react'; -const BrandingShape = ({ size }) => { - let width = 0; - let height = 0; - - if (size === 'desktop') { - width = 109; - height = 40; - } else if (['tablet', 'mobile'].includes(size)) { - width = 119; - height = 56; - } - +const BrandingShape = () => { + const width = 109; + const height = 40; const viewBox = `0 0 ${width} ${height}`; return ( diff --git a/src/components/Banner/SiteBanner/index.js b/src/components/Banner/SiteBanner/index.js index 9cfafac49..7efa86b06 100644 --- a/src/components/Banner/SiteBanner/index.js +++ b/src/components/Banner/SiteBanner/index.js @@ -136,7 +136,7 @@ const SiteBanner = () => { {bannerContent.text}
- +
{bannerContent.pillText && {bannerContent.pillText}}
From 2cfda8b7a1be9b45616a2d987cf23fb897575839 Mon Sep 17 00:00:00 2001 From: rayangler <27821750+rayangler@users.noreply.github.com> Date: Wed, 4 Dec 2024 15:48:24 -0500 Subject: [PATCH 05/23] Remove test code; guard against translations --- src/components/Banner/SiteBanner/index.js | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/src/components/Banner/SiteBanner/index.js b/src/components/Banner/SiteBanner/index.js index 7efa86b06..c6ddf18f6 100644 --- a/src/components/Banner/SiteBanner/index.js +++ b/src/components/Banner/SiteBanner/index.js @@ -101,15 +101,6 @@ const SiteBanner = () => { const fetchBannerContent = async () => { try { setBannerContent(await fetchBanner(snootyEnv)); - // TODO-5132: Remove and test with App Services when done - const bannerContentMock = { - text: 'Join us at AWS re:Invent 2024! Learn how to use MongoDB for AI use cases.', - altText: 'Hello World!', - pillText: 'LEARN MORE', - bgColor: palette.green.dark3, - url: 'https://www.mongodb.com/docs/', - }; - setBannerContent(bannerContentMock); } catch (err) { console.error(err); } @@ -126,6 +117,8 @@ const SiteBanner = () => { return ( Date: Wed, 4 Dec 2024 15:49:05 -0500 Subject: [PATCH 06/23] Move classnames --- src/components/Banner/SiteBanner/index.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/components/Banner/SiteBanner/index.js b/src/components/Banner/SiteBanner/index.js index c6ddf18f6..764a85355 100644 --- a/src/components/Banner/SiteBanner/index.js +++ b/src/components/Banner/SiteBanner/index.js @@ -115,10 +115,13 @@ const SiteBanner = () => { } return ( - + Date: Wed, 4 Dec 2024 16:04:14 -0500 Subject: [PATCH 07/23] More safeguarding. Remove styled --- src/components/Banner/SiteBanner/index.js | 87 ++++++++++++----------- 1 file changed, 46 insertions(+), 41 deletions(-) diff --git a/src/components/Banner/SiteBanner/index.js b/src/components/Banner/SiteBanner/index.js index 764a85355..c95c36ca3 100644 --- a/src/components/Banner/SiteBanner/index.js +++ b/src/components/Banner/SiteBanner/index.js @@ -1,7 +1,6 @@ import React, { useContext, useEffect } from 'react'; -import styled from '@emotion/styled'; import { palette } from '@leafygreen-ui/palette'; -import { css } from '@leafygreen-ui/emotion'; +import { css, cx } from '@leafygreen-ui/emotion'; import { HeaderContext } from '../../Header/header-context'; import { SNOOTY_REALM_APP_ID } from '../../../build-constants'; import { useSiteMetadata } from '../../../hooks/use-site-metadata'; @@ -17,7 +16,7 @@ const getBannerSource = (src) => { return `https://${normalizePath(srcUrl)}`; }; -const StyledBannerContainer = styled.a` +const bannerContainerStyle = css` display: block; height: ${theme.header.bannerHeight}; width: 100%; @@ -27,32 +26,30 @@ const StyledBannerContainer = styled.a` text-decoration: none; `; -const StyledBannerContent = styled.div( - (props) => ` - background-image: url(${getBannerSource(props.imgPath)}); - background-position: center; - background-size: cover; - background-color: ${props.bgColor}; - height: 100%; - display: flex; - justify-content: center; - gap: 20px; - padding: 0 11px; - font-size: 13px; - line-height: 20px; - - @media ${theme.screenSize.upToMedium} { - background-image: url(${getBannerSource(props.tabletImgPath)}); - gap: 104px; - } +const bannerContentStyle = (props) => css` + background-image: url(${getBannerSource(props.imgPath)}); + background-position: center; + background-size: cover; + background-color: ${props.bgColor}; + height: 100%; + display: flex; + justify-content: center; + gap: 20px; + padding: 0 11px; + font-size: 13px; + line-height: 20px; - @media ${theme.screenSize.upToSmall} { - background-image: url(${getBannerSource(props.mobileImgPath)}); - gap: 28px; - font-size: 11px; - } - ` -); + @media ${theme.screenSize.upToMedium} { + background-image: url(${getBannerSource(props.tabletImgPath)}); + gap: 104px; + } + + @media ${theme.screenSize.upToSmall} { + background-image: url(${getBannerSource(props.mobileImgPath)}); + gap: 28px; + font-size: 11px; + } +`; const bannerTextStyle = css` align-self: center; @@ -110,36 +107,44 @@ const SiteBanner = () => { } }, [setBannerContent, snootyEnv]); - if (bannerContent == null) { + if (bannerContent === null) { return null; } + // Ensure Smartling doesn't translate the banner or rewrite anything + const smartlingClassNames = 'sl_opaque notranslate'; + // Backup class name in case Smartling needs to target the whole element + const bannerClassName = 'site-banner'; + return ( - - {bannerContent.text && ( <> - {bannerContent.text} + {bannerContent.text}
- {bannerContent.pillText && {bannerContent.pillText}} + {bannerContent.pillText && ( + {bannerContent.pillText} + )}
)} -
-
+ + ); }; From a282fe1308a3d44565f9851620ae268c1e436b11 Mon Sep 17 00:00:00 2001 From: rayangler <27821750+rayangler@users.noreply.github.com> Date: Wed, 4 Dec 2024 16:11:40 -0500 Subject: [PATCH 08/23] Guard against missing banner content --- src/components/Banner/SiteBanner/index.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/components/Banner/SiteBanner/index.js b/src/components/Banner/SiteBanner/index.js index c95c36ca3..615d8432f 100644 --- a/src/components/Banner/SiteBanner/index.js +++ b/src/components/Banner/SiteBanner/index.js @@ -97,7 +97,11 @@ const SiteBanner = () => { useEffect(() => { const fetchBannerContent = async () => { try { - setBannerContent(await fetchBanner(snootyEnv)); + const res = await fetchBanner(snootyEnv); + // Guard against missing banner content + if (res && (res.imgPath || res.text)) { + setBannerContent(res); + } } catch (err) { console.error(err); } @@ -107,7 +111,7 @@ const SiteBanner = () => { } }, [setBannerContent, snootyEnv]); - if (bannerContent === null) { + if (!bannerContent) { return null; } From a5a5c730bdc2bb5a63aa9910f7acbe4d717f9f76 Mon Sep 17 00:00:00 2001 From: rayangler <27821750+rayangler@users.noreply.github.com> Date: Wed, 4 Dec 2024 16:22:28 -0500 Subject: [PATCH 09/23] Start setting up TS --- package-lock.json | 75 ++++++++++++++++++++++++++-------- package.json | 4 ++ tsconfig.json | 102 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 163 insertions(+), 18 deletions(-) create mode 100644 tsconfig.json diff --git a/package-lock.json b/package-lock.json index 081f250f7..8d1f0d5e7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -114,6 +114,9 @@ "@testing-library/jest-dom": "^5.16.1", "@testing-library/react": "^13.0.0", "@testing-library/user-event": "^13.5.0", + "@types/node": "^22.10.1", + "@types/react": "^18.3.13", + "@types/react-dom": "^18.3.1", "auto-changelog": "^2.2.1", "babel-jest": "^29.5.0", "babel-plugin-emotion": "^11.0.0", @@ -129,6 +132,7 @@ "jest-environment-jsdom": "^29.5.0", "lint-staged": "^10.5.4", "prettier": "^2.2.1", + "typescript": "^5.7.2", "xmlhttprequest-ssl": ">=1.6.2" }, "engines": { @@ -10943,8 +10947,12 @@ "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" }, "node_modules/@types/node": { - "version": "18.14.1", - "license": "MIT" + "version": "22.10.1", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@types/node/-/node-22.10.1.tgz", + "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==", + "dependencies": { + "undici-types": "~6.20.0" + } }, "node_modules/@types/node-fetch": { "version": "2.6.2", @@ -10975,18 +10983,19 @@ } }, "node_modules/@types/react": { - "version": "18.0.28", - "license": "MIT", + "version": "18.3.13", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@types/react/-/react-18.3.13.tgz", + "integrity": "sha512-ii/gswMmOievxAJed4PAHT949bpYjPKXvXo1v6cRB/kqc2ZR4n+SgyCyvyc5Fec5ez8VnUumI1Vk7j6fRyRogg==", "dependencies": { "@types/prop-types": "*", - "@types/scheduler": "*", "csstype": "^3.0.2" } }, "node_modules/@types/react-dom": { - "version": "18.0.11", + "version": "18.3.1", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@types/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/react": "*" } @@ -11028,10 +11037,6 @@ "@types/node": "*" } }, - "node_modules/@types/scheduler": { - "version": "0.16.2", - "license": "MIT" - }, "node_modules/@types/semver": { "version": "7.5.7", "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@types/semver/-/semver-7.5.7.tgz", @@ -30443,6 +30448,19 @@ "is-typedarray": "^1.0.0" } }, + "node_modules/typescript": { + "version": "5.7.2", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/typescript/-/typescript-5.7.2.tgz", + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/ua-parser-js": { "version": "0.7.33", "funding": [ @@ -30501,6 +30519,11 @@ "version": "1.13.6", "license": "MIT" }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==" + }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", "license": "MIT", @@ -39382,7 +39405,12 @@ "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" }, "@types/node": { - "version": "18.14.1" + "version": "22.10.1", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@types/node/-/node-22.10.1.tgz", + "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==", + "requires": { + "undici-types": "~6.20.0" + } }, "@types/node-fetch": { "version": "2.6.2", @@ -39408,15 +39436,18 @@ } }, "@types/react": { - "version": "18.0.28", + "version": "18.3.13", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@types/react/-/react-18.3.13.tgz", + "integrity": "sha512-ii/gswMmOievxAJed4PAHT949bpYjPKXvXo1v6cRB/kqc2ZR4n+SgyCyvyc5Fec5ez8VnUumI1Vk7j6fRyRogg==", "requires": { "@types/prop-types": "*", - "@types/scheduler": "*", "csstype": "^3.0.2" } }, "@types/react-dom": { - "version": "18.0.11", + "version": "18.3.1", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@types/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==", "dev": true, "requires": { "@types/react": "*" @@ -39455,9 +39486,6 @@ "@types/node": "*" } }, - "@types/scheduler": { - "version": "0.16.2" - }, "@types/semver": { "version": "7.5.7", "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@types/semver/-/semver-7.5.7.tgz", @@ -51940,6 +51968,12 @@ "is-typedarray": "^1.0.0" } }, + "typescript": { + "version": "5.7.2", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/typescript/-/typescript-5.7.2.tgz", + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", + "dev": true + }, "ua-parser-js": { "version": "0.7.33" }, @@ -51968,6 +52002,11 @@ "underscore": { "version": "1.13.6" }, + "undici-types": { + "version": "6.20.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==" + }, "unicode-canonical-property-names-ecmascript": { "version": "2.0.0" }, diff --git a/package.json b/package.json index e069123ff..2c1e724cf 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,9 @@ "@testing-library/jest-dom": "^5.16.1", "@testing-library/react": "^13.0.0", "@testing-library/user-event": "^13.5.0", + "@types/node": "^22.10.1", + "@types/react": "^18.3.13", + "@types/react-dom": "^18.3.1", "auto-changelog": "^2.2.1", "babel-jest": "^29.5.0", "babel-plugin-emotion": "^11.0.0", @@ -34,6 +37,7 @@ "jest-environment-jsdom": "^29.5.0", "lint-staged": "^10.5.4", "prettier": "^2.2.1", + "typescript": "^5.7.2", "xmlhttprequest-ssl": ">=1.6.2" }, "scripts": { diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 000000000..5d3fec04c --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,102 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + + /* Projects */ + // "incremental": true, /* Enable incremental compilation */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "esnext", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + "lib": ["dom", "esnext"], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + "jsx": "react", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */ + // "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + + /* Modules */ + "module": "esnext", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "resolveJsonModule": true, /* Enable importing .json files */ + // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */ + // "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */ + // "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + }, + "include": ["./src/**/*", "./gatsby-node.ts", "./gatsby-config.ts", "./plugins/**/*"] +} \ No newline at end of file From 1634ed083e658af9cba74b90db094a4985a21e73 Mon Sep 17 00:00:00 2001 From: rayangler <27821750+rayangler@users.noreply.github.com> Date: Wed, 4 Dec 2024 16:36:17 -0500 Subject: [PATCH 10/23] First few TS components --- .../Banner/SiteBanner/{index.js => index.tsx} | 13 +++++++------ .../{header-context.js => header-context.tsx} | 13 ++++++++++--- src/types.ts | 11 +++++++++++ tsconfig.json | 2 +- 4 files changed, 29 insertions(+), 10 deletions(-) rename src/components/Banner/SiteBanner/{index.js => index.tsx} (89%) rename src/components/Header/{header-context.js => header-context.tsx} (65%) create mode 100644 src/types.ts diff --git a/src/components/Banner/SiteBanner/index.js b/src/components/Banner/SiteBanner/index.tsx similarity index 89% rename from src/components/Banner/SiteBanner/index.js rename to src/components/Banner/SiteBanner/index.tsx index 615d8432f..d446ef2a1 100644 --- a/src/components/Banner/SiteBanner/index.js +++ b/src/components/Banner/SiteBanner/index.tsx @@ -9,8 +9,9 @@ import { isBrowser } from '../../../utils/is-browser'; import { normalizePath } from '../../../utils/normalize-path'; import { fetchBanner } from '../../../utils/realm'; import BrandingShape from './BrandingShape'; +import { SiteBannerContent } from '../../../types'; -const getBannerSource = (src) => { +const getBannerSource = (src?: string) => { if (src == null || src === '') return null; const srcUrl = `${SNOOTY_REALM_APP_ID}.mongodbstitch.com/${src}`; return `https://${normalizePath(srcUrl)}`; @@ -26,11 +27,11 @@ const bannerContainerStyle = css` text-decoration: none; `; -const bannerContentStyle = (props) => css` - background-image: url(${getBannerSource(props.imgPath)}); +const bannerContentStyle = (bannerContent: Partial) => css` + background-image: url(${getBannerSource(bannerContent.imgPath)}); background-position: center; background-size: cover; - background-color: ${props.bgColor}; + background-color: ${bannerContent.bgColor}; height: 100%; display: flex; justify-content: center; @@ -40,12 +41,12 @@ const bannerContentStyle = (props) => css` line-height: 20px; @media ${theme.screenSize.upToMedium} { - background-image: url(${getBannerSource(props.tabletImgPath)}); + background-image: url(${getBannerSource(bannerContent.tabletImgPath)}); gap: 104px; } @media ${theme.screenSize.upToSmall} { - background-image: url(${getBannerSource(props.mobileImgPath)}); + background-image: url(${getBannerSource(bannerContent.mobileImgPath)}); gap: 28px; font-size: 11px; } diff --git a/src/components/Header/header-context.js b/src/components/Header/header-context.tsx similarity index 65% rename from src/components/Header/header-context.js rename to src/components/Header/header-context.tsx index 454c94f9b..f15c0b0e5 100644 --- a/src/components/Header/header-context.js +++ b/src/components/Header/header-context.tsx @@ -1,13 +1,20 @@ -import React, { createContext, useEffect, useState } from 'react'; +import React, { createContext, PropsWithChildren, useEffect, useState } from 'react'; import { theme } from '../../theme/docsTheme'; +import { SiteBannerContent } from '../../types'; -const HeaderContext = createContext({ +interface HeaderContextType { + bannerContent: SiteBannerContent | null; + setBannerContent: Function; + totalHeaderHeight: string; +}; + +const HeaderContext = createContext({ bannerContent: null, setBannerContent: () => {}, totalHeaderHeight: theme.header.navbarHeight, }); -const HeaderContextProvider = ({ children }) => { +const HeaderContextProvider: React.FC = ({ children }) => { const [bannerContent, setBannerContent] = useState(null); const [totalHeaderHeight, setTotalHeaderHeight] = useState(theme.header.navbarHeight); diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 000000000..6d3ce8df4 --- /dev/null +++ b/src/types.ts @@ -0,0 +1,11 @@ +export interface SiteBannerContent { + isEnabled: boolean; + altText: string; + imgPath: string; + tabletImgPath?: string; + mobileImgPath: string; + bgColor: string; + text: string; + pillText: string; + url: string; +} diff --git a/tsconfig.json b/tsconfig.json index 5d3fec04c..173b2fedc 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -37,7 +37,7 @@ // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */ /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ + "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ From 6e6f45e640cb069267ec5135dd5a3cd031f7459b Mon Sep 17 00:00:00 2001 From: rayangler <27821750+rayangler@users.noreply.github.com> Date: Wed, 4 Dec 2024 16:39:30 -0500 Subject: [PATCH 11/23] More TS-ification --- .../Banner/SiteBanner/{BrandingShape.js => BrandingShape.tsx} | 0 src/components/Banner/SiteBanner/index.tsx | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename src/components/Banner/SiteBanner/{BrandingShape.js => BrandingShape.tsx} (100%) diff --git a/src/components/Banner/SiteBanner/BrandingShape.js b/src/components/Banner/SiteBanner/BrandingShape.tsx similarity index 100% rename from src/components/Banner/SiteBanner/BrandingShape.js rename to src/components/Banner/SiteBanner/BrandingShape.tsx diff --git a/src/components/Banner/SiteBanner/index.tsx b/src/components/Banner/SiteBanner/index.tsx index d446ef2a1..4c4bbaf0f 100644 --- a/src/components/Banner/SiteBanner/index.tsx +++ b/src/components/Banner/SiteBanner/index.tsx @@ -98,7 +98,7 @@ const SiteBanner = () => { useEffect(() => { const fetchBannerContent = async () => { try { - const res = await fetchBanner(snootyEnv); + const res: SiteBannerContent = await fetchBanner(snootyEnv); // Guard against missing banner content if (res && (res.imgPath || res.text)) { setBannerContent(res); From 211a3d2dee87deaff3482525a61183e14ec068d6 Mon Sep 17 00:00:00 2001 From: rayangler <27821750+rayangler@users.noreply.github.com> Date: Wed, 4 Dec 2024 17:24:13 -0500 Subject: [PATCH 12/23] Testing and linting --- .eslintrc.js | 1 + jest.config.js | 2 + package-lock.json | 1138 +++++++++++------ package.json | 2 + src/components/Banner/SiteBanner/index.tsx | 2 +- src/types.ts | 10 +- ...SiteBanner.test.js => SiteBanner.test.tsx} | 29 +- .../__snapshots__/SiteBanner.test.js.snap | 170 ++- 8 files changed, 973 insertions(+), 381 deletions(-) rename tests/unit/{SiteBanner.test.js => SiteBanner.test.tsx} (58%) diff --git a/.eslintrc.js b/.eslintrc.js index 1e5a4fd47..d880df5ca 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -21,6 +21,7 @@ module.exports = { 'import/resolver': { node: { moduleDirectory: ['node_modules', '.'], + extensions: ['.js', '.jsx', '.ts', '.tsx'], }, }, }, diff --git a/jest.config.js b/jest.config.js index 32dd9dfcc..47cccfd6e 100644 --- a/jest.config.js +++ b/jest.config.js @@ -7,6 +7,7 @@ module.exports = { projects: [ { displayName: 'unit', + preset: 'ts-jest', globals: { __PATH_PREFIX__: '', }, @@ -19,6 +20,7 @@ module.exports = { testMatch: ['/tests/unit/**/*.test.js'], transform: { '^.+\\.jsx?$': `/jest-preprocess.js`, + '^.+\\.(ts|tsx)$': 'ts-jest', }, }, { diff --git a/package-lock.json b/package-lock.json index 8d1f0d5e7..e7a9cac64 100644 --- a/package-lock.json +++ b/package-lock.json @@ -114,6 +114,7 @@ "@testing-library/jest-dom": "^5.16.1", "@testing-library/react": "^13.0.0", "@testing-library/user-event": "^13.5.0", + "@types/jest": "^29.5.14", "@types/node": "^22.10.1", "@types/react": "^18.3.13", "@types/react-dom": "^18.3.1", @@ -132,6 +133,7 @@ "jest-environment-jsdom": "^29.5.0", "lint-staged": "^10.5.4", "prettier": "^2.2.1", + "ts-jest": "^29.2.5", "typescript": "^5.7.2", "xmlhttprequest-ssl": ">=1.6.2" }, @@ -244,10 +246,13 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.18.6", - "license": "MIT", + "version": "7.26.2", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "dependencies": { - "@babel/highlight": "^7.18.6" + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" @@ -312,35 +317,39 @@ } }, "node_modules/@babel/generator": { - "version": "7.21.1", - "license": "MIT", + "version": "7.26.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/generator/-/generator-7.26.3.tgz", + "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==", "dependencies": { - "@babel/types": "^7.21.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" + "@babel/parser": "^7.26.3", + "@babel/types": "^7.26.3", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "license": "MIT", + "version": "0.3.5", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "license": "MIT", + "version": "7.25.9", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -375,17 +384,17 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.21.0", - "license": "MIT", + "version": "7.25.9", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", + "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-member-expression-to-functions": "^7.21.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/helper-split-export-declaration": "^7.18.6" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/traverse": "^7.25.9", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -462,55 +471,60 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.21.0", - "license": "MIT", + "version": "7.25.9", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", + "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", "dependencies": { - "@babel/types": "^7.21.0" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "license": "MIT", + "version": "7.25.9", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", "dependencies": { - "@babel/types": "^7.18.6" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.21.2", - "license": "MIT", + "version": "7.26.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.2", - "@babel/types": "^7.21.2" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "license": "MIT", + "version": "7.25.9", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", + "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.20.2", - "license": "MIT", + "version": "7.25.9", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", + "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", "engines": { "node": ">=6.9.0" } @@ -532,35 +546,28 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.20.7", - "license": "MIT", + "version": "7.25.9", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz", + "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==", "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.20.7", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.7", - "@babel/types": "^7.20.7" + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.20.2", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.20.2" }, - "engines": { - "node": ">=6.9.0" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.20.0", - "license": "MIT", + "version": "7.25.9", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", + "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", "dependencies": { - "@babel/types": "^7.20.0" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -577,22 +584,25 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "license": "MIT", + "version": "7.25.9", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "license": "MIT", + "version": "7.25.9", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.21.0", - "license": "MIT", + "version": "7.25.9", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", "engines": { "node": ">=6.9.0" } @@ -635,8 +645,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.21.2", - "license": "MIT", + "version": "7.26.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/parser/-/parser-7.26.3.tgz", + "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", + "dependencies": { + "@babel/types": "^7.26.3" + }, "bin": { "parser": "bin/babel-parser.js" }, @@ -1003,10 +1017,11 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.18.6", - "license": "MIT", + "version": "7.25.9", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1102,10 +1117,11 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.20.0", - "license": "MIT", + "version": "7.25.9", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", + "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1340,12 +1356,12 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.21.2", - "license": "MIT", + "version": "7.26.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", + "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", "dependencies": { - "@babel/helper-module-transforms": "^7.21.2", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-simple-access": "^7.20.2" + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1620,12 +1636,15 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.21.0", - "license": "MIT", + "version": "7.26.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.3.tgz", + "integrity": "sha512-6+5hpdr6mETwSKjmJUdYw0EIkATiQhnELWlE3kJFBwSg/BGIVwVaVbX+gOXBCdc7Ln1RXZxyWGecIXhUfnl7oA==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-typescript": "^7.20.0" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-syntax-typescript": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1781,12 +1800,15 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.21.0", - "license": "MIT", + "version": "7.26.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/preset-typescript/-/preset-typescript-7.26.0.tgz", + "integrity": "sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-option": "^7.21.0", - "@babel/plugin-transform-typescript": "^7.21.0" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-syntax-jsx": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.25.9", + "@babel/plugin-transform-typescript": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1816,30 +1838,29 @@ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, "node_modules/@babel/template": { - "version": "7.20.7", - "license": "MIT", + "version": "7.25.9", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.21.2", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.1", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.2", - "@babel/types": "^7.21.2", - "debug": "^4.1.0", + "version": "7.26.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/traverse/-/traverse-7.26.3.tgz", + "integrity": "sha512-yTmc8J+Sj8yLzwr4PD5Xb/WF3bOYu2C2OoSZPzbuqRm4n98XirsbzaX+GloeO376UnSYIYJ4NCanwV5/ugZkwA==", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.3", + "@babel/parser": "^7.26.3", + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.3", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -1847,12 +1868,12 @@ } }, "node_modules/@babel/types": { - "version": "7.21.2", - "license": "MIT", + "version": "7.26.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/types/-/types-7.26.3.tgz", + "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3734,8 +3755,9 @@ } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "license": "MIT", + "version": "1.2.1", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "engines": { "node": ">=6.0.0" } @@ -3765,11 +3787,12 @@ "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "license": "MIT", + "version": "0.3.25", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@juggle/resize-observer": { @@ -10852,9 +10875,10 @@ } }, "node_modules/@types/jest": { - "version": "29.4.0", + "version": "29.5.14", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@types/jest/-/jest-29.5.14.tgz", + "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", "dev": true, - "license": "MIT", "dependencies": { "expect": "^29.0.0", "pretty-format": "^29.0.0" @@ -11110,63 +11134,6 @@ "version": "1.9.2", "license": "MIT" }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "4.33.0", - "license": "MIT", - "dependencies": { - "@typescript-eslint/experimental-utils": "4.33.0", - "@typescript-eslint/scope-manager": "4.33.0", - "debug": "^4.3.1", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.1.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^4.0.0", - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { - "version": "6.0.0", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.3.8", - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { - "version": "4.0.0", - "license": "ISC" - }, "node_modules/@typescript-eslint/experimental-utils": { "version": "4.33.0", "license": "MIT", @@ -11189,31 +11156,6 @@ "eslint": "*" } }, - "node_modules/@typescript-eslint/parser": { - "version": "4.33.0", - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "debug": "^4.3.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, "node_modules/@typescript-eslint/scope-manager": { "version": "4.33.0", "license": "MIT", @@ -12140,7 +12082,9 @@ }, "node_modules/babel-eslint": { "version": "10.1.0", - "license": "MIT", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "deprecated": "babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.", "dependencies": { "@babel/code-frame": "^7.0.0", "@babel/parser": "^7.7.0", @@ -13019,6 +12963,18 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/bser": { "version": "2.1.1", "license": "Apache-2.0", @@ -14976,6 +14932,21 @@ "version": "1.1.1", "license": "MIT" }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/electron-to-chromium": { "version": "1.4.311", "license": "ISC" @@ -16370,8 +16341,9 @@ "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" }, "node_modules/fast-glob": { - "version": "3.2.12", - "license": "MIT", + "version": "3.3.2", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -16520,6 +16492,36 @@ "url": "https://github.com/sindresorhus/file-type?sponsor=1" } }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/filename-reserved-regex": { "version": "2.0.0", "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", @@ -17961,6 +17963,55 @@ "node": ">=18.0.0" } }, + "node_modules/gatsby/node_modules/@typescript-eslint/eslint-plugin": { + "version": "4.33.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", + "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", + "dependencies": { + "@typescript-eslint/experimental-utils": "4.33.0", + "@typescript-eslint/scope-manager": "4.33.0", + "debug": "^4.3.1", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^4.0.0", + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/gatsby/node_modules/@typescript-eslint/parser": { + "version": "4.33.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/parser/-/parser-4.33.0.tgz", + "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", + "dependencies": { + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "debug": "^4.3.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "peerDependencies": { + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/gatsby/node_modules/ansi-styles": { "version": "4.3.0", "license": "MIT", @@ -18786,8 +18837,9 @@ "license": "BSD-3-Clause" }, "node_modules/ignore": { - "version": "5.2.4", - "license": "MIT", + "version": "5.3.2", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "engines": { "node": ">= 4" } @@ -19672,6 +19724,94 @@ "@pkgjs/parseargs": "^0.11.0" } }, + "node_modules/jake": { + "version": "10.9.2", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "dev": true, + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jake/node_modules/async": { + "version": "3.2.6", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true + }, + "node_modules/jake/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jake/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jake/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jake/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jake/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/javascript-stringify": { "version": "2.1.0", "license": "MIT" @@ -21681,13 +21821,14 @@ } }, "node_modules/jsesc": { - "version": "2.5.2", - "license": "MIT", + "version": "3.0.2", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "bin": { "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/json-buffer": { @@ -22350,6 +22491,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, "node_modules/make-fetch-happen": { "version": "13.0.0", "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/make-fetch-happen/-/make-fetch-happen-13.0.0.tgz", @@ -28482,8 +28629,9 @@ "license": "MIT" }, "node_modules/semver": { - "version": "6.3.0", - "license": "ISC", + "version": "6.3.1", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } @@ -30206,13 +30354,6 @@ "dev": true, "license": "BSD-3-Clause" }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "license": "MIT", @@ -30320,6 +30461,75 @@ "version": "2.2.1", "license": "Apache-2.0" }, + "node_modules/ts-jest": { + "version": "29.2.5", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/ts-jest/-/ts-jest-29.2.5.tgz", + "integrity": "sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==", + "dev": true, + "dependencies": { + "bs-logger": "^0.2.6", + "ejs": "^3.1.10", + "fast-json-stable-stringify": "^2.1.0", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "^4.1.2", + "make-error": "^1.3.6", + "semver": "^7.6.3", + "yargs-parser": "^21.1.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/transform": "^29.0.0", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/transform": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/ts-jest/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-jest/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/tsconfig-paths": { "version": "3.14.1", "license": "MIT", @@ -31727,9 +31937,13 @@ } }, "@babel/code-frame": { - "version": "7.18.6", + "version": "7.26.2", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "requires": { - "@babel/highlight": "^7.18.6" + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" } }, "@babel/compat-data": { @@ -31769,28 +31983,35 @@ } }, "@babel/generator": { - "version": "7.21.1", + "version": "7.26.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/generator/-/generator-7.26.3.tgz", + "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==", "requires": { - "@babel/types": "^7.21.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" + "@babel/parser": "^7.26.3", + "@babel/types": "^7.26.3", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" }, "dependencies": { "@jridgewell/gen-mapping": { - "version": "0.3.2", + "version": "0.3.5", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "requires": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" } } } }, "@babel/helper-annotate-as-pure": { - "version": "7.18.6", + "version": "7.25.9", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.25.9" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { @@ -31811,16 +32032,17 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.21.0", + "version": "7.25.9", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", + "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-member-expression-to-functions": "^7.21.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/helper-split-export-declaration": "^7.18.6" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/traverse": "^7.25.9", + "semver": "^6.3.1" } }, "@babel/helper-create-regexp-features-plugin": { @@ -31864,38 +32086,45 @@ } }, "@babel/helper-member-expression-to-functions": { - "version": "7.21.0", + "version": "7.25.9", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", + "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", "requires": { - "@babel/types": "^7.21.0" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" } }, "@babel/helper-module-imports": { - "version": "7.18.6", + "version": "7.25.9", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", "requires": { - "@babel/types": "^7.18.6" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" } }, "@babel/helper-module-transforms": { - "version": "7.21.2", + "version": "7.26.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.2", - "@babel/types": "^7.21.2" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" } }, "@babel/helper-optimise-call-expression": { - "version": "7.18.6", + "version": "7.25.9", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", + "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.25.9" } }, "@babel/helper-plugin-utils": { - "version": "7.20.2" + "version": "7.25.9", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", + "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==" }, "@babel/helper-remap-async-to-generator": { "version": "7.18.9", @@ -31907,26 +32136,22 @@ } }, "@babel/helper-replace-supers": { - "version": "7.20.7", - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.20.7", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.7", - "@babel/types": "^7.20.7" - } - }, - "@babel/helper-simple-access": { - "version": "7.20.2", + "version": "7.25.9", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz", + "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==", "requires": { - "@babel/types": "^7.20.2" + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/traverse": "^7.25.9" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.20.0", + "version": "7.25.9", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", + "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", "requires": { - "@babel/types": "^7.20.0" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" } }, "@babel/helper-split-export-declaration": { @@ -31936,13 +32161,19 @@ } }, "@babel/helper-string-parser": { - "version": "7.19.4" + "version": "7.25.9", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==" }, "@babel/helper-validator-identifier": { - "version": "7.19.1" + "version": "7.25.9", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==" }, "@babel/helper-validator-option": { - "version": "7.21.0" + "version": "7.25.9", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==" }, "@babel/helper-wrap-function": { "version": "7.20.5", @@ -31970,7 +32201,12 @@ } }, "@babel/parser": { - "version": "7.21.2" + "version": "7.26.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/parser/-/parser-7.26.3.tgz", + "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", + "requires": { + "@babel/types": "^7.26.3" + } }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.18.6", @@ -32163,9 +32399,11 @@ } }, "@babel/plugin-syntax-jsx": { - "version": "7.18.6", + "version": "7.25.9", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-syntax-logical-assignment-operators": { @@ -32217,9 +32455,11 @@ } }, "@babel/plugin-syntax-typescript": { - "version": "7.20.0", + "version": "7.25.9", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", + "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", "requires": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-arrow-functions": { @@ -32336,11 +32576,12 @@ } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.21.2", + "version": "7.26.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", + "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", "requires": { - "@babel/helper-module-transforms": "^7.21.2", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-simple-access": "^7.20.2" + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helper-plugin-utils": "^7.25.9" } }, "@babel/plugin-transform-modules-systemjs": { @@ -32476,11 +32717,15 @@ } }, "@babel/plugin-transform-typescript": { - "version": "7.21.0", + "version": "7.26.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.3.tgz", + "integrity": "sha512-6+5hpdr6mETwSKjmJUdYw0EIkATiQhnELWlE3kJFBwSg/BGIVwVaVbX+gOXBCdc7Ln1RXZxyWGecIXhUfnl7oA==", "requires": { - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-typescript": "^7.20.0" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-syntax-typescript": "^7.25.9" } }, "@babel/plugin-transform-unicode-escapes": { @@ -32598,11 +32843,15 @@ } }, "@babel/preset-typescript": { - "version": "7.21.0", + "version": "7.26.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/preset-typescript/-/preset-typescript-7.26.0.tgz", + "integrity": "sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==", "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-option": "^7.21.0", - "@babel/plugin-transform-typescript": "^7.21.0" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-syntax-jsx": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.25.9", + "@babel/plugin-transform-typescript": "^7.25.9" } }, "@babel/regjsgen": { @@ -32624,34 +32873,36 @@ } }, "@babel/template": { - "version": "7.20.7", + "version": "7.25.9", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" } }, "@babel/traverse": { - "version": "7.21.2", - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.21.1", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.2", - "@babel/types": "^7.21.2", - "debug": "^4.1.0", + "version": "7.26.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/traverse/-/traverse-7.26.3.tgz", + "integrity": "sha512-yTmc8J+Sj8yLzwr4PD5Xb/WF3bOYu2C2OoSZPzbuqRm4n98XirsbzaX+GloeO376UnSYIYJ4NCanwV5/ugZkwA==", + "requires": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.3", + "@babel/parser": "^7.26.3", + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.3", + "debug": "^4.3.1", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.21.2", + "version": "7.26.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@babel/types/-/types-7.26.3.tgz", + "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" } }, "@bcoe/v8-coverage": { @@ -33965,7 +34216,9 @@ "version": "3.1.0" }, "@jridgewell/set-array": { - "version": "1.1.2" + "version": "1.2.1", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==" }, "@jridgewell/source-map": { "version": "0.3.2", @@ -33988,10 +34241,12 @@ "version": "1.4.14" }, "@jridgewell/trace-mapping": { - "version": "0.3.17", + "version": "0.3.25", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "@juggle/resize-observer": { @@ -39329,7 +39584,9 @@ } }, "@types/jest": { - "version": "29.4.0", + "version": "29.5.14", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@types/jest/-/jest-29.5.14.tgz", + "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", "dev": true, "requires": { "expect": "^29.0.0", @@ -39549,36 +39806,6 @@ "@types/yoga-layout": { "version": "1.9.2" }, - "@typescript-eslint/eslint-plugin": { - "version": "4.33.0", - "requires": { - "@typescript-eslint/experimental-utils": "4.33.0", - "@typescript-eslint/scope-manager": "4.33.0", - "debug": "^4.3.1", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.1.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.8", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "yallist": { - "version": "4.0.0" - } - } - }, "@typescript-eslint/experimental-utils": { "version": "4.33.0", "requires": { @@ -39590,15 +39817,6 @@ "eslint-utils": "^3.0.0" } }, - "@typescript-eslint/parser": { - "version": "4.33.0", - "requires": { - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "debug": "^4.3.1" - } - }, "@typescript-eslint/scope-manager": { "version": "4.33.0", "requires": { @@ -40189,6 +40407,8 @@ }, "babel-eslint": { "version": "10.1.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", "requires": { "@babel/code-frame": "^7.0.0", "@babel/parser": "^7.7.0", @@ -40781,6 +41001,15 @@ "update-browserslist-db": "^1.0.10" } }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, "bser": { "version": "2.1.1", "requires": { @@ -42053,6 +42282,15 @@ "ee-first": { "version": "1.1.1" }, + "ejs": { + "version": "3.1.10", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, + "requires": { + "jake": "^10.8.5" + } + }, "electron-to-chromium": { "version": "1.4.311" }, @@ -42956,7 +43194,9 @@ "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" }, "fast-glob": { - "version": "3.2.12", + "version": "3.3.2", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "requires": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -43055,6 +43295,35 @@ "token-types": "^4.1.1" } }, + "filelist": { + "version": "1.0.4", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "requires": { + "minimatch": "^5.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, "filename-reserved-regex": { "version": "2.0.0", "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", @@ -43543,6 +43812,32 @@ "yaml-loader": "^0.8.0" }, "dependencies": { + "@typescript-eslint/eslint-plugin": { + "version": "4.33.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", + "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", + "requires": { + "@typescript-eslint/experimental-utils": "4.33.0", + "@typescript-eslint/scope-manager": "4.33.0", + "debug": "^4.3.1", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/parser": { + "version": "4.33.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/parser/-/parser-4.33.0.tgz", + "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", + "requires": { + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "debug": "^4.3.1" + } + }, "ansi-styles": { "version": "4.3.0", "requires": { @@ -44498,7 +44793,9 @@ "version": "1.2.1" }, "ignore": { - "version": "5.2.4" + "version": "5.3.2", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==" }, "image-size": { "version": "1.0.2", @@ -45013,6 +45310,75 @@ "@pkgjs/parseargs": "^0.11.0" } }, + "jake": { + "version": "10.9.2", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "dev": true, + "requires": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "async": { + "version": "3.2.6", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "javascript-stringify": { "version": "2.1.0" }, @@ -46308,7 +46674,9 @@ } }, "jsesc": { - "version": "2.5.2" + "version": "3.0.2", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==" }, "json-buffer": { "version": "3.0.1" @@ -46736,6 +47104,12 @@ "semver": "^6.0.0" } }, + "make-error": { + "version": "1.3.6", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, "make-fetch-happen": { "version": "13.0.0", "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/make-fetch-happen/-/make-fetch-happen-13.0.0.tgz", @@ -50616,7 +50990,9 @@ "version": "1.1.2" }, "semver": { - "version": "6.3.0" + "version": "6.3.1", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" }, "semver-compare": { "version": "1.0.0", @@ -51809,9 +52185,6 @@ "version": "1.0.5", "dev": true }, - "to-fast-properties": { - "version": "2.0.0" - }, "to-regex-range": { "version": "5.0.1", "requires": { @@ -51885,6 +52258,37 @@ "true-case-path": { "version": "2.2.1" }, + "ts-jest": { + "version": "29.2.5", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/ts-jest/-/ts-jest-29.2.5.tgz", + "integrity": "sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==", + "dev": true, + "requires": { + "bs-logger": "^0.2.6", + "ejs": "^3.1.10", + "fast-json-stable-stringify": "^2.1.0", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "^4.1.2", + "make-error": "^1.3.6", + "semver": "^7.6.3", + "yargs-parser": "^21.1.1" + }, + "dependencies": { + "semver": { + "version": "7.6.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + } + } + }, "tsconfig-paths": { "version": "3.14.1", "requires": { diff --git a/package.json b/package.json index 2c1e724cf..d8330628c 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "@testing-library/jest-dom": "^5.16.1", "@testing-library/react": "^13.0.0", "@testing-library/user-event": "^13.5.0", + "@types/jest": "^29.5.14", "@types/node": "^22.10.1", "@types/react": "^18.3.13", "@types/react-dom": "^18.3.1", @@ -37,6 +38,7 @@ "jest-environment-jsdom": "^29.5.0", "lint-staged": "^10.5.4", "prettier": "^2.2.1", + "ts-jest": "^29.2.5", "typescript": "^5.7.2", "xmlhttprequest-ssl": ">=1.6.2" }, diff --git a/src/components/Banner/SiteBanner/index.tsx b/src/components/Banner/SiteBanner/index.tsx index 4c4bbaf0f..454d0eb5b 100644 --- a/src/components/Banner/SiteBanner/index.tsx +++ b/src/components/Banner/SiteBanner/index.tsx @@ -31,7 +31,7 @@ const bannerContentStyle = (bannerContent: Partial) => css` background-image: url(${getBannerSource(bannerContent.imgPath)}); background-position: center; background-size: cover; - background-color: ${bannerContent.bgColor}; + ${bannerContent.bgColor && `background-color: ${bannerContent.bgColor};`} height: 100%; display: flex; justify-content: center; diff --git a/src/types.ts b/src/types.ts index 6d3ce8df4..ef06f935d 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,11 +1,11 @@ export interface SiteBannerContent { isEnabled: boolean; altText: string; - imgPath: string; + imgPath?: string; tabletImgPath?: string; - mobileImgPath: string; - bgColor: string; - text: string; - pillText: string; + mobileImgPath?: string; + bgColor?: string; + text?: string; + pillText?: string; url: string; } diff --git a/tests/unit/SiteBanner.test.js b/tests/unit/SiteBanner.test.tsx similarity index 58% rename from tests/unit/SiteBanner.test.js rename to tests/unit/SiteBanner.test.tsx index 7d3ea7527..703bed3cc 100644 --- a/tests/unit/SiteBanner.test.js +++ b/tests/unit/SiteBanner.test.tsx @@ -5,9 +5,10 @@ import * as RealmUtil from '../../src/utils/realm'; import SiteBanner from '../../src/components/Banner/SiteBanner'; import { HeaderContext } from '../../src/components/Header/header-context'; import { tick } from '../utils'; +import { palette } from '@leafygreen-ui/palette'; const useStaticQuery = jest.spyOn(Gatsby, 'useStaticQuery'); -const mockSnootyEnv = (snootyEnv) => { +const mockSnootyEnv = (snootyEnv: string) => { useStaticQuery.mockImplementation(() => ({ site: { siteMetadata: { @@ -18,6 +19,7 @@ const mockSnootyEnv = (snootyEnv) => { }; const mockBannerContent = { + isEnabled: true, altText: 'Test', imgPath: '/banners/test.png', tabletImgPath: '/banners/test-tablet.png', @@ -38,10 +40,31 @@ describe('Banner component', () => { it('renders with a banner image', async () => { jest.useFakeTimers(); - jest.spyOn(RealmUtil, 'fetchBanner').mockImplementation(() => mockBannerContent); + jest.spyOn(RealmUtil, 'fetchBanner').mockResolvedValueOnce(() => mockBannerContent); const setBannerContent = jest.fn(); const wrapper = render( - + + + + ); + await tick(); + expect(wrapper.asFragment()).toMatchSnapshot(); + }); + + it('renders with custom text', async () => { + jest.useFakeTimers(); + const bannerContent = { + isEnabled: true, + altText: mockBannerContent.altText, + bgColor: palette.green.dark3, + text: 'This is custom banner text', + pillText: 'DOP', + url: mockBannerContent.url, + }; + jest.spyOn(RealmUtil, 'fetchBanner').mockResolvedValueOnce(() => bannerContent); + const setBannerContent = jest.fn(); + const wrapper = render( + ); diff --git a/tests/unit/__snapshots__/SiteBanner.test.js.snap b/tests/unit/__snapshots__/SiteBanner.test.js.snap index 8f337cde4..a57fcc4ba 100644 --- a/tests/unit/__snapshots__/SiteBanner.test.js.snap +++ b/tests/unit/__snapshots__/SiteBanner.test.js.snap @@ -8,37 +8,197 @@ exports[`Banner component renders with a banner image 1`] = ` width: 100%; position: absolute; z-index: 1000; + color: white; + -webkit-text-decoration: none; + text-decoration: none; } -.emotion-2 { +.emotion-1 { background-image: url(https://snooty-koueq.mongodbstitch.com/banners/test.png); -webkit-background-position: center; background-position: center; -webkit-background-size: cover; background-size: cover; height: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + gap: 20px; + padding: 0 11px; + font-size: 13px; + line-height: 20px; } @media only screen and (max-width: 767px) { - .emotion-2 { + .emotion-1 { background-image: url(https://snooty-koueq.mongodbstitch.com/banners/test-tablet.png); + gap: 104px; } } @media only screen and (max-width: 480px) { - .emotion-2 { + .emotion-1 { background-image: url(https://snooty-koueq.mongodbstitch.com/banners/test-mobile.png); + gap: 28px; + font-size: 11px; } }
`; + +exports[`Banner component renders with custom text 1`] = ` + + .emotion-0 { + display: block; + height: 40px; + width: 100%; + position: absolute; + z-index: 1000; + color: white; + -webkit-text-decoration: none; + text-decoration: none; +} + +.emotion-1 { + background-image: url(); + -webkit-background-position: center; + background-position: center; + -webkit-background-size: cover; + background-size: cover; + background-color: #023430; + height: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + gap: 20px; + padding: 0 11px; + font-size: 13px; + line-height: 20px; +} + +@media only screen and (max-width: 767px) { + .emotion-1 { + background-image: url(); + gap: 104px; + } +} + +@media only screen and (max-width: 480px) { + .emotion-1 { + background-image: url(); + gap: 28px; + font-size: 11px; + } +} + +.emotion-2 { + -webkit-align-self: center; + -ms-flex-item-align: center; + align-self: center; + max-height: 40px; +} + +.emotion-3 { + display: grid; + justify-items: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.emotion-4 { + grid-row: 1; + grid-column: 1; + height: 40px; +} + +.emotion-5 { + grid-row: 1; + grid-column: 1; + color: #023430; + font-weight: 600; + line-height: 16px; + font-size: 12px; + background-color: #00ED64; + border: 1px solid #00684A; + border-radius: 6px; + height: 22px; + padding: 3px 8px; + z-index: 1; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; +} + + +
+ + This is custom banner text + +
+
+ + + +
+ + DOP + +
+
+
+
+`; From 6c7c7f1373aae8eb2f7234bf0e72f533685a3be3 Mon Sep 17 00:00:00 2001 From: rayangler <27821750+rayangler@users.noreply.github.com> Date: Wed, 4 Dec 2024 17:28:08 -0500 Subject: [PATCH 13/23] Format --- package.json | 2 +- src/components/Header/header-context.tsx | 2 +- tests/unit/SiteBanner.test.tsx | 4 +++- tsconfig.json | 25 +++++++++++++----------- 4 files changed, 19 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index d8330628c..a4c38b9af 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,7 @@ "percy": "npm run build:clean && npm exec -- percy snapshot ./public -c .percy.yml", "prepare": "node -e \"if (process.env.NODE_ENV !== 'production'){process.exit(1)} \" || husky install", "postversion": "git push origin v$npm_package_version && git push origin main", - "prettier": "prettier '**/*.{js,jsx,json,md}'", + "prettier": "prettier '**/*.{js,jsx,ts,tsx,json,md}'", "preversion": "npm run ensure-main && npm run format && npm run lint && npm run test", "serve": "gatsby serve --prefix-paths", "test": "jest", diff --git a/src/components/Header/header-context.tsx b/src/components/Header/header-context.tsx index f15c0b0e5..f6e0c07a9 100644 --- a/src/components/Header/header-context.tsx +++ b/src/components/Header/header-context.tsx @@ -6,7 +6,7 @@ interface HeaderContextType { bannerContent: SiteBannerContent | null; setBannerContent: Function; totalHeaderHeight: string; -}; +} const HeaderContext = createContext({ bannerContent: null, diff --git a/tests/unit/SiteBanner.test.tsx b/tests/unit/SiteBanner.test.tsx index 703bed3cc..1ed4bf843 100644 --- a/tests/unit/SiteBanner.test.tsx +++ b/tests/unit/SiteBanner.test.tsx @@ -43,7 +43,9 @@ describe('Banner component', () => { jest.spyOn(RealmUtil, 'fetchBanner').mockResolvedValueOnce(() => mockBannerContent); const setBannerContent = jest.fn(); const wrapper = render( - + ); diff --git a/tsconfig.json b/tsconfig.json index 173b2fedc..95818c32b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,9 +11,12 @@ // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ /* Language and Environment */ - "target": "esnext", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ - "lib": ["dom", "esnext"], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - "jsx": "react", /* Specify what JSX code is generated. */ + "target": "esnext" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, + "lib": [ + "dom", + "esnext" + ] /* Specify a set of bundled library declaration files that describe the target runtime environment. */, + "jsx": "react" /* Specify what JSX code is generated. */, // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */ @@ -24,9 +27,9 @@ // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ /* Modules */ - "module": "esnext", /* Specify what module code is generated. */ + "module": "esnext" /* Specify what module code is generated. */, // "rootDir": "./", /* Specify the root folder within your source files. */ - "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ + "moduleResolution": "node" /* Specify how TypeScript looks up a file from a given module specifier. */, // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ @@ -37,7 +40,7 @@ // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */ /* JavaScript Support */ - "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ + "allowJs": true /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */, // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ @@ -69,12 +72,12 @@ /* Interop Constraints */ // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ - "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */ + "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */, // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ - "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, /* Type Checking */ - "strict": true, /* Enable all strict type-checking options. */ + "strict": true /* Enable all strict type-checking options. */, // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */ // "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */ // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ @@ -96,7 +99,7 @@ /* Completeness */ // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ }, "include": ["./src/**/*", "./gatsby-node.ts", "./gatsby-config.ts", "./plugins/**/*"] -} \ No newline at end of file +} From 71fa90e32e9349e8098153ddff846a5e8b6fb180 Mon Sep 17 00:00:00 2001 From: rayangler <27821750+rayangler@users.noreply.github.com> Date: Wed, 4 Dec 2024 17:37:32 -0500 Subject: [PATCH 14/23] Fix linting issues --- .eslintrc.js | 6 + package-lock.json | 789 ++++++++++++++++++++- package.json | 6 +- src/components/Banner/SiteBanner/index.tsx | 2 +- tests/unit/SiteBanner.test.tsx | 2 +- 5 files changed, 791 insertions(+), 14 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index d880df5ca..81ecbd86e 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -25,4 +25,10 @@ module.exports = { }, }, }, + overrides: [ + { + files: ['*.ts', '*.tsx'], + parser: '@typescript-eslint/parser', + }, + ], }; diff --git a/package-lock.json b/package-lock.json index e7a9cac64..beeb0865f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -118,6 +118,8 @@ "@types/node": "^22.10.1", "@types/react": "^18.3.13", "@types/react-dom": "^18.3.1", + "@typescript-eslint/eslint-plugin": "^6.21.0", + "@typescript-eslint/parser": "^6.21.0", "auto-changelog": "^2.2.1", "babel-jest": "^29.5.0", "babel-plugin-emotion": "^11.0.0", @@ -134,7 +136,7 @@ "lint-staged": "^10.5.4", "prettier": "^2.2.1", "ts-jest": "^29.2.5", - "typescript": "^5.7.2", + "typescript": "<5.4.0", "xmlhttprequest-ssl": ">=1.6.2" }, "engines": { @@ -2425,6 +2427,15 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, "node_modules/@eslint/eslintrc": { "version": "0.4.3", "license": "MIT", @@ -10924,8 +10935,9 @@ } }, "node_modules/@types/json-schema": { - "version": "7.0.11", - "license": "MIT" + "version": "7.0.15", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" }, "node_modules/@types/json5": { "version": "0.0.29", @@ -11134,6 +11146,159 @@ "version": "1.9.2", "license": "MIT" }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", + "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/type-utils": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/experimental-utils": { "version": "4.33.0", "license": "MIT", @@ -11156,6 +11321,131 @@ "eslint": "*" } }, + "node_modules/@typescript-eslint/parser": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/parser/-/parser-6.21.0.tgz", + "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/scope-manager": { "version": "4.33.0", "license": "MIT", @@ -11171,6 +11461,151 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", + "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/types": { "version": "4.33.0", "license": "MIT", @@ -18370,6 +18805,12 @@ "version": "4.2.10", "license": "ISC" }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, "node_modules/graphql": { "version": "16.6.0", "license": "MIT", @@ -30461,6 +30902,18 @@ "version": "2.2.1", "license": "Apache-2.0" }, + "node_modules/ts-api-utils": { + "version": "1.4.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/ts-api-utils/-/ts-api-utils-1.4.3.tgz", + "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, "node_modules/ts-jest": { "version": "29.2.5", "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/ts-jest/-/ts-jest-29.2.5.tgz", @@ -30659,9 +31112,9 @@ } }, "node_modules/typescript": { - "version": "5.7.2", - "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/typescript/-/typescript-5.7.2.tgz", - "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", + "version": "5.3.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -33286,6 +33739,12 @@ } } }, + "@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true + }, "@eslint/eslintrc": { "version": "0.4.3", "requires": { @@ -39622,7 +40081,9 @@ } }, "@types/json-schema": { - "version": "7.0.11" + "version": "7.0.15", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" }, "@types/json5": { "version": "0.0.29" @@ -39806,6 +40267,114 @@ "@types/yoga-layout": { "version": "1.9.2" }, + "@typescript-eslint/eslint-plugin": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", + "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", + "dev": true, + "requires": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/type-utils": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" + } + }, + "@typescript-eslint/types": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + } + }, + "@typescript-eslint/utils": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "semver": "^7.5.4" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" + } + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "semver": { + "version": "7.6.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true + } + } + }, "@typescript-eslint/experimental-utils": { "version": "4.33.0", "requires": { @@ -39817,6 +40386,93 @@ "eslint-utils": "^3.0.0" } }, + "@typescript-eslint/parser": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/parser/-/parser-6.21.0.tgz", + "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" + } + }, + "@typescript-eslint/types": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" + } + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "semver": { + "version": "7.6.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true + } + } + }, "@typescript-eslint/scope-manager": { "version": "4.33.0", "requires": { @@ -39824,6 +40480,107 @@ "@typescript-eslint/visitor-keys": "4.33.0" } }, + "@typescript-eslint/type-utils": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", + "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" + } + }, + "@typescript-eslint/types": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + } + }, + "@typescript-eslint/utils": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "semver": "^7.5.4" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "dev": true, + "requires": { + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" + } + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "semver": { + "version": "7.6.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true + } + } + }, "@typescript-eslint/types": { "version": "4.33.0" }, @@ -44525,6 +45282,12 @@ "graceful-fs": { "version": "4.2.10" }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, "graphql": { "version": "16.6.0" }, @@ -52258,6 +53021,12 @@ "true-case-path": { "version": "2.2.1" }, + "ts-api-utils": { + "version": "1.4.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/ts-api-utils/-/ts-api-utils-1.4.3.tgz", + "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", + "dev": true + }, "ts-jest": { "version": "29.2.5", "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/ts-jest/-/ts-jest-29.2.5.tgz", @@ -52373,9 +53142,9 @@ } }, "typescript": { - "version": "5.7.2", - "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/typescript/-/typescript-5.7.2.tgz", - "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", + "version": "5.3.3", + "resolved": "https://artifactory.corp.mongodb.com/artifactory/api/npm/npm/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "dev": true }, "ua-parser-js": { diff --git a/package.json b/package.json index a4c38b9af..b317a5471 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,8 @@ "@types/node": "^22.10.1", "@types/react": "^18.3.13", "@types/react-dom": "^18.3.1", + "@typescript-eslint/eslint-plugin": "^6.21.0", + "@typescript-eslint/parser": "^6.21.0", "auto-changelog": "^2.2.1", "babel-jest": "^29.5.0", "babel-plugin-emotion": "^11.0.0", @@ -39,7 +41,7 @@ "lint-staged": "^10.5.4", "prettier": "^2.2.1", "ts-jest": "^29.2.5", - "typescript": "^5.7.2", + "typescript": "<5.4.0", "xmlhttprequest-ssl": ">=1.6.2" }, "scripts": { @@ -54,7 +56,7 @@ "ensure-main": "node scripts/ensure-main.js", "format": "npm run prettier -- --check", "format:fix": "npm run prettier -- --write", - "lint": "eslint --ext .js,.jsx .", + "lint": "eslint --ext .js,.jsx,.ts,.tsx .", "lint:fix": "npm run lint -- --fix --max-warnings 0", "percy": "npm run build:clean && npm exec -- percy snapshot ./public -c .percy.yml", "prepare": "node -e \"if (process.env.NODE_ENV !== 'production'){process.exit(1)} \" || husky install", diff --git a/src/components/Banner/SiteBanner/index.tsx b/src/components/Banner/SiteBanner/index.tsx index 454d0eb5b..4d0ada5aa 100644 --- a/src/components/Banner/SiteBanner/index.tsx +++ b/src/components/Banner/SiteBanner/index.tsx @@ -8,8 +8,8 @@ import { theme } from '../../../theme/docsTheme'; import { isBrowser } from '../../../utils/is-browser'; import { normalizePath } from '../../../utils/normalize-path'; import { fetchBanner } from '../../../utils/realm'; -import BrandingShape from './BrandingShape'; import { SiteBannerContent } from '../../../types'; +import BrandingShape from './BrandingShape'; const getBannerSource = (src?: string) => { if (src == null || src === '') return null; diff --git a/tests/unit/SiteBanner.test.tsx b/tests/unit/SiteBanner.test.tsx index 1ed4bf843..0cafa97a0 100644 --- a/tests/unit/SiteBanner.test.tsx +++ b/tests/unit/SiteBanner.test.tsx @@ -1,11 +1,11 @@ import React from 'react'; import { render } from '@testing-library/react'; import * as Gatsby from 'gatsby'; +import { palette } from '@leafygreen-ui/palette'; import * as RealmUtil from '../../src/utils/realm'; import SiteBanner from '../../src/components/Banner/SiteBanner'; import { HeaderContext } from '../../src/components/Header/header-context'; import { tick } from '../utils'; -import { palette } from '@leafygreen-ui/palette'; const useStaticQuery = jest.spyOn(Gatsby, 'useStaticQuery'); const mockSnootyEnv = (snootyEnv: string) => { From 5550554a5a91d3e6caaf6a5d30de2393692df292 Mon Sep 17 00:00:00 2001 From: rayangler <27821750+rayangler@users.noreply.github.com> Date: Wed, 4 Dec 2024 17:52:35 -0500 Subject: [PATCH 15/23] Deleted old JS snap? --- .../__snapshots__/SiteBanner.test.js.snap | 204 ------------------ 1 file changed, 204 deletions(-) delete mode 100644 tests/unit/__snapshots__/SiteBanner.test.js.snap diff --git a/tests/unit/__snapshots__/SiteBanner.test.js.snap b/tests/unit/__snapshots__/SiteBanner.test.js.snap deleted file mode 100644 index a57fcc4ba..000000000 --- a/tests/unit/__snapshots__/SiteBanner.test.js.snap +++ /dev/null @@ -1,204 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Banner component renders with a banner image 1`] = ` - - .emotion-0 { - display: block; - height: 40px; - width: 100%; - position: absolute; - z-index: 1000; - color: white; - -webkit-text-decoration: none; - text-decoration: none; -} - -.emotion-1 { - background-image: url(https://snooty-koueq.mongodbstitch.com/banners/test.png); - -webkit-background-position: center; - background-position: center; - -webkit-background-size: cover; - background-size: cover; - height: 100%; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - gap: 20px; - padding: 0 11px; - font-size: 13px; - line-height: 20px; -} - -@media only screen and (max-width: 767px) { - .emotion-1 { - background-image: url(https://snooty-koueq.mongodbstitch.com/banners/test-tablet.png); - gap: 104px; - } -} - -@media only screen and (max-width: 480px) { - .emotion-1 { - background-image: url(https://snooty-koueq.mongodbstitch.com/banners/test-mobile.png); - gap: 28px; - font-size: 11px; - } -} - - -
- - -`; - -exports[`Banner component renders with custom text 1`] = ` - - .emotion-0 { - display: block; - height: 40px; - width: 100%; - position: absolute; - z-index: 1000; - color: white; - -webkit-text-decoration: none; - text-decoration: none; -} - -.emotion-1 { - background-image: url(); - -webkit-background-position: center; - background-position: center; - -webkit-background-size: cover; - background-size: cover; - background-color: #023430; - height: 100%; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; - gap: 20px; - padding: 0 11px; - font-size: 13px; - line-height: 20px; -} - -@media only screen and (max-width: 767px) { - .emotion-1 { - background-image: url(); - gap: 104px; - } -} - -@media only screen and (max-width: 480px) { - .emotion-1 { - background-image: url(); - gap: 28px; - font-size: 11px; - } -} - -.emotion-2 { - -webkit-align-self: center; - -ms-flex-item-align: center; - align-self: center; - max-height: 40px; -} - -.emotion-3 { - display: grid; - justify-items: center; - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} - -.emotion-4 { - grid-row: 1; - grid-column: 1; - height: 40px; -} - -.emotion-5 { - grid-row: 1; - grid-column: 1; - color: #023430; - font-weight: 600; - line-height: 16px; - font-size: 12px; - background-color: #00ED64; - border: 1px solid #00684A; - border-radius: 6px; - height: 22px; - padding: 3px 8px; - z-index: 1; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-align-items: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - -webkit-justify-content: center; - justify-content: center; -} - - -
- - This is custom banner text - -
-
- - - -
- - DOP - -
-
-
-
-`; From 6f3f879b8730e67026e12d1bed049f3e4430a488 Mon Sep 17 00:00:00 2001 From: rayangler <27821750+rayangler@users.noreply.github.com> Date: Wed, 4 Dec 2024 17:55:56 -0500 Subject: [PATCH 16/23] Fix test configuration --- jest.config.js | 2 +- .../__snapshots__/SiteBanner.test.tsx.snap | 204 ++++++++++++++++++ 2 files changed, 205 insertions(+), 1 deletion(-) create mode 100644 tests/unit/__snapshots__/SiteBanner.test.tsx.snap diff --git a/jest.config.js b/jest.config.js index 47cccfd6e..83e49f58b 100644 --- a/jest.config.js +++ b/jest.config.js @@ -17,7 +17,7 @@ module.exports = { setupFilesAfterEnv: ['/tests/testSetup.js'], snapshotSerializers: ['@emotion/jest/serializer'], testEnvironment: 'jest-environment-jsdom', - testMatch: ['/tests/unit/**/*.test.js'], + testMatch: ['/tests/unit/**/*.test.js', '/tests/unit/**/*.test.tsx'], transform: { '^.+\\.jsx?$': `/jest-preprocess.js`, '^.+\\.(ts|tsx)$': 'ts-jest', diff --git a/tests/unit/__snapshots__/SiteBanner.test.tsx.snap b/tests/unit/__snapshots__/SiteBanner.test.tsx.snap new file mode 100644 index 000000000..a57fcc4ba --- /dev/null +++ b/tests/unit/__snapshots__/SiteBanner.test.tsx.snap @@ -0,0 +1,204 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Banner component renders with a banner image 1`] = ` + + .emotion-0 { + display: block; + height: 40px; + width: 100%; + position: absolute; + z-index: 1000; + color: white; + -webkit-text-decoration: none; + text-decoration: none; +} + +.emotion-1 { + background-image: url(https://snooty-koueq.mongodbstitch.com/banners/test.png); + -webkit-background-position: center; + background-position: center; + -webkit-background-size: cover; + background-size: cover; + height: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + gap: 20px; + padding: 0 11px; + font-size: 13px; + line-height: 20px; +} + +@media only screen and (max-width: 767px) { + .emotion-1 { + background-image: url(https://snooty-koueq.mongodbstitch.com/banners/test-tablet.png); + gap: 104px; + } +} + +@media only screen and (max-width: 480px) { + .emotion-1 { + background-image: url(https://snooty-koueq.mongodbstitch.com/banners/test-mobile.png); + gap: 28px; + font-size: 11px; + } +} + + +
+ + +`; + +exports[`Banner component renders with custom text 1`] = ` + + .emotion-0 { + display: block; + height: 40px; + width: 100%; + position: absolute; + z-index: 1000; + color: white; + -webkit-text-decoration: none; + text-decoration: none; +} + +.emotion-1 { + background-image: url(); + -webkit-background-position: center; + background-position: center; + -webkit-background-size: cover; + background-size: cover; + background-color: #023430; + height: 100%; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; + gap: 20px; + padding: 0 11px; + font-size: 13px; + line-height: 20px; +} + +@media only screen and (max-width: 767px) { + .emotion-1 { + background-image: url(); + gap: 104px; + } +} + +@media only screen and (max-width: 480px) { + .emotion-1 { + background-image: url(); + gap: 28px; + font-size: 11px; + } +} + +.emotion-2 { + -webkit-align-self: center; + -ms-flex-item-align: center; + align-self: center; + max-height: 40px; +} + +.emotion-3 { + display: grid; + justify-items: center; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.emotion-4 { + grid-row: 1; + grid-column: 1; + height: 40px; +} + +.emotion-5 { + grid-row: 1; + grid-column: 1; + color: #023430; + font-weight: 600; + line-height: 16px; + font-size: 12px; + background-color: #00ED64; + border: 1px solid #00684A; + border-radius: 6px; + height: 22px; + padding: 3px 8px; + z-index: 1; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-align-items: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + justify-content: center; +} + + +
+ + This is custom banner text + +
+
+ + + +
+ + DOP + +
+
+
+
+`; From 6103727fc6bb5e2535f05227b7fc4c23b8664da9 Mon Sep 17 00:00:00 2001 From: rayangler <27821750+rayangler@users.noreply.github.com> Date: Thu, 5 Dec 2024 10:08:17 -0500 Subject: [PATCH 17/23] Make css more flexible --- src/components/Banner/SiteBanner/index.tsx | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/components/Banner/SiteBanner/index.tsx b/src/components/Banner/SiteBanner/index.tsx index 4d0ada5aa..90e14c281 100644 --- a/src/components/Banner/SiteBanner/index.tsx +++ b/src/components/Banner/SiteBanner/index.tsx @@ -42,19 +42,28 @@ const bannerContentStyle = (bannerContent: Partial) => css` @media ${theme.screenSize.upToMedium} { background-image: url(${getBannerSource(bannerContent.tabletImgPath)}); - gap: 104px; + justify-content: space-between; } @media ${theme.screenSize.upToSmall} { background-image: url(${getBannerSource(bannerContent.mobileImgPath)}); gap: 28px; font-size: 11px; + justify-content: space-between; } `; const bannerTextStyle = css` align-self: center; max-height: 40px; + + @media ${theme.screenSize.upToMedium} { + max-width: 543px; + } + + @media ${theme.screenSize.upToSmall} { + max-width: 200px; + } `; const pillContainer = css` @@ -98,9 +107,9 @@ const SiteBanner = () => { useEffect(() => { const fetchBannerContent = async () => { try { - const res: SiteBannerContent = await fetchBanner(snootyEnv); + const res: SiteBannerContent | null = await fetchBanner(snootyEnv); // Guard against missing banner content - if (res && (res.imgPath || res.text)) { + if (res && res.url && (res.imgPath || res.text)) { setBannerContent(res); } } catch (err) { From 63bdd7459e001867ee3ec7ec82e4273670a10638 Mon Sep 17 00:00:00 2001 From: rayangler <27821750+rayangler@users.noreply.github.com> Date: Thu, 5 Dec 2024 10:08:58 -0500 Subject: [PATCH 18/23] Update snapshots --- .../__snapshots__/SiteBanner.test.tsx.snap | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/tests/unit/__snapshots__/SiteBanner.test.tsx.snap b/tests/unit/__snapshots__/SiteBanner.test.tsx.snap index a57fcc4ba..bf0acbbe9 100644 --- a/tests/unit/__snapshots__/SiteBanner.test.tsx.snap +++ b/tests/unit/__snapshots__/SiteBanner.test.tsx.snap @@ -37,7 +37,9 @@ exports[`Banner component renders with a banner image 1`] = ` @media only screen and (max-width: 767px) { .emotion-1 { background-image: url(https://snooty-koueq.mongodbstitch.com/banners/test-tablet.png); - gap: 104px; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; } } @@ -46,6 +48,9 @@ exports[`Banner component renders with a banner image 1`] = ` background-image: url(https://snooty-koueq.mongodbstitch.com/banners/test-mobile.png); gap: 28px; font-size: 11px; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; } } @@ -99,7 +104,9 @@ exports[`Banner component renders with custom text 1`] = ` @media only screen and (max-width: 767px) { .emotion-1 { background-image: url(); - gap: 104px; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; } } @@ -108,6 +115,9 @@ exports[`Banner component renders with custom text 1`] = ` background-image: url(); gap: 28px; font-size: 11px; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; } } @@ -118,6 +128,18 @@ exports[`Banner component renders with custom text 1`] = ` max-height: 40px; } +@media only screen and (max-width: 767px) { + .emotion-2 { + max-width: 543px; + } +} + +@media only screen and (max-width: 480px) { + .emotion-2 { + max-width: 200px; + } +} + .emotion-3 { display: grid; justify-items: center; From 0fa177a6d55ce8e17b9318bf8c24f71cd3afbae4 Mon Sep 17 00:00:00 2001 From: rayangler <27821750+rayangler@users.noreply.github.com> Date: Thu, 5 Dec 2024 10:47:24 -0500 Subject: [PATCH 19/23] Move types --- src/components/Banner/SiteBanner/index.tsx | 2 +- src/{ => components/Banner/SiteBanner}/types.ts | 0 src/components/Header/header-context.tsx | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename src/{ => components/Banner/SiteBanner}/types.ts (100%) diff --git a/src/components/Banner/SiteBanner/index.tsx b/src/components/Banner/SiteBanner/index.tsx index 90e14c281..e690d6320 100644 --- a/src/components/Banner/SiteBanner/index.tsx +++ b/src/components/Banner/SiteBanner/index.tsx @@ -8,7 +8,7 @@ import { theme } from '../../../theme/docsTheme'; import { isBrowser } from '../../../utils/is-browser'; import { normalizePath } from '../../../utils/normalize-path'; import { fetchBanner } from '../../../utils/realm'; -import { SiteBannerContent } from '../../../types'; +import { SiteBannerContent } from './types'; import BrandingShape from './BrandingShape'; const getBannerSource = (src?: string) => { diff --git a/src/types.ts b/src/components/Banner/SiteBanner/types.ts similarity index 100% rename from src/types.ts rename to src/components/Banner/SiteBanner/types.ts diff --git a/src/components/Header/header-context.tsx b/src/components/Header/header-context.tsx index f6e0c07a9..e195779d4 100644 --- a/src/components/Header/header-context.tsx +++ b/src/components/Header/header-context.tsx @@ -1,6 +1,6 @@ import React, { createContext, PropsWithChildren, useEffect, useState } from 'react'; import { theme } from '../../theme/docsTheme'; -import { SiteBannerContent } from '../../types'; +import { SiteBannerContent } from '../Banner/SiteBanner/types'; interface HeaderContextType { bannerContent: SiteBannerContent | null; From bb3e67bd74e648a296521c5793002267449794d0 Mon Sep 17 00:00:00 2001 From: rayangler <27821750+rayangler@users.noreply.github.com> Date: Thu, 5 Dec 2024 11:01:43 -0500 Subject: [PATCH 20/23] Font theme --- src/components/Banner/SiteBanner/index.tsx | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/components/Banner/SiteBanner/index.tsx b/src/components/Banner/SiteBanner/index.tsx index e690d6320..1a79a30ec 100644 --- a/src/components/Banner/SiteBanner/index.tsx +++ b/src/components/Banner/SiteBanner/index.tsx @@ -37,7 +37,7 @@ const bannerContentStyle = (bannerContent: Partial) => css` justify-content: center; gap: 20px; padding: 0 11px; - font-size: 13px; + font-size: ${theme.fontSize.small}; line-height: 20px; @media ${theme.screenSize.upToMedium} { @@ -47,9 +47,7 @@ const bannerContentStyle = (bannerContent: Partial) => css` @media ${theme.screenSize.upToSmall} { background-image: url(${getBannerSource(bannerContent.mobileImgPath)}); - gap: 28px; - font-size: 11px; - justify-content: space-between; + font-size: ${theme.fontSize.xsmall}; } `; @@ -88,7 +86,7 @@ const pillStyle = css` color: ${palette.green.dark3}; font-weight: 600; line-height: 16px; - font-size: 12px; + font-size: ${theme.fontSize.tiny}; background-color: ${palette.green.base}; border: 1px solid ${palette.green.dark2}; border-radius: 6px; From d3c4fe09afdc63d876f96f48898e45d5a312efd7 Mon Sep 17 00:00:00 2001 From: rayangler <27821750+rayangler@users.noreply.github.com> Date: Thu, 5 Dec 2024 11:06:42 -0500 Subject: [PATCH 21/23] Snapshot --- tests/unit/__snapshots__/SiteBanner.test.tsx.snap | 8 -------- 1 file changed, 8 deletions(-) diff --git a/tests/unit/__snapshots__/SiteBanner.test.tsx.snap b/tests/unit/__snapshots__/SiteBanner.test.tsx.snap index bf0acbbe9..5ed936449 100644 --- a/tests/unit/__snapshots__/SiteBanner.test.tsx.snap +++ b/tests/unit/__snapshots__/SiteBanner.test.tsx.snap @@ -46,11 +46,7 @@ exports[`Banner component renders with a banner image 1`] = ` @media only screen and (max-width: 480px) { .emotion-1 { background-image: url(https://snooty-koueq.mongodbstitch.com/banners/test-mobile.png); - gap: 28px; font-size: 11px; - -webkit-box-pack: justify; - -webkit-justify-content: space-between; - justify-content: space-between; } } @@ -113,11 +109,7 @@ exports[`Banner component renders with custom text 1`] = ` @media only screen and (max-width: 480px) { .emotion-1 { background-image: url(); - gap: 28px; font-size: 11px; - -webkit-box-pack: justify; - -webkit-justify-content: space-between; - justify-content: space-between; } } From 2fd85b5eb1925c3f2b3e9b64c08c630d5a265be0 Mon Sep 17 00:00:00 2001 From: rayangler <27821750+rayangler@users.noreply.github.com> Date: Thu, 5 Dec 2024 11:34:42 -0500 Subject: [PATCH 22/23] Remove max-width --- src/components/Banner/SiteBanner/index.tsx | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/components/Banner/SiteBanner/index.tsx b/src/components/Banner/SiteBanner/index.tsx index 1a79a30ec..d975200f4 100644 --- a/src/components/Banner/SiteBanner/index.tsx +++ b/src/components/Banner/SiteBanner/index.tsx @@ -54,14 +54,6 @@ const bannerContentStyle = (bannerContent: Partial) => css` const bannerTextStyle = css` align-self: center; max-height: 40px; - - @media ${theme.screenSize.upToMedium} { - max-width: 543px; - } - - @media ${theme.screenSize.upToSmall} { - max-width: 200px; - } `; const pillContainer = css` From ddc4f4d7a78ff3856059c35724c94a271812c742 Mon Sep 17 00:00:00 2001 From: rayangler <27821750+rayangler@users.noreply.github.com> Date: Thu, 5 Dec 2024 11:39:03 -0500 Subject: [PATCH 23/23] Snap --- tests/unit/__snapshots__/SiteBanner.test.tsx.snap | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/tests/unit/__snapshots__/SiteBanner.test.tsx.snap b/tests/unit/__snapshots__/SiteBanner.test.tsx.snap index 5ed936449..c967410d9 100644 --- a/tests/unit/__snapshots__/SiteBanner.test.tsx.snap +++ b/tests/unit/__snapshots__/SiteBanner.test.tsx.snap @@ -120,18 +120,6 @@ exports[`Banner component renders with custom text 1`] = ` max-height: 40px; } -@media only screen and (max-width: 767px) { - .emotion-2 { - max-width: 543px; - } -} - -@media only screen and (max-width: 480px) { - .emotion-2 { - max-width: 200px; - } -} - .emotion-3 { display: grid; justify-items: center;