diff --git a/netlify.toml b/netlify.toml
index 4eef05d5..cb2ebf8d 100644
--- a/netlify.toml
+++ b/netlify.toml
@@ -1,3 +1,6 @@
[functions]
external_node_modules = ["sharp"]
included_files = ["node_modules/sharp/**/*", "./github.pem"]
+
+[[plugins]]
+ package = "@netlify/plugin-nextjs"
\ No newline at end of file
diff --git a/package.json b/package.json
index 07980786..1e743415 100644
--- a/package.json
+++ b/package.json
@@ -28,7 +28,7 @@
"@types/probe-image-size": "^7.2.0",
"@types/uuid": "^9.0.0",
"@vtex/brand-ui": "^0.46.1",
- "@vtexdocs/components": "https://github.com/vtexdocs/components.git#v1.2.0",
+ "@vtexdocs/components": "https://github.com/vtexdocs/components.git#v2.0.0",
"algoliasearch": "^4.14.2",
"chalk": "^5.2.0",
"copy-text-to-clipboard": "^3.0.1",
@@ -57,6 +57,7 @@
"react-intl": "^6.3.2",
"react-markdown": "^8.0.3",
"react-toastify": "^9.1.1",
+ "reading-time": "^1.5.0",
"rehype-highlight": "^5.0.2",
"rehype-img-size": "^1.0.1",
"remark-gfm": "^3.0.1",
@@ -72,6 +73,7 @@
"devDependencies": {
"@commitlint/cli": "^16.2.1",
"@commitlint/config-conventional": "^16.2.1",
+ "@netlify/plugin-nextjs": "^4.41.3",
"@types/jsonpath": "^0.2.0",
"@types/node": "17.0.21",
"@types/react": "17.0.39",
diff --git a/public/images/start-here.png b/public/images/start-here.png
new file mode 100644
index 00000000..d3b4714a
Binary files /dev/null and b/public/images/start-here.png differ
diff --git a/public/navigation.json b/public/navigation.json
index e6a7ab7a..dcd6ebbf 100644
--- a/public/navigation.json
+++ b/public/navigation.json
@@ -22,7 +22,7 @@
},
"slug": "amazon-integration-setup",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": { "en": "Amazon ", "es": "Amazon", "pt": "Amazon" },
@@ -118,7 +118,7 @@
},
"slug": "mercado-libre-integration-set-up",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -251,7 +251,7 @@
},
"slug": "magazine-luiza-integration-set-up",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -318,7 +318,7 @@
},
"slug": "carrefour-integration-set-up",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -407,7 +407,7 @@
},
"slug": "centauro-integration",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -474,7 +474,7 @@
},
"slug": "integration-with-facebook-business-extension",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -541,7 +541,7 @@
},
"slug": "b2w-integration-set-up",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -630,7 +630,7 @@
},
"slug": "via-varejo-integration-setup",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -730,7 +730,7 @@
},
"slug": "dafiti-integration-setup",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -808,7 +808,7 @@
},
"slug": "netshoes-integration-set-up",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -897,7 +897,7 @@
},
"slug": "wish-integration",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -975,7 +975,7 @@
},
"slug": "integrating-with-google-shopping",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -1064,7 +1064,7 @@
},
"slug": "how-to-campaign-through-google-ads",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -1120,7 +1120,7 @@
},
"slug": "lengow-integration",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -1209,7 +1209,7 @@
},
"slug": "facebook-integration",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -1276,7 +1276,7 @@
},
"slug": "tiktok-integration",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -1343,7 +1343,7 @@
},
"slug": "livelo-integration",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -1418,7 +1418,7 @@
"name": { "en": "Catalog", "es": "Catálogo", "pt": "Catálogo" },
"slug": "catalog-101",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -1573,7 +1573,7 @@
},
"slug": "logistics-101",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -1636,7 +1636,7 @@
"name": { "en": "Prices", "es": "Precios", "pt": "Preços" },
"slug": "prices-101",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -1813,7 +1813,7 @@
},
"slug": "promotions",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -1887,7 +1887,7 @@
"name": { "en": "Orders", "es": "Pedidos", "pt": "Pedidos" },
"slug": "orders",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -2016,7 +2016,7 @@
"name": { "en": "Payments", "es": "Pagos", "pt": "Pagamentos" },
"slug": "payments",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -2105,7 +2105,7 @@
},
"slug": "transactional-emails",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -2172,7 +2172,7 @@
},
"slug": "cms",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -2239,7 +2239,7 @@
},
"slug": "accounts-and-permissions",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -2357,7 +2357,7 @@
"name": { "en": "Go-live", "es": "Go live", "pt": "Go-live" },
"slug": "go-live-your-store",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -2420,7 +2420,7 @@
},
"slug": "store-development",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -2495,7 +2495,7 @@
},
"slug": "instore-getting-started-and-setting-up",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -2595,7 +2595,7 @@
},
"slug": "instore-payments",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -2673,7 +2673,7 @@
},
"slug": "instore-using-the-app",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -2879,7 +2879,7 @@
},
"slug": "unified-commerce-strategies",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -2954,7 +2954,7 @@
},
"slug": "vtex-intelligent-search",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -3189,7 +3189,7 @@
},
"slug": "extensions-hub",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -3242,7 +3242,7 @@
},
"slug": "adaptador-vtex",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -3321,7 +3321,7 @@
},
"slug": "customer-credit-getting-started",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -3377,7 +3377,7 @@
},
"slug": "clustered-payment-conditions",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -3444,7 +3444,7 @@
},
"slug": "digital-wallet-e-wallet",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -3501,7 +3501,7 @@
},
"slug": "conversational-commerce-vtex",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
@@ -3568,7 +3568,7 @@
},
"slug": "suiteshare",
"origin": "",
- "type": "category",
+ "type": "track",
"children": [
{
"name": {
diff --git a/src/components/article-pagination/index.tsx b/src/components/article-pagination/index.tsx
index 2e6b7e7f..08629e13 100644
--- a/src/components/article-pagination/index.tsx
+++ b/src/components/article-pagination/index.tsx
@@ -4,11 +4,11 @@ interface Props {
pagination: {
previousDoc: {
slug: string | null
- name: { en: string; pt: string; es: string } | null
+ name: string | null
}
nextDoc: {
slug: string | null
- name: { en: string; pt: string; es: string } | null
+ name: string | null
}
}
hidePaginationPrevious: boolean
@@ -16,7 +16,6 @@ interface Props {
}
import styles from './styles'
-import { useIntl } from 'react-intl'
const ArticlePagination = ({
pagination,
@@ -24,7 +23,6 @@ const ArticlePagination = ({
hidePaginationPrevious,
}: Props) => {
const router = useRouter()
- const locale = useIntl().locale as 'en' | 'pt' | 'es'
const handleClick = (e: { preventDefault: () => void }, slug: string) => {
e.preventDefault()
@@ -43,7 +41,7 @@ const ArticlePagination = ({
>
- {pagination.previousDoc.name?.[locale]}
+ {pagination.previousDoc.name}
« Previous
@@ -58,9 +56,7 @@ const ArticlePagination = ({
}}
>
-
- {pagination.nextDoc.name?.[locale]}
-
+ {pagination.nextDoc.name}
Next »
diff --git a/src/components/documentation-card/index.tsx b/src/components/documentation-card/index.tsx
index 877c7046..9233d0f0 100644
--- a/src/components/documentation-card/index.tsx
+++ b/src/components/documentation-card/index.tsx
@@ -26,7 +26,7 @@ const DocumentationCard = ({
-
+
{title}
diff --git a/src/components/dropdown-menu/index.tsx b/src/components/dropdown-menu/index.tsx
index a5fbcd10..94e1e44d 100644
--- a/src/components/dropdown-menu/index.tsx
+++ b/src/components/dropdown-menu/index.tsx
@@ -1,7 +1,11 @@
import { Box } from '@vtex/brand-ui'
import DocumentationCard from 'components/documentation-card'
-import { documentationData, updatesData } from 'utils/constants'
+import {
+ menuDocumentationData,
+ menuSupportData,
+ updatesData,
+} from 'utils/constants'
import { useIntl } from 'react-intl'
import styles from './styles'
@@ -15,7 +19,19 @@ const DropdownMenu = () => {
sx={styles.documentationContainer}
data-cy="dropdown-menu-first-section"
>
- {documentationData(intl).map((card) => (
+ {menuDocumentationData(intl).map((card) => (
+
+ ))}
+
+
+ {menuSupportData(intl).map((card) => (
+ }
+
+ return this.props.children
+ }
+}
+
+export const SuspenseFallback = (branch) => {
+ const { asPath } = useRouter()
+ const logger = getLogger('Suspense Fallback')
+ logger.error(`Error while processing ${asPath}`)
+
+ return
+}
diff --git a/src/components/footer/index.tsx b/src/components/footer/index.tsx
index 275312f3..f4d65542 100644
--- a/src/components/footer/index.tsx
+++ b/src/components/footer/index.tsx
@@ -1,12 +1,25 @@
-import { Box, FooterLanding } from '@vtex/brand-ui'
+import { Box, Flex, Link } from '@vtex/brand-ui'
import styles from './styles'
import {
getDeveloperPortalURL,
- getHelpCenterURL,
+ getGithubURL,
getCommunityURL,
getFeedbackURL,
+ getSiteMapURL,
+ getFacebookURL,
+ getInstagramURL,
+ getYoutubeURL,
+ getLinkedinURL,
+ getTwitterURL,
} from 'utils/get-url'
import { useIntl } from 'react-intl'
+import FacebookIcon from 'components/icons/facebook-icon'
+import LocaleSwitcherFooter from 'components/locale-switcher-footer'
+import VtexLogoFooter from 'components/icons/vtexLogoFooter'
+import InstagramIcon from 'components/icons/instagram-icon'
+import LinkedinIcon from 'components/icons/linkedin-icon'
+import YoutubeIcon from 'components/icons/youtube-icon'
+import TwitterIcon from 'components/icons/twitter-icon'
const Footer = () => {
const intl = useIntl()
@@ -14,15 +27,15 @@ const Footer = () => {
const links = [
{
message: intl.formatMessage({
- id: 'landing_page_footer_developer_portal.message',
+ id: 'landing_page_footer_github.message',
}),
- to: () => getDeveloperPortalURL(),
+ to: () => getGithubURL(),
},
{
message: intl.formatMessage({
- id: 'landing_page_footer_help_center.message',
+ id: 'landing_page_footer_developer_portal.message',
}),
- to: () => getHelpCenterURL(),
+ to: () => getDeveloperPortalURL(),
},
{
message: intl.formatMessage({
@@ -36,21 +49,54 @@ const Footer = () => {
}),
to: () => getFeedbackURL(),
},
+ {
+ message: intl.formatMessage({
+ id: 'landing_page_footer_site_map.message',
+ }),
+ to: () => getSiteMapURL(),
+ },
+ ]
+
+ const socialIcons = [
+ {
+ to: () => getFacebookURL(),
+ component: ,
+ },
+ {
+ to: () => getInstagramURL(),
+ component: ,
+ },
+ {
+ to: () => getYoutubeURL(),
+ component: ,
+ },
+ {
+ to: () => getLinkedinURL(),
+ component: ,
+ },
+ {
+ to: () => getTwitterURL(),
+ component: ,
+ },
]
return (
-
-
+
+
+
+ {socialIcons.map((icon, index) => (
+
+ {icon.component}
+
+ ))}
+
+
{links.map((link, index) => (
-
+
{link.message}
-
+
))}
-
+
+
)
}
diff --git a/src/components/footer/styles.ts b/src/components/footer/styles.ts
index 4abd978b..4e91cd05 100644
--- a/src/components/footer/styles.ts
+++ b/src/components/footer/styles.ts
@@ -1,37 +1,53 @@
import { SxStyleProp } from '@vtex/brand-ui'
-const footerLeftLinks: SxStyleProp = {
- ml: ['0px', '32px'],
- mb: ['24px', '0px'],
- textAlign: 'left',
+const outerBox: SxStyleProp = {
+ bg: '#142032;',
+ display: ['flex'],
+ flexDirection: ['column', 'row'],
+ padding: '48px 32px 48px 48px',
+ alignItems: ['flex-start', 'center'],
+ justifyContent: 'space-between',
+ flexWrap: 'wrap',
+ rowGap: '32px',
+ overflow: ['initial'],
}
-const footerRightLinks: SxStyleProp = {
- ...footerLeftLinks,
- textAlign: 'right',
+const socialMediaIcons: SxStyleProp = {
+ gap: '16px',
+ alignItems: 'center',
+ paddingTop: '5px',
}
-const footerLinks: SxStyleProp = {
- '& > footer': {
- px: ['0px', '32px'],
- '& > div': {
- flexDirection: ['column', 'row'],
- alignItems: ['flex-start', 'center'],
- px: ['32px', '0px'],
- py: ['32px'],
- width: ['100vw', '100%'],
- '& > :last-child': {
- mt: ['32px', '0px'],
- display: ['grid', 'flex'],
- justifyItems: ['stretch', 'initial'],
- justifyContent: ['space-between', 'flex-end'],
- },
- },
+const textLinkItems: SxStyleProp = {
+ fontSize: '16px',
+ gap: ['48px', '30px', '45px'],
+ rowGap: ['45px'],
+ flexWrap: 'wrap',
+ justifyItems: 'left',
+ alignItems: 'center',
+}
+
+const localeSwitchLanding: SxStyleProp = {
+ marginLeft: '0',
+ justifySelf: 'left',
+ positionBottom: '5px',
+}
+
+const icon: SxStyleProp = {
+ size: 32,
+ color: '#CCCED7',
+ transition: 'all 0.3s ease-out',
+ borderRadius: '50%',
+ ':hover': {
+ color: 'white',
+ backgroundColor: 'rgba(204, 206, 215, 0.3)',
},
}
export default {
- footerLinks,
- footerLeftLinks,
- footerRightLinks,
+ localeSwitchLanding,
+ outerBox,
+ socialMediaIcons,
+ textLinkItems,
+ icon,
}
diff --git a/src/components/header/index.tsx b/src/components/header/index.tsx
index 4ee99741..43a1954d 100644
--- a/src/components/header/index.tsx
+++ b/src/components/header/index.tsx
@@ -132,6 +132,8 @@ const Header = () => {
+ {' '}
+ {/*TODO: mudar data-cy no teste */}
@@ -149,9 +151,14 @@ const Header = () => {
-
+
+
+
+
+
+
+
-
)
diff --git a/src/components/header/styles.ts b/src/components/header/styles.ts
index ece3593e..1cbc6e87 100644
--- a/src/components/header/styles.ts
+++ b/src/components/header/styles.ts
@@ -51,12 +51,21 @@ const logoSize: SxStyleProp = {
}
const rightLinks: SxStyleProp = {
- display: ['none', 'none', 'none', 'flex !important'],
- width: 'auto',
+ display: ['flex !important'],
+ width: '100%',
height: '100%',
+ textTransform: 'none',
+ alignItems: 'center',
}
const rightLinksItem: SxStyleProp = {
+ display: [
+ 'none !important',
+ 'none !important',
+ 'none !important',
+ 'flex !important',
+ ],
+ visibility: 'visible',
alignItems: 'center',
padding: '0 !important',
margin: '0 0 0 32px !important',
@@ -73,6 +82,12 @@ const rightLinksItem: SxStyleProp = {
}
const dropdownContainer: SxStyleProp = {
+ display: [
+ 'none !important',
+ 'none !important',
+ 'none !important',
+ 'flex !important',
+ ],
textTransform: 'none',
justifyContent: 'flex-end',
height: 'calc(100% + 1px)',
@@ -159,8 +174,49 @@ const arrowIconActive: SxStyleProp = {
color: '#D71D55',
}
+const localeSwitcherContainer: SxStyleProp = {
+ display: 'flex',
+ visibility: 'visible',
+ ml: [0, 0, 0, 0, 0],
+ pr: ['0px', 0],
+ zIndex: 1,
+ justifyContent: 'center',
+ ' & button': {
+ borderLeft: 'none !important',
+ padding: '0px',
+ },
+}
+
+const containerHamburguerLocale: SxStyleProp = {
+ display: 'flex',
+ padding: '8px',
+ alignItems: 'center',
+ height: '100%',
+ borderLeft: ['none', 'none', 'none', '1px solid #e7e9ed'],
+ marginLeft: ['0', '0', '0', '32px'],
+ gap: '20px',
+
+ '& > :first-of-type': {
+ '& > button:first-of-type': {
+ borderLeft: 'none',
+ padding: '0px 0px 0px 0px',
+ width: '24px',
+ height: '24px',
+ },
+ },
+}
+
+const splitter: SxStyleProp = {
+ display: ['block', 'block', 'block', 'none'],
+ width: '1px',
+ height: '36px',
+ background: '#E7E9EE',
+}
+
export default {
+ splitter,
menuContainer,
+ containerHamburguerLocale,
cardContainer,
sideMenuContainer,
logoSize,
@@ -181,4 +237,5 @@ export default {
innerCardContainer,
arrowIcon,
arrowIconActive,
+ localeSwitcherContainer,
}
diff --git a/src/components/icons/facebook-icon.tsx b/src/components/icons/facebook-icon.tsx
new file mode 100644
index 00000000..5afe1cdc
--- /dev/null
+++ b/src/components/icons/facebook-icon.tsx
@@ -0,0 +1,34 @@
+import type { IconProps } from '@vtex/brand-ui'
+import { Icon } from '@vtex/brand-ui'
+
+const FacebookIcon = (props: IconProps) => (
+
+
+
+
+
+
+
+
+
+
+
+)
+
+export default FacebookIcon
diff --git a/src/components/icons/info-icon.tsx b/src/components/icons/info-icon.tsx
new file mode 100644
index 00000000..88be04ce
--- /dev/null
+++ b/src/components/icons/info-icon.tsx
@@ -0,0 +1,35 @@
+import type { IconProps } from '@vtex/brand-ui'
+import { Icon } from '@vtex/brand-ui'
+
+const InfoIcon = (props: IconProps) => (
+
+
+
+
+
+)
+
+export default InfoIcon
diff --git a/src/components/icons/instagram-icon.tsx b/src/components/icons/instagram-icon.tsx
new file mode 100644
index 00000000..a439fb92
--- /dev/null
+++ b/src/components/icons/instagram-icon.tsx
@@ -0,0 +1,34 @@
+import type { IconProps } from '@vtex/brand-ui'
+import { Icon } from '@vtex/brand-ui'
+
+const IgIcon = (props: IconProps) => (
+
+
+
+
+
+
+
+
+
+
+
+)
+
+export default IgIcon
diff --git a/src/components/icons/linkedin-icon.tsx b/src/components/icons/linkedin-icon.tsx
new file mode 100644
index 00000000..120c9376
--- /dev/null
+++ b/src/components/icons/linkedin-icon.tsx
@@ -0,0 +1,34 @@
+import type { IconProps } from '@vtex/brand-ui'
+import { Icon } from '@vtex/brand-ui'
+
+const LinkedinIcon = (props: IconProps) => (
+
+
+
+
+
+
+
+
+
+
+
+)
+
+export default LinkedinIcon
diff --git a/src/components/icons/twitter-icon.tsx b/src/components/icons/twitter-icon.tsx
new file mode 100644
index 00000000..07847525
--- /dev/null
+++ b/src/components/icons/twitter-icon.tsx
@@ -0,0 +1,22 @@
+import type { IconProps } from '@vtex/brand-ui'
+import { Icon } from '@vtex/brand-ui'
+
+const TwitterIcon = (props: IconProps) => (
+
+
+
+
+)
+
+export default TwitterIcon
diff --git a/src/components/icons/vtexLogoFooter.tsx b/src/components/icons/vtexLogoFooter.tsx
new file mode 100644
index 00000000..5733e1ce
--- /dev/null
+++ b/src/components/icons/vtexLogoFooter.tsx
@@ -0,0 +1,34 @@
+import type { IconProps } from '@vtex/brand-ui'
+import { Icon } from '@vtex/brand-ui'
+
+const VtexLogoFooter = (props: IconProps) => (
+
+
+
+
+
+
+
+)
+
+export default VtexLogoFooter
diff --git a/src/components/icons/youtube-icon.tsx b/src/components/icons/youtube-icon.tsx
new file mode 100644
index 00000000..29b541ec
--- /dev/null
+++ b/src/components/icons/youtube-icon.tsx
@@ -0,0 +1,38 @@
+import type { IconProps } from '@vtex/brand-ui'
+import { Icon } from '@vtex/brand-ui'
+
+const YoutubeIcon = (props: IconProps) => (
+
+
+
+
+
+
+
+
+
+
+
+
+)
+
+export default YoutubeIcon
diff --git a/src/components/layout.tsx b/src/components/layout.tsx
index 9291c532..c9db67f7 100644
--- a/src/components/layout.tsx
+++ b/src/components/layout.tsx
@@ -16,7 +16,13 @@ import {
LibraryContextProvider,
Sidebar,
} from '@vtexdocs/components'
-import { documentationData, updatesData } from 'utils/constants'
+import {
+ documentationData,
+ feedbackSectionData,
+ knownIssuesData,
+ menuSupportData,
+ updatesData,
+} from 'utils/constants'
import { useIntl } from 'react-intl'
interface Props {
@@ -51,7 +57,17 @@ export default function Layout({
return (
void
+}
+
+export default function LocaleSwitcherFooter() {
+ const router = useRouter()
+ const options: LocaleOption[] = [
+ {
+ label: 'EN',
+ value: 'en',
+ },
+ {
+ label: 'PT',
+ value: 'pt',
+ },
+ {
+ label: 'ES',
+ value: 'es',
+ },
+ ]
+
+ const handleOptionClick = (option: string) => {
+ const locale = option
+ router.push(router.pathname, router.asPath, { locale })
+ disclosure.hide()
+ }
+
+ const disclosure = useDisclosureState({ visible: false })
+ const Option = ({ screen, option, onClick, active }: OptionProps) => {
+ const variant = `localeSwitcher.${screen}.option`
+
+ return (
+
+ {option.label}
+
+ )
+ }
+
+ return (
+
+
+
+
+ {router.locale?.toUpperCase()}
+
+
+
+
+
+
+ {options.map((option) => (
+
+
+
+ )
+}
diff --git a/src/components/locale-switcher-footer/styles.ts b/src/components/locale-switcher-footer/styles.ts
new file mode 100644
index 00000000..acad5b7a
--- /dev/null
+++ b/src/components/locale-switcher-footer/styles.ts
@@ -0,0 +1,51 @@
+import { SxStyleProp } from '@vtex/brand-ui'
+
+const localeLabel: SxStyleProp = {
+ color: 'white',
+ pl: 2,
+ display: 'block',
+}
+
+const optionContainer: SxStyleProp = {
+ color: 'black',
+ position: 'absolute',
+ display: 'flex',
+ flexDirection: 'column',
+ marginRight: '10px',
+ top: 'auto',
+ right: '0',
+ bottom: '100%',
+ px: 5,
+ borderTop: 'none',
+ backgroundColor: '#ffffff',
+ boxShadow: '0px 20px 25px rgba(20, 32, 50, 0.1)',
+ zIndex: 5,
+}
+
+const baseLocaleSwitcher: SxStyleProp = {
+ alignItems: 'center',
+ cursor: 'pointer',
+ bg: 'transparent',
+ border: 'none',
+ outline: 'none',
+}
+
+const localeSwitcher: SxStyleProp = {
+ position: 'relative',
+ button: {
+ ...baseLocaleSwitcher,
+ display: 'flex',
+ ':hover': {
+ color: '#142032',
+ },
+ height: '100%',
+ justifyContent: 'flex-start',
+ },
+}
+
+export default {
+ localeLabel,
+ optionContainer,
+ localeSwitcher,
+ baseLocaleSwitcher,
+}
diff --git a/src/components/locale-switcher/index.tsx b/src/components/locale-switcher/index.tsx
index 84b19a16..270fd2f5 100644
--- a/src/components/locale-switcher/index.tsx
+++ b/src/components/locale-switcher/index.tsx
@@ -48,14 +48,26 @@ export default function LocaleSwitcher() {
)
}
+ const renderGlobe = (isDiscolosureVisible: boolean) => {
+ if (isDiscolosureVisible) {
+ return
+ }
+
+ return
+ }
+
return (
-
+ {renderGlobe(disclosure.visible)}
{router.locale?.toUpperCase()}
-
+
diff --git a/src/components/locale-switcher/styles.ts b/src/components/locale-switcher/styles.ts
index c82f37ac..9b854b08 100644
--- a/src/components/locale-switcher/styles.ts
+++ b/src/components/locale-switcher/styles.ts
@@ -2,12 +2,16 @@ import { SxStyleProp } from '@vtex/brand-ui'
const localeLabel: SxStyleProp = {
pl: 2,
- display: ['block', 'none', 'none', 'none', 'block'],
+ display: ['none', 'none', 'none', 'block'],
+}
+
+const localeCaret: SxStyleProp = {
+ display: ['none', 'none', 'none', 'block'],
}
const optionContainer: SxStyleProp = {
position: 'absolute',
- display: ['none', 'none', 'none', 'flex'],
+ display: ['flex'],
flexDirection: 'column',
width: '11rem',
top: 0,
@@ -30,20 +34,37 @@ const baseLocaleSwitcher: SxStyleProp = {
const localeSwitcher: SxStyleProp = {
button: {
...baseLocaleSwitcher,
- display: ['none', 'none', 'none', 'flex'],
+ display: ['flex'],
':hover': {
color: '#142032',
},
height: '100%',
justifyContent: 'flex-start',
- borderLeft: '1px solid #e7e9ed',
- ml: '40px',
+ borderLeft: ['1px solid #e7e9ed'],
+ // ml: '40px',
},
}
+const iconGlobe: SxStyleProp = {
+ mb: ['0px', '0px', '0px', '3px'],
+}
+
+const iconGlobeVisible: SxStyleProp = {
+ mb: ['0px', '0px', '0px', '3px'],
+ color: [
+ 'var(--theme-ui-colors-primary-base, #E31C58)',
+ 'var(--theme-ui-colors-primary-base, #E31C58)',
+ 'var(--theme-ui-colors-primary-base, #E31C58)',
+ '#4A596B',
+ ],
+}
+
export default {
+ iconGlobeVisible,
localeLabel,
+ localeCaret,
optionContainer,
localeSwitcher,
baseLocaleSwitcher,
+ iconGlobe,
}
diff --git a/src/components/whats-next-card/index.tsx b/src/components/whats-next-card/index.tsx
new file mode 100644
index 00000000..911ef6ff
--- /dev/null
+++ b/src/components/whats-next-card/index.tsx
@@ -0,0 +1,38 @@
+import { Box, Flex, IconCaret, Text, Link } from '@vtex/brand-ui'
+
+import type { WhatsNextDataElement } from 'utils/typings/types'
+
+import styles from './styles'
+
+const WhatsNextCard = ({
+ title,
+ description,
+ linkTitle,
+ linkTo,
+}: WhatsNextDataElement) => {
+ return (
+
+
+
+ {title}
+
+
+ {description}
+
+
+
+ {linkTitle}
+
+
+
+
+
+ )
+}
+
+export default WhatsNextCard
diff --git a/src/components/whats-next-card/styles.ts b/src/components/whats-next-card/styles.ts
new file mode 100644
index 00000000..db904d48
--- /dev/null
+++ b/src/components/whats-next-card/styles.ts
@@ -0,0 +1,55 @@
+import type { SxStyleProp } from '@vtex/brand-ui'
+
+const container: SxStyleProp = {
+ mt: '16px',
+ padding: '16px',
+ borderRadius: '4px',
+ border: '1px solid #E7E9EE',
+ width: ['100%', '49%'],
+ transition: 'all 0.3s ease-out',
+ ':hover': {
+ cursor: 'pointer',
+ },
+ ':active, :hover': {
+ borderColor: 'muted.2',
+ boxShadow: '0px 0px 16px rgba(0, 0, 0, 0.1)',
+ transition: 'all 0.3 ease-out',
+
+ '.title, .description': {
+ transition: 'all 0.3s ease-out',
+ color: '#000711',
+ },
+
+ '.link, .caret': {
+ transition: 'all 0.3s ease-out',
+ color: 'muted.0',
+ },
+ },
+}
+
+const title: SxStyleProp = {
+ mb: '8px',
+ fontSize: '16px',
+ fontWeight: '400',
+ lineHeight: ['22px', '18px'],
+ color: 'muted.0',
+}
+
+const description: SxStyleProp = {
+ fontSize: '12px',
+ fontWeight: '400',
+ lineHeight: '16px',
+ color: 'muted.0',
+}
+
+const linkContainer: SxStyleProp = {
+ mt: '8px',
+ alignItems: 'center',
+}
+
+const link: SxStyleProp = {
+ ...description,
+ color: 'muted.1',
+}
+
+export default { container, title, description, linkContainer, link }
diff --git a/src/messages/en.json b/src/messages/en.json
index ff73bf11..0b2b0dd7 100644
--- a/src/messages/en.json
+++ b/src/messages/en.json
@@ -51,12 +51,13 @@
"landing_page_education_community.description": "Find solutions and share ideas in the VTEX community.",
"landing_page_education_community.textLink": "Join our community",
"landing_page_support.title": "Support Resources",
- "landing_page_footer_developer_portal.message": "Developer Portal",
- "landing_page_footer_help_center.message": "Help Center",
+ "landing_page_footer_developer_portal.message": "Developers Portal",
+ "landing_page_footer_github.message": "Github",
+ "landing_page_footer_site_map.message": "Site Map",
"landing_page_footer_community.message": "Community",
"landing_page_footer_feedback.message": "Feedback",
"landing_page_header_feedback.message": "Feedback",
- "landing_page_header_docs.message": "Documentation",
+ "landing_page_header_docs.message": "Menu",
"search_input.placeholder": "Search in Help Center",
"search_input.empty": "No results found. Try different search terms.",
"feedback_section.question": "Was this helpful?",
@@ -75,8 +76,112 @@
"announcements_page.subtitle": "Stay up-to-date with the latest news and updates from VTEX.",
"api_reference_page.title": "API Reference",
"api_reference_page.subtitle": "Use our API reference documentation to build custom solutions that fit your business.",
- "api_guides_page.title": "API Guides",
- "api_guides_page.subtitle": "Get to know our Commerce APIs to extend the VTEX platform and leverage your business.",
+ "start_here_page.title": "Start here",
+ "start_here_page.subtitle": "Learn, step by step, everything you need to know to start using VTEX.",
+ "start_here_page.link": "Learn more",
+ "start_here_page_marketplace.title": "Marketplace",
+ "start_here_page_marketplace.content.0.title": "Amazon Integration",
+ "start_here_page_marketplace.content.0.description": "Sell your products in one of the biggest marketplaces in the world through the native VTEX integration.",
+ "start_here_page_marketplace.content.0.link": "tracks/amazon",
+ "start_here_page_marketplace.content.1.title": "Magazine Luiza Integration",
+ "start_here_page_marketplace.content.1.description": "Sell your products in one of the biggest marketplaces in Brasil through the native VTEX integration.",
+ "start_here_page_marketplace.content.1.link": "tracks/magazine-luiza-marketplace",
+ "start_here_page_marketplace.content.2.title": "Integration with Facebook Business Extension",
+ "start_here_page_marketplace.content.2.description": "Advertise your products with Facebook Business Extension through VTEX.",
+ "start_here_page_marketplace.content.2.link": "tracks/facebook-business-extension",
+ "start_here_page_marketplace.content.3.title": "Integrating with Google Shopping",
+ "start_here_page_marketplace.content.3.description": "Advertise your products on Google's price comparison and tracking service through VTEX native integration.",
+ "start_here_page_marketplace.content.3.link": "tracks/google-shopping-marketplace",
+ "start_here_page_marketplace.content.4.title": "How to campaign through Google Shopping Ads?",
+ "start_here_page_marketplace.content.4.description": "Advertise on Google Shopping Ads using Google's newest feature, Smart Campaigns. Start advertising in minutes using your product catalog.",
+ "start_here_page_marketplace.content.4.link": "tracks/google-shopping-ads-install",
+ "start_here_page_marketplace.content.5.title": "Lengow Integration",
+ "start_here_page_marketplace.content.5.description": "Centralize, optimize and track the distribution of your product catalog using the leading e-commerce feed management platform in Europe.",
+ "start_here_page_marketplace.content.5.link": "tracks/what-is-lengow",
+ "start_here_page_marketplace.content.6.title": "Facebook Integration",
+ "start_here_page_marketplace.content.6.description": "Sell your products on one of the largest social networks in the world through the native integration of VTEX.",
+ "start_here_page_marketplace.content.6.link": "tracks/facebook",
+ "start_here_page_marketplace.content.7.title": "TikTok Integration",
+ "start_here_page_marketplace.content.7.description": "Advertise your products on TikTok through VTEX.",
+ "start_here_page_marketplace.content.7.link": "tracks/tiktok-for-business",
+ "start_here_page_marketplace.content.8.title": "Livelo Integration",
+ "start_here_page_marketplace.content.8.description": "Sell your products on the marketplace platform with Brazil's biggest rewards program.",
+ "start_here_page_marketplace.content.8.link": "tracks/livelo-integration-overview",
+ "start_here_page_modules.title": "VTEX Modules: Getting Started",
+ "start_here_page_modules.content.0.title": "Catalog",
+ "start_here_page_modules.content.0.description": "Learn the Catalog module fundamentals.",
+ "start_here_page_modules.content.0.link": "tracks/catalog-concept-definition",
+ "start_here_page_modules.content.1.title": "Logistics",
+ "start_here_page_modules.content.1.description": "Learn the Inventory and Shipping module fundamentals.",
+ "start_here_page_modules.content.1.link": "tracks/getting-started-with-logistics",
+ "start_here_page_modules.content.2.title": "Prices",
+ "start_here_page_modules.content.2.description": "Learn the Prices module fundamentals.",
+ "start_here_page_modules.content.2.link": "tracks/prices-module-overview",
+ "start_here_page_modules.content.3.title": "Promotions",
+ "start_here_page_modules.content.3.description": "Learn the basics of the Promotions module.",
+ "start_here_page_modules.content.3.link": "tracks/how-promotions-work",
+ "start_here_page_modules.content.4.title": "Orders",
+ "start_here_page_modules.content.4.description": "Learn the basics of the Orders module.",
+ "start_here_page_modules.content.4.link": "tracks/o-que-e-um-pedido-na-vtex",
+ "start_here_page_modules.content.5.title": "Payments",
+ "start_here_page_modules.content.5.description": "Learn the fundamentals of the Payments modules.",
+ "start_here_page_modules.content.5.link": "tracks/how-the-payments-module-works",
+ "start_here_page_modules.content.6.title": "Transactional Emails",
+ "start_here_page_modules.content.6.description": "Learn the basics of the transactional emails module.",
+ "start_here_page_modules.content.6.link": "tracks/how-message-center-works",
+ "start_here_page_modules.content.7.title": "Storefront",
+ "start_here_page_modules.content.7.description": "Learn the basics of our Content Management System.",
+ "start_here_page_modules.content.7.link": "tracks/what-is-the-cms",
+ "start_here_page_modules.content.8.title": "Accounts & Permissions",
+ "start_here_page_modules.content.8.description": "Learn the basics of the Accounts & Permissions module.",
+ "start_here_page_modules.content.8.link": "tracks/understanding-your-account",
+ "start_here_page_modules.content.9.title": "Go-live",
+ "start_here_page_modules.content.9.description": "Make your store available for customers to access it and make purchases.",
+ "start_here_page_modules.content.9.link": "tracks/go-live-process",
+ "start_here_page_modules.content.10.title": "Store development",
+ "start_here_page_modules.content.10.description": "Learn the fundamentals of VTEX store development.",
+ "start_here_page_modules.content.10.link": "tracks/frontend",
+ "start_here_page_omnichannel.title": "Omnichannel",
+ "start_here_page_omnichannel.content.0.title": "VTEX Sales App - Getting started and setting up",
+ "start_here_page_omnichannel.content.0.description": "Concepts, prerequisites and instructions for you to set up VTEX Sales App..",
+ "start_here_page_omnichannel.content.0.link": "tracks/what-is-instore",
+ "start_here_page_omnichannel.content.1.title": "VTEX Sales App - Payments",
+ "start_here_page_omnichannel.content.1.description": "The step-by-step to set up the payment methods by each certified acquirer.",
+ "start_here_page_omnichannel.content.1.link": "tracks/setting-up-payment-methods-for-instore",
+ "start_here_page_omnichannel.content.2.title": "VTEX Sales App - Using the app",
+ "start_here_page_omnichannel.content.2.description": "The VTEX Sales App app features and how to use them..",
+ "start_here_page_omnichannel.content.2.link": "tracks/installation",
+ "start_here_page_omnichannel.content.3.title": "Unified Commerce Strategies",
+ "start_here_page_omnichannel.content.3.description": "Step-by-step guides to implement some of the main Unified Commerce strategies at VTEX.",
+ "start_here_page_omnichannel.content.3.link": "tracks/unified-commerce-101",
+ "start_here_page_vtex_io.title": "VTEX IO",
+ "start_here_page_vtex_io.content.0.title": "VTEX Intelligent Search",
+ "start_here_page_vtex_io.content.0.description": "Learn the basics of the VTEX Intelligent Search application",
+ "start_here_page_vtex_io.content.0.link": "tracks/overview-intelligent-search",
+ "start_here_page_vtex_io.content.1.title": "Extensions Hub",
+ "start_here_page_vtex_io.content.1.description": "Acquire and manage extensions to extend the functionality of your store. Find partners to develop custom solutions.",
+ "start_here_page_vtex_io.content.1.link": "extensions-hub-1",
+ "start_here_page_erp.title": "ERP",
+ "start_here_page_erp.content.0.title": "VTEX Adapter - CIASHOP",
+ "start_here_page_erp.content.0.description": "Learn the basics of Adapter to migrate the integration between your ERP and CIASHOP to VTEX.",
+ "start_here_page_erp.content.0.link": "tracks/como-funciona-o-adaptador-vtex",
+ "start_here_page_payment.title": "Payment solutions",
+ "start_here_page_payment.content.0.title": "Customer Credit - Getting Started",
+ "start_here_page_payment.content.0.description": "Enable a new form of payment for your store by learning step-by-step how to install and configure Customer Credit.",
+ "start_here_page_payment.content.0.link": "tracks/installing-customer-credit",
+ "start_here_page_payment.content.1.title": "Clustered Payment Conditions",
+ "start_here_page_payment.content.1.description": "Get to know and enable the new payment customization for Customer Credit.",
+ "start_here_page_payment.content.1.link": "tracks/what-are-clustered-payment-conditions",
+ "start_here_page_payment.content.2.title": "Digital wallet (ewallet)",
+ "start_here_page_payment.content.2.description": "A digital wallet (also known as an ewallet) is a secure environment where bank and credit card information can be stored.",
+ "start_here_page_payment.content.2.link": "tracks/google-pay",
+ "start_here_page_conversational.title": "Conversational Commerce",
+ "start_here_page_conversational.content.0.title": "Conversational Commerce VTEX",
+ "start_here_page_conversational.content.0.description": "Learn how to diversify sales channels, with faster and more personalized purchases through automation.",
+ "start_here_page_conversational.content.0.link": "tracks/what-is-conversational-commerce-vtex",
+ "start_here_page_conversational.content.1.title": "VTEX Assisted Sales (SuiteShare)",
+ "start_here_page_conversational.content.1.description": "Learn solutions to attract more customers, organize your team's services, capture customer data, close sales, and measure results.",
+ "start_here_page_conversational.content.1.link": "tracks/what-is-suiteshare",
"storefront_development_page.title": "Storefront Development",
"storefront_development_page.subtitle": "Express your brand identity creating unique storefronts.",
"vtex_io_apps_page.title": "VTEX IO Apps",
@@ -112,5 +217,17 @@
"support_plans.title": "Support plans",
"support_plans.description": "See details of support plans available for each commercial plan.",
"announcement_bar.headline": "📢 We want to know more about you and how you use our docs. ",
- "announcement_bar.button": "Fill in our survey! It takes less than 5 minutes."
+ "announcement_bar.button": "Fill in our survey! It takes less than 5 minutes.",
+ "documentation_reading_time.text": "{minutes} min read",
+ "sidebar_known_issues.description": "Access content and find solutions to all your questions about the platform.",
+ "sidebar_support_rules.description": "See details of the support plans available for each business plan.",
+ "updates_announcements_notes.description": "Stay informed about the main news from VTEX.",
+ "updates_info_notes.description": "Find answers to your key questions quickly and conveniently.",
+ "menu_health_check.description": "Check the detailed real-time status.",
+ "menu_status.description": "Follow the plataform's historical record.",
+ "sidebar_support_rules.title": "Support Rules",
+ "sidebar_known_issues.title": "Known Issues",
+ "menu_status.title": "Status",
+ "menu_health_check.title": "Health Check",
+ "updates_announcements_notes.title": "Announcements"
}
diff --git a/src/messages/es.json b/src/messages/es.json
index 4fcf648c..7623bbec 100644
--- a/src/messages/es.json
+++ b/src/messages/es.json
@@ -9,7 +9,7 @@
"documentation_start_here.description": "Aprenda, passo a passo, tudo que precisa saber para começar a usar os principais módulos da VTEX.",
"documentation_tutorials.title": "Tutoriais & Soluções",
"documentation_tutorials.description": "Acesse a documentação de todos os módulos da plataforma e tire suas dúvidas.",
- "documentation_developers_portal.title": "Developers Portal",
+ "documentation_developers_portal.title": "Portal del Desarrollador",
"documentation_developers_portal.description": "Visite nosso portal de desenvolvedores e encontre informações técnicas sobre integrações, APIs e recursos de desenvolvimento.",
"landing_page_faq.title": "Preguntas frecuentes",
"landing_page_faq.description": "Encuentre respuestas a preguntas frecuentes de manera rápida y práctica",
@@ -51,12 +51,13 @@
"landing_page_education_community.description": "Encuentra solucciones y comparte ideas en la comunidad de VTEX.",
"landing_page_education_community.textLink": "Únete a nuestra comunidad",
"landing_page_support.title": "Recursos de soporte",
- "landing_page_footer_developer_portal.message": "Developer Portal",
- "landing_page_footer_help_center.message": "Help Center",
+ "landing_page_footer_developer_portal.message": "Developers Portal",
+ "landing_page_footer_github.message": "Github",
+ "landing_page_footer_site_map.message": "Mapa del Sitio",
"landing_page_footer_community.message": "Community",
"landing_page_footer_feedback.message": "Feedback",
"landing_page_header_feedback.message": "Feedback",
- "landing_page_header_docs.message": "Documentation",
+ "landing_page_header_docs.message": "Menu",
"search_input.placeholder": "Búsqueda en el Help Center",
"search_input.empty": "No results found. Try different search terms.",
"feedback_section.question": "¿Te ha resultado útil esta información?",
@@ -75,8 +76,118 @@
"announcements_page.subtitle": "Manténgase al día con las últimas noticias y actualizaciones de VTEX.",
"api_reference_page.title": "API Reference",
"api_reference_page.subtitle": "Use our API reference documentation to build custom solutions that fit your business.",
- "api_guides_page.title": "API Guides",
- "api_guides_page.subtitle": "Get to know our Commerce APIs to extend the VTEX platform and leverage your business.",
+ "start_here_page.title": "Comience aquí",
+ "start_here_page.subtitle": "Aprende, paso a paso, todo lo que necesitas saber para empezar a usar VTEX.",
+ "start_here_page.link": "Saber más",
+ "start_here_page_marketplace.title": "Marketplace",
+ "start_here_page_marketplace.content_0.title": "Integración de Amazon",
+ "start_here_page_marketplace.content_0.description": "Venta sus productos en uno de los mayores marketplaces del mundo a través de la integración nativa de VTEX.",
+ "start_here_page_marketplace.content_0.link": "tracks/amazon",
+ "start_here_page_marketplace.content_1.title": "Integración con Mercado Libre",
+ "start_here_page_marketplace.content_1.description": "Venda sus productos en uno de los marketplaces más grandes de América Latina a través de la integración nativa de VTEX.",
+ "start_here_page_marketplace.content_1.link": "tracks/mercado-libre-marketplace",
+ "start_here_page_marketplace.content_2.title": "Integración de Magazine Luiza",
+ "start_here_page_marketplace.content_2.description": "Venta sus productos en uno de los marketplaces más grandes de Brasil a través de la integración nativa de VTEX.",
+ "start_here_page_marketplace.content_2.link": "tracks/magazine-luiza-marketplace",
+ "start_here_page_marketplace.content_3.title": "Integración con Facebook Business Extension",
+ "start_here_page_marketplace.content_3.description": "Anuncie seus produtos pela plataforma Facebook Business Extension através da VTEX.",
+ "start_here_page_marketplace.content_3.link": "tracks/facebook-business-extension",
+ "start_here_page_marketplace.content_4.title": "Integración de Dafiti",
+ "start_here_page_marketplace.content_4.description": "Venta de sus productos en uno de los mayores marketplaces de moda a través de la integración nativa de VTEX.",
+ "start_here_page_marketplace.content_4.link": "tracks/dafiti-marketplace",
+ "start_here_page_marketplace.content_5.title": "Integración con Wish",
+ "start_here_page_marketplace.content_5.description": "Venda sus productos en Wish a través de nuestra integración nativa.",
+ "start_here_page_marketplace.content_5.link": "tracks/what-to-configure-in-wish-prior-to-the-integration",
+ "start_here_page_marketplace.content_6.title": "Integración con Google Shopping",
+ "start_here_page_marketplace.content_6.description": "Anuncie sus productos en un servicio de comparación y seguimiento de precios de Google a través de la integración nativa de VTEX.",
+ "start_here_page_marketplace.content_6.link": "tracks/google-shopping-marketplace",
+ "start_here_page_marketplace.content_7.title": "¿Cómo hacer campañas a través de Google Shopping Ads?",
+ "start_here_page_marketplace.content_7.description": "Anuncie en Google Shopping Ads usando la nueva característica de Google, las Campañas Inteligentes. Comience a anunciar en minutos usando su catálogo de productos.",
+ "start_here_page_marketplace.content_7.link": "tracks/google-shopping-ads-install",
+ "start_here_page_marketplace.content_8.title": "Integración de Facebook",
+ "start_here_page_marketplace.content_8.description": "Venda sus productos en una de las redes sociales más grandes del mundo a través de la integración nativa de VTEX.",
+ "start_here_page_marketplace.content_8.link": "tracks/facebook",
+ "start_here_page_marketplace.content_9.title": "Integración de TikTok",
+ "start_here_page_marketplace.content_9.description": "Anuncia tus productos en TikTok a través de VTEX.",
+ "start_here_page_marketplace.content_9.link": "tracks/tiktok-for-business",
+ "start_here_page_marketplace.content_10.title": "Integración de Livelo",
+ "start_here_page_marketplace.content_10.description": "Venda sus productos en lo marketplace con el mayor programa de recompensas de Brasil.",
+ "start_here_page_marketplace.content_10.link": "tracks/livelo-integration-overview",
+ "start_here_page_modules.title": "Módulos VTEX: Primeros pasos",
+ "start_here_page_modules.content.0.title": "Catálogo",
+ "start_here_page_modules.content.0.description": "Aprenda los fundamentos del módulo Catálogo.",
+ "start_here_page_modules.content.0.link": "tracks/catalog-concept-definition",
+ "start_here_page_modules.content.1.title": "Logística",
+ "start_here_page_modules.content.1.description": "Aprenda los fundamentos del módulo de Inventario y envío.",
+ "start_here_page_modules.content.1.link": "tracks/getting-started-with-logistics",
+ "start_here_page_modules.content.2.title": "Precios",
+ "start_here_page_modules.content.2.description": "Aprenda los fundamentos del módulo de Precios.",
+ "start_here_page_modules.content.2.link": "tracks/prices-module-overview",
+ "start_here_page_modules.content.3.title": "Promociones",
+ "start_here_page_modules.content.3.description": "Aprenda los fundamentos del módulo de promociones.",
+ "start_here_page_modules.content.3.link": "tracks/how-promotions-work",
+ "start_here_page_modules.content.4.title": "Pedidos",
+ "start_here_page_modules.content.4.description": "Aprenda los conceptos y features básicos del módulo de pedido.",
+ "start_here_page_modules.content.4.link": "tracks/o-que-e-um-pedido-na-vtex",
+ "start_here_page_modules.content.5.title": "Pagos",
+ "start_here_page_modules.content.5.description": "Aprenda los fundamentos del módulo de Pagos.",
+ "start_here_page_modules.content.5.link": "tracks/how-the-payments-module-works",
+ "start_here_page_modules.content.6.title": "E-mails Transaccionales",
+ "start_here_page_modules.content.6.description": "Aprenda los fundamentos del módulo de emails transaccionales.",
+ "start_here_page_modules.content.6.link": "tracks/how-message-center-works",
+ "start_here_page_modules.content.7.title": "Storefront",
+ "start_here_page_modules.content.7.description": "Aprenda los fundamentos de nuestro Content Management System.",
+ "start_here_page_modules.content.7.link": "tracks/what-is-the-cms",
+ "start_here_page_modules.content.8.title": "Cuentas y Permisos",
+ "start_here_page_modules.content.8.description": "Aprenda los fundamentos del módulo de Cuentas y Permisos.",
+ "start_here_page_modules.content.8.link": "tracks/understanding-your-account",
+ "start_here_page_modules.content.9.title": "Go-live",
+ "start_here_page_modules.content.9.description": "Haz que tu tienda esté disponible para que los clientes accedan a ella y realicen compras.",
+ "start_here_page_modules.content.9.link": "tracks/go-live-process",
+ "start_here_page_modules.content.10.title": "Desarrollo de la tienda",
+ "start_here_page_modules.content.10.description": "Conozca los fundamentos del desarrollo de tiendas VTEX.",
+ "start_here_page_modules.content.10.link": "tracks/frontend",
+ "start_here_page_omnichannel.title": "Omnichannel",
+ "start_here_page_omnichannel.content_0.title": "VTEX Sales App - Primeros pasos y configuración",
+ "start_here_page_omnichannel.content_0.description": "Conceptos, requisitos previos y instrucciones para configurar el VTEX Sales App.",
+ "start_here_page_omnichannel.content_0.link": "tracks/what-is-instore",
+ "start_here_page_omnichannel.content_1.title": "VTEX Sales App - Pagos",
+ "start_here_page_omnichannel.content_1.description": "El paso a paso para configurar los métodos de pago por cada adquirente homologado.",
+ "start_here_page_omnichannel.content_1.link": "tracks/setting-up-payment-methods-for-instore",
+ "start_here_page_omnichannel.content_2.title": "VTEX Sales App - Usando el app",
+ "start_here_page_omnichannel.content_2.description": "Las características de la aplicación del VTEX Sales App y cómo usarlas.",
+ "start_here_page_omnichannel.content_2.link": "tracks/installation",
+ "start_here_page_omnichannel.content_3.title": "Estrategias de Comercio Unificado",
+ "start_here_page_omnichannel.content_3.description": "Guías paso a paso para implementar algunas de las principales estrategias de Comercio Unificado en VTEX.",
+ "start_here_page_omnichannel.content_3.link": "tracks/unified-commerce-101",
+ "start_here_page_vtex_io.title": "VTEX IO",
+ "start_here_page_vtex_io.content.0.title": "VTEX Intelligent Search",
+ "start_here_page_vtex_io.content.0.description": "Aprenda los fundamentos de la aplicación VTEX Intelligent Search.",
+ "start_here_page_vtex_io.content.0.link": "tracks/overview-intelligent-search",
+ "start_here_page_vtex_io.content.1.title": "Hub de extensiones",
+ "start_here_page_vtex_io.content.1.description": "Compre y administre extensiones para ampliar la funcionalidad de su tienda. Encuentre socios para desarrollar soluciones personalizadas.",
+ "start_here_page_vtex_io.content.1.link": "extensions-hub-1",
+ "start_here_page_erp.title": "ERP",
+ "start_here_page_erp.content.0.title": "Adaptador VTEX - CIASHOP",
+ "start_here_page_erp.content.0.description": "Aprenda los conceptos básicos de Adaptador para migrar la integración entre su ERP y CIASHOP a VTEX.",
+ "start_here_page_erp.content.0.link": "tracks/como-funciona-o-adaptador-vtex",
+ "start_here_page_payment.title": "Soluciones de pago",
+ "start_here_page_payment.content.0.title": "Customer Credit - Cómo Empezar",
+ "start_here_page_payment.content.0.description": "Habilite una nueva forma de pago para su tienda al aprender el paso a paso de cómo instalar y configurar el Customer Credit.",
+ "start_here_page_payment.content.0.link": "tracks/installing-customer-credit",
+ "start_here_page_payment.content.1.title": "Condiciones de Pago Clusterizadas",
+ "start_here_page_payment.content.1.description": "Conozca y habilite la nueva forma de personalización de pago para el Customer Credit.",
+ "start_here_page_payment.content.1.link": "tracks/what-are-clustered-payment-conditions",
+ "start_here_page_payment.content.2.title": "Cartera digital (ewallet)",
+ "start_here_page_payment.content.2.description": "Una cartera digital (también llamada ewallet) es un entorno seguro en el que se pueden almacenar datos bancarios y de tarjetas de crédito.",
+ "start_here_page_payment.content.2.link": "tracks/google-pay",
+ "start_here_page_conversational.title": "Conversational Commerce",
+ "start_here_page_conversational.content.0.title": "Conversational Commerce VTEX",
+ "start_here_page_conversational.content.0.description": "Aprenda a diversificar los canales de venta, con compras más rápidas y personalizadas gracias a la automatización.",
+ "start_here_page_conversational.content.0.link": "tracks/what-is-conversational-commerce-vtex",
+ "start_here_page_conversational.content.1.title": "VTEX Assisted Sales (SuiteShare)",
+ "start_here_page_conversational.content.1.description": "Aprenda soluciones para atraer más clientes, organizar los servicios de su equipo, captar datos de clientes, cerrar ventas y medir resultados.",
+ "start_here_page_conversational.content.1.link": "tracks/what-is-suiteshare",
"storefront_development_page.title": "Storefront Development",
"storefront_development_page.subtitle": "Express your brand identity creating unique storefronts.",
"vtex_io_apps_page.title": "VTEX IO Apps",
@@ -112,5 +223,17 @@
"support_plans.title": "Planes de soporte",
"support_plans.description": "Consulte los detalles de los planes de soporte disponibles para cada plan comercial.",
"announcement_bar.headline": "📢 Queremos saber más sobre ti y cómo utilizas nuestra documentación. ",
- "announcement_bar.button": "¡Complete nuestra encuesta! Toma menos de 5 minutos."
+ "announcement_bar.button": "¡Complete nuestra encuesta! Toma menos de 5 minutos.",
+ "documentation_reading_time.text": "{minutes} min de lectura",
+ "sidebar_known_issues.description": "Accede a contenido y encuentra soluciones a todas tus preguntas sobre la plataforma.",
+ "sidebar_support_rules.description": "Vea los detalles de los planes de soporte disponibles para cada plan comercial.",
+ "updates_announcements_notes.description": "Mantente al tanto de las principales noticias de VTEX.",
+ "updates_info_notes.description": "Encuentra respuestas a tus preguntas clave de manera rápida y práctica.",
+ "menu_health_check.description": "Verifique el estado detallado en tiempo real.",
+ "menu_status.description": "Seguir el registro histórico de la plataforma.",
+ "sidebar_support_rules.title": "Directrices de Soporte",
+ "sidebar_known_issues.title": "Problemas Conocidos",
+ "menu_status.title": "Status",
+ "menu_health_check.title": "Verificación de Estado",
+ "updates_announcements_notes.title": "Comunicados"
}
diff --git a/src/messages/pt.json b/src/messages/pt.json
index 75997e09..c9f30cea 100644
--- a/src/messages/pt.json
+++ b/src/messages/pt.json
@@ -9,7 +9,7 @@
"documentation_start_here.description": "Aprenda, passo a passo, tudo que precisa saber para começar a usar os principais módulos da VTEX.",
"documentation_tutorials.title": "Tutoriais & Soluções",
"documentation_tutorials.description": "Acesse a documentação de todos os módulos da plataforma e tire suas dúvidas.",
- "documentation_developers_portal.title": "Developers Portal",
+ "documentation_developers_portal.title": "Portal do Desenvolvedor",
"documentation_developers_portal.description": "Visite nosso portal de desenvolvedores e encontre informações técnicas sobre integrações, APIs e recursos de desenvolvimento.",
"landing_page_faq.title": "Perguntas frequentes",
"landing_page_faq.description": "Encontre respostas para dúvidas mais frequentes de forma rápida e prática.",
@@ -50,13 +50,14 @@
"landing_page_education_community.title": "Pergunte a comunidade",
"landing_page_education_community.description": "Encontre soluções e compartilhe ideias na comunidade VTEX.",
"landing_page_education_community.textLink": "Junte-se à nossa comunidade",
- "landing_page_support.title": "Recursos de suporte",
- "landing_page_footer_developer_portal.message": "Developer Portal",
- "landing_page_footer_help_center.message": "Help Center",
+ "landing_page_support.title": "Recursos adicionais",
+ "landing_page_footer_developer_portal.message": "Developers Portal",
+ "landing_page_footer_site_map.message": "Mapa do site",
+ "landing_page_footer_github.message": "Github",
"landing_page_footer_community.message": "Comunidade",
"landing_page_footer_feedback.message": "Feedback",
"landing_page_header_feedback.message": "Feedback",
- "landing_page_header_docs.message": "Documentação",
+ "landing_page_header_docs.message": "Menu",
"search_input.placeholder": "Pesquise no Help Center",
"search_input.empty": "No results found. Try different search terms.",
"feedback_section.question": "Isso foi útil?",
@@ -75,8 +76,133 @@
"announcements_page.subtitle": "Mantenha-se atualizado com as últimas notícias e atualizações da VTEX.",
"api_reference_page.title": "API Reference",
"api_reference_page.subtitle": "Use our API reference documentation to build custom solutions that fit your business.",
- "api_guides_page.title": "API Guides",
- "api_guides_page.subtitle": "Get to know our Commerce APIs to extend the VTEX platform and leverage your business.",
+ "start_here_page.title": "Comece aqui",
+ "start_here_page.subtitle": "Aprenda, passo a passo, tudo que precisa saber para começar a usar a VTEX.",
+ "start_here_page.link": "Veja mais",
+ "start_here_page_marketplace.title": "Marketplace",
+ "start_here_page_marketplace.content.0.title": "Integração com a Amazon",
+ "start_here_page_marketplace.content.0.description": "Venda seus produtos em um dos maiores varejistas do mundo através da integração nativa da VTEX.",
+ "start_here_page_marketplace.content.0.link": "tracks/amazon",
+ "start_here_page_marketplace.content.1.title": "Integração com o Mercado Livre",
+ "start_here_page_marketplace.content.1.description": "Venda seus produtos em um dos maiores marketplaces da América Latina através da integração nativa da VTEX.",
+ "start_here_page_marketplace.content.1.link": "tracks/mercado-libre-marketplace",
+ "start_here_page_marketplace.content.2.title": "Integração com o Magazine Luiza",
+ "start_here_page_marketplace.content.2.description": "Venda seus produtos em um dos maiores marketplaces do Brasil através da integração nativa da VTEX.",
+ "start_here_page_marketplace.content.2.link": "tracks/magazine-luiza-marketplace",
+ "start_here_page_marketplace.content.3.title": "Integração com o Carrefour",
+ "start_here_page_marketplace.content.3.description": "Venda em um dos mercados mais tradicionais do mundo através da integração da VTEX.",
+ "start_here_page_marketplace.content.3.link": "tracks/carrefour-marketplace",
+ "start_here_page_marketplace.content.4.title": "Integração com a Centauro",
+ "start_here_page_marketplace.content.4.description": "Venda seus produtos na maior rede de lojas esportivas da América Latina com a integração nativa da VTEX!",
+ "start_here_page_marketplace.content.4.link": "tracks/centauro-marketplace",
+ "start_here_page_marketplace.content.5.title": "Integração com o Facebook Business Extension",
+ "start_here_page_marketplace.content.5.description": "Anuncie seus produtos pela plataforma Facebook Business Extension através da VTEX.",
+ "start_here_page_marketplace.content.5.link": "tracks/facebook-business-extension",
+ "start_here_page_marketplace.content.6.title": "Integração com SkyHub/B2W",
+ "start_here_page_marketplace.content.6.description": "Venda seus produtos em um dos maiores marketplaces do Brasil, em sites como Submarino, Lojas Americanas e Shoptime, através da integração nativa da VTEX.",
+ "start_here_page_marketplace.content.6.link": "tracks/integration-overview-b2w",
+ "start_here_page_marketplace.content.7.title": "Integração com a Via Marketplace",
+ "start_here_page_marketplace.content.7.description": "Venda seus produtos em lojas como Casas Bahia e Ponto Frio, marketplaces referência de móveis e eletrodomésticos do Brasil através da integração nativa da VTEX.",
+ "start_here_page_marketplace.content.7.link": "tracks/via-varejo-marketplace",
+ "start_here_page_marketplace.content.8.title": "Integração com a Dafiti",
+ "start_here_page_marketplace.content.8.description": "Venda seus produtos em um dos maiores marketplaces de moda através da integração nativa da VTEX.",
+ "start_here_page_marketplace.content.8.link": "tracks/dafiti-marketplace",
+ "start_here_page_marketplace.content.9.title": "Integração com a Netshoes",
+ "start_here_page_marketplace.content.9.description": "Venda seus produtos em um dos maiores marketplaces de artigos esportivos através da integração nativa da VTEX.",
+ "start_here_page_marketplace.content.9.link": "tracks/netshoes-marketplace",
+ "start_here_page_marketplace.content.10.title": "Integração com a Wish",
+ "start_here_page_marketplace.content.10.description": "Venda seus produtos na Wish usando nossa integração nativa.",
+ "start_here_page_marketplace.content.10.link": "tracks/what-to-configure-in-wish-prior-to-the-integration",
+ "start_here_page_marketplace.content.11.title": "Integração com o Google Shopping",
+ "start_here_page_marketplace.content.11.description": "Anuncie seus produtos na plataforma de listagem e rastreamento de produtos do Google através da integração nativa da VTEX.",
+ "start_here_page_marketplace.content.11.link": "tracks/google-shopping-marketplace",
+ "start_here_page_marketplace.content.12.title": "Como fazer campanhas através do Google Shopping Ads?",
+ "start_here_page_marketplace.content.12.description": "Anuncie no Google Shopping Ads usando o mais novo recurso do Google, as Campanhas Inteligentes. Comece a anunciar em minutos usando seu catálogo de produtos.",
+ "start_here_page_marketplace.content.12.link": "tracks/google-shopping-ads-install",
+ "start_here_page_marketplace.content.13.title": "Integração com o Facebook",
+ "start_here_page_marketplace.content.13.description": "Venda seus produtos em uma das maiores redes sociais do mundo através da integração nativa da VTEX.",
+ "start_here_page_marketplace.content.13.link": "tracks/facebook",
+ "start_here_page_marketplace.content.14.title": "Integração com o TikTok",
+ "start_here_page_marketplace.content.14.description": "Anuncie seus produtos no TikTok através da VTEX.",
+ "start_here_page_marketplace.content.14.link": "tracks/tiktok-for-business",
+ "start_here_page_marketplace.content.15.title": "Integração Livelo",
+ "start_here_page_marketplace.content.15.description": "Venda seus produtos na plataforma de marketplace com o maior programa de recompensas do Brasil.",
+ "start_here_page_marketplace.content.15.link": "tracks/livelo-integration-overview",
+ "start_here_page_modules.title": "Módulos VTEX: Primeiros passos",
+ "start_here_page_modules.content.0.title": "Catálogo",
+ "start_here_page_modules.content.0.description": "Aprenda os fundamentos do módulo de Catálogo.",
+ "start_here_page_modules.content.0.link": "tracks/catalog-concept-definition",
+ "start_here_page_modules.content.1.title": "Logística",
+ "start_here_page_modules.content.1.description": "Aprenda os fundamentos do módulo de Estoque e Entrega.",
+ "start_here_page_modules.content.1.link": "tracks/getting-started-with-logistics",
+ "start_here_page_modules.content.2.title": "Preços",
+ "start_here_page_modules.content.2.description": "Aprenda os fundamentos do módulo de Preços.",
+ "start_here_page_modules.content.2.link": "tracks/prices-module-overview",
+ "start_here_page_modules.content.3.title": "Promoções",
+ "start_here_page_modules.content.3.description": "Aprenda os fundamentos do módulo de promoções.",
+ "start_here_page_modules.content.3.link": "tracks/how-promotions-work",
+ "start_here_page_modules.content.4.title": "Pedidos",
+ "start_here_page_modules.content.4.description": "Aprenda os fundamentos do módulo de Pedidos.",
+ "start_here_page_modules.content.4.link": "tracks/o-que-e-um-pedido-na-vtex",
+ "start_here_page_modules.content.5.title": "Pagamentos",
+ "start_here_page_modules.content.5.description": "Aprenda os fundamentos do módulo de Pagamentos.",
+ "start_here_page_modules.content.5.link": "tracks/how-the-payments-module-works",
+ "start_here_page_modules.content.6.title": "E-mails Transacionais",
+ "start_here_page_modules.content.6.description": "Aprenda os fundamentos do módulo de e-mails transacionais.",
+ "start_here_page_modules.content.6.link": "tracks/how-message-center-works",
+ "start_here_page_modules.content.7.title": "Storefront",
+ "start_here_page_modules.content.7.description": "Aprenda os fundamentos do nosso Content Management System.",
+ "start_here_page_modules.content.7.link": "tracks/what-is-the-cms",
+ "start_here_page_modules.content.8.title": "Contas e Permissões",
+ "start_here_page_modules.content.8.description": "Aprenda os fundamentos do módulo de Contas e Permissões.",
+ "start_here_page_modules.content.8.link": "tracks/understanding-your-account",
+ "start_here_page_modules.content.9.title": "Go-live",
+ "start_here_page_modules.content.9.description": "Disponibilize sua loja para que clientes a acessem e façam compras.",
+ "start_here_page_modules.content.9.link": "tracks/go-live-process",
+ "start_here_page_modules.content.10.title": "Desenvolvimento de Loja",
+ "start_here_page_modules.content.10.description": "Aprenda os fundamentos de desenvolvimento de loja na VTEX.",
+ "start_here_page_modules.content.10.link": "tracks/frontend",
+ "start_here_page_omnichannel.title": "Omnichannel",
+ "start_here_page_omnichannel.content.0.title": "VTEX Sales App - Primeiros passos e configurações",
+ "start_here_page_omnichannel.content.0.description": "Conceitos, pré-requisitos e instruções para configurar o VTEX Sales App.",
+ "start_here_page_omnichannel.content.0.link": "tracks/what-is-instore",
+ "start_here_page_omnichannel.content.1.title": "VTEX Sales App - Pagamentos",
+ "start_here_page_omnichannel.content.1.description": "O passo a passo para configurar os métodos de pagamento por adquirente homologado.",
+ "start_here_page_omnichannel.content.1.link": "tracks/setting-up-payment-methods-for-instore",
+ "start_here_page_omnichannel.content.2.title": "VTEX Sales App - Usando o app",
+ "start_here_page_omnichannel.content.2.description": "As funcionalidades do aplicativo do VTEX Sales App e como usá-las.",
+ "start_here_page_omnichannel.content.2.link": "tracks/installation",
+ "start_here_page_omnichannel.content.3.title": "Estratégias de Comércio Unificado",
+ "start_here_page_omnichannel.content.3.description": "Guias com o passo a passo para implementar algumas das principais estratégias de Comércio Unificado na VTEX.",
+ "start_here_page_omnichannel.content.3.link": "tracks/unified-commerce-101",
+ "start_here_page_vtex_io.title": "VTEX IO",
+ "start_here_page_vtex_io.content.0.title": "VTEX Intelligent Search",
+ "start_here_page_vtex_io.content.0.description": "Aprenda os fundamentos do aplicativo VTEX Intelligent Search",
+ "start_here_page_vtex_io.content.0.link": "tracks/overview-intelligent-search",
+ "start_here_page_vtex_io.content.1.title": "Hub de Extensões",
+ "start_here_page_vtex_io.content.1.description": "Adquira e gerencie extensões para estender a funcionalidade da sua loja. Encontre parceiros para desenvolver soluções personalizadas.",
+ "start_here_page_vtex_io.content.1.link": "extensions-hub-1",
+ "start_here_page_erp.title": "ERP",
+ "start_here_page_erp.content.0.title": "Adaptador VTEX - CIASHOP",
+ "start_here_page_erp.content.0.description": "Aprenda os fundamentos do Adaptador para migrar a integração entre seu ERP e a CIASHOP para a VTEX.",
+ "start_here_page_erp.content.0.link": "tracks/como-funciona-o-adaptador-vtex",
+ "start_here_page_payment.title": "Soluções de pagamento",
+ "start_here_page_payment.content.0.title": "Customer Credit - Como Começar",
+ "start_here_page_payment.content.0.description": "Habilite uma nova forma de pagamento para a sua loja ao aprender o passo a passo de como instalar e configurar o Customer Credit.",
+ "start_here_page_payment.content.0.link": "tracks/installing-customer-credit",
+ "start_here_page_payment.content.1.title": "Condições de Pagamento Clusterizadas",
+ "start_here_page_payment.content.1.description": "Conheça e habilite a nova customização de pagamento para o Customer Credit.",
+ "start_here_page_payment.content.1.link": "tracks/what-are-clustered-payment-conditions",
+ "start_here_page_payment.content.2.title": "Carteira digital (ewallet)",
+ "start_here_page_payment.content.2.description": "Uma carteira digital (também chamada de ewallet) é um ambiente seguro onde podem ser armazenados dados bancários e de cartão de crédito.",
+ "start_here_page_payment.content.2.link": "tracks/google-pay",
+ "start_here_page_conversational.title": "Conversational Commerce",
+ "start_here_page_conversational.content.0.title": "Conversational Commerce VTEX",
+ "start_here_page_conversational.content.0.description": "Aprenda a diversificar canais de venda, com compras mais rápidas e mais personalizadas por meio da automação.",
+ "start_here_page_conversational.content.0.link": "tracks/what-is-conversational-commerce-vtex",
+ "start_here_page_conversational.content.1.title": "VTEX Assisted Sales (SuiteShare)",
+ "start_here_page_conversational.content.1.description": "Aprenda soluções para atrair mais clientes, organizar os atendimentos do seu time, capturar dados dos clientes, fechar vendas e mensurar resultados.",
+ "start_here_page_conversational.content.1.link": "tracks/what-is-suiteshare",
"storefront_development_page.title": "Storefront Development",
"storefront_development_page.subtitle": "Express your brand identity creating unique storefronts.",
"vtex_io_apps_page.title": "VTEX IO Apps",
@@ -112,5 +238,17 @@
"support_plans.title": "Planos de suporte",
"support_plans.description": "Veja detalhes dos planos de suporte disponíveis para cada plano comercial.",
"announcement_bar.headline": "📢 Queremos saber mais sobre você e como você utiliza a nossa documentação. ",
- "announcement_bar.button": "Participe de nossa pesquisa! Leva menos de 5 minutos."
+ "announcement_bar.button": "Participe de nossa pesquisa! Leva menos de 5 minutos.",
+ "documentation_reading_time.text": "{minutes} min de leitura",
+ "sidebar_known_issues.description": "Acesse conteúdo e encontre soluções para todas as suas dúvidas sobre a plataforma.",
+ "sidebar_support_rules.description": "Veja detalhes dos planos de suporte disponíveis para cada plano comercial.",
+ "updates_announcements_notes.description": "Fique por dentro das principais notícias da VTEX.",
+ "updates_info_notes.description": "Encontre respostas para suas principais dúvidas de forma rápida e prática.",
+ "menu_health_check.description": "Verifique o status detalhado em tempo real.",
+ "menu_status.description": "Acompanhe o registro do histórico de plataforma.",
+ "sidebar_support_rules.title": "Diretivas de suporte",
+ "sidebar_known_issues.title": "Problemas Conhecidos",
+ "menu_status.title": "Status",
+ "menu_health_check.title": "Verificação de Integridade",
+ "updates_announcements_notes.title": "Comunicados"
}
diff --git a/src/pages/500.tsx b/src/pages/500.tsx
index a31b0cb6..6044e884 100644
--- a/src/pages/500.tsx
+++ b/src/pages/500.tsx
@@ -13,7 +13,7 @@ interface Props {
branch: string
}
-const fiveHundredPage: Page = ({ branch }) => {
+const FiveHundredPage: Page = ({ branch }) => {
const { setBranchPreview } = useContext(PreviewContext)
setBranchPreview(branch)
@@ -73,4 +73,4 @@ export const getStaticProps: GetStaticProps = async ({
}
}
-export default fiveHundredPage
+export default FiveHundredPage
diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx
index eb24a606..9f2878a4 100644
--- a/src/pages/_app.tsx
+++ b/src/pages/_app.tsx
@@ -14,6 +14,8 @@ import Layout from 'components/layout'
type Props = AppProps & {
Component: Page
}
+import { ErrorBoundary, SuspenseFallback } from 'components/error-boundary'
+import { Suspense } from 'react'
import TrackerProvider from 'utils/contexts/trackerContext'
import PreviewContextProvider from 'utils/contexts/preview'
@@ -40,7 +42,13 @@ function MyApp({ Component, pageProps }: Props) {
sectionSelected={pageProps.sectionSelected}
parentsArray={pageProps.parentsArray}
>
-
+
+ }
+ >
+
+
+
diff --git a/src/pages/api/docs.ts b/src/pages/api/docs.ts
index 61c1e584..b03f2c17 100644
--- a/src/pages/api/docs.ts
+++ b/src/pages/api/docs.ts
@@ -1,6 +1,6 @@
-import getDocsPaths from 'utils/getDocsPaths'
+import { getAllDocsPaths } from 'utils/getDocsPaths'
//eslint-disable-next-line @typescript-eslint/no-explicit-any
export default async function handler(req: any, res: any) {
req = req
- res.status(200).json(await getDocsPaths())
+ res.status(200).json(await getAllDocsPaths())
}
diff --git a/src/pages/api/revalidate.ts b/src/pages/api/revalidate.ts
new file mode 100644
index 00000000..be6d9481
--- /dev/null
+++ b/src/pages/api/revalidate.ts
@@ -0,0 +1,15 @@
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+export default async function handler(req: any, res: any) {
+ if (req.query.secret !== process.env.REVALIDATE_SECRET) {
+ return res.status(401).json({ message: 'Invalid token' })
+ }
+
+ try {
+ if (req.query.url) {
+ await res.revalidate(req.query.url)
+ return res.json({ revalidated: true })
+ }
+ } catch (err) {
+ return res.status(500).send('Error revalidating')
+ }
+}
diff --git a/src/pages/docs/tracks/[slug].tsx b/src/pages/docs/tracks/[slug].tsx
index 66087cbf..475cc138 100644
--- a/src/pages/docs/tracks/[slug].tsx
+++ b/src/pages/docs/tracks/[slug].tsx
@@ -1,5 +1,5 @@
import Head from 'next/head'
-import { useEffect, useState, useContext } from 'react'
+import { useEffect, useState, useContext, useRef } from 'react'
import { GetStaticPaths, GetStaticProps, NextPage } from 'next'
import { PHASE_PRODUCTION_BUILD } from 'next/constants'
import jp from 'jsonpath'
@@ -26,17 +26,15 @@ import Breadcrumb from 'components/breadcrumb'
import getHeadings from 'utils/getHeadings'
import getNavigation from 'utils/getNavigation'
-import getGithubFile from 'utils/getGithubFile'
-import getDocsPaths from 'utils/getDocsPaths'
+// import getGithubFile from 'utils/getGithubFile'
+import { getDocsPaths as getTracksPaths } from 'utils/getDocsPaths'
import replaceMagicBlocks from 'utils/replaceMagicBlocks'
import escapeCurlyBraces from 'utils/escapeCurlyBraces'
import replaceHTMLBlocks from 'utils/replaceHTMLBlocks'
import { PreviewContext } from 'utils/contexts/preview'
import styles from 'styles/documentation-page'
-import getFileContributors, {
- ContributorsType,
-} from 'utils/getFileContributors'
+import { ContributorsType } from 'utils/getFileContributors'
import { getLogger } from 'utils/logging/log-util'
import {
@@ -46,8 +44,11 @@ import {
localeType,
} from 'utils/navigation-utils'
import { MarkdownRenderer } from '@vtexdocs/components'
+// import { ParsedUrlQuery } from 'querystring'
+import { useIntl } from 'react-intl'
+import { remarkReadingTime } from 'utils/remark_plugins/remarkReadingTime'
-const docsPathsGLOBAL = await getDocsPaths()
+const docsPathsGLOBAL = await getTracksPaths('tracks')
interface Props {
sectionSelected: string
@@ -67,11 +68,11 @@ interface Props {
pagination: {
previousDoc: {
slug: string | null
- name: { en: string; pt: string; es: string } | null | null
+ name: string | null
}
nextDoc: {
slug: string | null
- name: { en: string; pt: string; es: string } | null | null
+ name: string | null
}
}
isListed: boolean
@@ -94,12 +95,16 @@ const TrackPage: NextPage = ({
}) => {
const [headings, setHeadings] = useState- ([])
const { setBranchPreview } = useContext(PreviewContext)
+ const intl = useIntl()
setBranchPreview(branch)
const { setActiveSidebarElement } = useContext(LibraryContext)
+ const articleRef = useRef(null)
+
useEffect(() => {
setActiveSidebarElement(slug)
setHeadings(headingList)
}, [serialized.frontmatter])
+
return (
<>
@@ -119,9 +124,20 @@ const TrackPage: NextPage = ({
-
+
-
+
+
+
+ {intl.formatMessage(
+ {
+ id: 'documentation_reading_time.text',
+ defaultMessage: '',
+ },
+ { minutes: serialized.frontmatter?.readingTime }
+ )}
+
+
{serialized.frontmatter?.title}
@@ -167,17 +183,23 @@ const TrackPage: NextPage = ({
}
export const getStaticPaths: GetStaticPaths = async () => {
- //const slugs = Object.keys(await getDocsPaths())
- //const paths = slugs.map((slug) => ({
- // params: { slug },
- //}))
- const paths = [
- {
- params: { slug: 'about-the-community-support-plan' },
- },
- ]
+ // const slugs: { [slug: string]: { locale: string; path: string }[] } =
+ // await getTracksPaths('tracks')
+
+ // const paths: (
+ // | string
+ // | {
+ // params: ParsedUrlQuery
+ // locale?: string | undefined
+ // }
+ // )[] = []
+ // Object.entries(slugs).forEach(([slug, locales]) => {
+ // locales.forEach(({ locale }) => {
+ // paths.push({ params: { slug }, locale })
+ // })
+ // })
return {
- paths,
+ paths: [],
fallback: 'blocking',
}
}
@@ -200,30 +222,71 @@ export const getStaticProps: GetStaticProps = async ({
const docsPaths =
process.env.NEXT_PHASE === PHASE_PRODUCTION_BUILD
? docsPathsGLOBAL
- : await getDocsPaths(branch, currentLocale)
+ : await getTracksPaths('tracks', branch)
const logger = getLogger('Start here')
- const path = docsPaths[slug]
+ const path = docsPaths[slug].find((e) => e.locale === locale)?.path
+
if (!path) {
return {
notFound: true,
}
}
- let documentationContent = await getGithubFile(
- 'vtexdocs',
- 'help-center-content',
- branch,
- path
- )
+ // let documentationContent = await getGithubFile(
+ // 'vtexdocs',
+ // 'help-center-content',
+ // branch,
+ // path
+ // )
+ let documentationContent =
+ (await fetch(
+ `https://raw.githubusercontent.com/vtexdocs/help-center-content/${branch}/${path}`
+ )
+ .then((res) => res.text())
+ .catch((err) => console.log(err))) || ''
- const contributors = await getFileContributors(
- 'vtexdocs',
- 'help-center-content',
- branch,
- path
- )
+ const contributors =
+ (await fetch(
+ `https://github.com/vtexdocs/help-center-content/file-contributors/${branch}/${path}`,
+ {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ },
+ }
+ )
+ .then((res) => res.json())
+ .then(({ users }) => {
+ const result: ContributorsType[] = []
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ for (let i = 0; i < users.length; i++) {
+ const user = users[i]
+ if (user.id === '41898282') continue
+ result.push({
+ name: user.login,
+ login: user.login,
+ avatar: user.primaryAvatarUrl,
+ userPage: `https://github.com${user.profileLink}`,
+ })
+ }
+
+ return result
+ })
+ .catch((err) => console.log(err))) || []
+
+ // const contributors = []
+ // const contributors =
+ // (await getFileContributors(
+ // 'vtexdocs',
+ // 'help-center-content',
+ // branch,
+ // path
+ // ).catch((err) => {
+ // console.log(err)
+ // })) || []
let format: 'md' | 'mdx' = 'mdx'
try {
@@ -247,6 +310,7 @@ export const getStaticProps: GetStaticProps = async ({
remarkImages,
[getHeadings, { headingList }],
remarkBlockquote,
+ remarkReadingTime,
],
rehypePlugins: [
[rehypeHighlight, { languages: { hljsCurl }, ignoreMissing: true }],
@@ -269,15 +333,25 @@ export const getStaticProps: GetStaticProps = async ({
: []
await Promise.all(
seeAlsoUrls.map(async (seeAlsoUrl: string) => {
- const seeAlsoPath = docsPaths[seeAlsoUrl.split('/')[3]]
+ const seeAlsoPath = docsPaths[seeAlsoUrl.split('/')[3]].find(
+ (e) => e.locale === locale
+ )?.path
if (seeAlsoPath) {
try {
- const documentationContent = await getGithubFile(
- 'vtexdocs',
- 'help-center-content',
- 'main',
- seeAlsoPath
- )
+ const documentationContent =
+ (await fetch(
+ `https://raw.githubusercontent.com/vtexdocs/help-center-content/main/${seeAlsoPath}`
+ )
+ .then((res) => res.text())
+ .catch((err) => console.log(err))) || ''
+
+ // const documentationContent = await getGithubFile(
+ // 'vtexdocs',
+ // 'help-center-content',W
+ // 'main',
+ // seeAlsoPath
+ // )
+
const serialized = await serialize(documentationContent, {
parseFrontmatter: true,
})
@@ -309,6 +383,10 @@ export const getStaticProps: GetStaticProps = async ({
sidebarfallback,
`$..[?(@.type=='markdown')]..name`
)
+ const docsListType = jp.query(
+ sidebarfallback,
+ `$..[?(@.type=='markdown')]..type`
+ )
const indexOfSlug = docsListSlug.indexOf(slug)
const pagination = {
previousDoc: {
@@ -316,7 +394,7 @@ export const getStaticProps: GetStaticProps = async ({
? docsListSlug[indexOfSlug - 1]
: null,
name: docsListName[indexOfSlug - 1]
- ? docsListName[indexOfSlug - 1]
+ ? docsListName[indexOfSlug - 1][locale || 'en']
: null,
},
nextDoc: {
@@ -324,7 +402,7 @@ export const getStaticProps: GetStaticProps = async ({
? docsListSlug[indexOfSlug + 1]
: null,
name: docsListName[indexOfSlug + 1]
- ? docsListName[indexOfSlug + 1]
+ ? docsListName[indexOfSlug + 1][locale || 'en']
: null,
},
}
@@ -349,6 +427,7 @@ export const getStaticProps: GetStaticProps = async ({
currentLocale,
parentsArrayName
)
+ parentsArrayName.push(docsListName[indexOfSlug][currentLocale])
getParents(
keyPath,
'type',
@@ -356,6 +435,13 @@ export const getStaticProps: GetStaticProps = async ({
currentLocale,
parentsArrayType
)
+ parentsArrayType.push(docsListType[indexOfSlug])
+
+ if (serialized.frontmatter) {
+ serialized.frontmatter.title = `${
+ docsListName[indexOfSlug][currentLocale].split(' ')[0]
+ } ${serialized.frontmatter.title}`
+ }
}
const breadcrumbList: { slug: string; name: string; type: string }[] = []
@@ -367,8 +453,6 @@ export const getStaticProps: GetStaticProps = async ({
})
})
- console.log(breadcrumbList)
-
return {
props: {
sectionSelected,
@@ -385,6 +469,7 @@ export const getStaticProps: GetStaticProps = async ({
breadcrumbList,
branch,
},
+ revalidate: 600,
}
} catch (error) {
logger.error(`Error while processing ${path}\n${error}`)
diff --git a/src/pages/docs/tracks/index.tsx b/src/pages/docs/tracks/index.tsx
index ebdc0bf0..8dace40b 100644
--- a/src/pages/docs/tracks/index.tsx
+++ b/src/pages/docs/tracks/index.tsx
@@ -1,19 +1,15 @@
-import Image from 'next/image'
import { Fragment, useContext } from 'react'
-import { Box, Text, Grid, Flex, Link } from '@vtex/brand-ui'
-import Tooltip from 'components/tooltip'
+import { Box, Flex, Text } from '@vtex/brand-ui'
import { GetStaticProps, NextPage } from 'next'
import getNavigation from 'utils/getNavigation'
import { DocumentationTitle, UpdatesTitle } from 'utils/typings/unionTypes'
-import imgStyles from '../../../styles/core-services-styles'
import PageHeader from 'components/page-header'
-import image from '../../../../public/images/api-guides.png'
-import imageData from '../../../../public/images/data-orchestration.png'
-import imagePlatform from '../../../../public/images/platform.png'
+import startHereImage from '../../../../public/images/start-here.png'
import styles from 'styles/documentation-landing-page'
import Head from 'next/head'
import { PreviewContext } from 'utils/contexts/preview'
import { useIntl } from 'react-intl'
+import WhatsNextCard from 'components/whats-next-card'
interface Props {
sidebarfallback: any //eslint-disable-line
@@ -21,145 +17,41 @@ interface Props {
branch: string
}
-const Image2 = () => (
-
-
- Merchant channels
-
-
- CDN
-
- Web Store
- PWA
- Live Shopping
- Conversational
- Marketplace Out
- Personal Shopper
-
-
-
-
- Mobile App
- IOT
-
-
-
-
+const ContentSection = ({ id, length }: { id: string; length: number }) => {
+ const intl = useIntl()
-
-
- VTEX Core services
-
-
-
-
- Catalog
-
-
-
-
- Checkout
-
-
-
-
- Promotions
-
-
-
-
- Pricing
-
-
-
-
- Payment Hub
-
-
-
-
- Intelligent Search
-
-
-
-
- Account management
-
-
- DaaS - Master Data
- OMS
- Subscriptions
- Ratings and reviews
- CMS
- Search
- Messages
- Logistics/ Inventory
- Customers
-
-
- VTEX IO Apps (PaaS)
-
- Custom Admin
- Custom store component
-
- Custom backend service (API)
-
- VTEX App
-
-
-
-
-
- 3rd party optional
-
- Search
- Personalization
- Ratings and Reviews
- Loyalty
- Analytics and Reporting
- DXP
- Customer Payments
- ADA
-
-
-
-
- Integration Layer
-
-
- Merchant back office
-
- ERP
- OMS
- WMS
- PIM
- CRM
- Data Lake
-
-
-
-)
+ return (
+ <>
+
+ {intl.formatMessage({ id: `${id}.title` })}
+
+
+ {Array(length)
+ .fill('')
+ .map((_, index) => {
+ if (!intl.messages[`${id}.content.${index}.title`]) return <>>
+ return (
+
+ )
+ })}
+
+ >
+ )
+}
const TracksPage: NextPage = ({ branch }) => {
const { setBranchPreview } = useContext(PreviewContext)
@@ -170,13 +62,13 @@ const TracksPage: NextPage = ({ branch }) => {
{intl.formatMessage({
- id: 'api_guides_page.title',
+ id: 'start_here_page.title',
})}
@@ -184,62 +76,24 @@ const TracksPage: NextPage = ({ branch }) => {
- Get started
-
- Our core commerce capabilities, provided by over 70 shared
- microservices, are available for flexible customization through our
- REST APIs. This enables our clients to integrate third-party
- solutions into a single platform for all experiences.{' '}
-
-
-
- Using our REST APIs with our serverless development platform (VTEX
- IO) and scalable data service (Master Data), you can expand the VTEX
- platform to address your unique business needs.
-
-
- Data orchestration
-
- Our platform orchestrates data through multiple channels and sources
- to remove barriers and enable more possibilities. E-commerce,
- Brick-and-mortar, Marketplace, B2B... You name it, we enable it.
- That is why we are a unified commerce platform for unified
- businesses.
-
-
-
- Core services
-
- Get to know our core microsservices and leverage your business with
- our Headless architecture. Our API Guides and Reference cover VTEX
- Core Services, as illustrated in the image below.
-
-
+
+
+
+
+
+
+
>
diff --git a/src/pages/docs/tutorial/[slug].tsx b/src/pages/docs/tutorial/[slug].tsx
index 72fb53a8..c8e7803c 100644
--- a/src/pages/docs/tutorial/[slug].tsx
+++ b/src/pages/docs/tutorial/[slug].tsx
@@ -27,17 +27,15 @@ import Breadcrumb from 'components/breadcrumb'
import getHeadings from 'utils/getHeadings'
import getNavigation from 'utils/getNavigation'
-import getGithubFile from 'utils/getGithubFile'
-import getDocsPaths from 'utils/getDocsPaths'
+// import getGithubFile from 'utils/getGithubFile'
+import { getDocsPaths as getTutorialsPaths } from 'utils/getDocsPaths'
import replaceMagicBlocks from 'utils/replaceMagicBlocks'
import escapeCurlyBraces from 'utils/escapeCurlyBraces'
import replaceHTMLBlocks from 'utils/replaceHTMLBlocks'
import { PreviewContext } from 'utils/contexts/preview'
import styles from 'styles/documentation-page'
-import getFileContributors, {
- ContributorsType,
-} from 'utils/getFileContributors'
+import { ContributorsType } from 'utils/getFileContributors'
import { getLogger } from 'utils/logging/log-util'
import {
@@ -46,8 +44,9 @@ import {
getParents,
localeType,
} from 'utils/navigation-utils'
+// import { ParsedUrlQuery } from 'querystring'
-const docsPathsGLOBAL = await getDocsPaths()
+const docsPathsGLOBAL = await getTutorialsPaths('tutorials')
interface Props {
sectionSelected: string
@@ -67,11 +66,11 @@ interface Props {
pagination: {
previousDoc: {
slug: string | null
- name: { en: string; pt: string; es: string } | null | null
+ name: string | null
}
nextDoc: {
slug: string | null
- name: { en: string; pt: string; es: string } | null | null
+ name: string | null
}
}
isListed: boolean
@@ -167,17 +166,23 @@ const TutorialPage: NextPage = ({
}
export const getStaticPaths: GetStaticPaths = async () => {
- //const slugs = Object.keys(await getDocsPaths())
- //const paths = slugs.map((slug) => ({
- // params: { slug },
- //}))
- const paths = [
- {
- params: { slug: 'about-the-community-support-plan' },
- },
- ]
+ // const slugs: { [slug: string]: { locale: string; path: string }[] } =
+ // await getTutorialsPaths('tutorials')
+
+ // const paths: (
+ // | string
+ // | {
+ // params: ParsedUrlQuery
+ // locale?: string | undefined
+ // }
+ // )[] = []
+ // Object.entries(slugs).forEach(([slug, locales]) => {
+ // locales.forEach(({ locale }) => {
+ // paths.push({ params: { slug }, locale })
+ // })
+ // })
return {
- paths,
+ paths: [],
fallback: 'blocking',
}
}
@@ -200,30 +205,70 @@ export const getStaticProps: GetStaticProps = async ({
const docsPaths =
process.env.NEXT_PHASE === PHASE_PRODUCTION_BUILD
? docsPathsGLOBAL
- : await getDocsPaths(branch, currentLocale)
+ : await getTutorialsPaths('tutorials', branch)
const logger = getLogger('Tutorials & Solutions')
+ const path = docsPaths[slug].find((e) => e.locale === locale)?.path
- const path = docsPaths[slug]
if (!path) {
return {
notFound: true,
}
}
- let documentationContent = await getGithubFile(
- 'vtexdocs',
- 'help-center-content',
- branch,
- path
- )
+ // let documentationContent = await getGithubFile(
+ // 'vtexdocs',
+ // 'help-center-content',
+ // branch,
+ // pathcontribut
+ // )
- const contributors = await getFileContributors(
- 'vtexdocs',
- 'help-center-content',
- branch,
- path
- )
+ let documentationContent =
+ (await fetch(
+ `https://raw.githubusercontent.com/vtexdocs/help-center-content/${branch}/${path}`
+ )
+ .then((res) => res.text())
+ .catch((err) => console.log(err))) || ''
+
+ // const contributors =
+ // (await getFileContributors(
+ // 'vtexdocs',
+ // 'help-center-content',
+ // branch,
+ // path
+ // ).catch((err) => {
+ // console.log(err)
+ // })) || []
+
+ const contributors =
+ (await fetch(
+ `https://github.com/vtexdocs/help-center-content/file-contributors/${branch}/${path}`,
+ {
+ method: 'GET',
+ headers: {
+ 'Content-Type': 'application/json',
+ Accept: 'application/json',
+ },
+ }
+ )
+ .then((res) => res.json())
+ .then(({ users }) => {
+ const result: ContributorsType[] = []
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ for (let i = 0; i < users.length; i++) {
+ const user = users[i]
+ if (user.id === '41898282') continue
+ result.push({
+ name: user.login,
+ login: user.login,
+ avatar: user.primaryAvatarUrl,
+ userPage: `https://github.com${user.profileLink}`,
+ })
+ }
+
+ return result
+ })
+ .catch((err) => console.log(err))) || []
let format: 'md' | 'mdx' = 'mdx'
try {
@@ -269,15 +314,23 @@ export const getStaticProps: GetStaticProps = async ({
: []
await Promise.all(
seeAlsoUrls.map(async (seeAlsoUrl: string) => {
- const seeAlsoPath = docsPaths[seeAlsoUrl.split('/')[3]]
+ const seeAlsoPath = docsPaths[seeAlsoUrl.split('/')[3]].find(
+ (e) => e.locale === locale
+ )?.path
if (seeAlsoPath) {
try {
- const documentationContent = await getGithubFile(
- 'vtexdocs',
- 'help-center-content',
- 'main',
- seeAlsoPath
- )
+ const documentationContent =
+ (await fetch(
+ `https://raw.githubusercontent.com/vtexdocs/help-center-content/main/${seeAlsoPath}`
+ )
+ .then((res) => res.text())
+ .catch((err) => console.log(err))) || ''
+ // const documentationContent = await getGithubFile(
+ // 'vtexdocs',
+ // 'help-center-content',
+ // 'main',
+ // seeAlsoPath
+ // )
const serialized = await serialize(documentationContent, {
parseFrontmatter: true,
})
@@ -316,7 +369,7 @@ export const getStaticProps: GetStaticProps = async ({
? docsListSlug[indexOfSlug - 1]
: null,
name: docsListName[indexOfSlug - 1]
- ? docsListName[indexOfSlug - 1]
+ ? docsListName[indexOfSlug - 1][locale || 'en']
: null,
},
nextDoc: {
@@ -324,7 +377,7 @@ export const getStaticProps: GetStaticProps = async ({
? docsListSlug[indexOfSlug + 1]
: null,
name: docsListName[indexOfSlug + 1]
- ? docsListName[indexOfSlug + 1]
+ ? docsListName[indexOfSlug + 1][locale || 'en']
: null,
},
}
@@ -383,6 +436,7 @@ export const getStaticProps: GetStaticProps = async ({
breadcrumbList,
branch,
},
+ revalidate: 600,
}
} catch (error) {
logger.error(`Error while processing ${path}\n${error}`)
diff --git a/src/pages/docs/tutorial/index.tsx b/src/pages/docs/tutorial/index.tsx
index b0a6ea7b..b92b1a11 100644
--- a/src/pages/docs/tutorial/index.tsx
+++ b/src/pages/docs/tutorial/index.tsx
@@ -170,13 +170,13 @@ const TutorialsPage: NextPage = ({ branch }) => {
{intl.formatMessage({
- id: 'api_guides_page.title',
+ id: 'start_here_page.title',
})}
@@ -184,10 +184,10 @@ const TutorialsPage: NextPage = ({ branch }) => {
= ({ serialized, branch }) => {
}
export const getStaticPaths: GetStaticPaths = async () => {
- const paths = [
- {
- params: { slug: 'access-googles-pagespeed-insights-in-your-vtex-admin' },
- },
- ]
+ // const slugs: { [slug: string]: { locale: string; path: string }[] } =
+ // await getNewsPaths('announcements')
+
+ // const paths: (
+ // | string
+ // | {
+ // params: ParsedUrlQuery
+ // locale?: string | undefined
+ // }
+ // )[] = []
+ // Object.entries(slugs).forEach(([slug, locales]) => {
+ // locales.forEach(({ locale }) => {
+ // paths.push({ params: { slug }, locale })
+ // })
+ // })
+
return {
- paths,
+ paths: [],
fallback: 'blocking',
}
}
@@ -154,22 +166,30 @@ export const getStaticProps: GetStaticProps = async ({
const docsPaths =
process.env.NEXT_PHASE === PHASE_PRODUCTION_BUILD
? docsPathsGLOBAL
- : await getReleasePaths(branch, currentLocale)
+ : await getNewsPaths('announcements', branch)
- const path = docsPaths[slug]
+ const path = docsPaths[slug].find((e) => e.locale === locale)?.path
if (!path) {
return {
notFound: true,
}
}
- let documentationContent = await getGithubFile(
- 'vtexdocs',
- 'help-center-content',
- branch,
- path
- )
- const logger = getLogger('Release-Notes')
+ // let documentationContent = await getGithubFile(
+ // 'vtexdocs',
+ // 'help-center-content',
+ // branch,
+ // path
+ // )
+
+ let documentationContent =
+ (await fetch(
+ `https://raw.githubusercontent.com/vtexdocs/help-center-content/${branch}/${path}`
+ )
+ .then((res) => res.text())
+ .catch((err) => console.log(err))) || ''
+
+ const logger = getLogger('News')
try {
if (path.endsWith('.md')) {
diff --git a/src/styles/documentation-page.ts b/src/styles/documentation-page.ts
index c0e36191..b8f6f7ca 100644
--- a/src/styles/documentation-page.ts
+++ b/src/styles/documentation-page.ts
@@ -12,7 +12,7 @@ const mainContainer: SxStyleProp = {
const innerContainer: SxStyleProp = {
justifyContent: 'center',
- pt: '64px',
+ pt: ['28px', '64px'],
mx: 'auto',
px: ['auto', '5em', '7em', '7em', '7em', '7em', '20em'],
}
@@ -113,6 +113,19 @@ const divider: SxStyleProp = {
borderBottom: '1px solid #E7E9EE',
}
+const readingTime: SxStyleProp = {
+ color: '#6b7785',
+ mb: '24px',
+ lineHeight: '18px',
+ ml: 'auto',
+}
+
+const flexContainer: SxStyleProp = {
+ justifyContent: ['center', 'space-between'],
+ flexWrap: 'wrap-reverse',
+ columnGap: '16px',
+}
+
export default {
container,
mainContainer,
@@ -126,4 +139,6 @@ export default {
documentationExcerpt,
innerContainer,
divider,
+ readingTime,
+ flexContainer,
}
diff --git a/src/utils/constants.ts b/src/utils/constants.ts
index 611da77a..bcf8258c 100644
--- a/src/utils/constants.ts
+++ b/src/utils/constants.ts
@@ -1,17 +1,14 @@
-import AnnouncementIcon from 'components/icons/announcement-icon'
-
import { getMessages } from 'utils/get-messages'
import {
getCommunityURL,
getLearningCenterURL,
getDeveloperPortalURL,
- getHelpCenterURL,
getSupportURL,
+ getFeedbackURL,
} from 'utils/get-url'
import {
DocDataElement,
- UpdatesDataElement,
WhatsNextDataElement,
ResourceDataElement,
FaqDataElement,
@@ -25,6 +22,9 @@ import PaperIcon from 'components/icons/paper-icon'
import WarningIcon from 'components/icons/warning-icon'
import GraphIcon from 'components/icons/graph-icon'
import SignalIcon from 'components/icons/signal-icon'
+import MegaphoneIcon from 'components/icons/megaphone-icon'
+import InfoIcon from 'components/icons/info-icon'
+import LongArrowIcon from 'components/icons/long-arrow-icon'
libraryConfig
export const messages = getMessages()
@@ -32,6 +32,35 @@ export const messages = getMessages()
export const documentationData = (intl: IntlShape) => {
const data: DocDataElement[] = [
{
+ id: 'Start here',
+ Icon: StartHereIcon,
+ title: intl.formatMessage({
+ id: 'documentation_start_here.title',
+ }),
+ description: intl.formatMessage({
+ id: 'documentation_start_here.description',
+ }),
+ link: '/docs/tracks',
+ },
+ {
+ id: 'Tutorials & Solutions',
+ Icon: TutorialsIcon,
+ title: intl.formatMessage({
+ id: 'documentation_tutorials.title',
+ }),
+ description: intl.formatMessage({
+ id: 'documentation_tutorials.description',
+ }),
+ link: '/docs/tutorial',
+ },
+ ]
+ return data
+}
+
+export const menuDocumentationData = (intl: IntlShape) => {
+ const data: DocDataElement[] = [
+ {
+ id: 'Start here',
Icon: StartHereIcon,
title: intl.formatMessage({
id: 'documentation_start_here.title',
@@ -42,6 +71,7 @@ export const documentationData = (intl: IntlShape) => {
link: '/docs/tracks',
},
{
+ id: 'Tutorials & Solutions',
Icon: TutorialsIcon,
title: intl.formatMessage({
id: 'documentation_tutorials.title',
@@ -52,6 +82,7 @@ export const documentationData = (intl: IntlShape) => {
link: '/docs/tutorial',
},
{
+ id: 'Developers Portal',
Icon: DeveloperPortalIcon,
title: intl.formatMessage({
id: 'documentation_developers_portal.title',
@@ -67,19 +98,127 @@ export const documentationData = (intl: IntlShape) => {
}
export const updatesData = (intl: IntlShape) => {
- const data: UpdatesDataElement[] = [
+ const data: DocDataElement[] = [
{
- Icon: AnnouncementIcon,
- title: 'News',
+ id: 'FAQ',
+ Icon: InfoIcon,
+ title: 'FAQ',
+ description: intl.formatMessage({
+ id: 'updates_info_notes.description',
+ }),
+ link: '/updates/announcements', //TODO: mudar rota
+ },
+ {
+ id: 'Announcements',
+ Icon: MegaphoneIcon,
+ title: intl.formatMessage({
+ id: 'updates_announcements_notes.title',
+ }),
description: intl.formatMessage({
- id: 'updates_release_notes.description',
+ id: 'updates_announcements_notes.description',
}),
- link: '/updates/announcements',
+ link: '/updates/announcements', //TODO: verificar rota
},
]
return data
}
+export const feedbackSectionData = (intl: IntlShape) => {
+ const data: DocDataElement[] = [
+ {
+ id: 'Feedback',
+ Icon: LongArrowIcon,
+ title: intl.formatMessage({
+ id: 'landing_page_header_feedback.message',
+ }),
+ description: '',
+ link: getFeedbackURL(),
+ },
+ ]
+
+ return data
+}
+
+export const knownIssuesData = (intl: IntlShape) => {
+ const data: DocDataElement[] = [
+ {
+ id: 'Known Issues',
+ Icon: WarningIcon,
+ title: intl.formatMessage({
+ id: 'sidebar_known_issues.title',
+ }),
+ description: intl.formatMessage({
+ id: 'sidebar_known_issues.description',
+ }),
+ link: '#', //TODO: Trocar rota
+ },
+ {
+ id: 'Support Rules',
+ Icon: PaperIcon,
+ title: intl.formatMessage({
+ id: 'sidebar_support_rules.title',
+ }),
+ description: intl.formatMessage({
+ id: 'sidebar_support_rules.description',
+ }),
+ link: '#', //TODO: trocar rota
+ },
+ ]
+
+ return data
+}
+
+export const menuSupportData = (intl: IntlShape) => {
+ const data: DocDataElement[] = [
+ {
+ id: 'Known Issues',
+ Icon: WarningIcon,
+ title: intl.formatMessage({
+ id: 'sidebar_known_issues.title',
+ }),
+ description: intl.formatMessage({
+ id: 'sidebar_known_issues.description',
+ }),
+ link: '#', //TODO: Trocar rota
+ },
+ {
+ id: 'Status',
+ Icon: GraphIcon,
+ title: intl.formatMessage({
+ id: 'menu_status.title',
+ }),
+ description: intl.formatMessage({
+ id: 'menu_status.description',
+ }),
+ link: '#', // TODO: trocar rota
+ },
+ {
+ id: 'Health Check',
+ Icon: SignalIcon,
+ title: intl.formatMessage({
+ id: 'menu_health_check.title',
+ }),
+ description: intl.formatMessage({
+ id: 'menu_health_check.description',
+ }),
+ link: '#', // TODO: trocar rota
+ },
+ {
+ id: 'Support Rules',
+ Icon: PaperIcon,
+ title: intl.formatMessage({
+ id: 'sidebar_support_rules.title',
+ }),
+ description: intl.formatMessage({
+ id: 'sidebar_support_rules.description',
+ }),
+ link: '#', //TODO: trocar rota
+ },
+ ]
+
+ return data
+}
+
export const faqData = (intl: IntlShape) => {
const data: FaqDataElement[] = [
{
@@ -141,6 +280,7 @@ export const faqData = (intl: IntlShape) => {
export const supportData = (intl: IntlShape) => {
const data: DocDataElement[] = [
{
+ id: 'Known Issues',
Icon: WarningIcon,
title: intl.formatMessage({
id: 'support_known_issues.title',
@@ -151,6 +291,7 @@ export const supportData = (intl: IntlShape) => {
link: '/known-issues',
},
{
+ id: 'Support Plans',
Icon: PaperIcon,
title: intl.formatMessage({
id: 'support_plans.title',
@@ -161,6 +302,7 @@ export const supportData = (intl: IntlShape) => {
link: '/support-plans',
},
{
+ id: 'Health Check',
Icon: SignalIcon,
title: intl.formatMessage({
id: 'support_health_check.title',
@@ -172,6 +314,7 @@ export const supportData = (intl: IntlShape) => {
link: 'http://healthcheck.vtex.com/',
},
{
+ id: 'Status',
Icon: GraphIcon,
title: intl.formatMessage({
id: 'support_status.title',
@@ -271,13 +414,6 @@ export const resources = (intl: IntlShape) => {
}),
link: getDeveloperPortalURL(),
},
- {
- title: 'Help Center',
- description: intl.formatMessage({
- id: 'app_development_page_other_resources_help_center.description',
- }),
- link: getHelpCenterURL(),
- },
{
title: 'Support',
description: intl.formatMessage({
diff --git a/src/utils/enumerate-navigation.ts b/src/utils/enumerate-navigation.ts
new file mode 100644
index 00000000..e76c7ea8
--- /dev/null
+++ b/src/utils/enumerate-navigation.ts
@@ -0,0 +1,55 @@
+interface NavbarItem {
+ documentantion: string
+ slugPrefix: string
+ categories: Document[]
+}
+
+interface Document {
+ name: { en: string; es: string; pt: string }
+ type: string
+ children: Document[]
+}
+
+const ENUMERABLE_SECTIONS_SLUGS = ['docs/tracks']
+const ENUMERATION_TYPE = 'track'
+
+export const enumerateNavigation = (navbar: NavbarItem[]) => {
+ return navbar.map((item) => {
+ if (!ENUMERABLE_SECTIONS_SLUGS.includes(item.slugPrefix)) return item
+ item.categories = item.categories.map((category) => {
+ category.children = enumerateChildren(
+ category,
+ category.type === ENUMERATION_TYPE
+ )
+ return category
+ })
+ return item
+ })
+}
+
+const enumerateChildren = (
+ document: Document,
+ enumerate: boolean
+): Document[] => {
+ const children = document.children.map((currDoc, index) => {
+ if (enumerate) currDoc.name = enumerateName(currDoc.name, index + 1)
+ currDoc.children = enumerateChildren(
+ currDoc,
+ ENUMERATION_TYPE === currDoc.type
+ )
+ return currDoc
+ })
+
+ return children
+}
+
+const enumerateName = (
+ name: { en: string; es: string; pt: string },
+ id: number
+) => {
+ name.en = id + '. ' + name.en
+ name.es = id + '. ' + name.es
+ name.pt = id + '. ' + name.pt
+
+ return name
+}
diff --git a/src/utils/get-url.tsx b/src/utils/get-url.tsx
index 0330a341..7a5cf1d1 100644
--- a/src/utils/get-url.tsx
+++ b/src/utils/get-url.tsx
@@ -6,8 +6,8 @@ export const getDeveloperPortalURL = () => {
return `https://developers.vtex.com/`
}
-export const getHelpCenterURL = () => {
- return `https://help.vtex.com/`
+export const getGithubURL = () => {
+ return `https://github.com/vtexdocs/helpcenter`
}
export const getCommunityURL = () => {
@@ -21,3 +21,27 @@ export const getLearningCenterURL = () => {
export const getSupportURL = () => {
return 'https://help.vtex.com/en/support'
}
+
+export const getSiteMapURL = () => {
+ return 'https://help.vtex.com/sitemap'
+}
+
+export const getLinkedinURL = () => {
+ return 'https://linkedin.com/company/vtex'
+}
+
+export const getFacebookURL = () => {
+ return 'https://www.facebook.com/vtexcommerce/'
+}
+
+export const getInstagramURL = () => {
+ return 'https://www.instagram.com/vtexbrasil/'
+}
+
+export const getYoutubeURL = () => {
+ return 'https://www.youtube.com/c/VTEX-Commerce/featured'
+}
+
+export const getTwitterURL = () => {
+ return 'https://twitter.com/vtexonline'
+}
diff --git a/src/utils/getDocsPaths.ts b/src/utils/getDocsPaths.ts
index 8906a964..81821a8b 100644
--- a/src/utils/getDocsPaths.ts
+++ b/src/utils/getDocsPaths.ts
@@ -1,5 +1,5 @@
/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/ban-ts-comment */
-const docsPaths: { [slug: string]: string } = {}
+const docsPaths: { [slug: string]: { locale: string; path: string }[] } = {}
import octokit from 'utils/octokitConfig'
@@ -18,7 +18,7 @@ async function getGithubTree(org: string, repo: string, ref: string) {
//https://api.github.com/repos/vtexdocs/devportal/commits?path=README.md
-export default async function getDocsPaths(branch = 'main', locale = 'en') {
+export async function getAllDocsPaths(branch = 'main') {
const repoTree = await getGithubTree(
'vtexdocs',
'help-center-content',
@@ -27,18 +27,50 @@ export default async function getDocsPaths(branch = 'main', locale = 'en') {
// @ts-ignore
repoTree.tree.map((node: any) => {
const path = node.path
- const re = /^(?.+\/)*(?.+)\.(?.+)$/
- if (
- path.startsWith(`docs/tracks/${locale}`) ||
- path.startsWith(`docs/faq/${locale}`) ||
- path.startsWith(`docs/known-issues/${locale}`) ||
- path.startsWith(`docs/tutorials/${locale}`)
- ) {
+ const re =
+ /^(?.+\/)*(?pt|es|en+)\/(?.+\/)*(?.+)\.(?.+)$/
+ if (path.startsWith(`docs/`)) {
const match = path.match(re)
const filename = match?.groups?.filename ? match?.groups?.filename : ''
const filetype = match?.groups?.filetype ? match?.groups?.filetype : ''
+ const fileLocale = match?.groups?.locale ? match?.groups?.locale : ''
if (filetype === 'md' || filetype === 'mdx') {
- ;(docsPaths as any)[filename] = path
+ if (!docsPaths[filename]) docsPaths[filename] = []
+ docsPaths[filename].push({
+ locale: fileLocale,
+ path,
+ })
+ }
+ }
+ })
+ return docsPaths
+}
+
+export async function getDocsPaths(
+ category: 'tracks' | 'tutorials' | 'announcements' | 'faq',
+ branch = 'main'
+) {
+ const repoTree = await getGithubTree(
+ 'vtexdocs',
+ 'help-center-content',
+ branch
+ )
+ // @ts-ignore
+ repoTree.tree.map((node: any) => {
+ const path = node.path
+ const re =
+ /^(?.+\/)*(?pt|es|en+)\/(?.+\/)*(?.+)\.(?.+)$/
+ if (path.startsWith(`docs/${category}`)) {
+ const match = path.match(re)
+ const filename = match?.groups?.filename ? match?.groups?.filename : ''
+ const filetype = match?.groups?.filetype ? match?.groups?.filetype : ''
+ const fileLocale = match?.groups?.locale ? match?.groups?.locale : ''
+ if (filetype === 'md' || filetype === 'mdx') {
+ if (!docsPaths[filename]) docsPaths[filename] = []
+ docsPaths[filename].push({
+ locale: fileLocale,
+ path,
+ })
}
}
})
diff --git a/src/utils/getFileContributors.ts b/src/utils/getFileContributors.ts
index 9dfe1305..e5e58dd8 100644
--- a/src/utils/getFileContributors.ts
+++ b/src/utils/getFileContributors.ts
@@ -15,23 +15,27 @@ export default async function getFileContributors(
path: string
): Promise {
const contributors: ContributorsType[] = []
- const response = await octokit.rest.repos.listCommits({
- owner,
- repo,
- sha: ref,
- path,
- })
+ try {
+ const response = await octokit.rest.repos.listCommits({
+ owner,
+ repo,
+ sha: ref,
+ path,
+ })
- response.data.forEach((commitData: any) => {
- if (!contributors.find((e) => e.login === commitData.author.login)) {
- contributors.push({
- name: commitData.commit.author.name,
- login: commitData.author.login,
- avatar: commitData.author.avatar_url,
- userPage: commitData.author.html_url,
- })
- }
- })
+ response.data.forEach((commitData: any) => {
+ if (!contributors.find((e) => e.login === commitData.author.login)) {
+ contributors.push({
+ name: commitData.commit.author.name,
+ login: commitData.author.login,
+ avatar: commitData.author.avatar_url,
+ userPage: commitData.author.html_url,
+ })
+ }
+ })
+ } catch (e: any) {
+ console.error(e.response.data.message)
+ }
return contributors
}
diff --git a/src/utils/getNavigation.ts b/src/utils/getNavigation.ts
index dc732a19..6c25a75c 100644
--- a/src/utils/getNavigation.ts
+++ b/src/utils/getNavigation.ts
@@ -1,7 +1,9 @@
+import { enumerateNavigation } from './enumerate-navigation'
+
export default async function getNavigation() {
const navigationJsonUrl = process.env.navigationJsonUrl
const result = await fetch(navigationJsonUrl as string)
.then((res) => res.json())
- .then((res) => res.navbar)
+ .then((res) => enumerateNavigation(res.navbar))
return result
}
diff --git a/src/utils/octokitConfig.ts b/src/utils/octokitConfig.ts
index 4b6b9076..903a83e7 100644
--- a/src/utils/octokitConfig.ts
+++ b/src/utils/octokitConfig.ts
@@ -14,6 +14,7 @@ const octokitConfig = {
installationId: config.GITHUB_INSTALLATIONID,
},
throttle: {
+ enabled: false,
onRateLimit: (retryAfter: any, options: any, octokit: any) => {
octokit.log.warn(
`Request quota exhausted for request ${options.method} ${options.url}`
diff --git a/src/utils/remark_plugins/remarkReadingTime.ts b/src/utils/remark_plugins/remarkReadingTime.ts
new file mode 100644
index 00000000..9ec4b026
--- /dev/null
+++ b/src/utils/remark_plugins/remarkReadingTime.ts
@@ -0,0 +1,11 @@
+import getReadingTime from 'reading-time'
+import { toString } from 'mdast-util-to-string'
+
+export function remarkReadingTime() {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ return function (tree: Node, file: any) {
+ const textOnPage = toString(tree)
+ const readingTime = getReadingTime(textOnPage)
+ file.data.matter['readingTime'] = Math.ceil(readingTime.minutes)
+ }
+}
diff --git a/src/utils/typings/types.ts b/src/utils/typings/types.ts
index 7c4d34d6..b0b87276 100644
--- a/src/utils/typings/types.ts
+++ b/src/utils/typings/types.ts
@@ -19,6 +19,7 @@ export type DataElement = {
description: string
}
export interface DocDataElement extends DataElement {
+ id: string
title: string
isExternalLink?: boolean
}
@@ -32,6 +33,10 @@ export interface UpdatesDataElement extends DataElement {
title: UpdatesTitle
}
+export interface ExternalLinkDataElement extends DataElement {
+ title: string
+}
+
export type UpdateElement = {
slug: string
title: string
diff --git a/src/utils/typings/unionTypes.ts b/src/utils/typings/unionTypes.ts
index 1243882e..356291fe 100644
--- a/src/utils/typings/unionTypes.ts
+++ b/src/utils/typings/unionTypes.ts
@@ -5,7 +5,7 @@ export type DocumentationTitle =
| 'Tutorials & Solutions'
| 'Developers Portal'
-export type UpdatesTitle = 'News' | 'Documentation Updates'
+export type UpdatesTitle = 'Announcement' | 'FAQ'
export type SlugPrefix = 'tutorial'
diff --git a/tsconfig.json b/tsconfig.json
index 7657bfca..bb2488ad 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -37,7 +37,8 @@
"next-env.d.ts",
"**/*.ts",
"**/*.tsx",
- "src/tests/cypress/support/commands.js"
+ "src/tests/cypress/support/commands.js",
+ "src/components/error-boundary/index.jsx"
],
"exclude": ["node_modules"]
}
diff --git a/yarn.lock b/yarn.lock
index 9a896e11..2bbd9e0c 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1400,6 +1400,11 @@
resolved "https://registry.npmjs.org/@exodus/schemasafe/-/schemasafe-1.0.0.tgz"
integrity sha512-2cyupPIZI69HQxEAPllLXBjQp4njDKkOjYRCYxvMZe3/LY9pp9fBM3Tb1wiFAdP6Emo4v3OEbCLGj6u73Q5KLw==
+"@fastify/accept-negotiator@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@fastify/accept-negotiator/-/accept-negotiator-1.1.0.tgz#c1c66b3b771c09742a54dd5bc87c582f6b0630ff"
+ integrity sha512-OIHZrb2ImZ7XG85HXOONLcJWGosv7sIvM2ifAPQVhg9Lv7qdmMBNVaai4QTdyuaqbKM5eO6sLSQOYI7wEQeCJQ==
+
"@formatjs/ecma402-abstract@1.18.0":
version "1.18.0"
resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.18.0.tgz#e2120e7101020140661b58430a7ff4262705a2f2"
@@ -1494,6 +1499,11 @@
resolved "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz"
integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==
+"@ioredis/commands@^1.1.1":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@ioredis/commands/-/commands-1.2.0.tgz#6d61b3097470af1fdbbe622795b8921d42018e11"
+ integrity sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==
+
"@jridgewell/gen-mapping@^0.1.0":
version "0.1.1"
resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz"
@@ -1611,6 +1621,211 @@
resolved "https://registry.yarnpkg.com/@medv/finder/-/finder-3.0.0.tgz#141b81504f71c25ca860716451b8bcb2d8ef4783"
integrity sha512-GhTmdnzIm+EMCSAF6QL1JunVN/9r4GUbYBWbhX7zOCtNqhsA/Bo9ltr+Cl5p5U4F9PTEwnF7pWmSPWC3H3MUQQ==
+"@netlify/blobs@^2.2.0":
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/@netlify/blobs/-/blobs-2.2.0.tgz#bf634e6f1a43df3fab2088b5093c9e8eda01b393"
+ integrity sha512-j2C0+IvWj9CLNGPoiA7ETquMFDExZTrv4CarjfE6Au0eY3zlinnnTVae7DE+VQFK+U0CDM/O0VvelNy1QbsdwQ==
+
+"@netlify/esbuild-android-64@0.14.39":
+ version "0.14.39"
+ resolved "https://registry.yarnpkg.com/@netlify/esbuild-android-64/-/esbuild-android-64-0.14.39.tgz#7bd30aba94a92351d2c5e25e178ceb824f3c2f99"
+ integrity sha512-azq+lsvjRsKLap8ubIwSJXGyknUACqYu5h98Fvyoh40Qk4QXIVKl16JIJ4s+B7jy2k9qblEc5c4nxdDA3aGbVA==
+
+"@netlify/esbuild-android-arm64@0.14.39":
+ version "0.14.39"
+ resolved "https://registry.yarnpkg.com/@netlify/esbuild-android-arm64/-/esbuild-android-arm64-0.14.39.tgz#0b3e11efaa9379792592173152eba2c9f8b933b0"
+ integrity sha512-WhIP7ePq4qMC1sxoaeB9SsJqSW6uzW7XDj/IuWl1l9r94nwxywU1sYdVLaF2mZr15njviazYjVr8x1d+ipwL3w==
+
+"@netlify/esbuild-darwin-64@0.14.39":
+ version "0.14.39"
+ resolved "https://registry.yarnpkg.com/@netlify/esbuild-darwin-64/-/esbuild-darwin-64-0.14.39.tgz#bb4a3a244723351dabd3cd0553425d087901c408"
+ integrity sha512-eF4GvLYiDxtcyjFT55+h+8c8A2HltjeMezCqkt3AQSgOdu1nhlvwbBhIdg2dyM6gKEaEm5hBtTbicEDSwsLodA==
+
+"@netlify/esbuild-darwin-arm64@0.14.39":
+ version "0.14.39"
+ resolved "https://registry.yarnpkg.com/@netlify/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.39.tgz#48e5abd7d32cdefe4db30026e21c5173afae3c8d"
+ integrity sha512-b7rtnX/VtYwNbUCxs3eulrCWJ+u2YvqDcXiIV1ka+od+N0fTx+4RrVkVp1lha9L0wEJYK9J7UWZOMLMyd1ynRg==
+
+"@netlify/esbuild-freebsd-64@0.14.39":
+ version "0.14.39"
+ resolved "https://registry.yarnpkg.com/@netlify/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.39.tgz#d9650ba7ac0df826ad8928cc3b02e16d00c259b0"
+ integrity sha512-XtusxDJt2hUKUdggbTFolMx0kJL2zEa4STI7YwpB+ukEWoW5rODZjiLZbqqYLcjDH8k4YwHaMxs103L8eButEQ==
+
+"@netlify/esbuild-freebsd-arm64@0.14.39":
+ version "0.14.39"
+ resolved "https://registry.yarnpkg.com/@netlify/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.39.tgz#4e1401e44f79e007dc43b6edac737d010685f9f0"
+ integrity sha512-A9XZKai+k6kfndCtN6Dh2usT28V0+OGxzFdZsANONPQiEUTrGZCgwcHWiVlVn7SeAwPR1tKZreTnvrfj8cj7hA==
+
+"@netlify/esbuild-linux-32@0.14.39":
+ version "0.14.39"
+ resolved "https://registry.yarnpkg.com/@netlify/esbuild-linux-32/-/esbuild-linux-32-0.14.39.tgz#fb017e160d8caa72efa36cf9a2748cd01165a463"
+ integrity sha512-ZQnqk/82YRvINY+aF+LlGfRZ19c5mH0jaxsO046GpIOPx6PcXHG8JJ2lg+vLJVe4zFPohxzabcYpwFuT4cg/GA==
+
+"@netlify/esbuild-linux-64@0.14.39":
+ version "0.14.39"
+ resolved "https://registry.yarnpkg.com/@netlify/esbuild-linux-64/-/esbuild-linux-64-0.14.39.tgz#d89f1aed0f3607b092ca2f57556725af3ceb8252"
+ integrity sha512-IQtswVw7GAKNX/3yV390wSfSXvMWy0d5cw8csAffwBk9gupftY2lzepK4Cn6uD/aqLt3Iku33FbHop/2nPGfQA==
+
+"@netlify/esbuild-linux-arm64@0.14.39":
+ version "0.14.39"
+ resolved "https://registry.yarnpkg.com/@netlify/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.39.tgz#faf6e1e2587045df193d4893e4c30237e2cb84e9"
+ integrity sha512-4Jie4QV6pWWuGN7TAshNMGbdTA9+VbRkv3rPIxhgK5gBfmsAV1yRKsumE4Y77J0AZNRiOriyoec4zc1qkmI3zg==
+
+"@netlify/esbuild-linux-arm@0.14.39":
+ version "0.14.39"
+ resolved "https://registry.yarnpkg.com/@netlify/esbuild-linux-arm/-/esbuild-linux-arm-0.14.39.tgz#bd43359c9e00caebf9bd8f47b8fc7606f5433618"
+ integrity sha512-QdOzQniOed0Bz1cTC9TMMwvtAqKayYv66H4edJlbvElC81yJZF/c9XhmYWJ6P5g4nkChZubQ5RcQwTLmrFGexg==
+
+"@netlify/esbuild-linux-mips64le@0.14.39":
+ version "0.14.39"
+ resolved "https://registry.yarnpkg.com/@netlify/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.39.tgz#0d69730b40175406e943bbf519a4de85750e1ed3"
+ integrity sha512-Htozxr95tw4tSd86YNbCLs1eoYQzNu/cHpzFIkuJoztZueUhl8XpRvBdob7n3kEjW1gitLWAIn8XUwSt+aJ1Tg==
+
+"@netlify/esbuild-linux-ppc64le@0.14.39":
+ version "0.14.39"
+ resolved "https://registry.yarnpkg.com/@netlify/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.39.tgz#18fd4c7190496382501bb95c3f015f7ec1b0acb2"
+ integrity sha512-tFy0ufWIdjeuk1rPHee00TZlhr9OSF00Ufb4ROFyt2ArKuMSkWRJuDgx6MtZcAnCIN4cybo/xWl3MKTM+scnww==
+
+"@netlify/esbuild-linux-riscv64@0.14.39":
+ version "0.14.39"
+ resolved "https://registry.yarnpkg.com/@netlify/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.39.tgz#c9dc6af7e999ead24e2d68443c8c630094908930"
+ integrity sha512-ZzfKvwIxL7wQnYbVFpyNW0wotnLoKageUEM57RbjekesJoNQnqUR6Usm+LDZoB8iRsI58VX1IxnstP0cX8vOHw==
+
+"@netlify/esbuild-linux-s390x@0.14.39":
+ version "0.14.39"
+ resolved "https://registry.yarnpkg.com/@netlify/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.39.tgz#8b87c0a09397b014e9f4fb3873c891ea0d81df40"
+ integrity sha512-yjC0mFwnuMRoh0WcF0h71MF71ytZBFEQQTRdgiGT0+gbC4UApBqnTkJdLx32RscBKi9skbMChiJ748hDJou6FA==
+
+"@netlify/esbuild-netbsd-64@0.14.39":
+ version "0.14.39"
+ resolved "https://registry.yarnpkg.com/@netlify/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.39.tgz#3f049e25a6d00f17519220ab2f5e15f027edadae"
+ integrity sha512-mIq4znOoz3YfTVdv3sIWfR4Zx5JgMnT4srlhC5KYVHibhxvyDdin5txldYXmR4Zv4dZd6DSuWFsn441aUegHeA==
+
+"@netlify/esbuild-openbsd-64@0.14.39":
+ version "0.14.39"
+ resolved "https://registry.yarnpkg.com/@netlify/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.39.tgz#02396cf8e8ca01484df58a191d301adc587397c9"
+ integrity sha512-+t6QdzJCngH19hV7ClpFAeFDI2ko/HNcFbiNwaXTMVLB3hWi1sJtn+fzZck5HfzN4qsajAVqZq4nwX69SSt25A==
+
+"@netlify/esbuild-sunos-64@0.14.39":
+ version "0.14.39"
+ resolved "https://registry.yarnpkg.com/@netlify/esbuild-sunos-64/-/esbuild-sunos-64-0.14.39.tgz#97c3152aa7ceaf51247998c836f94773975e716e"
+ integrity sha512-HLfXG6i2p3wyyyWHeeP4ShGDJ1zRMnf9YLJLe2ezv2KqvcKw/Un/m/FBuDW1p13oSUO7ShISMzgc1dw1GGBEOQ==
+
+"@netlify/esbuild-windows-32@0.14.39":
+ version "0.14.39"
+ resolved "https://registry.yarnpkg.com/@netlify/esbuild-windows-32/-/esbuild-windows-32-0.14.39.tgz#ccb2a234954714662a4cd1a573d5b271f5288273"
+ integrity sha512-ZpSQcKbVSCU3ln7mHpsL/5dWsUqCNdTnC5YAArnaOwdrlIunrsbo5j4MOZRRcGExb2uvTc/rb+D3mlGb8j1rkA==
+
+"@netlify/esbuild-windows-64@0.14.39":
+ version "0.14.39"
+ resolved "https://registry.yarnpkg.com/@netlify/esbuild-windows-64/-/esbuild-windows-64-0.14.39.tgz#477c22c04a3299599924e9e4c909c0dec5612f56"
+ integrity sha512-I3gCdO8+6IDhT4Y1ZmV4o2Gg0oELv7N4kCcE4kqclz10fWHNjf19HQNHyBJe0AWnFV5ZfT154VVD31dqgwpgFw==
+
+"@netlify/esbuild-windows-arm64@0.14.39":
+ version "0.14.39"
+ resolved "https://registry.yarnpkg.com/@netlify/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.39.tgz#10446d91ca603fa28067541cfa1526081c6ee09b"
+ integrity sha512-WX52W8U1lsfWcz6NWoSpDs57lgiiMHN23seq8G2bvxzGS/tvYD3dxVLLW5UPoKSnFDyVQT7b6Zkt6AkBten1yQ==
+
+"@netlify/esbuild@0.14.39":
+ version "0.14.39"
+ resolved "https://registry.yarnpkg.com/@netlify/esbuild/-/esbuild-0.14.39.tgz#66897af6d26336e5960b5ba74f1642f1d02a9c6a"
+ integrity sha512-C3xpwdT2xw6SnSb+hLQoxjtikAKiz6BjQjzlIaysHDpGbmIcmUHZ/X+dyLtCqAvf15WNK5GSBZYOlpgcOE0WZA==
+ optionalDependencies:
+ "@netlify/esbuild-android-64" "0.14.39"
+ "@netlify/esbuild-android-arm64" "0.14.39"
+ "@netlify/esbuild-darwin-64" "0.14.39"
+ "@netlify/esbuild-darwin-arm64" "0.14.39"
+ "@netlify/esbuild-freebsd-64" "0.14.39"
+ "@netlify/esbuild-freebsd-arm64" "0.14.39"
+ "@netlify/esbuild-linux-32" "0.14.39"
+ "@netlify/esbuild-linux-64" "0.14.39"
+ "@netlify/esbuild-linux-arm" "0.14.39"
+ "@netlify/esbuild-linux-arm64" "0.14.39"
+ "@netlify/esbuild-linux-mips64le" "0.14.39"
+ "@netlify/esbuild-linux-ppc64le" "0.14.39"
+ "@netlify/esbuild-linux-riscv64" "0.14.39"
+ "@netlify/esbuild-linux-s390x" "0.14.39"
+ "@netlify/esbuild-netbsd-64" "0.14.39"
+ "@netlify/esbuild-openbsd-64" "0.14.39"
+ "@netlify/esbuild-sunos-64" "0.14.39"
+ "@netlify/esbuild-windows-32" "0.14.39"
+ "@netlify/esbuild-windows-64" "0.14.39"
+ "@netlify/esbuild-windows-arm64" "0.14.39"
+
+"@netlify/functions@^1.6.0":
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/@netlify/functions/-/functions-1.6.0.tgz#c373423e6fef0e6f7422ac0345e8bbf2cb692366"
+ integrity sha512-6G92AlcpFrQG72XU8YH8pg94eDnq7+Q0YJhb8x4qNpdGsvuzvrfHWBmqFGp/Yshmv4wex9lpsTRZOocdrA2erQ==
+ dependencies:
+ is-promise "^4.0.0"
+
+"@netlify/functions@^2.4.0":
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/@netlify/functions/-/functions-2.4.1.tgz#93bc87313474285993b4de7cde6335ada0665870"
+ integrity sha512-sRFYBaz6dJP1MdUtk/5QNmshhg5UDmB+DUssmH6v9WUG85MrwyExEfGfJA5eClXATjXm0coTvO5nLAlyCpK7QQ==
+ dependencies:
+ "@netlify/serverless-functions-api" "1.12.3"
+ is-promise "^4.0.0"
+
+"@netlify/ipx@^1.4.6":
+ version "1.4.6"
+ resolved "https://registry.yarnpkg.com/@netlify/ipx/-/ipx-1.4.6.tgz#0bd308d70a1d2e1928e66cb49e36294f66f7b8b2"
+ integrity sha512-rnKR2LXhtnflitPX9CQIv+XSrNlYIqGsV54xrXifhbtHHjCjCw/lixsi8qwAXqEIgZBC9b4Y7prhHqRtC4oIjw==
+ dependencies:
+ "@netlify/functions" "^2.4.0"
+ etag "^1.8.1"
+ fs-extra "^11.0.0"
+ ipx "^1.3.1"
+ micromatch "^4.0.5"
+ mkdirp "^3.0.0"
+ murmurhash "^2.0.0"
+ node-fetch "^2.0.0"
+ ufo "^1.0.0"
+ unstorage "1.9.0"
+
+"@netlify/node-cookies@^0.1.0":
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/@netlify/node-cookies/-/node-cookies-0.1.0.tgz#dda912ba618527695cf519fafa221c5e6777c612"
+ integrity sha512-OAs1xG+FfLX0LoRASpqzVntVV/RpYkgpI0VrUnw2u0Q1qiZUzcPffxRK8HF3gc4GjuhG5ahOEMJ9bswBiZPq0g==
+
+"@netlify/plugin-nextjs@^4.41.3":
+ version "4.41.3"
+ resolved "https://registry.yarnpkg.com/@netlify/plugin-nextjs/-/plugin-nextjs-4.41.3.tgz#f8274526147f652438cc6790b6819ca15d441dd3"
+ integrity sha512-l8TB61u7A1ZF22QpoyZtresSUsHOJGP9DatECnqlNab3lG8id1kz9Pso+nZVOznWOm98o7w51k2+TIf52x+DBQ==
+ dependencies:
+ "@netlify/blobs" "^2.2.0"
+ "@netlify/esbuild" "0.14.39"
+ "@netlify/functions" "^1.6.0"
+ "@netlify/ipx" "^1.4.6"
+ "@vercel/node-bridge" "^2.1.0"
+ chalk "^4.1.2"
+ chokidar "^3.5.3"
+ destr "^1.1.1"
+ execa "^5.1.1"
+ follow-redirects "^1.15.2"
+ fs-extra "^10.0.0"
+ globby "^11.0.4"
+ merge-stream "^2.0.0"
+ moize "^6.1.0"
+ node-fetch "^2.6.6"
+ node-stream-zip "^1.15.0"
+ outdent "^0.8.0"
+ p-limit "^3.1.0"
+ pathe "^0.3.0"
+ pretty-bytes "^5.6.0"
+ regexp-tree "^0.1.24"
+ semver "^7.3.5"
+ slash "^3.0.0"
+ tiny-glob "^0.2.9"
+
+"@netlify/serverless-functions-api@1.12.3":
+ version "1.12.3"
+ resolved "https://registry.yarnpkg.com/@netlify/serverless-functions-api/-/serverless-functions-api-1.12.3.tgz#cf1abc7ca2c9d3f920fea458c44bdda4d3e614e4"
+ integrity sha512-g1AZ78pCvMnalZtbnViVLGfG5ufjKyKoi3plLSUtZqh0wVuMR7ZGegeZHhOoY4wRfkkETVvWfhgfcpLMbGM5Lg==
+ dependencies:
+ "@netlify/node-cookies" "^0.1.0"
+ urlpattern-polyfill "8.0.2"
+
"@next/env@13.0.5":
version "13.0.5"
resolved "https://registry.npmjs.org/@next/env/-/env-13.0.5.tgz"
@@ -1954,6 +2169,98 @@
"@medv/finder" "^3.0.0"
error-stack-parser "^2.0.6"
+"@parcel/watcher-android-arm64@2.3.0":
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.3.0.tgz#d82e74bb564ebd4d8a88791d273a3d2bd61e27ab"
+ integrity sha512-f4o9eA3dgk0XRT3XhB0UWpWpLnKgrh1IwNJKJ7UJek7eTYccQ8LR7XUWFKqw6aEq5KUNlCcGvSzKqSX/vtWVVA==
+
+"@parcel/watcher-darwin-arm64@2.3.0":
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.3.0.tgz#c9cd03f8f233d512fcfc873d5b4e23f1569a82ad"
+ integrity sha512-mKY+oijI4ahBMc/GygVGvEdOq0L4DxhYgwQqYAz/7yPzuGi79oXrZG52WdpGA1wLBPrYb0T8uBaGFo7I6rvSKw==
+
+"@parcel/watcher-darwin-x64@2.3.0":
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.3.0.tgz#83c902994a2a49b9e1ab5050dba24876fdc2c219"
+ integrity sha512-20oBj8LcEOnLE3mgpy6zuOq8AplPu9NcSSSfyVKgfOhNAc4eF4ob3ldj0xWjGGbOF7Dcy1Tvm6ytvgdjlfUeow==
+
+"@parcel/watcher-freebsd-x64@2.3.0":
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.3.0.tgz#7a0f4593a887e2752b706aff2dae509aef430cf6"
+ integrity sha512-7LftKlaHunueAEiojhCn+Ef2CTXWsLgTl4hq0pkhkTBFI3ssj2bJXmH2L67mKpiAD5dz66JYk4zS66qzdnIOgw==
+
+"@parcel/watcher-linux-arm-glibc@2.3.0":
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.3.0.tgz#3fc90c3ebe67de3648ed2f138068722f9b1d47da"
+ integrity sha512-1apPw5cD2xBv1XIHPUlq0cO6iAaEUQ3BcY0ysSyD9Kuyw4MoWm1DV+W9mneWI+1g6OeP6dhikiFE6BlU+AToTQ==
+
+"@parcel/watcher-linux-arm64-glibc@2.3.0":
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.3.0.tgz#f7bbbf2497d85fd11e4c9e9c26ace8f10ea9bcbc"
+ integrity sha512-mQ0gBSQEiq1k/MMkgcSB0Ic47UORZBmWoAWlMrTW6nbAGoLZP+h7AtUM7H3oDu34TBFFvjy4JCGP43JlylkTQA==
+
+"@parcel/watcher-linux-arm64-musl@2.3.0":
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.3.0.tgz#de131a9fcbe1fa0854e9cbf4c55bed3b35bcff43"
+ integrity sha512-LXZAExpepJew0Gp8ZkJ+xDZaTQjLHv48h0p0Vw2VMFQ8A+RKrAvpFuPVCVwKJCr5SE+zvaG+Etg56qXvTDIedw==
+
+"@parcel/watcher-linux-x64-glibc@2.3.0":
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.3.0.tgz#193dd1c798003cdb5a1e59470ff26300f418a943"
+ integrity sha512-P7Wo91lKSeSgMTtG7CnBS6WrA5otr1K7shhSjKHNePVmfBHDoAOHYRXgUmhiNfbcGk0uMCHVcdbfxtuiZCHVow==
+
+"@parcel/watcher-linux-x64-musl@2.3.0":
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.3.0.tgz#6dbdb86d96e955ab0fe4a4b60734ec0025a689dd"
+ integrity sha512-+kiRE1JIq8QdxzwoYY+wzBs9YbJ34guBweTK8nlzLKimn5EQ2b2FSC+tAOpq302BuIMjyuUGvBiUhEcLIGMQ5g==
+
+"@parcel/watcher-wasm@2.3.0":
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-wasm/-/watcher-wasm-2.3.0.tgz#73b66c6fbd2a3326ae86a1ec77eab7139d0dd725"
+ integrity sha512-ejBAX8H0ZGsD8lSICDNyMbSEtPMWgDL0WFCt/0z7hyf5v8Imz4rAM8xY379mBsECkq/Wdqa5WEDLqtjZ+6NxfA==
+ dependencies:
+ is-glob "^4.0.3"
+ micromatch "^4.0.5"
+ napi-wasm "^1.1.0"
+
+"@parcel/watcher-win32-arm64@2.3.0":
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.3.0.tgz#59da26a431da946e6c74fa6b0f30b120ea6650b6"
+ integrity sha512-35gXCnaz1AqIXpG42evcoP2+sNL62gZTMZne3IackM+6QlfMcJLy3DrjuL6Iks7Czpd3j4xRBzez3ADCj1l7Aw==
+
+"@parcel/watcher-win32-ia32@2.3.0":
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.3.0.tgz#3ee6a18b08929cd3b788e8cc9547fd9a540c013a"
+ integrity sha512-FJS/IBQHhRpZ6PiCjFt1UAcPr0YmCLHRbTc00IBTrelEjlmmgIVLeOx4MSXzx2HFEy5Jo5YdhGpxCuqCyDJ5ow==
+
+"@parcel/watcher-win32-x64@2.3.0":
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.3.0.tgz#14e7246289861acc589fd608de39fe5d8b4bb0a7"
+ integrity sha512-dLx+0XRdMnVI62kU3wbXvbIRhLck4aE28bIGKbRGS7BJNt54IIj9+c/Dkqb+7DJEbHUZAX1bwaoM8PqVlHJmCA==
+
+"@parcel/watcher@^2.3.0":
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.3.0.tgz#803517abbc3981a1a1221791d9f59dc0590d50f9"
+ integrity sha512-pW7QaFiL11O0BphO+bq3MgqeX/INAk9jgBldVDYjlQPO4VddoZnF22TcF9onMhnLVHuNqBJeRf+Fj7eezi/+rQ==
+ dependencies:
+ detect-libc "^1.0.3"
+ is-glob "^4.0.3"
+ micromatch "^4.0.5"
+ node-addon-api "^7.0.0"
+ optionalDependencies:
+ "@parcel/watcher-android-arm64" "2.3.0"
+ "@parcel/watcher-darwin-arm64" "2.3.0"
+ "@parcel/watcher-darwin-x64" "2.3.0"
+ "@parcel/watcher-freebsd-x64" "2.3.0"
+ "@parcel/watcher-linux-arm-glibc" "2.3.0"
+ "@parcel/watcher-linux-arm64-glibc" "2.3.0"
+ "@parcel/watcher-linux-arm64-musl" "2.3.0"
+ "@parcel/watcher-linux-x64-glibc" "2.3.0"
+ "@parcel/watcher-linux-x64-musl" "2.3.0"
+ "@parcel/watcher-win32-arm64" "2.3.0"
+ "@parcel/watcher-win32-ia32" "2.3.0"
+ "@parcel/watcher-win32-x64" "2.3.0"
+
"@pkgr/utils@^2.3.1":
version "2.3.1"
resolved "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.1.tgz"
@@ -2749,6 +3056,11 @@
"@typescript-eslint/types" "5.45.1"
eslint-visitor-keys "^3.3.0"
+"@vercel/node-bridge@^2.1.0":
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/@vercel/node-bridge/-/node-bridge-2.2.2.tgz#f63466ab6a2588afdc6262c2d060289bfe8baa6b"
+ integrity sha512-haGBC8noyA5BfjCRXRH+VIkHCDVW5iD5UX24P2nOdilwUxI4qWsattS/co8QBGq64XsNLRAMdM5pQUE3zxkF9Q==
+
"@vtex/brand-ui@^0.46.1":
version "0.46.1"
resolved "https://registry.npmjs.org/@vtex/brand-ui/-/brand-ui-0.46.1.tgz"
@@ -2779,9 +3091,9 @@
resolved "https://registry.npmjs.org/@vtex/tsconfig/-/tsconfig-0.6.0.tgz"
integrity sha512-SVQBxaSdEVdpJFja1aVTIiZBgpQKePyYOUWGzcYq6LYkSWqSbz2LoC7TuLUsmfweYmVkv8+4eVuxcDpQVEpq1A==
-"@vtexdocs/components@https://github.com/vtexdocs/components.git#v1.2.0":
- version "1.2.0"
- resolved "https://github.com/vtexdocs/components.git#6d0937897665f590eb696a13f9d2c64029f73773"
+"@vtexdocs/components@https://github.com/vtexdocs/components.git#v1.4.0":
+ version "1.4.0"
+ resolved "https://github.com/vtexdocs/components.git#8e2715b6df1538279cb23302a05f9d7f8719d40b"
dependencies:
"@code-hike/mdx" "^0.9.0"
"@vtex/brand-ui" "^0.46.1"
@@ -2982,6 +3294,11 @@ acorn@^8.0.0, acorn@^8.2.4, acorn@^8.4.1, acorn@^8.7.1:
resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz"
integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==
+acorn@^8.10.0:
+ version "8.11.3"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a"
+ integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==
+
acorn@^8.8.2:
version "8.11.2"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b"
@@ -3130,6 +3447,14 @@ ansi-styles@^6.0.0:
resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.1.0.tgz"
integrity sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==
+anymatch@^3.1.3, anymatch@~3.1.2:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
+ integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
+ dependencies:
+ normalize-path "^3.0.0"
+ picomatch "^2.0.4"
+
arch@^2.2.0:
version "2.2.0"
resolved "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz"
@@ -3393,6 +3718,11 @@ axobject-query@^3.2.1:
dependencies:
dequal "^2.0.3"
+b4a@^1.6.4:
+ version "1.6.4"
+ resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.6.4.tgz#ef1c1422cae5ce6535ec191baeed7567443f36c9"
+ integrity sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==
+
babel-plugin-emotion@^10.0.27:
version "10.2.2"
resolved "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.2.2.tgz"
@@ -3500,6 +3830,11 @@ bignumber.js@^9.0.0:
resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz"
integrity sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==
+binary-extensions@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
+ integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
+
bl@^4.0.3:
version "4.1.0"
resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz"
@@ -3542,7 +3877,7 @@ brace-expansion@^1.1.7:
balanced-match "^1.0.0"
concat-map "0.0.1"
-braces@^3.0.1:
+braces@^3.0.1, braces@^3.0.2, braces@~3.0.2:
version "3.0.2"
resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz"
integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
@@ -3723,6 +4058,21 @@ check-more-types@^2.24.0:
resolved "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz"
integrity sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA=
+chokidar@^3.5.3:
+ version "3.5.3"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
+ integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
+ dependencies:
+ anymatch "~3.1.2"
+ braces "~3.0.2"
+ glob-parent "~5.1.2"
+ is-binary-path "~2.1.0"
+ is-glob "~4.0.1"
+ normalize-path "~3.0.0"
+ readdirp "~3.6.0"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
chownr@^1.1.1:
version "1.1.4"
resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz"
@@ -3738,6 +4088,13 @@ ci-info@^3.2.0:
resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz"
integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==
+citty@^0.1.4, citty@^0.1.5:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/citty/-/citty-0.1.5.tgz#fe37ceae5dc764af75eb2fece99d2bf527ea4e50"
+ integrity sha512-AS7n5NSc0OQVMV9v6wt3ByujNIrne0/cTjiC2MYqhvao57VNfiuVksTSr2p17nVOhEr2KtqiAkGwHcgMC/qUuQ==
+ dependencies:
+ consola "^3.2.3"
+
classnames@^2.2.5, classnames@^2.3.1:
version "2.3.1"
resolved "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz"
@@ -3843,6 +4200,11 @@ clsx@^1.1.1:
resolved "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz"
integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==
+cluster-key-slot@^1.1.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz#88ddaa46906e303b5de30d3153b7d9fe0a0c19ac"
+ integrity sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==
+
code-error-fragment@0.0.230:
version "0.0.230"
resolved "https://registry.npmjs.org/code-error-fragment/-/code-error-fragment-0.0.230.tgz"
@@ -3915,7 +4277,7 @@ commander@7:
resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
-commander@^2.20.0:
+commander@^2.20.0, commander@^2.20.3:
version "2.20.3"
resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz"
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
@@ -4007,6 +4369,11 @@ confusing-browser-globals@^1.0.10:
resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81"
integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==
+consola@^3.2.3:
+ version "3.2.3"
+ resolved "https://registry.yarnpkg.com/consola/-/consola-3.2.3.tgz#0741857aa88cfa0d6fd53f1cff0375136e98502f"
+ integrity sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==
+
conventional-changelog-angular@^5.0.11, conventional-changelog-angular@^5.0.12:
version "5.0.13"
resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz"
@@ -4208,6 +4575,11 @@ convert-source-map@^1.5.0, convert-source-map@^1.7.0:
dependencies:
safe-buffer "~5.1.1"
+cookie-es@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/cookie-es/-/cookie-es-1.0.0.tgz#4759684af168dfc54365b2c2dda0a8d7ee1e4865"
+ integrity sha512-mWYvfOLrfEc996hlKcdABeIiPHUPC6DM2QYZdGGOvhOTbA3tjm2eBwqlJpoFdjC89NI4Qt6h0Pu06Mp+1Pj5OQ==
+
cookie@~0.4.1:
version "0.4.2"
resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz"
@@ -4310,6 +4682,11 @@ css-selector-parser@^1.4.1:
resolved "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-1.4.1.tgz"
integrity sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==
+cssfilter@0.0.10:
+ version "0.0.10"
+ resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae"
+ integrity sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==
+
cssom@^0.4.4:
version "0.4.4"
resolved "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz"
@@ -4886,6 +5263,11 @@ define-properties@^1.2.0, define-properties@^1.2.1:
has-property-descriptors "^1.0.0"
object-keys "^1.1.1"
+defu@^6.1.2, defu@^6.1.3:
+ version "6.1.3"
+ resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.3.tgz#6d7f56bc61668e844f9f593ace66fd67ef1205fd"
+ integrity sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ==
+
delaunator@5:
version "5.0.0"
resolved "https://registry.yarnpkg.com/delaunator/-/delaunator-5.0.0.tgz#60f052b28bd91c9b4566850ebf7756efe821d81b"
@@ -4898,6 +5280,11 @@ delayed-stream@~1.0.0:
resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"
integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
+denque@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/denque/-/denque-2.1.0.tgz#e93e1a6569fb5e66f16a3c2a2964617d349d6ab1"
+ integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==
+
deprecation@^2.0.0, deprecation@^2.3.1:
version "2.3.1"
resolved "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz"
@@ -4913,6 +5300,16 @@ dequal@^2.0.3:
resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be"
integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==
+destr@^1.1.1:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/destr/-/destr-1.2.2.tgz#7ba9befcafb645a50e76b260449c63927b51e22f"
+ integrity sha512-lrbCJwD9saUQrqUfXvl6qoM+QN3W7tLV5pAOs+OqOmopCCz/JkE05MHedJR1xfk4IAnZuJXPVuN5+7jNA2ZCiA==
+
+destr@^2.0.1, destr@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/destr/-/destr-2.0.2.tgz#8d3c0ee4ec0a76df54bc8b819bca215592a8c218"
+ integrity sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg==
+
detect-file@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz"
@@ -4923,11 +5320,21 @@ detect-indent@6.0.0, detect-indent@^6.0.0:
resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz"
integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==
+detect-libc@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
+ integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==
+
detect-libc@^2.0.0, detect-libc@^2.0.1:
version "2.0.1"
resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz"
integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==
+detect-libc@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d"
+ integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==
+
detect-newline@^3.1.0:
version "3.1.0"
resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz"
@@ -5808,6 +6215,11 @@ esutils@^2.0.2:
resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz"
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
+etag@^1.8.1:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
+ integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
+
event-emitter@^0.3.5:
version "0.3.5"
resolved "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz"
@@ -5927,6 +6339,16 @@ fast-diff@^1.1.2:
resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz"
integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
+fast-equals@^3.0.1:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-3.0.3.tgz#8e6cb4e51ca1018d87dd41982ef92758b3e4197f"
+ integrity sha512-NCe8qxnZFARSHGztGMZOO/PC1qa5MIFB5Hp66WdzbCRAz8U8US3bx1UTgLS49efBQPcUtO9gf5oVEY8o7y/7Kg==
+
+fast-fifo@^1.1.0, fast-fifo@^1.2.0:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c"
+ integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==
+
fast-glob@^3.2.11:
version "3.2.12"
resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz"
@@ -6119,6 +6541,11 @@ follow-redirects@^1.0.0:
resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz"
integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==
+follow-redirects@^1.15.2:
+ version "1.15.4"
+ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.4.tgz#cdc7d308bf6493126b17ea2191ea0ccf3e535adf"
+ integrity sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==
+
for-each@^0.3.3:
version "0.3.3"
resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e"
@@ -6209,6 +6636,15 @@ fs-extra@^10.0.0:
jsonfile "^6.0.1"
universalify "^2.0.0"
+fs-extra@^11.0.0:
+ version "11.2.0"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b"
+ integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==
+ dependencies:
+ graceful-fs "^4.2.0"
+ jsonfile "^6.0.1"
+ universalify "^2.0.0"
+
fs-extra@^9.1.0:
version "9.1.0"
resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz"
@@ -6224,6 +6660,11 @@ fs.realpath@^1.0.0:
resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+fsevents@~2.3.2:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
+ integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
+
function-bind@^1.1.1:
version "1.1.1"
resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz"
@@ -6330,6 +6771,11 @@ get-pkg-repo@^4.0.0:
through2 "^2.0.0"
yargs "^16.2.0"
+get-port-please@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/get-port-please/-/get-port-please-3.1.1.tgz#2556623cddb4801d823c0a6a15eec038abb483be"
+ integrity sha512-3UBAyM3u4ZBVYDsxOQfJDxEa6XTbpBDrOjp4mf7ExFRt5BKs/QywQQiJsh2B+hxcZLSapWqCRvElUe8DnKcFHA==
+
get-stream@^5.0.0, get-stream@^5.1.0:
version "5.2.0"
resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz"
@@ -6408,7 +6854,7 @@ github-from-package@0.0.0:
resolved "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz"
integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==
-glob-parent@^5.1.2:
+glob-parent@^5.1.2, glob-parent@~5.1.2:
version "5.1.2"
resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
@@ -6605,6 +7051,20 @@ gtoken@^6.1.0:
google-p12-pem "^4.0.0"
jws "^4.0.0"
+h3@^1.7.1, h3@^1.8.1:
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/h3/-/h3-1.10.0.tgz#55ac36deb6e250ada5ff1940b6324bc6acc4085f"
+ integrity sha512-Tw1kcIC+AeimwRmviiObaD5EB430Yt+lTgOxLJxNr96Vd/fGRu04EF7aKfOAcpwKCI+U2JlbxOLhycD86p3Ciw==
+ dependencies:
+ cookie-es "^1.0.0"
+ defu "^6.1.3"
+ destr "^2.0.2"
+ iron-webcrypto "^1.0.0"
+ radix3 "^1.1.0"
+ ufo "^1.3.2"
+ uncrypto "^0.1.3"
+ unenv "^1.8.0"
+
handlebars@^4.7.7:
version "4.7.7"
resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz"
@@ -6817,6 +7277,11 @@ http-proxy@^1.18.1:
follow-redirects "^1.0.0"
requires-port "^1.0.0"
+http-shutdown@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/http-shutdown/-/http-shutdown-1.2.2.tgz#41bc78fc767637c4c95179bc492f312c0ae64c5f"
+ integrity sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==
+
http-signature@~1.3.6:
version "1.3.6"
resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz"
@@ -6893,6 +7358,11 @@ ignore@^5.1.8, ignore@^5.2.0:
resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz"
integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
+image-meta@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/image-meta/-/image-meta-0.1.1.tgz#a84dc7d5f61c7d60e85ec0c3ac81beee8646039b"
+ integrity sha512-+oXiHwOEPr1IE5zY0tcBLED/CYcre15J4nwL50x3o0jxWqEkyjrusiKP3YSU+tr9fvJp33ZcP5Gpj2295g3aEw==
+
image-size@1.0.2, image-size@^1.0.0:
version "1.0.2"
resolved "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz"
@@ -7003,6 +7473,44 @@ intl-messageformat@10.5.8:
"@formatjs/icu-messageformat-parser" "2.7.3"
tslib "^2.4.0"
+ioredis@^5.3.2:
+ version "5.3.2"
+ resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-5.3.2.tgz#9139f596f62fc9c72d873353ac5395bcf05709f7"
+ integrity sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA==
+ dependencies:
+ "@ioredis/commands" "^1.1.1"
+ cluster-key-slot "^1.1.0"
+ debug "^4.3.4"
+ denque "^2.1.0"
+ lodash.defaults "^4.2.0"
+ lodash.isarguments "^3.1.0"
+ redis-errors "^1.2.0"
+ redis-parser "^3.0.0"
+ standard-as-callback "^2.1.0"
+
+ipx@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/ipx/-/ipx-1.3.1.tgz#2ff4aa9bc5be74f63cccd80d1df430fcc5e715b6"
+ integrity sha512-hWRLXdMDOz2q81T2x9lowFtAGO3E5b2HtC8xOOBTrlnxygHNaVrZqJ5c1P3T7tDkC3oCocYRRz0VBffvJKeQlw==
+ dependencies:
+ "@fastify/accept-negotiator" "^1.1.0"
+ consola "^3.2.3"
+ defu "^6.1.2"
+ destr "^2.0.1"
+ etag "^1.8.1"
+ image-meta "^0.1.1"
+ listhen "^1.5.5"
+ node-fetch-native "^1.4.0"
+ pathe "^1.1.1"
+ sharp "^0.32.6"
+ ufo "^1.3.1"
+ xss "^1.0.14"
+
+iron-webcrypto@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/iron-webcrypto/-/iron-webcrypto-1.0.0.tgz#e3b689c0c61b434a0a4cb82d0aeabbc8b672a867"
+ integrity sha512-anOK1Mktt8U1Xi7fCM3RELTuYbnFikQY5VtrDj7kPgpejV7d43tWKhzgioO0zpkazLEL/j/iayRqnJhrGfqUsg==
+
is-alphabetical@^2.0.0:
version "2.0.1"
resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz"
@@ -7049,6 +7557,13 @@ is-bigint@^1.0.1:
dependencies:
has-bigints "^1.0.1"
+is-binary-path@~2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
+ integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
+ dependencies:
+ binary-extensions "^2.0.0"
+
is-boolean-object@^1.1.0:
version "1.1.2"
resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz"
@@ -7151,7 +7666,7 @@ is-generator-function@^1.0.10:
dependencies:
has-tostringtag "^1.0.0"
-is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3:
+is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
version "4.0.3"
resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz"
integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
@@ -7235,6 +7750,11 @@ is-promise@^2.2.2:
resolved "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz"
integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==
+is-promise@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-4.0.0.tgz#42ff9f84206c1991d26debf520dd5c01042dd2f3"
+ integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==
+
is-reference@^3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/is-reference/-/is-reference-3.0.0.tgz"
@@ -7392,6 +7912,11 @@ jest-worker@^27.4.5:
merge-stream "^2.0.0"
supports-color "^8.0.0"
+jiti@^1.20.0:
+ version "1.21.0"
+ resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d"
+ integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==
+
js-cookie@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8"
@@ -7555,7 +8080,7 @@ json5@^2.1.2, json5@^2.2.1:
resolved "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz"
integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==
-jsonc-parser@3.2.0:
+jsonc-parser@3.2.0, jsonc-parser@^3.2.0:
version "3.2.0"
resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz"
integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==
@@ -7782,6 +8307,29 @@ lint-staged@^12.3.5:
supports-color "^9.2.1"
yaml "^1.10.2"
+listhen@^1.2.2, listhen@^1.5.5:
+ version "1.5.5"
+ resolved "https://registry.yarnpkg.com/listhen/-/listhen-1.5.5.tgz#58915512af70f770aa3e9fb19367adf479bb58c4"
+ integrity sha512-LXe8Xlyh3gnxdv4tSjTjscD1vpr/2PRpzq8YIaMJgyKzRG8wdISlWVWnGThJfHnlJ6hmLt2wq1yeeix0TEbuoA==
+ dependencies:
+ "@parcel/watcher" "^2.3.0"
+ "@parcel/watcher-wasm" "2.3.0"
+ citty "^0.1.4"
+ clipboardy "^3.0.0"
+ consola "^3.2.3"
+ defu "^6.1.2"
+ get-port-please "^3.1.1"
+ h3 "^1.8.1"
+ http-shutdown "^1.2.2"
+ jiti "^1.20.0"
+ mlly "^1.4.2"
+ node-forge "^1.3.1"
+ pathe "^1.1.1"
+ std-env "^3.4.3"
+ ufo "^1.3.0"
+ untun "^0.1.2"
+ uqr "^0.1.2"
+
listr2@^3.8.3:
version "3.14.0"
resolved "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz"
@@ -7903,11 +8451,21 @@ lodash.debounce@^4.0.8:
resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz"
integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==
+lodash.defaults@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
+ integrity sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==
+
lodash.includes@^4.3.0:
version "4.3.0"
resolved "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz"
integrity sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==
+lodash.isarguments@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
+ integrity sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==
+
lodash.isboolean@^3.0.3:
version "3.0.3"
resolved "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz"
@@ -8007,6 +8565,11 @@ lowlight@^2.0.0:
fault "^2.0.0"
highlight.js "~11.6.0"
+lru-cache@^10.0.0:
+ version "10.1.0"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.1.0.tgz#2098d41c2dc56500e6c88584aa656c84de7d0484"
+ integrity sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==
+
lru-cache@^6.0.0:
version "6.0.0"
resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz"
@@ -8333,6 +8896,11 @@ mermaid@^10.1.0:
uuid "^9.0.0"
web-worker "^1.2.0"
+micro-memoize@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/micro-memoize/-/micro-memoize-4.1.2.tgz#ce719c1ba1e41592f1cd91c64c5f41dcbf135f36"
+ integrity sha512-+HzcV2H+rbSJzApgkj0NdTakkC+bnyeiUxgT6/m7mjcz1CmM22KYFKp+EVj1sWe4UYcnriJr5uqHQD/gMHLD+g==
+
micromark-core-commonmark@^1.0.0, micromark-core-commonmark@^1.0.1:
version "1.0.6"
resolved "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz"
@@ -8706,6 +9274,14 @@ micromatch@^4.0.2, micromatch@^4.0.4:
braces "^3.0.1"
picomatch "^2.2.3"
+micromatch@^4.0.5:
+ version "4.0.5"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
+ integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
+ dependencies:
+ braces "^3.0.2"
+ picomatch "^2.3.1"
+
mime-db@1.52.0:
version "1.52.0"
resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz"
@@ -8718,6 +9294,11 @@ mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.19:
dependencies:
mime-db "1.52.0"
+mime@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7"
+ integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==
+
mimic-fn@^1.0.0:
version "1.2.0"
resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz"
@@ -8774,12 +9355,35 @@ mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3:
resolved "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz"
integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
+mkdirp@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-3.0.1.tgz#e44e4c5607fb279c168241713cc6e0fea9adcb50"
+ integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==
+
+mlly@^1.2.0, mlly@^1.4.2:
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.4.2.tgz#7cf406aa319ff6563d25da6b36610a93f2a8007e"
+ integrity sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==
+ dependencies:
+ acorn "^8.10.0"
+ pathe "^1.1.1"
+ pkg-types "^1.0.3"
+ ufo "^1.3.0"
+
modify-values@^1.0.0:
version "1.0.1"
resolved "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz"
integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==
-mri@^1.1.0:
+moize@^6.1.0:
+ version "6.1.6"
+ resolved "https://registry.yarnpkg.com/moize/-/moize-6.1.6.tgz#ac2e723e74b951875fe2c0c3433405c2b098c3e6"
+ integrity sha512-vSKdIUO61iCmTqhdoIDrqyrtp87nWZUmBPniNjO0fX49wEYmyDO4lvlnFXiGcaH1JLE/s/9HbiK4LSHsbiUY6Q==
+ dependencies:
+ fast-equals "^3.0.1"
+ micro-memoize "^4.1.2"
+
+mri@^1.1.0, mri@^1.2.0:
version "1.2.0"
resolved "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz"
integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==
@@ -8794,6 +9398,11 @@ ms@2.1.2, ms@^2.1.1:
resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+murmurhash@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/murmurhash/-/murmurhash-2.0.1.tgz#4097720e08cf978872194ad84ea5be2dec9b610f"
+ integrity sha512-5vQEh3y+DG/lMPM0mCGPDnyV8chYg/g7rl6v3Gd8WMF9S429ox3Xk8qrk174kWhG767KQMqqxLD1WnGd77hiew==
+
mustache@^4.2.0:
version "4.2.0"
resolved "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz"
@@ -8814,6 +9423,11 @@ napi-build-utils@^1.0.1:
resolved "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz"
integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==
+napi-wasm@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/napi-wasm/-/napi-wasm-1.1.0.tgz#bbe617823765ae9c1bc12ff5942370eae7b2ba4e"
+ integrity sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg==
+
natural-compare@^1.4.0:
version "1.4.0"
resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"
@@ -8908,6 +9522,16 @@ node-addon-api@^5.0.0:
resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.0.0.tgz"
integrity sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==
+node-addon-api@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76"
+ integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==
+
+node-addon-api@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.0.0.tgz#8136add2f510997b3b94814f4af1cce0b0e3962e"
+ integrity sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==
+
node-cache@5.1.2:
version "5.1.2"
resolved "https://registry.npmjs.org/node-cache/-/node-cache-5.1.2.tgz"
@@ -8927,6 +9551,11 @@ node-fetch-h2@^2.3.0:
dependencies:
http2-client "^1.2.5"
+node-fetch-native@^1.2.0, node-fetch-native@^1.4.0, node-fetch-native@^1.6.1:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.6.1.tgz#f95c74917d3cebc794cdae0cd2a9c7594aad0cb4"
+ integrity sha512-bW9T/uJDPAJB2YNYEpWzE54U5O3MQidXsOyTfnbKYtTtFexRvGzb1waphBN4ZwP6EcIvYYEOwW0b72BpAqydTw==
+
node-fetch@2.6.7, node-fetch@^2.6.7:
version "2.6.7"
resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz"
@@ -8934,7 +9563,7 @@ node-fetch@2.6.7, node-fetch@^2.6.7:
dependencies:
whatwg-url "^5.0.0"
-node-fetch@^2.0.0, node-fetch@^2.6.9:
+node-fetch@^2.0.0, node-fetch@^2.6.6, node-fetch@^2.6.9:
version "2.7.0"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d"
integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==
@@ -8974,6 +9603,11 @@ node-releases@^2.0.6:
resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz"
integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==
+node-stream-zip@^1.15.0:
+ version "1.15.0"
+ resolved "https://registry.yarnpkg.com/node-stream-zip/-/node-stream-zip-1.15.0.tgz#158adb88ed8004c6c49a396b50a6a5de3bca33ea"
+ integrity sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==
+
non-layered-tidy-tree-layout@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz#57d35d13c356643fc296a55fb11ac15e74da7804"
@@ -8999,7 +9633,7 @@ normalize-package-data@^3.0.0:
semver "^7.3.4"
validate-npm-package-license "^3.0.1"
-normalize-path@^3.0.0:
+normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
@@ -9229,6 +9863,15 @@ octokit@^2.0.7:
"@octokit/plugin-throttling" "^4.0.1"
"@octokit/types" "^8.0.0"
+ofetch@^1.1.1:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/ofetch/-/ofetch-1.3.3.tgz#588cb806a28e5c66c2c47dd8994f9059a036d8c0"
+ integrity sha512-s1ZCMmQWXy4b5K/TW9i/DtiN8Ku+xCiHcjQ6/J/nDdssirrQNOoB165Zu8EqLMA2lln1JUth9a0aW9Ap2ctrUg==
+ dependencies:
+ destr "^2.0.1"
+ node-fetch-native "^1.4.0"
+ ufo "^1.3.0"
+
once@^1.3.0, once@^1.3.1, once@^1.4.0:
version "1.4.0"
resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
@@ -9298,6 +9941,11 @@ ospath@^1.2.2:
resolved "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz"
integrity sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs=
+outdent@^0.8.0:
+ version "0.8.0"
+ resolved "https://registry.yarnpkg.com/outdent/-/outdent-0.8.0.tgz#2ebc3e77bf49912543f1008100ff8e7f44428eb0"
+ integrity sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==
+
p-limit@^1.1.0:
version "1.3.0"
resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz"
@@ -9312,7 +9960,7 @@ p-limit@^2.0.0, p-limit@^2.2.0:
dependencies:
p-try "^2.0.0"
-p-limit@^3.0.2:
+p-limit@^3.0.2, p-limit@^3.1.0:
version "3.1.0"
resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz"
integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
@@ -9467,6 +10115,16 @@ path-type@^4.0.0:
resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz"
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
+pathe@^0.3.0:
+ version "0.3.9"
+ resolved "https://registry.yarnpkg.com/pathe/-/pathe-0.3.9.tgz#4baff768f37f03e3d9341502865fb93116f65191"
+ integrity sha512-6Y6s0vT112P3jD8dGfuS6r+lpa0qqNrLyHPOwvXMnyNTQaYiwgau2DP3aNDsR13xqtGj7rrPo+jFUATpU6/s+g==
+
+pathe@^1.1.0, pathe@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.1.tgz#1dd31d382b974ba69809adc9a7a347e65d84829a"
+ integrity sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==
+
pend@~1.2.0:
version "1.2.0"
resolved "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz"
@@ -9490,7 +10148,7 @@ picocolors@^1.0.0:
resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz"
integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
-picomatch@^2.2.3:
+picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1:
version "2.3.1"
resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
@@ -9522,6 +10180,15 @@ pkg-dir@^3.0.0:
dependencies:
find-up "^3.0.0"
+pkg-types@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.0.3.tgz#988b42ab19254c01614d13f4f65a2cfc7880f868"
+ integrity sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==
+ dependencies:
+ jsonc-parser "^3.2.0"
+ mlly "^1.2.0"
+ pathe "^1.1.0"
+
pkg-up@^3.1.0:
version "3.1.0"
resolved "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz"
@@ -9699,6 +10366,11 @@ queue-microtask@^1.2.2:
resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz"
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+queue-tick@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/queue-tick/-/queue-tick-1.0.1.tgz#f6f07ac82c1fd60f82e098b417a80e52f1f4c142"
+ integrity sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==
+
queue@6.0.2:
version "6.0.2"
resolved "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz"
@@ -9711,6 +10383,11 @@ quick-lru@^4.0.1:
resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz"
integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==
+radix3@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/radix3/-/radix3-1.1.0.tgz#9745df67a49c522e94a33d0a93cf743f104b6e0d"
+ integrity sha512-pNsHDxbGORSvuSScqNJ+3Km6QAVqk8CfsCBIEoDgpqLrkD2f3QM4I7d1ozJJ172OmIcoUcerZaNWqtLkRXTV3A==
+
randombytes@^2.1.0:
version "2.1.0"
resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz"
@@ -9959,6 +10636,18 @@ readable-stream@~2.3.6:
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
+readdirp@~3.6.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
+ integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
+ dependencies:
+ picomatch "^2.2.1"
+
+reading-time@^1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/reading-time/-/reading-time-1.5.0.tgz#d2a7f1b6057cb2e169beaf87113cc3411b5bc5bb"
+ integrity sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==
+
reakit-system@^0.14.3:
version "0.14.5"
resolved "https://registry.npmjs.org/reakit-system/-/reakit-system-0.14.5.tgz"
@@ -9997,6 +10686,18 @@ redent@^3.0.0:
indent-string "^4.0.0"
strip-indent "^3.0.0"
+redis-errors@^1.0.0, redis-errors@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad"
+ integrity sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==
+
+redis-parser@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4"
+ integrity sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==
+ dependencies:
+ redis-errors "^1.0.0"
+
reflect.getprototypeof@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3"
@@ -10043,6 +10744,11 @@ regenerator-transform@^0.15.0:
dependencies:
"@babel/runtime" "^7.8.4"
+regexp-tree@^0.1.24:
+ version "0.1.27"
+ resolved "https://registry.yarnpkg.com/regexp-tree/-/regexp-tree-0.1.27.tgz#2198f0ef54518ffa743fe74d983b56ffd631b6cd"
+ integrity sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==
+
regexp.prototype.flags@^1.4.3:
version "1.4.3"
resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz"
@@ -10429,6 +11135,13 @@ semver@^7.3.7, semver@^7.3.8:
dependencies:
lru-cache "^6.0.0"
+semver@^7.5.4:
+ version "7.5.4"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
+ integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
+ dependencies:
+ lru-cache "^6.0.0"
+
serialize-javascript@^6.0.0:
version "6.0.1"
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c"
@@ -10476,6 +11189,20 @@ sharp@^0.31.2:
tar-fs "^2.1.1"
tunnel-agent "^0.6.0"
+sharp@^0.32.6:
+ version "0.32.6"
+ resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.32.6.tgz#6ad30c0b7cd910df65d5f355f774aa4fce45732a"
+ integrity sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==
+ dependencies:
+ color "^4.2.3"
+ detect-libc "^2.0.2"
+ node-addon-api "^6.1.0"
+ prebuild-install "^7.1.1"
+ semver "^7.5.4"
+ simple-get "^4.0.1"
+ tar-fs "^3.0.4"
+ tunnel-agent "^0.6.0"
+
shebang-command@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz"
@@ -10701,6 +11428,11 @@ stackframe@^1.3.4:
resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz"
integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==
+standard-as-callback@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/standard-as-callback/-/standard-as-callback-2.1.0.tgz#8953fc05359868a77b5b9739a665c5977bb7df45"
+ integrity sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==
+
standard-version@^9.3.2:
version "9.3.2"
resolved "https://registry.npmjs.org/standard-version/-/standard-version-9.3.2.tgz"
@@ -10749,6 +11481,11 @@ static-eval@2.0.2:
dependencies:
escodegen "^1.8.1"
+std-env@^3.4.3:
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.7.0.tgz#c9f7386ced6ecf13360b6c6c55b8aaa4ef7481d2"
+ integrity sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==
+
stream-parser@~0.3.1:
version "0.3.1"
resolved "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz"
@@ -10756,6 +11493,14 @@ stream-parser@~0.3.1:
dependencies:
debug "2"
+streamx@^2.15.0:
+ version "2.15.6"
+ resolved "https://registry.yarnpkg.com/streamx/-/streamx-2.15.6.tgz#28bf36997ebc7bf6c08f9eba958735231b833887"
+ integrity sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==
+ dependencies:
+ fast-fifo "^1.1.0"
+ queue-tick "^1.0.1"
+
string-argv@^0.3.1:
version "0.3.1"
resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz"
@@ -11118,6 +11863,15 @@ tar-fs@^2.0.0, tar-fs@^2.1.1:
pump "^3.0.0"
tar-stream "^2.1.4"
+tar-fs@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-3.0.4.tgz#a21dc60a2d5d9f55e0089ccd78124f1d3771dbbf"
+ integrity sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==
+ dependencies:
+ mkdirp-classic "^0.5.2"
+ pump "^3.0.0"
+ tar-stream "^3.1.5"
+
tar-stream@^2.1.4:
version "2.2.0"
resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz"
@@ -11129,6 +11883,15 @@ tar-stream@^2.1.4:
inherits "^2.0.3"
readable-stream "^3.1.1"
+tar-stream@^3.1.5:
+ version "3.1.6"
+ resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-3.1.6.tgz#6520607b55a06f4a2e2e04db360ba7d338cc5bab"
+ integrity sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==
+ dependencies:
+ b4a "^1.6.4"
+ fast-fifo "^1.2.0"
+ streamx "^2.15.0"
+
terser-webpack-plugin@^5.1.3:
version "5.3.6"
resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz"
@@ -11480,6 +12243,11 @@ typescript@^4.6.2:
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a"
integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
+ufo@^1.0.0, ufo@^1.2.0, ufo@^1.3.0, ufo@^1.3.1, ufo@^1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.3.2.tgz#c7d719d0628a1c80c006d2240e0d169f6e3c0496"
+ integrity sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==
+
uglify-js@^3.1.4:
version "3.15.3"
resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.3.tgz"
@@ -11505,11 +12273,27 @@ unbox-primitive@^1.0.2:
has-symbols "^1.0.3"
which-boxed-primitive "^1.0.2"
+uncrypto@^0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/uncrypto/-/uncrypto-0.1.3.tgz#e1288d609226f2d02d8d69ee861fa20d8348ef2b"
+ integrity sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==
+
underscore@1.12.1:
version "1.12.1"
resolved "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz"
integrity sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==
+unenv@^1.8.0:
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/unenv/-/unenv-1.9.0.tgz#469502ae85be1bd3a6aa60f810972b1a904ca312"
+ integrity sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g==
+ dependencies:
+ consola "^3.2.3"
+ defu "^6.1.3"
+ mime "^3.0.0"
+ node-fetch-native "^1.6.1"
+ pathe "^1.1.1"
+
unicode-canonical-property-names-ecmascript@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz"
@@ -11670,11 +12454,37 @@ universalify@^2.0.0:
resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz"
integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
+unstorage@1.9.0:
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/unstorage/-/unstorage-1.9.0.tgz#0c1977f4e769a48344339ac97ec3f2feea94d43d"
+ integrity sha512-VpD8ZEYc/le8DZCrny3bnqKE4ZjioQxBRnWE+j5sGNvziPjeDlaS1NaFFHzl/kkXaO3r7UaF8MGQrs14+1B4pQ==
+ dependencies:
+ anymatch "^3.1.3"
+ chokidar "^3.5.3"
+ destr "^2.0.1"
+ h3 "^1.7.1"
+ ioredis "^5.3.2"
+ listhen "^1.2.2"
+ lru-cache "^10.0.0"
+ mri "^1.2.0"
+ node-fetch-native "^1.2.0"
+ ofetch "^1.1.1"
+ ufo "^1.2.0"
+
untildify@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz"
integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==
+untun@^0.1.2:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/untun/-/untun-0.1.3.tgz#5d10dee37a3a5737ff03d158be877dae0a0e58a6"
+ integrity sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==
+ dependencies:
+ citty "^0.1.5"
+ consola "^3.2.3"
+ pathe "^1.1.1"
+
update-browserslist-db@^1.0.9:
version "1.0.10"
resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz"
@@ -11683,6 +12493,11 @@ update-browserslist-db@^1.0.9:
escalade "^3.1.1"
picocolors "^1.0.0"
+uqr@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/uqr/-/uqr-0.1.2.tgz#5c6cd5dcff9581f9bb35b982cb89e2c483a41d7d"
+ integrity sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==
+
uri-js@^4.2.2:
version "4.4.1"
resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz"
@@ -11711,6 +12526,11 @@ url@~0.11.0:
punycode "1.3.2"
querystring "0.2.0"
+urlpattern-polyfill@8.0.2:
+ version "8.0.2"
+ resolved "https://registry.yarnpkg.com/urlpattern-polyfill/-/urlpattern-polyfill-8.0.2.tgz#99f096e35eff8bf4b5a2aa7d58a1523d6ebc7ce5"
+ integrity sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==
+
use-yarn@^2.4.0:
version "2.4.0"
resolved "https://registry.npmjs.org/use-yarn/-/use-yarn-2.4.0.tgz"
@@ -12063,6 +12883,14 @@ xmlchars@^2.2.0:
resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz"
integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
+xss@^1.0.14:
+ version "1.0.14"
+ resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.14.tgz#4f3efbde75ad0d82e9921cc3c95e6590dd336694"
+ integrity sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw==
+ dependencies:
+ commander "^2.20.3"
+ cssfilter "0.0.10"
+
xtend@~4.0.1:
version "4.0.2"
resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz"