From ac18724bb87b66ec6774f3b7515774c35eec9950 Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Tue, 12 Nov 2024 22:54:59 -0800 Subject: [PATCH 01/40] start of i18n support --- .../src/components/OAuthButtonStack.astro | 6 +- .../src/components/StaticAuthCheck.astro | 33 + packages/studiocms_auth/src/integration.ts | 8 +- .../src/layouts/AuthLayout.astro | 14 +- .../src/routes/{ => api}/logout.ts | 0 .../studiocms_auth/src/routes/login.astro | 43 +- .../studiocms_auth/src/routes/logout.astro | 33 + .../studiocms_auth/src/routes/signup.astro | 48 +- .../studiocms_auth/src/utils/routeBuilder.ts | 4 +- .../studiocms_core/src/helpers/routemap.ts | 1 + .../src/i18n/LanguageSelector.astro | 103 +++ packages/studiocms_core/src/i18n/index.ts | 151 +++++ .../src/i18n/translations/en-us.json | 43 ++ packages/studiocms_core/src/integration.ts | 2 + packages/studiocms_core/src/stubs/i18n-dts.ts | 107 +++ .../src/utils/coreVirtualModules.ts | 1 + pnpm-lock.yaml | 641 +++++++++++++----- pnpm-workspace.yaml | 4 +- 18 files changed, 1039 insertions(+), 203 deletions(-) create mode 100644 packages/studiocms_auth/src/components/StaticAuthCheck.astro rename packages/studiocms_auth/src/routes/{ => api}/logout.ts (100%) create mode 100644 packages/studiocms_auth/src/routes/logout.astro create mode 100644 packages/studiocms_core/src/i18n/LanguageSelector.astro create mode 100644 packages/studiocms_core/src/i18n/index.ts create mode 100644 packages/studiocms_core/src/i18n/translations/en-us.json create mode 100644 packages/studiocms_core/src/stubs/i18n-dts.ts diff --git a/packages/studiocms_auth/src/components/OAuthButtonStack.astro b/packages/studiocms_auth/src/components/OAuthButtonStack.astro index 731c4f205..bae54cdfc 100644 --- a/packages/studiocms_auth/src/components/OAuthButtonStack.astro +++ b/packages/studiocms_auth/src/components/OAuthButtonStack.astro @@ -1,12 +1,16 @@ --- +import { getLangFromUrl, useTranslations } from 'studiocms:i18n'; import { Divider } from '@studiocms/ui/components'; import OAuthButton from './OAuthButton.astro'; import { providerData, showOAuth } from './oAuthButtonProviders'; +const lang = getLangFromUrl(Astro.url); +const t = useTranslations(lang, '@studiocms/auth:oauth-stack'); + const shouldShowOAuth = showOAuth && providerData.some(({ enabled }) => enabled); --- { shouldShowOAuth && ( - <Divider>or log in using</Divider> + <Divider>{t('or-login-with')}</Divider> <div class="button-stack"> { providerData.map(({enabled, ...props}) => enabled && <OAuthButton {...props} />) diff --git a/packages/studiocms_auth/src/components/StaticAuthCheck.astro b/packages/studiocms_auth/src/components/StaticAuthCheck.astro new file mode 100644 index 000000000..8452ea897 --- /dev/null +++ b/packages/studiocms_auth/src/components/StaticAuthCheck.astro @@ -0,0 +1,33 @@ +--- +import { getUserData } from 'studiocms:auth/lib/user'; +import { StudioCMSRoutes } from 'studiocms:helpers/routemap'; +import { getLangFromUrl, useTranslatedPath } from 'studiocms:i18n'; + +const { isLoggedIn } = await getUserData(Astro); +// Get the language and translations +const referer = Astro.request.headers.get('referer'); + +if (!referer) { + throw new Error('No referer found'); +} + +const lang = getLangFromUrl(new URL(referer)); +const translatePath = useTranslatedPath(lang); +const { + mainLinks: { dashboardIndex }, +} = StudioCMSRoutes; +--- +<div + id="login-check" + style="display: none;" + data-isloggedin={`${isLoggedIn}`} + data-redirectroute={translatePath(dashboardIndex)} + ></div> + +<script is:inline> + const loginCheck = document.getElementById('login-check'); + + if (loginCheck.dataset.isloggedin === 'true') { + window.location.href = loginCheck.dataset.redirectroute; + } +</script> \ No newline at end of file diff --git a/packages/studiocms_auth/src/integration.ts b/packages/studiocms_auth/src/integration.ts index 9d2471ac6..a47d20298 100644 --- a/packages/studiocms_auth/src/integration.ts +++ b/packages/studiocms_auth/src/integration.ts @@ -83,6 +83,7 @@ export default defineIntegration({ }, experimental: { directRenderScript: true, + serverIslands: true, }, vite: { optimizeDeps: { @@ -112,6 +113,11 @@ export default defineIntegration({ entrypoint: resolve('./routes/api/login.ts'), enabled: usernameAndPasswordAPI, }, + { + pattern: 'logout', + entrypoint: resolve('./routes/api/logout.ts'), + enabled: dashboardEnabled && !options.dbStartPage, + }, { pattern: 'register', entrypoint: resolve('./routes/api/register.ts'), @@ -170,7 +176,7 @@ export default defineIntegration({ }, { pattern: 'logout/', - entrypoint: resolve('./routes/logout.ts'), + entrypoint: resolve('./routes/logout.astro'), enabled: dashboardEnabled && !options.dbStartPage, }, { diff --git a/packages/studiocms_auth/src/layouts/AuthLayout.astro b/packages/studiocms_auth/src/layouts/AuthLayout.astro index e378f984b..8d79a6927 100644 --- a/packages/studiocms_auth/src/layouts/AuthLayout.astro +++ b/packages/studiocms_auth/src/layouts/AuthLayout.astro @@ -21,10 +21,11 @@ const { interface Props { title: string; description: string; - lang?: string; + lang: string; + disableScreen?: boolean; } -const { title, description, lang = 'en' } = Astro.props; +const { title, description, lang, disableScreen } = Astro.props; // Get the site config const siteConfig = await db @@ -37,9 +38,10 @@ const siteConfig = await db const loginPageBackground = siteConfig?.loginPageBackground; const loginPageCustomImage = siteConfig?.loginPageCustomImage; -const fallbackImageSrc = loginPageBackground === 'custom' - ? loginPageCustomImage - : validImages.find((x) => x.name !== 'custom' && x.name === loginPageBackground)?.dark; // TODO: Adapt to theme +const fallbackImageSrc = + loginPageBackground === 'custom' + ? loginPageCustomImage + : validImages.find((x) => x.name !== 'custom' && x.name === loginPageBackground)?.dark; // TODO: Adapt to theme --- <!doctype html> <html lang={lang} data-theme="dark"> @@ -87,7 +89,7 @@ const fallbackImageSrc = loginPageBackground === 'custom' <slot /> - <OAuthButtonStack /> + { !disableScreen && <OAuthButtonStack /> } <div class="form-footer"> <slot name="footer" /> diff --git a/packages/studiocms_auth/src/routes/logout.ts b/packages/studiocms_auth/src/routes/api/logout.ts similarity index 100% rename from packages/studiocms_auth/src/routes/logout.ts rename to packages/studiocms_auth/src/routes/api/logout.ts diff --git a/packages/studiocms_auth/src/routes/login.astro b/packages/studiocms_auth/src/routes/login.astro index dee096fe7..4c50d7497 100644 --- a/packages/studiocms_auth/src/routes/login.astro +++ b/packages/studiocms_auth/src/routes/login.astro @@ -1,11 +1,21 @@ --- -import { getUserData } from 'studiocms:auth/lib/user'; import { authEnvCheck } from 'studiocms:auth/utils/authEnvCheck'; import { StudioCMSRoutes } from 'studiocms:helpers/routemap'; +import { getLangFromUrl, staticPaths, useTranslatedPath, useTranslations } from 'studiocms:i18n'; import Config from 'virtual:studiocms/config'; import { Button, Input } from '@studiocms/ui/components'; +import type { GetStaticPaths } from 'astro'; +import StaticAuthCheck from '../components/StaticAuthCheck.astro'; import AuthLayout from '../layouts/AuthLayout.astro'; -import { hashPassword } from '../lib/password'; + +const lang = getLangFromUrl(Astro.url); +const t = useTranslations(lang, '@studiocms/auth:login'); +const tPath = useTranslatedPath(lang); + +export const getStaticPaths = (() => { + const paths = staticPaths(); + return paths; +}) satisfies GetStaticPaths; const { dashboardConfig: { @@ -21,7 +31,6 @@ const { const { authLinks: { loginAPI, signupURL }, - mainLinks: { dashboardIndex }, } = StudioCMSRoutes; const { SHOW_OAUTH } = await authEnvCheck(providers); @@ -29,42 +38,38 @@ const { SHOW_OAUTH } = await authEnvCheck(providers); let paragraph: string; if (usernameAndPassword && SHOW_OAUTH) { - paragraph = 'Enter your username & password or log in using one of the options below.'; + paragraph = t('sub-header-usernamepasswordoauth'); } else if (usernameAndPassword && !SHOW_OAUTH) { - paragraph = 'Enter your username & password.'; + paragraph = t('sub-header-usernamepassword'); } else if (!usernameAndPassword && SHOW_OAUTH) { - paragraph = 'Log in using one of the options below.'; + paragraph = t('sub-header-oauth'); } else { - paragraph = 'No Login provider configured. Please contact your administrator.'; -} - -const user = await getUserData(Astro); - -if (user.isLoggedIn) { - return Astro.redirect(dashboardIndex); + paragraph = t('sub-header-noprovider'); } --- -<AuthLayout title="Login Page" description="Login Page"> +<AuthLayout title={t('title')} description={t('description')} lang={lang}> <div slot="header" class="form-header"> - <h1>Login</h1> + <h1>{t('header')}</h1> <p>{paragraph}</p> </div> { usernameAndPassword && ( <form class="form" id="login-form" method="post" action={loginAPI}> - <Input label="Username" name="username" type="text" /> - <Input label="Password" name="password" type='password' /> + <Input label={t('username-label')} name="username" type="text" /> + <Input label={t('password-label')} name="password" type='password' /> - <Button as="button" type="submit" color='primary' size='md' variant='solid'><span>Log In</span></Button> + <Button as="button" type="submit" color='primary' size='md' variant='solid'><span>{t('login-button')}</span></Button> </form> )} { allowUserRegistration && ( - <p slot="footer">Don't have an account? <a href={signupURL}>Register here!</a></p> + <p slot="footer">{t('allow-registration-noaccount')} <a href={tPath(signupURL)}>{t('allow-registration-register')}</a></p> )} + <StaticAuthCheck server:defer /> + </AuthLayout> <script> diff --git a/packages/studiocms_auth/src/routes/logout.astro b/packages/studiocms_auth/src/routes/logout.astro new file mode 100644 index 000000000..25f5b8dda --- /dev/null +++ b/packages/studiocms_auth/src/routes/logout.astro @@ -0,0 +1,33 @@ +--- +import { StudioCMSRoutes } from 'studiocms:helpers/routemap'; +import { getLangFromUrl, staticPaths, useTranslations } from 'studiocms:i18n'; +import type { GetStaticPaths } from 'astro'; +import AuthLayout from '../layouts/AuthLayout.astro'; + +const lang = getLangFromUrl(Astro.url); +const t = useTranslations(lang, '@studiocms/auth:logout'); + +export const getStaticPaths = (() => { + const paths = staticPaths(); + return paths; +}) satisfies GetStaticPaths; + +const { + authLinks: { logoutAPI }, +} = StudioCMSRoutes; +--- +<AuthLayout title={t('title')} description={t('description')} lang={lang} disableScreen> + +</AuthLayout> + +<div style="display: none;" id="redirect-to-logout" data-redirect={logoutAPI}></div> + +<script> + + const redirectElement = document.getElementById('redirect-to-logout') as HTMLDivElement; + const redirect = redirectElement.getAttribute('data-redirect') as string; + + setTimeout(() => { + window.location.href = redirect; + }, 500); +</script> \ No newline at end of file diff --git a/packages/studiocms_auth/src/routes/signup.astro b/packages/studiocms_auth/src/routes/signup.astro index 227a1000d..f9f0503da 100644 --- a/packages/studiocms_auth/src/routes/signup.astro +++ b/packages/studiocms_auth/src/routes/signup.astro @@ -1,11 +1,22 @@ --- -import { getUserData } from 'studiocms:auth/lib/user'; import { authEnvCheck } from 'studiocms:auth/utils/authEnvCheck'; import { StudioCMSRoutes } from 'studiocms:helpers/routemap'; +import { getLangFromUrl, staticPaths, useTranslatedPath, useTranslations } from 'studiocms:i18n'; import Config from 'virtual:studiocms/config'; import { Button, Input } from '@studiocms/ui/components'; +import type { GetStaticPaths } from 'astro'; +import StaticAuthCheck from '../components/StaticAuthCheck.astro'; import AuthLayout from '../layouts/AuthLayout.astro'; +const lang = getLangFromUrl(Astro.url); +const t = useTranslations(lang, '@studiocms/auth:signup'); +const tPath = useTranslatedPath(lang); + +export const getStaticPaths = (() => { + const paths = staticPaths(); + return paths; +}) satisfies GetStaticPaths; + const { dashboardConfig: { AuthConfig: { @@ -20,7 +31,6 @@ const { const { authLinks: { loginAPI, loginURL }, - mainLinks: { dashboardIndex }, } = StudioCMSRoutes; const { SHOW_OAUTH } = await authEnvCheck(providers); @@ -28,45 +38,41 @@ const { SHOW_OAUTH } = await authEnvCheck(providers); let paragraph: string; if (usernameAndPassword && SHOW_OAUTH) { - paragraph = 'Create an account or log in using one of the options below.'; + paragraph = t('sub-header-usernamepasswordoauth'); } else if (usernameAndPassword && !SHOW_OAUTH) { - paragraph = 'Create an account using the form below.'; + paragraph = t('sub-header-usernamepassword'); } else if (!usernameAndPassword && SHOW_OAUTH) { - paragraph = 'Log in using one of the options below.'; + paragraph = t('sub-header-oauth'); } else { - paragraph = 'No Login provider configured. Please contact your administrator.'; -} - -const user = await getUserData(Astro); - -if (user.isLoggedIn) { - return Astro.redirect(dashboardIndex); + paragraph = t('sub-header-noprovider'); } --- -<AuthLayout title="Signup Page" description="Signup Page"> +<AuthLayout title={t('title')} description={t('description')} lang={lang}> <div slot="header" class="form-header"> - <h1>Sign up</h1> + <h1>{t('header')}</h1> <p>{paragraph}</p> </div> { usernameAndPassword && ( <form class="form" id="signup-form" method="post" action={loginAPI}> - <Input label="Username" name="username" type="text" /> - <Input label="Email" name="email" type="email" /> - <Input label="Display Name" name="displayname" type="text" /> - <Input label="Password" name="password" type="password" /> - <Input label="Confirm Password" name="confirm-password" type="password" /> + <Input label={t('username-label')} name="username" type="text" /> + <Input label={t('email-label')} name="email" type="email" /> + <Input label={t('displayname-label')} name="displayname" type="text" /> + <Input label={t('password-label')} name="password" type="password" /> + <Input label={t('confirm-password-label')} name="confirm-password" type="password" /> - <Button type="submit" as="button" type="submit" color='primary' variant='solid'>Create Account</Button> + <Button type="submit" as="button" type="submit" color='primary' variant='solid'>{t('create-account-button')}</Button> </form> )} { allowUserRegistration && ( - <p slot="footer">Already have an account? <a href={loginURL}>Sign in!</a></p> + <p slot="footer">{t('allow-login-haveaccount')} <a href={tPath(loginURL)}>{t('allow-login-login')}</a></p> )} + <StaticAuthCheck server:defer /> + </AuthLayout> <script> diff --git a/packages/studiocms_auth/src/utils/routeBuilder.ts b/packages/studiocms_auth/src/utils/routeBuilder.ts index 3bb12a4c7..96387f314 100644 --- a/packages/studiocms_auth/src/utils/routeBuilder.ts +++ b/packages/studiocms_auth/src/utils/routeBuilder.ts @@ -19,7 +19,7 @@ export const makeDashboardRoute = (route: string, options: StudioCMSAuthOptions) ? removeLeadingTrailingSlashes(dashboardRouteOverride) : 'dashboard'; - return `${defaultDashboardRoute}/${route}`; + return `[...locale]/${defaultDashboardRoute}/${route}`; }; export const injectAuthAPIRoutes = defineUtility('astro:config:setup')( @@ -149,7 +149,7 @@ export const injectAuthPageRoutes = defineUtility('astro:config:setup')( injectRoute({ pattern: makeDashboardRoute(pattern, options), entrypoint, - prerender: false, // TODO: Change this to true once hybrid mode is ready + prerender: true, }); } } diff --git a/packages/studiocms_core/src/helpers/routemap.ts b/packages/studiocms_core/src/helpers/routemap.ts index c554990d4..f7f361b62 100644 --- a/packages/studiocms_core/src/helpers/routemap.ts +++ b/packages/studiocms_core/src/helpers/routemap.ts @@ -50,6 +50,7 @@ export const StudioCMSRoutes = { logoutURL: await makeDashboardRoute('logout'), signupURL: await makeDashboardRoute('signup'), loginAPI: await makeStudioCMSAPIRoute('auth/login'), // /studiocms_api/auth/login + logoutAPI: await makeStudioCMSAPIRoute('auth/logout'), // /studiocms_api/auth/logout registerAPI: await makeStudioCMSAPIRoute('auth/register'), // /studiocms_api/auth/register githubIndex: await makeStudioCMSAPIRoute('auth/github'), // /studiocms_api/auth/github githubCallback: await makeStudioCMSAPIRoute('auth/github/callback'), // /studiocms_api/auth/github/callback diff --git a/packages/studiocms_core/src/i18n/LanguageSelector.astro b/packages/studiocms_core/src/i18n/LanguageSelector.astro new file mode 100644 index 000000000..6e090c689 --- /dev/null +++ b/packages/studiocms_core/src/i18n/LanguageSelector.astro @@ -0,0 +1,103 @@ +--- +import { languageSelectorOptions, switchLanguage } from './index'; + +const switcher = switchLanguage(Astro); + +// TODO: Update the language selector's styles to match StudioCMS's new design +--- + +<button + id="language-selector" + class="language-selector mr-2" + > + <svg xmlns="http://www.w3.org/2000/svg" class="w-full h-[80%]" width="1.5rem" height="1.5rem" viewBox="0 0 24 24"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M4 5h7M9 3v2c0 4.418-2.239 8-5 8"/><path d="M5 9c0 2.144 2.952 3.908 6.7 4m.3 7l4-9l4 9m-.9-2h-6.2"/></g></svg> +</button> + +<menu id="language-sector-menu" type="context" class="bg-neutral rounded-md p-2"> + { + //Language Buttons Auto-Generated + languageSelectorOptions.map(({ key, value }) => ( + <a class="btn btn-primary" href={switcher(key)}>{value}</a> + )) + } + <div class="flex flex-row-reverse"> + <button + id="language-sector-menu-cancel" + class="btn btn-sm btn-circle btn-outline text-neutral-content" + type="button"> + <svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor"> + <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" /> + </svg> + </button> + </div> +</menu> + +<style> +.language-selector { + background-color: oklch(var(--b2)); + border-radius: 50%; + border: 0.125rem solid; + border-color: oklch(var(--s)); + box-shadow: 0 0 0.25rem 0.015rem rgba(0, 0, 0, 0.694); + width: 2.5rem; + height: 2.5rem; + cursor: pointer; + display: none; + opacity: 0; + z-index: 99998; + transition: opacity 1s ease; + } + #language-sector-menu { + position: absolute; + display: none; + flex-direction: column; + gap: 0.5rem; + left: -4rem; + top: 3rem; + width: max-content; + z-index: 99999; + } + + #language-sector-menu-cancel { + border-radius: 50%; + } +</style> + +<script> + // Get the Language Selector elements + const LanguageSelector = document.getElementById('language-selector') as HTMLButtonElement; + const LanguageSectorMenuCancel = document.getElementById('language-sector-menu-cancel') as HTMLButtonElement; + const LanguageSectorMenu = document.getElementById('language-sector-menu') as HTMLMenuElement; + + // Show the Language Selector on page load + setTimeout(() => { + LanguageSelector.style.display = 'block'; + setTimeout(() => { + LanguageSelector.style.opacity = "1"; + }, 250); + }, 200); + + // Toggle the Language Selector + function toggleLanguageSelector(element: HTMLMenuElement) { + if ( + !element.style.display + || element.style.display === 'none' + ) { + element.style.display = 'flex'; + } else { + element.style.display = 'none'; + } + } + + // Language Selector Event Listeners + LanguageSelector.addEventListener('click', () => + toggleLanguageSelector(LanguageSectorMenu) + ); + LanguageSelector.addEventListener('contextmenu', (e) => { + e.preventDefault(); + toggleLanguageSelector(LanguageSectorMenu) + }); + LanguageSectorMenuCancel.addEventListener('click', () => + toggleLanguageSelector(LanguageSectorMenu) + ); +</script> \ No newline at end of file diff --git a/packages/studiocms_core/src/i18n/index.ts b/packages/studiocms_core/src/i18n/index.ts new file mode 100644 index 000000000..059379fdc --- /dev/null +++ b/packages/studiocms_core/src/i18n/index.ts @@ -0,0 +1,151 @@ +import type { AstroGlobal } from 'astro'; + +export { default as LanguageSelector } from './LanguageSelector.astro'; + +// --- i18n Config --- // + +// Translations +const uiTranslations = { + 'en-us': await import('./translations/en-us.json'), +} as const; + +type UiTranslations = typeof uiTranslations; +type UiLanguageKeys = keyof UiTranslations; +type UiComponentKeys = keyof UiTranslations['en-us']['translations']; + +// Default language - Must match one of the keys in the `ui` object above +const defaultLang: UiLanguageKeys = 'en-us'; + +// Show the default language in the URL (e.g. /en/page) or hide it (e.g. /page) +// This is false in Astro-feedback so there is no need for a language prefix and page redirect on the main route. +const showDefaultLang: boolean = false; + +// --- i18n Utils --- // + +/** + * Example of how to use this i18n utils on a Static page + * + * @example + * ```ts + * export async function getStaticPaths() { + * const paths = staticPaths(); + * return paths; + * } + * ``` + * + * If the default language is hidden, the paths for the default language will be generated without the language prefix while all extra languages will have the prefix. (e.g. When `showDefaultLang` is false: `/en/page` will be `/page` and spanish will be `/es/page`) + * + * @returns An array of paths for all languages + */ +export const staticPaths = () => { + const paths: { params: { locale: string | undefined } }[] = []; + if (!showDefaultLang) paths.push({ params: { locale: undefined } }); + for (const lang in uiTranslations) { + if (lang === defaultLang && !showDefaultLang) continue; + paths.push({ params: { locale: lang } }); + } + return paths; +}; + +/** + * Extracts the language key from the given URL's pathname. + * + * @param url - The URL object from which to extract the language key. + * @returns The language key if it exists in the `uiTranslations`, otherwise returns the default language key. + */ +export function getLangFromUrl(url: URL) { + const [, lang] = url.pathname.split('/'); + if (lang && lang in uiTranslations) return lang as UiLanguageKeys; + return defaultLang; +} + +/** + * Retrieves a translation function for a given language and component. + * + * @param lang - The language key to use for translations. + * @param comp - The component key to use for translations. + * @returns A function that takes a translation key and returns the corresponding translated string. + */ +export function useTranslations( + lang: UiLanguageKeys, + comp: UiComponentKeys +): (key: string) => string { + return function t(key: string): string { + return ( + // @ts-expect-error - Component key is dynamic depending on the component + uiTranslations[lang].translations[comp][key] || + // @ts-expect-error - Component key is dynamic depending on the component + uiTranslations[defaultLang].translations[comp][key] + ); + }; +} + +/** + * Returns a function that translates a given path based on the provided language. + * + * @param lang - The language key to be used for translation. + * @returns A function that takes a path and an optional language key, and returns the translated path. + * If the language key is not provided, the default language key is used. + * If the language is the default language and `showDefaultLang` is false, the original path is returned. + * Otherwise, the path is prefixed with the language key. + */ +export function useTranslatedPath(lang: UiLanguageKeys): (path: string, l?: string) => string { + return function translatePath(path: string, l: string = lang) { + return !showDefaultLang && l === defaultLang ? path : `/${l}${path}`; + }; +} + +/** + * Generates an array of language selector options from the `uiTranslations` object. + * Each option contains a `key` and a `value` where: + * - `key` is a language key from `UiLanguageKeys`. + * - `value` is the display name of the language. + * + * @returns An array of objects representing language selector options. + */ +export const languageSelectorOptions = Object.keys(uiTranslations).map((key) => { + return { + key: key as UiLanguageKeys, + value: uiTranslations[key as UiLanguageKeys].displayName, + }; +}); + +/** + * Retrieves the current URL path, adjusting for language settings. + * + * This function checks if the URL path includes '/_server-islands'. If it does, + * it extracts the referer URL from the request headers and determines the current + * language from that URL. If the current language is the default language, it returns + * the pathname as is. Otherwise, it replaces the language segment in the pathname with '/'. + * + * If the URL path does not include '/_server-islands', it uses the Astro URL directly + * to determine the current language and adjust the pathname accordingly. + * + * @param {AstroGlobal} Astro - The global Astro object containing URL and request information. + */ +export function getCurrentURLPath(Astro: AstroGlobal): string { + if (Astro.url.pathname.includes('/_server-islands')) { + const path = new URL(Astro.request.headers.get('referer') || ''); + const currentLang = getLangFromUrl(path); + return currentLang === defaultLang + ? path.pathname + : path.pathname.replace(`/${currentLang}/`, '/'); + } + const path = Astro.url; + const currentLang = getLangFromUrl(path); + return currentLang === defaultLang + ? path.pathname + : path.pathname.replace(`/${currentLang}/`, '/'); +} + +/** + * Function to switch the language of the current page. + * + * @param {AstroGlobal} Astro - The global Astro object. + */ +export function switchLanguage(Astro: AstroGlobal): (languageKey: UiLanguageKeys) => string { + return function switcher(languageKey: UiLanguageKeys) { + const translatePath = useTranslatedPath(languageKey); + return translatePath(getCurrentURLPath(Astro)); + }; +} diff --git a/packages/studiocms_core/src/i18n/translations/en-us.json b/packages/studiocms_core/src/i18n/translations/en-us.json new file mode 100644 index 000000000..9c67c59bd --- /dev/null +++ b/packages/studiocms_core/src/i18n/translations/en-us.json @@ -0,0 +1,43 @@ +{ + "displayName": "English (en-US)", + "translations": { + "@studiocms/auth:login": { + "title": "Login Page", + "description": "Login Page", + "header": "Login", + "sub-header-usernamepasswordoauth": "Enter your username & password or log in using one of the options below.", + "sub-header-usernamepassword": "Enter your username & password.", + "sub-header-oauth": "Log in using one of the options below.", + "sub-header-noprovider": "No Login provider configured. Please contact your administrator.", + "username-label": "Username", + "password-label": "Password", + "login-button": "Log In", + "allow-registration-noaccount": "Don't have an account?", + "allow-registration-register": "Register here!" + }, + "@studiocms/auth:signup": { + "title": "Sign Up Page", + "description": "Sign Up Page", + "header": "Sign Up", + "sub-header-usernamepasswordoauth": "Create an account or log in using one of the options below.", + "sub-header-usernamepassword": "Create an account using the form below.", + "sub-header-oauth": "Log in using one of the options below.", + "sub-header-noprovider": "No Login provider configured. Please contact your administrator.", + "username-label": "Username", + "email-label": "Email", + "displayname-label": "Display Name", + "password-label": "Password", + "confirm-password-label": "Confirm Password", + "create-account-button": "Create Account", + "allow-login-haveaccount": "Already have an account?", + "allow-login-login": "Login here!" + }, + "@studiocms/auth:logout": { + "title": "Logout Page", + "description": "Logout Page" + }, + "@studiocms/auth:oauth-stack": { + "or-login-with": "or log in using" + } + } +} diff --git a/packages/studiocms_core/src/integration.ts b/packages/studiocms_core/src/integration.ts index ee9dd0cae..923f72dec 100644 --- a/packages/studiocms_core/src/integration.ts +++ b/packages/studiocms_core/src/integration.ts @@ -5,6 +5,7 @@ import { version } from '../package.json'; import { name } from '../package.json'; import { StudioCMSOptionsSchema as optionsSchema } from './schemas'; import { CoreStrings } from './strings'; +import { i18nDTSOutput } from './stubs/i18n-dts'; import { coreVirtualModuleGeneration } from './utils/coreVirtualModules'; export default defineIntegration({ @@ -49,6 +50,7 @@ export default defineIntegration({ 'astro:config:done': async ({ injectTypes }) => { // Inject the DTS File injectTypes(coreDtsFile); + injectTypes(i18nDTSOutput); }, }, }; diff --git a/packages/studiocms_core/src/stubs/i18n-dts.ts b/packages/studiocms_core/src/stubs/i18n-dts.ts new file mode 100644 index 000000000..34453b284 --- /dev/null +++ b/packages/studiocms_core/src/stubs/i18n-dts.ts @@ -0,0 +1,107 @@ +import DTSBuilder from '@matthiesenxyz/astrodtsbuilder'; +import { createResolver } from 'astro-integration-kit'; + +const { resolve } = createResolver(import.meta.url); + +const i18nDTS = DTSBuilder(); + +i18nDTS.addSingleLineNote( + 'This file is generated by StudioCMS and should not be modified manually.' +); + +i18nDTS.addModule('studiocms:i18n', { + namedExports: [ + { + name: 'staticPaths', + typeDef: `typeof import('${resolve('../i18n/index.ts')}').staticPaths`, + multiLineDescription: [ + 'Example of how to use this i18n utils on a Static page', + '', + '```ts', + 'export async function getStaticPaths() {', + ' const paths = staticPaths();', + ' return paths;', + '}', + '```', + '', + 'If the default language is hidden, the paths for the default language will be generated without the language prefix while all extra languages will have the prefix. (e.g. When `showDefaultLang` is false: `/en/page` will be `/page` and spanish will be `/es/page`)', + '', + '@returns An array of paths for all languages', + ], + }, + { + name: 'getLangFromUrl', + typeDef: `typeof import('${resolve('../i18n/index.ts')}').getLangFromUrl`, + multiLineDescription: [ + "Extracts the language key from the given URL's pathname.", + '', + '@param url - The URL object from which to extract the language key.', + '@returns The language key if it exists in the `uiTranslations`, otherwise returns the default language key.', + ], + }, + { + name: 'useTranslations', + typeDef: `typeof import('${resolve('../i18n/index.ts')}').useTranslations`, + multiLineDescription: [ + 'Retrieves a translation function for a given language and component.', + '', + '@param lang - The language key to use for translations.', + '@param comp - The component key to use for translations.', + '@returns A function that takes a translation key and returns the corresponding translated string.', + ], + }, + { + name: 'useTranslatedPath', + typeDef: `typeof import('${resolve('../i18n/index.ts')}').useTranslatedPath`, + multiLineDescription: [ + 'Returns a function that translates a given path based on the provided language.', + '', + '@param lang - The language key to use for translations.', + '@returns A function that takes a path and an optional language key, and returns the translated path.', + 'If the language key is not provided, the default language key is used.', + 'If the language is the default language and `showDefaultLang` is false, the original path is returned.', + 'Otherwise, the path is prefixed with the language key.', + ], + }, + { + name: 'languageSelectorOptions', + typeDef: `typeof import('${resolve('../i18n/index.ts')}').languageSelectorOptions`, + multiLineDescription: [ + 'Generates an array of language selector options from the `uiTranslations` object.', + 'Each option contains a `key` and a `value` where:', + '- `key` is a language key from `UiLanguageKeys`.', + '- `value` is the display name of the language.', + '', + '@returns An array of objects representing language selector options.', + ], + }, + { + name: 'getCurrentURLPath', + typeDef: `typeof import('${resolve('../i18n/index.ts')}').getCurrentURLPath`, + multiLineDescription: [ + 'Retrieves the current URL path, adjusting for language settings.', + '', + 'This function checks if the URL path includes `/_server-islands`. If it does,', + 'it extracts the referer URL from the request headers and determines the current', + 'language from that URL. If the current language is the default language, it returns', + 'the pathname as is. Otherwise, it replaces the language segment in the pathname with `/`.', + '', + 'If the URL path does not include `/_server-islands`, it uses the Astro URL directly', + 'to determine the current language and adjust the pathname accordingly.', + '', + '@param {AstroGlobal} Astro - The global Astro object containing URL and request information.', + ], + }, + { + name: 'switchLanguage', + typeDef: `typeof import('${resolve('../i18n/index.ts')}').switchLanguage`, + multiLineDescription: [ + 'Function to switch the language of the current page.', + '', + '@param {AstroGlobal} Astro - The global Astro object.', + ], + }, + ], +}); + +export const i18nDTSOutput = i18nDTS.makeAstroInjectedType('i18n.d.ts'); diff --git a/packages/studiocms_core/src/utils/coreVirtualModules.ts b/packages/studiocms_core/src/utils/coreVirtualModules.ts index f4c217c8d..f44d484b1 100644 --- a/packages/studiocms_core/src/utils/coreVirtualModules.ts +++ b/packages/studiocms_core/src/utils/coreVirtualModules.ts @@ -97,6 +97,7 @@ export const coreVirtualModuleGeneration = defineUtility('astro:config:setup')( 'studiocms:helpers/contentHelper': `export * from '${contentHelperResolved}';`, 'studiocms:helpers/headDefaults': `export * from '${headDefaultsResolved}';`, 'studiocms:helpers/routemap': `export * from '${routeMapResolved}';`, + 'studiocms:i18n': `export * from '${resolve('../i18n/index.ts')}'`, }; // Inject the Virtual Imports diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ed25aba40..adc961e90 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,8 +10,8 @@ catalogs: specifier: ^0.9.4 version: 0.9.4 '@astrojs/db': - specifier: ^0.14.2 - version: 0.14.2 + specifier: ^0.14.3 + version: 0.14.3 '@astrojs/markdown-remark': specifier: ^5.2.0 version: 5.2.0 @@ -37,8 +37,8 @@ catalogs: specifier: ^20.14.11 version: 20.14.13 astro: - specifier: ^4.16.6 - version: 4.16.6 + specifier: ^4.16.11 + version: 4.16.11 astro-integration-kit: specifier: ^0.16.1 version: 0.16.1 @@ -677,10 +677,10 @@ importers: dependencies: '@astrojs/db': specifier: 'catalog:' - version: 0.14.2(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1) + version: 0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1) '@astrojs/web-vitals': specifier: 'catalog:' - version: 3.0.0(@astrojs/db@0.14.2(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1)) + version: 3.0.0(@astrojs/db@0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1)) '@inox-tools/runtime-logger': specifier: catalog:studiocms-shared version: 0.3.4(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) @@ -938,13 +938,13 @@ importers: dependencies: '@astrojs/db': specifier: 'catalog:' - version: 0.14.2(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1) + version: 0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1) '@astrojs/node': specifier: 'catalog:' - version: 8.3.4(astro@4.16.6(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)) + version: 8.3.4(astro@4.16.11(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)) '@astrojs/web-vitals': specifier: 'catalog:' - version: 3.0.0(@astrojs/db@0.14.2(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1)) + version: 3.0.0(@astrojs/db@0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1)) '@studiocms/blog': specifier: workspace:* version: link:../../packages/studiocms_blog @@ -953,7 +953,7 @@ importers: version: link:../../packages/studiocms_devapps astro: specifier: 'catalog:' - version: 4.16.6(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) + version: 4.16.11(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) sharp: specifier: 'catalog:' version: 0.33.4 @@ -972,7 +972,7 @@ importers: dependencies: '@astrojs/node': specifier: 'catalog:' - version: 8.3.4(astro@4.16.6(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)) + version: 8.3.4(astro@4.16.11(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)) '@fontsource-variable/onest': specifier: catalog:studiocms-shared version: 5.1.0 @@ -981,7 +981,7 @@ importers: version: link:../../packages/studiocms_ui astro: specifier: 'catalog:' - version: 4.16.6(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) + version: 4.16.11(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) devDependencies: '@types/node': specifier: 'catalog:' @@ -1000,25 +1000,25 @@ importers: version: 0.9.4(typescript@5.6.3) '@astrojs/db': specifier: 'catalog:' - version: 0.14.2(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1) + version: 0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1) '@astrojs/node': specifier: 'catalog:' - version: 8.3.4(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 8.3.4(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@astrojs/react': specifier: 'catalog:' - version: 3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.9(@types/node@22.0.0)) + version: 3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.11(@types/node@22.0.0)) '@astrojs/starlight': specifier: 'catalog:' - version: 0.28.3(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@astrojs/web-vitals': specifier: 'catalog:' - version: 3.0.0(@astrojs/db@0.14.2(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1)) + version: 3.0.0(@astrojs/db@0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1)) '@fontsource-variable/onest': specifier: catalog:studiocms-shared version: 5.1.0 '@lorenzo_lewis/starlight-utils': specifier: catalog:docs - version: 0.2.0(@astrojs/starlight@0.28.3(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)))(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.2.0(@astrojs/starlight@0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)))(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@shikijs/transformers': specifier: catalog:docs version: 1.22.0 @@ -1045,10 +1045,10 @@ importers: version: 3.0.2 astro: specifier: 'catalog:' - version: 4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + version: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) astro-embed: specifier: catalog:docs - version: 0.7.4(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.7.4(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) hast: specifier: catalog:docs version: 1.0.0 @@ -1099,10 +1099,10 @@ importers: version: 0.2.0 starlight-image-zoom: specifier: catalog:docs - version: 0.8.0(@astrojs/starlight@0.28.3(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))) + version: 0.8.0(@astrojs/starlight@0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))) starlight-typedoc: specifier: catalog:docs - version: 0.16.0(@astrojs/starlight@0.28.3(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)))(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))(typedoc-plugin-markdown@4.2.9(typedoc@0.26.10(typescript@5.6.3)))(typedoc@0.26.10(typescript@5.6.3)) + version: 0.16.0(@astrojs/starlight@0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)))(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))(typedoc-plugin-markdown@4.2.9(typedoc@0.26.10(typescript@5.6.3)))(typedoc@0.26.10(typescript@5.6.3)) studiocms: specifier: workspace:* version: link:../../packages/studiocms @@ -1126,7 +1126,7 @@ importers: version: 0.9.4(typescript@5.6.3) '@astrojs/tailwind': specifier: 'catalog:' - version: 5.1.2(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))(tailwindcss@3.4.14) + version: 5.1.2(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))(tailwindcss@3.4.14) '@fontsource-variable/onest': specifier: catalog:studiocms-shared version: 5.1.0 @@ -1141,7 +1141,7 @@ importers: version: 0.5.15(tailwindcss@3.4.14) astro: specifier: 'catalog:' - version: 4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + version: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) astro-icon: specifier: catalog:landing version: 1.1.1 @@ -1231,6 +1231,9 @@ packages: '@astrojs/db@0.14.2': resolution: {integrity: sha512-eMudd6KupdcUr3sN58g5qagpCX5PApFy1zRrfPnOMvE6Ndnx+vQtjOkZPgqQ+5vTJ04GrMwzuqhjRB0waaJVoA==} + '@astrojs/db@0.14.3': + resolution: {integrity: sha512-GL7JvdZfTfelH0MSJcgF2zKnOAhCkzAgQlz2LhKZ0YqgJTk+5/5lMsFQtSynJ/CwRKO2XQjop1pvMl6F9XKCNw==} + '@astrojs/internal-helpers@0.4.1': resolution: {integrity: sha512-bMf9jFihO8YP940uD70SI/RDzIhUHJAolWVcO1v5PUivxGKvfLZTLTVVxEYzGYyPsA3ivdLNqMnL5VgmQySa+g==} @@ -1316,6 +1319,10 @@ packages: resolution: {integrity: sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==} engines: {node: '>=6.9.0'} + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} + '@babel/compat-data@7.25.2': resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==} engines: {node: '>=6.9.0'} @@ -1324,6 +1331,10 @@ packages: resolution: {integrity: sha512-9ickoLz+hcXCeh7jrcin+/SLWm+GkxE2kTvoYyp38p4WkdFXfQJxDFGWp/YHjiKLPx06z2A7W8XKuqbReXDzsw==} engines: {node: '>=6.9.0'} + '@babel/compat-data@7.26.2': + resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==} + engines: {node: '>=6.9.0'} + '@babel/core@7.25.2': resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} engines: {node: '>=6.9.0'} @@ -1336,6 +1347,10 @@ packages: resolution: {integrity: sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg==} engines: {node: '>=6.9.0'} + '@babel/core@7.26.0': + resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} + engines: {node: '>=6.9.0'} + '@babel/generator@7.25.5': resolution: {integrity: sha512-abd43wyLfbWoxC6ahM8xTkqLpGB2iWBVyuKC9/srhFunCd1SDNrV1s72bBpK4hLj8KLzHBBcOblvLQZBNw9r3w==} engines: {node: '>=6.9.0'} @@ -1344,6 +1359,10 @@ packages: resolution: {integrity: sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==} engines: {node: '>=6.9.0'} + '@babel/generator@7.26.2': + resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} + engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.24.7': resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} engines: {node: '>=6.9.0'} @@ -1352,6 +1371,10 @@ packages: resolution: {integrity: sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==} engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.25.9': + resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} + engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.25.2': resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} engines: {node: '>=6.9.0'} @@ -1360,6 +1383,10 @@ packages: resolution: {integrity: sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==} engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.25.9': + resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-create-class-features-plugin@7.25.0': resolution: {integrity: sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==} engines: {node: '>=6.9.0'} @@ -1378,6 +1405,10 @@ packages: resolution: {integrity: sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==} engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.25.9': + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-transforms@7.25.2': resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} engines: {node: '>=6.9.0'} @@ -1390,6 +1421,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-module-transforms@7.26.0': + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-optimise-call-expression@7.24.7': resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} engines: {node: '>=6.9.0'} @@ -1402,6 +1439,10 @@ packages: resolution: {integrity: sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==} engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@7.25.9': + resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} + engines: {node: '>=6.9.0'} + '@babel/helper-replace-supers@7.25.0': resolution: {integrity: sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==} engines: {node: '>=6.9.0'} @@ -1428,6 +1469,10 @@ packages: resolution: {integrity: sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.24.7': resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} @@ -1436,6 +1481,10 @@ packages: resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.24.8': resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} engines: {node: '>=6.9.0'} @@ -1444,6 +1493,10 @@ packages: resolution: {integrity: sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} + engines: {node: '>=6.9.0'} + '@babel/helpers@7.25.0': resolution: {integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==} engines: {node: '>=6.9.0'} @@ -1452,6 +1505,10 @@ packages: resolution: {integrity: sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==} engines: {node: '>=6.9.0'} + '@babel/helpers@7.26.0': + resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} + engines: {node: '>=6.9.0'} + '@babel/highlight@7.24.7': resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} @@ -1475,6 +1532,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.26.2': + resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-syntax-jsx@7.24.7': resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} engines: {node: '>=6.9.0'} @@ -1487,6 +1549,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-jsx@7.25.9': + resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-typescript@7.24.7': resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} engines: {node: '>=6.9.0'} @@ -1517,6 +1585,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx@7.25.9': + resolution: {integrity: sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-typescript@7.25.2': resolution: {integrity: sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==} engines: {node: '>=6.9.0'} @@ -1541,6 +1615,10 @@ packages: resolution: {integrity: sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==} engines: {node: '>=6.9.0'} + '@babel/template@7.25.9': + resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} + engines: {node: '>=6.9.0'} + '@babel/traverse@7.25.4': resolution: {integrity: sha512-VJ4XsrD+nOvlXyLzmLzUs/0qjFS4sK30te5yEFlvbbUNEgKaVb2BHZUpAL+ttLPQAHNrsI3zZisbfha5Cvr8vg==} engines: {node: '>=6.9.0'} @@ -1549,6 +1627,10 @@ packages: resolution: {integrity: sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.25.9': + resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} + engines: {node: '>=6.9.0'} + '@babel/types@7.25.6': resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} engines: {node: '>=6.9.0'} @@ -1561,6 +1643,10 @@ packages: resolution: {integrity: sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==} engines: {node: '>=6.9.0'} + '@babel/types@7.26.0': + resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} + engines: {node: '>=6.9.0'} + '@biomejs/biome@1.9.3': resolution: {integrity: sha512-POjAPz0APAmX33WOQFGQrwLvlu7WLV4CFJMlB12b6ZSg+2q6fYu9kZwLCOA+x83zXfcPd1RpuWOKJW0GbBwLIQ==} engines: {node: '>=14.21.3'} @@ -2627,6 +2713,15 @@ packages: rollup: optional: true + '@rollup/pluginutils@5.1.3': + resolution: {integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/rollup-android-arm-eabi@4.21.0': resolution: {integrity: sha512-WTWD8PfoSAJ+qL87lE7votj3syLavxunWhzCnx3XFxFiI/BA/r3X7MUM8dVrH8rb2r4AiO8jJsr3ZjdaftmnfA==} cpu: [arm] @@ -2713,12 +2808,21 @@ packages: '@shikijs/core@1.22.0': resolution: {integrity: sha512-S8sMe4q71TJAW+qG93s5VaiihujRK6rqDFqBnxqvga/3LvqHEnxqBIOPkt//IdXVtHkQWKu4nOQNk0uBGicU7Q==} + '@shikijs/core@1.22.2': + resolution: {integrity: sha512-bvIQcd8BEeR1yFvOYv6HDiyta2FFVePbzeowf5pPS1avczrPK+cjmaxxh0nx5QzbON7+Sv0sQfQVciO7bN72sg==} + '@shikijs/engine-javascript@1.22.0': resolution: {integrity: sha512-AeEtF4Gcck2dwBqCFUKYfsCq0s+eEbCEbkUuFou53NZ0sTGnJnJ/05KHQFZxpii5HMXbocV9URYVowOP2wH5kw==} + '@shikijs/engine-javascript@1.22.2': + resolution: {integrity: sha512-iOvql09ql6m+3d1vtvP8fLCVCK7BQD1pJFmHIECsujB0V32BJ0Ab6hxk1ewVSMFA58FI0pR2Had9BKZdyQrxTw==} + '@shikijs/engine-oniguruma@1.22.0': resolution: {integrity: sha512-5iBVjhu/DYs1HB0BKsRRFipRrD7rqjxlWTj4F2Pf+nQSPqc3kcyqFFeZXnBMzDf0HdqaFVvhDRAGiYNvyLP+Mw==} + '@shikijs/engine-oniguruma@1.22.2': + resolution: {integrity: sha512-GIZPAGzQOy56mGvWMoZRPggn0dTlBf1gutV5TdceLCZlFNqWmuc7u+CzD0Gd9vQUTgLbrt0KLzz6FNprqYAxlA==} + '@shikijs/transformers@1.14.1': resolution: {integrity: sha512-JJqL8QBVCJh3L61jqqEXgFq1cTycwjcGj7aSmqOEsbxnETM9hRlaB74QuXvY/fVJNjbNt8nvWo0VwAXKvMSLRg==} @@ -2731,6 +2835,9 @@ packages: '@shikijs/types@1.22.0': resolution: {integrity: sha512-Fw/Nr7FGFhlQqHfxzZY8Cwtwk5E9nKDUgeLjZgt3UuhcM3yJR9xj3ZGNravZZok8XmEZMiYkSMTPlPkULB8nww==} + '@shikijs/types@1.22.2': + resolution: {integrity: sha512-NCWDa6LGZqTuzjsGfXOBWfjS/fDIbDdmVDug+7ykVe1IKT4c1gakrvlfFYp5NhAXH/lyqLM8wsAPo5wNy73Feg==} + '@shikijs/vscode-textmate@9.3.0': resolution: {integrity: sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==} @@ -3032,6 +3139,11 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true + ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} @@ -3152,13 +3264,13 @@ packages: '@astrojs/db': optional: true - astro@4.16.2: - resolution: {integrity: sha512-Dfkpyt6sA+nv6LnOJr+7bt+gQF5Qh02yqVgyes4c4SvcPScteq1bLX22/z/XW+VU0vlciJOMiM8GWtcDiF6gUQ==} + astro@4.16.11: + resolution: {integrity: sha512-Pm0ATut4f8kM2OKbSDbatO5Q/f2ynt1dbc5UGQN8I5bFnJvDbJj3R1NE513BOXXv4GQBKJZUshcZEMvlZpA61g==} engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true - astro@4.16.6: - resolution: {integrity: sha512-LMMbjr+4aN26MOyJzTdjM+Y+srpAIkx7IX9IcdF3eHQLGr8PgkioZp+VQExRfioDIyA2HY6ottVg3QccTzJqYA==} + astro@4.16.2: + resolution: {integrity: sha512-Dfkpyt6sA+nv6LnOJr+7bt+gQF5Qh02yqVgyes4c4SvcPScteq1bLX22/z/XW+VU0vlciJOMiM8GWtcDiF6gUQ==} engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true @@ -4851,6 +4963,10 @@ packages: resolution: {integrity: sha512-GQEkNkH/GHOhPFXcqZs3IDahXEQcQxsSjEkK4KvEEST4t7eNzoMjxTzef+EZ+JluDEV+Raoi3WQ2CflnRdSVnQ==} engines: {node: '>=18'} + ora@8.1.1: + resolution: {integrity: sha512-YWielGi1XzG1UTvOaCFaNgEnuhZVMSHYkW/FQ7UX8O26PtlpdM84c0f7wLPlkvx2RfiQmnzd61d/MGxmpQeJPw==} + engines: {node: '>=18'} + os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} @@ -5367,6 +5483,9 @@ packages: shiki@1.22.0: resolution: {integrity: sha512-/t5LlhNs+UOKQCYBtl5ZsH/Vclz73GIqT2yQsCBygr8L/ppTdmpL4w3kPLoZJbMKVWtoG77Ue1feOjZfDxvMkw==} + shiki@1.22.2: + resolution: {integrity: sha512-3IZau0NdGKXhH2bBlUk4w1IHNxPh6A5B2sUpyY+8utLu2j/h1QpFkAaUA1bAMxOWWGtTWcAh531vnS4NJKS/lA==} + signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -5553,6 +5672,9 @@ packages: tinyexec@0.3.0: resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==} + tinyexec@0.3.1: + resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} + tinyglobby@0.2.5: resolution: {integrity: sha512-Dlqgt6h0QkoHttG53/WGADNh9QhcjCAIZMTERAVhdpmIBEejSuLI9ZmGKWzB7tweBjlk30+s/ofi4SLmBeTYhw==} engines: {node: '>=12.0.0'} @@ -5754,8 +5876,8 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vite@5.4.8: - resolution: {integrity: sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==} + vite@5.4.11: + resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -5785,8 +5907,8 @@ packages: terser: optional: true - vite@5.4.9: - resolution: {integrity: sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==} + vite@5.4.8: + resolution: {integrity: sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -6065,6 +6187,11 @@ packages: peerDependencies: zod: ^3.23.3 + zod-to-json-schema@3.23.5: + resolution: {integrity: sha512-5wlSS0bXfF/BrL4jPAbz9da5hDlDptdEppYfe+x4eIJ7jioqKG9uUxOwPzqof09u/XeVdrgFu29lZi+8XNDJtA==} + peerDependencies: + zod: ^3.23.3 + zod-to-ts@1.2.0: resolution: {integrity: sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==} peerDependencies: @@ -6103,38 +6230,38 @@ snapshots: '@antfu/utils@0.7.10': {} - '@astro-community/astro-embed-integration@0.7.2(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': + '@astro-community/astro-embed-integration@0.7.2(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: '@astro-community/astro-embed-link-preview': 0.2.2 - '@astro-community/astro-embed-twitter': 0.5.6(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) - '@astro-community/astro-embed-vimeo': 0.3.10(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) - '@astro-community/astro-embed-youtube': 0.5.5(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + '@astro-community/astro-embed-twitter': 0.5.6(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + '@astro-community/astro-embed-vimeo': 0.3.10(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + '@astro-community/astro-embed-youtube': 0.5.5(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@types/unist': 2.0.10 - astro: 4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) - astro-auto-import: 0.4.2(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro-auto-import: 0.4.2(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) unist-util-select: 4.0.3 '@astro-community/astro-embed-link-preview@0.2.2': dependencies: '@astro-community/astro-embed-utils': 0.1.3 - '@astro-community/astro-embed-twitter@0.5.6(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': + '@astro-community/astro-embed-twitter@0.5.6(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: '@astro-community/astro-embed-utils': 0.1.3 - astro: 4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) '@astro-community/astro-embed-utils@0.1.3': dependencies: linkedom: 0.14.26 - '@astro-community/astro-embed-vimeo@0.3.10(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': + '@astro-community/astro-embed-vimeo@0.3.10(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: '@astro-community/astro-embed-utils': 0.1.3 - astro: 4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) - '@astro-community/astro-embed-youtube@0.5.5(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': + '@astro-community/astro-embed-youtube@0.5.5(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: - astro: 4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) lite-youtube-embed: 0.3.3 '@astrojs/check@0.9.4(typescript@5.6.3)': @@ -6196,6 +6323,52 @@ snapshots: - sqlite3 - utf-8-validate + '@astrojs/db@0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1)': + dependencies: + '@astrojs/studio': 0.1.1 + '@libsql/client': 0.14.0 + async-listen: 3.0.1 + deep-diff: 1.0.2 + drizzle-orm: 0.31.4(@cloudflare/workers-types@4.20240725.0)(@libsql/client@0.14.0)(@types/react@18.3.5)(react@18.3.1) + github-slugger: 2.0.0 + kleur: 4.1.5 + nanoid: 5.0.7 + open: 10.1.0 + ora: 8.1.0 + prompts: 2.4.2 + yargs-parser: 21.1.1 + zod: 3.23.8 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/react' + - '@types/sql.js' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - react + - sql.js + - sqlite3 + - utf-8-validate + '@astrojs/internal-helpers@0.4.1': {} '@astrojs/language-server@2.15.3(typescript@5.6.3)': @@ -6267,12 +6440,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/mdx@3.1.3(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': + '@astrojs/mdx@3.1.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: '@astrojs/markdown-remark': 5.2.0 '@mdx-js/mdx': 3.0.1 acorn: 8.12.1 - astro: 4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) es-module-lexer: 1.5.4 estree-util-visit: 2.0.0 github-slugger: 2.0.0 @@ -6288,17 +6461,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/node@8.3.4(astro@4.16.6(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3))': + '@astrojs/node@8.3.4(astro@4.16.11(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3))': dependencies: - astro: 4.16.6(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.11(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) send: 0.19.1 server-destroy: 1.0.1 transitivePeerDependencies: - supports-color - '@astrojs/node@8.3.4(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': + '@astrojs/node@8.3.4(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: - astro: 4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) send: 0.19.1 server-destroy: 1.0.1 transitivePeerDependencies: @@ -6308,11 +6481,11 @@ snapshots: dependencies: prismjs: 1.29.0 - '@astrojs/react@3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.8(@types/node@22.0.0))': + '@astrojs/react@3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.11(@types/node@22.0.0))': dependencies: '@types/react': 18.3.5 '@types/react-dom': 18.3.0 - '@vitejs/plugin-react': 4.3.1(vite@5.4.8(@types/node@22.0.0)) + '@vitejs/plugin-react': 4.3.1(vite@5.4.11(@types/node@22.0.0)) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) ultrahtml: 1.5.3 @@ -6320,11 +6493,11 @@ snapshots: - supports-color - vite - '@astrojs/react@3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.9(@types/node@22.0.0))': + '@astrojs/react@3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.8(@types/node@22.0.0))': dependencies: '@types/react': 18.3.5 '@types/react-dom': 18.3.0 - '@vitejs/plugin-react': 4.3.1(vite@5.4.9(@types/node@22.0.0)) + '@vitejs/plugin-react': 4.3.1(vite@5.4.8(@types/node@22.0.0)) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) ultrahtml: 1.5.3 @@ -6343,15 +6516,15 @@ snapshots: stream-replace-string: 2.0.0 zod: 3.23.8 - '@astrojs/starlight@0.28.3(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': + '@astrojs/starlight@0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: - '@astrojs/mdx': 3.1.3(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + '@astrojs/mdx': 3.1.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@astrojs/sitemap': 3.1.6 '@pagefind/default-ui': 1.1.0 '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - astro: 4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) - astro-expressive-code: 0.35.6(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro-expressive-code: 0.35.6(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) bcp-47: 2.1.0 hast-util-from-html: 2.0.3 hast-util-select: 6.0.3 @@ -6377,9 +6550,9 @@ snapshots: kleur: 4.1.5 ora: 8.1.0 - '@astrojs/tailwind@5.1.2(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))(tailwindcss@3.4.14)': + '@astrojs/tailwind@5.1.2(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))(tailwindcss@3.4.14)': dependencies: - astro: 4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) autoprefixer: 10.4.20(postcss@8.4.47) postcss: 8.4.47 postcss-load-config: 4.0.2(postcss@8.4.47) @@ -6399,9 +6572,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/web-vitals@3.0.0(@astrojs/db@0.14.2(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1))': + '@astrojs/web-vitals@3.0.0(@astrojs/db@0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1))': dependencies: - '@astrojs/db': 0.14.2(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1) + '@astrojs/db': 0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1) web-vitals: 4.2.3 '@astrojs/yaml2ts@0.2.1': @@ -6418,10 +6591,18 @@ snapshots: '@babel/highlight': 7.25.7 picocolors: 1.1.0 + '@babel/code-frame@7.26.2': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.0 + '@babel/compat-data@7.25.2': {} '@babel/compat-data@7.25.7': {} + '@babel/compat-data@7.26.2': {} + '@babel/core@7.25.2': dependencies: '@ampproject/remapping': 2.3.0 @@ -6482,6 +6663,26 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/core@7.26.0': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helpers': 7.26.0 + '@babel/parser': 7.26.2 + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + convert-source-map: 2.0.0 + debug: 4.3.7 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/generator@7.25.5': dependencies: '@babel/types': 7.25.6 @@ -6496,6 +6697,14 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.0.2 + '@babel/generator@7.26.2': + dependencies: + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.0.2 + '@babel/helper-annotate-as-pure@7.24.7': dependencies: '@babel/types': 7.25.6 @@ -6504,6 +6713,10 @@ snapshots: dependencies: '@babel/types': 7.25.7 + '@babel/helper-annotate-as-pure@7.25.9': + dependencies: + '@babel/types': 7.26.0 + '@babel/helper-compilation-targets@7.25.2': dependencies: '@babel/compat-data': 7.25.2 @@ -6520,6 +6733,14 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 + '@babel/helper-compilation-targets@7.25.9': + dependencies: + '@babel/compat-data': 7.26.2 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.0 + lru-cache: 5.1.1 + semver: 6.3.1 + '@babel/helper-create-class-features-plugin@7.25.0(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 @@ -6554,6 +6775,13 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-imports@7.25.9': + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 @@ -6584,6 +6812,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + '@babel/helper-optimise-call-expression@7.24.7': dependencies: '@babel/types': 7.25.6 @@ -6592,6 +6829,8 @@ snapshots: '@babel/helper-plugin-utils@7.25.7': {} + '@babel/helper-plugin-utils@7.25.9': {} + '@babel/helper-replace-supers@7.25.0(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 @@ -6626,14 +6865,20 @@ snapshots: '@babel/helper-string-parser@7.25.7': {} + '@babel/helper-string-parser@7.25.9': {} + '@babel/helper-validator-identifier@7.24.7': {} '@babel/helper-validator-identifier@7.25.7': {} + '@babel/helper-validator-identifier@7.25.9': {} + '@babel/helper-validator-option@7.24.8': {} '@babel/helper-validator-option@7.25.7': {} + '@babel/helper-validator-option@7.25.9': {} + '@babel/helpers@7.25.0': dependencies: '@babel/template': 7.25.0 @@ -6644,6 +6889,11 @@ snapshots: '@babel/template': 7.25.7 '@babel/types': 7.25.7 + '@babel/helpers@7.26.0': + dependencies: + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 + '@babel/highlight@7.24.7': dependencies: '@babel/helper-validator-identifier': 7.24.7 @@ -6670,6 +6920,10 @@ snapshots: dependencies: '@babel/types': 7.25.8 + '@babel/parser@7.26.2': + dependencies: + '@babel/types': 7.26.0 + '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 @@ -6680,10 +6934,10 @@ snapshots: '@babel/core': 7.25.7 '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-jsx@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.25.2)': dependencies: @@ -6720,14 +6974,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-jsx@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-annotate-as-pure': 7.25.7 - '@babel/helper-module-imports': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-jsx': 7.25.7(@babel/core@7.25.8) - '@babel/types': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color @@ -6769,6 +7023,12 @@ snapshots: '@babel/parser': 7.25.7 '@babel/types': 7.25.7 + '@babel/template@7.25.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 + '@babel/traverse@7.25.4': dependencies: '@babel/code-frame': 7.24.7 @@ -6793,6 +7053,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/traverse@7.25.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 + debug: 4.3.7 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + '@babel/types@7.25.6': dependencies: '@babel/helper-string-parser': 7.24.8 @@ -6811,6 +7083,11 @@ snapshots: '@babel/helper-validator-identifier': 7.25.7 to-fast-properties: 2.0.0 + '@babel/types@7.26.0': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@biomejs/biome@1.9.3': optionalDependencies: '@biomejs/cli-darwin-arm64': 1.9.3 @@ -7515,11 +7792,11 @@ snapshots: dependencies: '@lit-labs/ssr-dom-shim': 1.2.0 - '@lorenzo_lewis/starlight-utils@0.2.0(@astrojs/starlight@0.28.3(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)))(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': + '@lorenzo_lewis/starlight-utils@0.2.0(@astrojs/starlight@0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)))(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: - '@astrojs/starlight': 0.28.3(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) - astro: 4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) - astro-integration-kit: 0.16.1(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + '@astrojs/starlight': 0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro-integration-kit: 0.16.1(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@manypkg/find-root@1.1.0': dependencies: @@ -7806,6 +8083,14 @@ snapshots: optionalDependencies: rollup: 4.21.0 + '@rollup/pluginutils@5.1.3(rollup@4.21.0)': + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 4.0.2 + optionalDependencies: + rollup: 4.21.0 + '@rollup/rollup-android-arm-eabi@4.21.0': optional: true @@ -7867,17 +8152,37 @@ snapshots: '@types/hast': 3.0.4 hast-util-to-html: 9.0.3 + '@shikijs/core@1.22.2': + dependencies: + '@shikijs/engine-javascript': 1.22.2 + '@shikijs/engine-oniguruma': 1.22.2 + '@shikijs/types': 1.22.2 + '@shikijs/vscode-textmate': 9.3.0 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.3 + '@shikijs/engine-javascript@1.22.0': dependencies: '@shikijs/types': 1.22.0 '@shikijs/vscode-textmate': 9.3.0 oniguruma-to-js: 0.4.3 + '@shikijs/engine-javascript@1.22.2': + dependencies: + '@shikijs/types': 1.22.2 + '@shikijs/vscode-textmate': 9.3.0 + oniguruma-to-js: 0.4.3 + '@shikijs/engine-oniguruma@1.22.0': dependencies: '@shikijs/types': 1.22.0 '@shikijs/vscode-textmate': 9.3.0 + '@shikijs/engine-oniguruma@1.22.2': + dependencies: + '@shikijs/types': 1.22.2 + '@shikijs/vscode-textmate': 9.3.0 + '@shikijs/transformers@1.14.1': dependencies: shiki: 1.14.1 @@ -7900,6 +8205,11 @@ snapshots: '@shikijs/vscode-textmate': 9.3.0 '@types/hast': 3.0.4 + '@shikijs/types@1.22.2': + dependencies: + '@shikijs/vscode-textmate': 9.3.0 + '@types/hast': 3.0.4 + '@shikijs/vscode-textmate@9.3.0': {} '@shoelace-style/animations@1.1.0': {} @@ -8259,25 +8569,25 @@ snapshots: - rollup - supports-color - '@vitejs/plugin-react@4.3.1(vite@5.4.8(@types/node@22.0.0))': + '@vitejs/plugin-react@4.3.1(vite@5.4.11(@types/node@22.0.0))': dependencies: '@babel/core': 7.25.8 '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.8) '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.8) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.4.8(@types/node@22.0.0) + vite: 5.4.11(@types/node@22.0.0) transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@4.3.1(vite@5.4.9(@types/node@22.0.0))': + '@vitejs/plugin-react@4.3.1(vite@5.4.8(@types/node@22.0.0))': dependencies: '@babel/core': 7.25.8 '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.8) '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.8) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.4.9(@types/node@22.0.0) + vite: 5.4.8(@types/node@22.0.0) transitivePeerDependencies: - supports-color @@ -8339,6 +8649,8 @@ snapshots: acorn@8.12.1: {} + acorn@8.14.0: {} + ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 @@ -8399,24 +8711,24 @@ snapshots: astring@1.8.6: {} - astro-auto-import@0.4.2(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): + astro-auto-import@0.4.2(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): dependencies: '@types/node': 18.19.42 acorn: 8.12.1 - astro: 4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) - astro-embed@0.7.4(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): + astro-embed@0.7.4(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): dependencies: - '@astro-community/astro-embed-integration': 0.7.2(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + '@astro-community/astro-embed-integration': 0.7.2(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@astro-community/astro-embed-link-preview': 0.2.2 - '@astro-community/astro-embed-twitter': 0.5.6(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) - '@astro-community/astro-embed-vimeo': 0.3.10(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) - '@astro-community/astro-embed-youtube': 0.5.5(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) - astro: 4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + '@astro-community/astro-embed-twitter': 0.5.6(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + '@astro-community/astro-embed-vimeo': 0.3.10(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + '@astro-community/astro-embed-youtube': 0.5.5(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) - astro-expressive-code@0.35.6(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): + astro-expressive-code@0.35.6(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): dependencies: - astro: 4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) rehype-expressive-code: 0.35.6 astro-icon@1.1.1: @@ -8434,15 +8746,15 @@ snapshots: pathe: 1.1.2 recast: 0.23.9 - astro-integration-kit@0.16.1(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): + astro-integration-kit@0.16.1(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): dependencies: - astro: 4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) pathe: 1.1.2 recast: 0.23.9 - astro-integration-kit@0.16.1(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): + astro-integration-kit@0.16.1(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): dependencies: - astro: 4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) pathe: 1.1.2 recast: 0.23.9 @@ -8464,20 +8776,20 @@ snapshots: callsites: 4.2.0 fast-glob: 3.3.2 - astro@4.16.2(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3): + astro@4.16.11(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3): dependencies: '@astrojs/compiler': 2.10.3 '@astrojs/internal-helpers': 0.4.1 '@astrojs/markdown-remark': 5.3.0 '@astrojs/telemetry': 3.1.0 - '@babel/core': 7.25.7 - '@babel/plugin-transform-react-jsx': 7.25.7(@babel/core@7.25.7) - '@babel/types': 7.25.7 + '@babel/core': 7.26.0 + '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/types': 7.26.0 '@oslojs/encoding': 1.1.0 - '@rollup/pluginutils': 5.1.2(rollup@4.21.0) + '@rollup/pluginutils': 5.1.3(rollup@4.21.0) '@types/babel__core': 7.20.5 '@types/cookie': 0.6.0 - acorn: 8.12.1 + acorn: 8.14.0 aria-query: 5.3.2 axobject-query: 4.1.0 boxen: 8.0.1 @@ -8503,30 +8815,30 @@ snapshots: http-cache-semantics: 4.1.1 js-yaml: 4.1.0 kleur: 4.1.5 - magic-string: 0.30.11 + magic-string: 0.30.12 magicast: 0.3.5 micromatch: 4.0.8 mrmime: 2.0.0 neotraverse: 0.6.18 - ora: 8.1.0 + ora: 8.1.1 p-limit: 6.1.0 p-queue: 8.0.1 preferred-pm: 4.0.0 prompts: 2.4.2 rehype: 13.0.2 semver: 7.6.3 - shiki: 1.22.0 - tinyexec: 0.3.0 - tsconfck: 3.1.3(typescript@5.6.3) + shiki: 1.22.2 + tinyexec: 0.3.1 + tsconfck: 3.1.4(typescript@5.6.3) unist-util-visit: 5.0.0 vfile: 6.0.3 - vite: 5.4.8(@types/node@20.14.13) - vitefu: 1.0.2(vite@5.4.8(@types/node@20.14.13)) + vite: 5.4.11(@types/node@20.14.13) + vitefu: 1.0.3(vite@5.4.11(@types/node@20.14.13)) which-pm: 3.0.0 xxhash-wasm: 1.0.2 yargs-parser: 21.1.1 zod: 3.23.8 - zod-to-json-schema: 3.23.3(zod@3.23.8) + zod-to-json-schema: 3.23.5(zod@3.23.8) zod-to-ts: 1.2.0(typescript@5.6.3)(zod@3.23.8) optionalDependencies: sharp: 0.33.5 @@ -8543,20 +8855,20 @@ snapshots: - terser - typescript - astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3): + astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3): dependencies: '@astrojs/compiler': 2.10.3 '@astrojs/internal-helpers': 0.4.1 '@astrojs/markdown-remark': 5.3.0 '@astrojs/telemetry': 3.1.0 - '@babel/core': 7.25.7 - '@babel/plugin-transform-react-jsx': 7.25.7(@babel/core@7.25.7) - '@babel/types': 7.25.7 + '@babel/core': 7.26.0 + '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/types': 7.26.0 '@oslojs/encoding': 1.1.0 - '@rollup/pluginutils': 5.1.2(rollup@4.21.0) + '@rollup/pluginutils': 5.1.3(rollup@4.21.0) '@types/babel__core': 7.20.5 '@types/cookie': 0.6.0 - acorn: 8.12.1 + acorn: 8.14.0 aria-query: 5.3.2 axobject-query: 4.1.0 boxen: 8.0.1 @@ -8582,30 +8894,30 @@ snapshots: http-cache-semantics: 4.1.1 js-yaml: 4.1.0 kleur: 4.1.5 - magic-string: 0.30.11 + magic-string: 0.30.12 magicast: 0.3.5 micromatch: 4.0.8 mrmime: 2.0.0 neotraverse: 0.6.18 - ora: 8.1.0 + ora: 8.1.1 p-limit: 6.1.0 p-queue: 8.0.1 preferred-pm: 4.0.0 prompts: 2.4.2 rehype: 13.0.2 semver: 7.6.3 - shiki: 1.22.0 - tinyexec: 0.3.0 - tsconfck: 3.1.3(typescript@5.6.3) + shiki: 1.22.2 + tinyexec: 0.3.1 + tsconfck: 3.1.4(typescript@5.6.3) unist-util-visit: 5.0.0 vfile: 6.0.3 - vite: 5.4.8(@types/node@22.0.0) - vitefu: 1.0.2(vite@5.4.8(@types/node@22.0.0)) + vite: 5.4.11(@types/node@22.0.0) + vitefu: 1.0.3(vite@5.4.11(@types/node@22.0.0)) which-pm: 3.0.0 xxhash-wasm: 1.0.2 yargs-parser: 21.1.1 zod: 3.23.8 - zod-to-json-schema: 3.23.3(zod@3.23.8) + zod-to-json-schema: 3.23.5(zod@3.23.8) zod-to-ts: 1.2.0(typescript@5.6.3)(zod@3.23.8) optionalDependencies: sharp: 0.33.5 @@ -8622,15 +8934,15 @@ snapshots: - terser - typescript - astro@4.16.6(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3): + astro@4.16.2(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3): dependencies: '@astrojs/compiler': 2.10.3 '@astrojs/internal-helpers': 0.4.1 '@astrojs/markdown-remark': 5.3.0 '@astrojs/telemetry': 3.1.0 - '@babel/core': 7.25.8 - '@babel/plugin-transform-react-jsx': 7.25.7(@babel/core@7.25.8) - '@babel/types': 7.25.8 + '@babel/core': 7.25.7 + '@babel/plugin-transform-react-jsx': 7.25.7(@babel/core@7.25.7) + '@babel/types': 7.25.7 '@oslojs/encoding': 1.1.0 '@rollup/pluginutils': 5.1.2(rollup@4.21.0) '@types/babel__core': 7.20.5 @@ -8661,7 +8973,7 @@ snapshots: http-cache-semantics: 4.1.1 js-yaml: 4.1.0 kleur: 4.1.5 - magic-string: 0.30.12 + magic-string: 0.30.11 magicast: 0.3.5 micromatch: 4.0.8 mrmime: 2.0.0 @@ -8675,11 +8987,11 @@ snapshots: semver: 7.6.3 shiki: 1.22.0 tinyexec: 0.3.0 - tsconfck: 3.1.4(typescript@5.6.3) + tsconfck: 3.1.3(typescript@5.6.3) unist-util-visit: 5.0.0 vfile: 6.0.3 - vite: 5.4.9(@types/node@20.14.13) - vitefu: 1.0.3(vite@5.4.9(@types/node@20.14.13)) + vite: 5.4.8(@types/node@20.14.13) + vitefu: 1.0.2(vite@5.4.8(@types/node@20.14.13)) which-pm: 3.0.0 xxhash-wasm: 1.0.2 yargs-parser: 21.1.1 @@ -8701,15 +9013,15 @@ snapshots: - terser - typescript - astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3): + astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3): dependencies: '@astrojs/compiler': 2.10.3 '@astrojs/internal-helpers': 0.4.1 '@astrojs/markdown-remark': 5.3.0 '@astrojs/telemetry': 3.1.0 - '@babel/core': 7.25.8 - '@babel/plugin-transform-react-jsx': 7.25.7(@babel/core@7.25.8) - '@babel/types': 7.25.8 + '@babel/core': 7.25.7 + '@babel/plugin-transform-react-jsx': 7.25.7(@babel/core@7.25.7) + '@babel/types': 7.25.7 '@oslojs/encoding': 1.1.0 '@rollup/pluginutils': 5.1.2(rollup@4.21.0) '@types/babel__core': 7.20.5 @@ -8740,7 +9052,7 @@ snapshots: http-cache-semantics: 4.1.1 js-yaml: 4.1.0 kleur: 4.1.5 - magic-string: 0.30.12 + magic-string: 0.30.11 magicast: 0.3.5 micromatch: 4.0.8 mrmime: 2.0.0 @@ -8754,11 +9066,11 @@ snapshots: semver: 7.6.3 shiki: 1.22.0 tinyexec: 0.3.0 - tsconfck: 3.1.4(typescript@5.6.3) + tsconfck: 3.1.3(typescript@5.6.3) unist-util-visit: 5.0.0 vfile: 6.0.3 - vite: 5.4.9(@types/node@22.0.0) - vitefu: 1.0.3(vite@5.4.9(@types/node@22.0.0)) + vite: 5.4.8(@types/node@22.0.0) + vitefu: 1.0.2(vite@5.4.8(@types/node@22.0.0)) which-pm: 3.0.0 xxhash-wasm: 1.0.2 yargs-parser: 21.1.1 @@ -10777,6 +11089,18 @@ snapshots: string-width: 7.2.0 strip-ansi: 7.1.0 + ora@8.1.1: + dependencies: + chalk: 5.3.0 + cli-cursor: 5.0.0 + cli-spinners: 2.9.2 + is-interactive: 2.0.0 + is-unicode-supported: 2.0.0 + log-symbols: 6.0.0 + stdin-discarder: 0.2.2 + string-width: 7.2.0 + strip-ansi: 7.1.0 + os-tmpdir@1.0.2: {} outdent@0.5.0: {} @@ -11465,6 +11789,15 @@ snapshots: '@shikijs/vscode-textmate': 9.3.0 '@types/hast': 3.0.4 + shiki@1.22.2: + dependencies: + '@shikijs/core': 1.22.2 + '@shikijs/engine-javascript': 1.22.2 + '@shikijs/engine-oniguruma': 1.22.2 + '@shikijs/types': 1.22.2 + '@shikijs/vscode-textmate': 9.3.0 + '@types/hast': 3.0.4 + signal-exit@3.0.7: {} signal-exit@4.1.0: {} @@ -11507,17 +11840,17 @@ snapshots: sprintf-js@1.0.3: {} - starlight-image-zoom@0.8.0(@astrojs/starlight@0.28.3(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))): + starlight-image-zoom@0.8.0(@astrojs/starlight@0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))): dependencies: - '@astrojs/starlight': 0.28.3(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + '@astrojs/starlight': 0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) rehype-raw: 7.0.0 unist-util-visit: 5.0.0 unist-util-visit-parents: 6.0.1 - starlight-typedoc@0.16.0(@astrojs/starlight@0.28.3(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)))(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))(typedoc-plugin-markdown@4.2.9(typedoc@0.26.10(typescript@5.6.3)))(typedoc@0.26.10(typescript@5.6.3)): + starlight-typedoc@0.16.0(@astrojs/starlight@0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)))(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))(typedoc-plugin-markdown@4.2.9(typedoc@0.26.10(typescript@5.6.3)))(typedoc@0.26.10(typescript@5.6.3)): dependencies: - '@astrojs/starlight': 0.28.3(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) - astro: 4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + '@astrojs/starlight': 0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) github-slugger: 2.0.0 typedoc: 0.26.10(typescript@5.6.3) typedoc-plugin-markdown: 4.2.9(typedoc@0.26.10(typescript@5.6.3)) @@ -11665,6 +11998,8 @@ snapshots: tinyexec@0.3.0: {} + tinyexec@0.3.1: {} + tinyglobby@0.2.5: dependencies: fdir: 6.3.0(picomatch@4.0.2) @@ -11896,7 +12231,7 @@ snapshots: '@types/unist': 3.0.2 vfile-message: 4.0.2 - vite@5.4.8(@types/node@20.14.13): + vite@5.4.11(@types/node@20.14.13): dependencies: esbuild: 0.21.5 postcss: 8.4.47 @@ -11905,7 +12240,7 @@ snapshots: '@types/node': 20.14.13 fsevents: 2.3.3 - vite@5.4.8(@types/node@22.0.0): + vite@5.4.11(@types/node@22.0.0): dependencies: esbuild: 0.21.5 postcss: 8.4.47 @@ -11914,7 +12249,7 @@ snapshots: '@types/node': 22.0.0 fsevents: 2.3.3 - vite@5.4.9(@types/node@20.14.13): + vite@5.4.8(@types/node@20.14.13): dependencies: esbuild: 0.21.5 postcss: 8.4.47 @@ -11923,7 +12258,7 @@ snapshots: '@types/node': 20.14.13 fsevents: 2.3.3 - vite@5.4.9(@types/node@22.0.0): + vite@5.4.8(@types/node@22.0.0): dependencies: esbuild: 0.21.5 postcss: 8.4.47 @@ -11940,13 +12275,13 @@ snapshots: optionalDependencies: vite: 5.4.8(@types/node@22.0.0) - vitefu@1.0.3(vite@5.4.9(@types/node@20.14.13)): + vitefu@1.0.3(vite@5.4.11(@types/node@20.14.13)): optionalDependencies: - vite: 5.4.9(@types/node@20.14.13) + vite: 5.4.11(@types/node@20.14.13) - vitefu@1.0.3(vite@5.4.9(@types/node@22.0.0)): + vitefu@1.0.3(vite@5.4.11(@types/node@22.0.0)): optionalDependencies: - vite: 5.4.9(@types/node@22.0.0) + vite: 5.4.11(@types/node@22.0.0) volar-service-css@0.0.61(@volar/language-service@2.4.6): dependencies: @@ -12172,6 +12507,10 @@ snapshots: dependencies: zod: 3.23.8 + zod-to-json-schema@3.23.5(zod@3.23.8): + dependencies: + zod: 3.23.8 + zod-to-ts@1.2.0(typescript@5.6.3)(zod@3.23.8): dependencies: typescript: 5.6.3 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 1329ecdae..f1927c1f1 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,5 +1,5 @@ catalog: # Confirmed Current Master Catalog - 11.01.2024 - '@astrojs/db': ^0.14.2 + '@astrojs/db': ^0.14.3 '@astrojs/markdown-remark': ^5.2.0 '@astrojs/rss': ^4.0.7 '@astrojs/react': ^3.6.2 @@ -9,7 +9,7 @@ catalog: # Confirmed Current Master Catalog - 11.01.2024 '@astrojs/web-vitals': ^3.0.0 '@astrojs/node': ^8.3.4 '@types/node': ^20.14.11 - astro: ^4.16.6 + astro: ^4.16.11 astro-integration-kit: ^0.16.1 astro-theme-provider: ^0.6.1 sharp: ^0.33.4 From 459ce017a550e1dd18e5ff07153d589ec352e3d7 Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Tue, 12 Nov 2024 23:05:56 -0800 Subject: [PATCH 02/40] add changeset --- .changeset/perfect-hornets-swim.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 .changeset/perfect-hornets-swim.md diff --git a/.changeset/perfect-hornets-swim.md b/.changeset/perfect-hornets-swim.md new file mode 100644 index 000000000..a325e1055 --- /dev/null +++ b/.changeset/perfect-hornets-swim.md @@ -0,0 +1,17 @@ +--- +"studiocms": patch +"@studiocms/auth": patch +"@studiocms/core": patch +--- + +Introduce Dashboard i18n logic + +- `studiocms` & `@studiocms/core`: + - Introduce new virtual module `studiocms:i18n`: + This module includes utilities for our new i18n system. + - Add new LanguageSelector component + - Add `en-us` translation file. (`packages/studiocms_core/i18n/translations/`) + +- `@studiocms/auth`: + - Update login/signup routes to utilize new i18n translations + - Transition routes to Hybrid type setup, All API routes will remain server rendered, while pages are now prerendered (Server islands when needed). \ No newline at end of file From 838fd248f5386d2721f778e47669f459a5b60887 Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Wed, 13 Nov 2024 22:54:28 -0800 Subject: [PATCH 03/40] add docs --- README.md | 6 ++- packages/studiocms_core/src/i18n/index.ts | 14 +++--- www/docs/astro.config.mts | 4 ++ .../code-contributions.mdx} | 44 ++++--------------- .../docs/contributing/getting-started.mdx | 28 ++++++++++++ .../docs/contributing/translations.mdx | 30 +++++++++++++ .../src/content/docs/how-it-works/index.mdx | 3 +- 7 files changed, 87 insertions(+), 42 deletions(-) rename www/docs/src/content/docs/{start-here/contributing.mdx => contributing/code-contributions.mdx} (69%) create mode 100644 www/docs/src/content/docs/contributing/getting-started.mdx create mode 100644 www/docs/src/content/docs/contributing/translations.mdx diff --git a/README.md b/README.md index 1e13cea5c..e879a1d59 100644 --- a/README.md +++ b/README.md @@ -17,9 +17,13 @@ To see how to get started, check out the [StudioCMS README](./packages/studiocms <a href="https://turso.tech" rel="sponsored" target="_blank"><img src="https://turso.tech/logokit/turso-logo-illustrated.svg" width="400px" /></a> +## StudioCMS Dashboard i18n Status + +<a href="https://i18n.studiocms.xyz/engage/studiocms/"><img src="https://i18n.studiocms.xyz/widget/studiocms/287x66-black.png" alt="Translation status" /></a> + ## Contributing -We welcome contributions from the community! Whether it's bug reports, feature requests, or code contributions, we appreciate your help in making this project better. To get started read our [Contributing Guide](https://docs.studiocms.xyz/start-here/contributing/) +We welcome contributions from the community! Whether it's bug reports, feature requests, or code contributions, we appreciate your help in making this project better. To get started read our [Contributing Guide](https://docs.studiocms.xyz/contributing/getting-started/) ## Chat with Us diff --git a/packages/studiocms_core/src/i18n/index.ts b/packages/studiocms_core/src/i18n/index.ts index 059379fdc..1187e3283 100644 --- a/packages/studiocms_core/src/i18n/index.ts +++ b/packages/studiocms_core/src/i18n/index.ts @@ -71,12 +71,16 @@ export function useTranslations( comp: UiComponentKeys ): (key: string) => string { return function t(key: string): string { - return ( - // @ts-expect-error - Component key is dynamic depending on the component - uiTranslations[lang].translations[comp][key] || + // @ts-expect-error - Component key is dynamic depending on the component + const translation = uiTranslations[lang].translations[comp][key]; + + // If the translation is not found, return the default language translation + if (translation === undefined || translation === '') { // @ts-expect-error - Component key is dynamic depending on the component - uiTranslations[defaultLang].translations[comp][key] - ); + return uiTranslations[defaultLang].translations[comp][key]; + } + + return translation; }; } diff --git a/www/docs/astro.config.mts b/www/docs/astro.config.mts index f2b4217b0..0b53bfb36 100644 --- a/www/docs/astro.config.mts +++ b/www/docs/astro.config.mts @@ -102,6 +102,10 @@ export default defineConfig({ label: 'Start Here', autogenerate: { directory: 'start-here' }, }, + { + label: 'Contributing Guides', + autogenerate: { directory: 'contributing' }, + }, { label: 'Understanding StudioCMS', autogenerate: { directory: 'how-it-works' }, diff --git a/www/docs/src/content/docs/start-here/contributing.mdx b/www/docs/src/content/docs/contributing/code-contributions.mdx similarity index 69% rename from www/docs/src/content/docs/start-here/contributing.mdx rename to www/docs/src/content/docs/contributing/code-contributions.mdx index 063442565..3c7761cb0 100644 --- a/www/docs/src/content/docs/start-here/contributing.mdx +++ b/www/docs/src/content/docs/contributing/code-contributions.mdx @@ -1,44 +1,19 @@ --- -title: Contributing +title: Code Contributions description: Learn how to contribute to StudioCMS sidebar: - order: 99 - badge: - text: New - variant: success + order: 2 --- -import ContributorList from '~/components/ContributorList.astro'; -import { Steps } from '@astrojs/starlight/components'; - -Thank you for investing your time in contributing to our project! - -Read our [Code of Conduct](https://github.com/astrolicious/studiocms?tab=coc-ov-file#code-of-conduct-) to keep our community approachable and respectable. - -In this guide you will get an overview of the contribution workflow from opening an issue, creating a PR, reviewing, and merging the PR. - -### Our Contributors - -Our project exists thanks to all the people who contribute. [Join us on GitHub](https://github.com/astrolicious/studiocms) and add your name to the list! - -<ContributorList /> -## Getting started - -We welcome contributions from the community! Whether it's bug reports, feature requests, or code contributions, we appreciate your help in making this project better. To navigate our codebase with confidence, see [How it works](/how-it-works/) section. - -## Bug Reports and Feature Requests - -If you encounter any bugs or have ideas for new features, please open an issue on our [GitHub repository](https://github.com/astrolicious/studiocms). When creating a new issue, please provide as much detail as possible, including steps to reproduce the issue (for bugs) and a clear description of the proposed feature. - -## Code Contributions +import { Steps } from '@astrojs/starlight/components'; If you'd like to contribute code to this project, please follow the steps below: -### Solve an issue +## Solve an issue Scan through our [existing issues](https://github.com/astrolicious/studiocms/issues) to find one that interests you. You can narrow down the search using `labels` as filters. If you find an issue to work on, you are welcome to open a PR with a fix. -### Make Changes +## Make Changes <Steps> 1. Fork the repository. @@ -58,11 +33,11 @@ Scan through our [existing issues](https://github.com/astrolicious/studiocms/iss 5. Update the documentation, if necessary. </Steps> -### Commit your update +## Commit your update Commit the changes once you are happy with them. -### Pull Request +## Pull Request When you're finished with the changes, create a pull request, also known as a PR. - Fill the "Ready for review" template so that we can review your PR. This template helps reviewers understand your changes as well as the purpose of your pull request. @@ -73,11 +48,10 @@ Once you submit your PR, a Docs team member will review your proposal. We may as - As you update your PR and apply changes, mark each conversation as [resolved](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/commenting-on-a-pull-request#resolving-conversations). - If you run into any merge issues, checkout this [git tutorial](https://github.com/skills/resolve-merge-conflicts) to help you resolve merge conflicts and other issues. -### Your PR is merged! +## Your PR is merged! Congratulations! The StudioCMS team thanks you. Your contribution will be part of the next release. Now that you are part of the StudioCMS community, you can help us review other PRs, answer questions, and help other contributors. If you haven't already, join our [Discord](https://chat.studiocms.xyz) to connect with other contributors and the StudioCMS team. -Oh and you will see your face in the [list of contributors](#our-contributors)! 🎉 - +Oh and you will see your face in the [list of contributors](/contributing/getting-started/#our-contributors)! 🎉 diff --git a/www/docs/src/content/docs/contributing/getting-started.mdx b/www/docs/src/content/docs/contributing/getting-started.mdx new file mode 100644 index 000000000..4cb3c62d2 --- /dev/null +++ b/www/docs/src/content/docs/contributing/getting-started.mdx @@ -0,0 +1,28 @@ +--- +title: Getting Started +description: Learn how to contribute to StudioCMS +sidebar: + order: 1 +--- +import ContributorList from '~/components/ContributorList.astro'; + +Thank you for investing your time in contributing to our project! + +Read our [Code of Conduct](https://github.com/astrolicious/studiocms?tab=coc-ov-file#code-of-conduct-) to keep our community approachable and respectable. + +In this guide you will get an overview of the contribution workflow from opening an issue, creating a PR, reviewing, and merging the PR. + +## Our Contributors + +Our project exists thanks to all the people who contribute. [Join us on GitHub](https://github.com/astrolicious/studiocms) and add your name to the list! + +<ContributorList /> + +## Getting started + +We welcome contributions from the community! Whether it's bug reports, feature requests, or code contributions, we appreciate your help in making this project better. To navigate our codebase with confidence, see [How it works](/how-it-works/) section. + +## Bug Reports and Feature Requests + +If you encounter any bugs or have ideas for new features, please open an issue on our [GitHub repository](https://github.com/astrolicious/studiocms). When creating a new issue, please provide as much detail as possible, including steps to reproduce the issue (for bugs) and a clear description of the proposed feature. + diff --git a/www/docs/src/content/docs/contributing/translations.mdx b/www/docs/src/content/docs/contributing/translations.mdx new file mode 100644 index 000000000..6b5b37f88 --- /dev/null +++ b/www/docs/src/content/docs/contributing/translations.mdx @@ -0,0 +1,30 @@ +--- +title: Translations +description: Learn how to help translate StudioCMS +sidebar: + order: 2 +--- + +import ReadMore from '~/components/ReadMore.astro'; + +StudioCMS is a global project, and we want to make it accessible to everyone. If you are fluent in multiple languages, you can help us translate StudioCMS into your language. + +## Dashboard i18n + +Current translation status: + +<img src="https://i18n.studiocms.xyz/widget/studiocms/horizontal-auto.svg" alt="Translation status" /> + +Visit [our i18n dashboard](https://i18n.studiocms.xyz) to help translate StudioCMS into your language. If your language is not listed, you can add it within the dashboard. + +If you would prefer to contribute translations directly to the repository, the translations are stored in the [`packages/studiocms_core/src/i18n/translations`](https://github.com/astrolicious/studiocms/tree/main/packages/studiocms_core/src/i18n/translations/) directory. You can find the English translations in the [`en-us.json`](https://github.com/astrolicious/studiocms/blob/main/packages/studiocms_core/src/i18n/translations/en-us.json) file. + +<ReadMore> +StudioCMS uses [Weblate](https://weblate.org) for managing translations on top of GitHub. If you are new to Weblate, you can find the [Translating using Weblate Guide](https://docs.weblate.org/en/latest/user/translating.html#) on their website. +</ReadMore> + +Once the translations have been added, they will be added to the [StudioCMS i18n configuration](https://github.com/astrolicious/studiocms/blob/main/packages/studiocms_core/src/i18n/index.ts#L8) and will be available in the next release. + +## Documentation + +**Coming soon!** We are working on prepping to translate the StudioCMS documentation. If you are interested in helping with this, please reach out to us on [Discord](https://chat.studiocms.xyz) \ No newline at end of file diff --git a/www/docs/src/content/docs/how-it-works/index.mdx b/www/docs/src/content/docs/how-it-works/index.mdx index d0525b754..9af145ab3 100644 --- a/www/docs/src/content/docs/how-it-works/index.mdx +++ b/www/docs/src/content/docs/how-it-works/index.mdx @@ -31,7 +31,7 @@ StudioCMS is divided into multiple parts: ## Breakdown -### StudioCMS Core +### StudioCMS: Core StudioCMS Core is an Astro Integration which provides a comprehensive CMS solution out-of-the-box. This integration registers StudioCMS as the first plugin, sets up database configurations, watches for configuration changes, and adds various features including virtual imports, logging, and default frontend routes. @@ -59,6 +59,7 @@ Modules without the `virtual:` prefix have full typings defined and injected int - **`studiocms:helpers/contentHelper`**: Provides the exported content helper functions for StudioCMS. - **`studiocms:helpers/headDefaults`**: Provides the exported head defaults for StudioCMS. - **`studiocms:helpers/routemap`**: Provides the exported route map for StudioCMS. +- **`studiocms:i18n`**: Provides the i18n utilities for StudioCMS. ### StudioCMS: Auth From e4c496662718d3975f9a665dfdf143179511366e Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Wed, 13 Nov 2024 23:03:46 -0800 Subject: [PATCH 04/40] move functions around and add jsdocs --- packages/studiocms_core/src/i18n/index.ts | 89 +++++++++++++---------- 1 file changed, 52 insertions(+), 37 deletions(-) diff --git a/packages/studiocms_core/src/i18n/index.ts b/packages/studiocms_core/src/i18n/index.ts index 1187e3283..51f73a3d1 100644 --- a/packages/studiocms_core/src/i18n/index.ts +++ b/packages/studiocms_core/src/i18n/index.ts @@ -9,8 +9,23 @@ const uiTranslations = { 'en-us': await import('./translations/en-us.json'), } as const; +/** + * Represents the type of UI translations. + * This type is derived from the structure of the `uiTranslations` object. + */ type UiTranslations = typeof uiTranslations; + +/** + * Represents the keys of the UiTranslations type. + * This type is used to define the possible keys for UI language translations. + */ type UiLanguageKeys = keyof UiTranslations; + +/** + * Represents the keys of the UI component translations for the 'en-us' locale. + * This type is derived from the 'translations' property of the 'UiTranslations' interface + * for the 'en-us' locale (Source of truth), ensuring that only valid translation keys are used. + */ type UiComponentKeys = keyof UiTranslations['en-us']['translations']; // Default language - Must match one of the keys in the `ui` object above @@ -22,43 +37,6 @@ const showDefaultLang: boolean = false; // --- i18n Utils --- // -/** - * Example of how to use this i18n utils on a Static page - * - * @example - * ```ts - * export async function getStaticPaths() { - * const paths = staticPaths(); - * return paths; - * } - * ``` - * - * If the default language is hidden, the paths for the default language will be generated without the language prefix while all extra languages will have the prefix. (e.g. When `showDefaultLang` is false: `/en/page` will be `/page` and spanish will be `/es/page`) - * - * @returns An array of paths for all languages - */ -export const staticPaths = () => { - const paths: { params: { locale: string | undefined } }[] = []; - if (!showDefaultLang) paths.push({ params: { locale: undefined } }); - for (const lang in uiTranslations) { - if (lang === defaultLang && !showDefaultLang) continue; - paths.push({ params: { locale: lang } }); - } - return paths; -}; - -/** - * Extracts the language key from the given URL's pathname. - * - * @param url - The URL object from which to extract the language key. - * @returns The language key if it exists in the `uiTranslations`, otherwise returns the default language key. - */ -export function getLangFromUrl(url: URL) { - const [, lang] = url.pathname.split('/'); - if (lang && lang in uiTranslations) return lang as UiLanguageKeys; - return defaultLang; -} - /** * Retrieves a translation function for a given language and component. * @@ -114,6 +92,18 @@ export const languageSelectorOptions = Object.keys(uiTranslations).map((key) => }; }); +/** + * Extracts the language key from the given URL's pathname. + * + * @param url - The URL object from which to extract the language key. + * @returns The language key if it exists in the `uiTranslations`, otherwise returns the default language key. + */ +export function getLangFromUrl(url: URL) { + const [, lang] = url.pathname.split('/'); + if (lang && lang in uiTranslations) return lang as UiLanguageKeys; + return defaultLang; +} + /** * Retrieves the current URL path, adjusting for language settings. * @@ -153,3 +143,28 @@ export function switchLanguage(Astro: AstroGlobal): (languageKey: UiLanguageKeys return translatePath(getCurrentURLPath(Astro)); }; } + +/** + * Example of how to use this i18n utils on a Static page + * + * @example + * ```ts + * export async function getStaticPaths() { + * const paths = staticPaths(); + * return paths; + * } + * ``` + * + * If the default language is hidden, the paths for the default language will be generated without the language prefix while all extra languages will have the prefix. (e.g. When `showDefaultLang` is false: `/en/page` will be `/page` and spanish will be `/es/page`) + * + * @returns An array of paths for all languages + */ +export const staticPaths = () => { + const paths: { params: { locale: string | undefined } }[] = []; + if (!showDefaultLang) paths.push({ params: { locale: undefined } }); + for (const lang in uiTranslations) { + if (lang === defaultLang && !showDefaultLang) continue; + paths.push({ params: { locale: lang } }); + } + return paths; +}; From 025cb56b5750d99500f0cd3d9f1822bc3595475c Mon Sep 17 00:00:00 2001 From: "StudioCMS (bot)" <no-reply@studiocms.xyz> Date: Thu, 14 Nov 2024 16:41:35 -0800 Subject: [PATCH 05/40] Added translation using Weblate (German) (#374) Co-authored-by: Louis Escher <louisescher@proton.me> --- .../src/i18n/translations/de.json | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 packages/studiocms_core/src/i18n/translations/de.json diff --git a/packages/studiocms_core/src/i18n/translations/de.json b/packages/studiocms_core/src/i18n/translations/de.json new file mode 100644 index 000000000..4de424a5c --- /dev/null +++ b/packages/studiocms_core/src/i18n/translations/de.json @@ -0,0 +1,43 @@ +{ + "displayName": "", + "translations": { + "@studiocms/auth:login": { + "title": "", + "description": "", + "header": "", + "sub-header-usernamepasswordoauth": "", + "sub-header-usernamepassword": "", + "sub-header-oauth": "", + "sub-header-noprovider": "", + "username-label": "", + "password-label": "", + "login-button": "", + "allow-registration-noaccount": "", + "allow-registration-register": "" + }, + "@studiocms/auth:signup": { + "title": "", + "description": "", + "header": "", + "sub-header-usernamepasswordoauth": "", + "sub-header-usernamepassword": "", + "sub-header-oauth": "", + "sub-header-noprovider": "", + "username-label": "", + "email-label": "", + "displayname-label": "", + "password-label": "", + "confirm-password-label": "", + "create-account-button": "", + "allow-login-haveaccount": "", + "allow-login-login": "" + }, + "@studiocms/auth:logout": { + "title": "", + "description": "" + }, + "@studiocms/auth:oauth-stack": { + "or-login-with": "" + } + } +} From e0b7ed46c88d4fc041b31a7a525a0829ae7a7fcf Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Thu, 14 Nov 2024 17:57:49 -0800 Subject: [PATCH 06/40] add labeler --- .github/labeler.yml | 5 +++++ .github/workflows/labeler.yml | 17 +++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 .github/labeler.yml create mode 100644 .github/workflows/labeler.yml diff --git a/.github/labeler.yml b/.github/labeler.yml new file mode 100644 index 000000000..4c6b1adeb --- /dev/null +++ b/.github/labeler.yml @@ -0,0 +1,5 @@ +# See https://github.com/actions/labeler/tree/main for more information about the labeler action + +translations: + - changed-files: + - any-glob-to-any-file: packages/studiocms_core/src/i18n/translations/* \ No newline at end of file diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml new file mode 100644 index 000000000..8a76c8118 --- /dev/null +++ b/.github/workflows/labeler.yml @@ -0,0 +1,17 @@ +name: Pull Request Labeler + +on: [pull_request_target] + +permissions: + contents: read + pull-requests: write + +jobs: + label: + runs-on: ubuntu-latest + steps: + - uses: actions/labeler@v5 + with: + repo-token: "${{ secrets.STUDIOCMS_SERVICE_TOKEN }}" + configuration-path: .github/labeler.yml + sync-labels: true \ No newline at end of file From ab5d092e2f3e5f13181ca5c2da6a220566c526bc Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Thu, 14 Nov 2024 19:30:11 -0800 Subject: [PATCH 07/40] Add @changesets/write and execa dependencies and implement automatated changesets for translations --- .github/workflows/translation-changesets.yml | 68 +++++++++++ package.json | 2 + pnpm-lock.yaml | 112 +++++++++++++++++++ 3 files changed, 182 insertions(+) create mode 100644 .github/workflows/translation-changesets.yml diff --git a/.github/workflows/translation-changesets.yml b/.github/workflows/translation-changesets.yml new file mode 100644 index 000000000..59322e41f --- /dev/null +++ b/.github/workflows/translation-changesets.yml @@ -0,0 +1,68 @@ +name: Translation Changesets + +on: + pull_request: + types: [labeled, synchronize] + + +jobs: + build-translation-changesets: + runs-on: ubuntu-latest + if: contains(github.event.pull_request.labels.*.name, 'translations') + steps: + - name: Checkout Repo + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 + + - name: Setup pnpm (corepack enabled) + uses: pnpm/action-setup@v3 + + - name: Setup Node.js 20.x + uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4 + with: + node-version-file: '.node-version' + cache: 'pnpm' + + - name: Install Dependencies + run: pnpm ci:install + + - uses: actions/github-script@v7 + with: + script: | + const write = require('@changesets/write') + const execa = require('execa') + + const { base, head } = context.payload?.pull_request || {} + + const res = await github.rest.repos.compareCommits({ + base: base.sha, + head: head.sha, + owner: context.repo.owner, + repo: context.repo.repo + }) + + const summary = `Translations Updated (PR #${context.payload.pull_request.number})` + + const opts = { reject: false } + const { stdout } = await execa('grep', [summary, '-r', '.changeset'], opts) + + if (stdout) { + console.log('Changeset already exists') + return + } + + const releases = [ + { name: "@studiocms/core", type: "patch" } + ] + + const cwd = process.cwd() + await write.default({ summary, releases }, cwd) + + + - name: Commit changes + uses: stefanzweifel/git-auto-commit-action@8621497c8c39c72f3e2a999a26b4ca1b5058a842 # v5 + with: + commit_message: '[ci] changesets' + branch: ${{ github.head_ref }} + commit_user_name: astrolicious + commit_user_email: no-reply@studiocms.xyz + commit_author: StudioCMS <no-reply@studiocms.xyz> \ No newline at end of file diff --git a/package.json b/package.json index 12cf9b2fc..501d71f69 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,8 @@ "@changesets/cli": "2.27.9", "@changesets/config": "3.0.3", "@changesets/changelog-github": "^0.5.0", + "@changesets/write": "0.3.2", + "execa": "9.5.1", "typescript": "catalog:" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index adc961e90..dad244490 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -345,9 +345,15 @@ importers: '@changesets/config': specifier: 3.0.3 version: 3.0.3 + '@changesets/write': + specifier: 0.3.2 + version: 0.3.2 '@moonrepo/cli': specifier: 1.28.3 version: 1.28.3 + execa: + specifier: 9.5.1 + version: 9.5.1 typescript: specifier: 'catalog:' version: 5.6.3 @@ -2802,6 +2808,9 @@ packages: cpu: [x64] os: [win32] + '@sec-ant/readable-stream@0.4.1': + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + '@shikijs/core@1.14.1': resolution: {integrity: sha512-KyHIIpKNaT20FtFPFjCQB5WVSTpLR/n+jQXhWHWVUMm9MaOaG9BGOG0MSyt7yA4+Lm+4c9rTc03tt3nYzeYSfw==} @@ -2856,6 +2865,10 @@ packages: engines: {node: '>= 8.0.0'} hasBin: true + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} + '@tailwindcss/typography@0.5.15': resolution: {integrity: sha512-AqhlCXl+8grUz8uqExv5OTtgpjuVIwFTSXTrh8y9/pw6q2ek7fJ+Y8ZEVw7EB2DCcuCOtEjf9w3+J3rzts01uA==} peerDependencies: @@ -3941,6 +3954,10 @@ packages: eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + execa@9.5.1: + resolution: {integrity: sha512-QY5PPtSonnGwhhHDNI7+3RvY285c7iuJFFB+lU+oEzMY/gEGJ808owqJsrr8Otd1E/x07po1LkUBmdAc5duPAg==} + engines: {node: ^18.19.0 || >=20.5.0} + expressive-code@0.35.6: resolution: {integrity: sha512-+mx+TPTbMqgo0mL92Xh9QgjW0kSQIsEivMgEcOnaqKqL7qCw8Vkqc5Rg/di7ZYw4aMUSr74VTc+w8GQWu05j1g==} @@ -4004,6 +4021,10 @@ packages: fflate@0.8.2: resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + figures@6.1.0: + resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} + engines: {node: '>=18'} + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -4097,6 +4118,10 @@ packages: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} + get-stream@9.0.1: + resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} + engines: {node: '>=18'} + get-tsconfig@4.7.6: resolution: {integrity: sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==} @@ -4262,6 +4287,10 @@ packages: human-id@1.0.2: resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} + human-signals@8.0.0: + resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==} + engines: {node: '>=18.18.0'} + i18next@23.15.1: resolution: {integrity: sha512-wB4abZ3uK7EWodYisHl/asf8UYEhrI/vj/8aoSsrj/ZDxj4/UXPOa1KvFt1Fq5hkUHquNqwFlDprmjZ8iySgYA==} @@ -4375,6 +4404,10 @@ packages: is-reference@3.0.2: resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} + is-stream@4.0.1: + resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} + engines: {node: '>=18'} + is-subdir@1.2.0: resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} engines: {node: '>=4'} @@ -4927,6 +4960,10 @@ packages: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} + npm-run-path@6.0.0: + resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} + engines: {node: '>=18'} + nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} @@ -5051,6 +5088,10 @@ packages: parse-latin@7.0.0: resolution: {integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==} + parse-ms@4.0.0: + resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} + engines: {node: '>=18'} + parse5-htmlparser2-tree-adapter@7.0.0: resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} @@ -5078,6 +5119,10 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -5190,6 +5235,10 @@ packages: engines: {node: '>=10.13.0'} hasBin: true + pretty-ms@9.1.0: + resolution: {integrity: sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==} + engines: {node: '>=18'} + prismjs@1.29.0: resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} engines: {node: '>=6'} @@ -5597,6 +5646,10 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} + strip-final-newline@4.0.0: + resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} + engines: {node: '>=18'} + strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} @@ -5806,6 +5859,10 @@ packages: unicode-trie@2.0.0: resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} + unicorn-magic@0.3.0: + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} + engines: {node: '>=18'} + unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} @@ -6179,6 +6236,10 @@ packages: resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} engines: {node: '>=12.20'} + yoctocolors@2.1.1: + resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} + engines: {node: '>=18'} + yoga-wasm-web@0.3.3: resolution: {integrity: sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==} @@ -8139,6 +8200,8 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.21.0': optional: true + '@sec-ant/readable-stream@0.4.1': {} + '@shikijs/core@1.14.1': dependencies: '@types/hast': 3.0.4 @@ -8234,6 +8297,8 @@ snapshots: fflate: 0.7.4 string.prototype.codepointat: 0.2.1 + '@sindresorhus/merge-streams@4.0.0': {} + '@tailwindcss/typography@0.5.15(tailwindcss@3.4.14)': dependencies: lodash.castarray: 4.4.0 @@ -9669,6 +9734,21 @@ snapshots: eventemitter3@5.0.1: {} + execa@9.5.1: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + cross-spawn: 7.0.3 + figures: 6.1.0 + get-stream: 9.0.1 + human-signals: 8.0.0 + is-plain-obj: 4.1.0 + is-stream: 4.0.1 + npm-run-path: 6.0.0 + pretty-ms: 9.1.0 + signal-exit: 4.1.0 + strip-final-newline: 4.0.0 + yoctocolors: 2.1.1 + expressive-code@0.35.6: dependencies: '@expressive-code/core': 0.35.6 @@ -9739,6 +9819,10 @@ snapshots: fflate@0.8.2: {} + figures@6.1.0: + dependencies: + is-unicode-supported: 2.0.0 + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -9819,6 +9903,11 @@ snapshots: dependencies: pump: 3.0.0 + get-stream@9.0.1: + dependencies: + '@sec-ant/readable-stream': 0.4.1 + is-stream: 4.0.1 + get-tsconfig@4.7.6: dependencies: resolve-pkg-maps: 1.0.0 @@ -10143,6 +10232,8 @@ snapshots: human-id@1.0.2: {} + human-signals@8.0.0: {} + i18next@23.15.1: dependencies: '@babel/runtime': 7.25.0 @@ -10238,6 +10329,8 @@ snapshots: dependencies: '@types/estree': 1.0.5 + is-stream@4.0.1: {} + is-subdir@1.2.0: dependencies: better-path-resolve: 1.0.0 @@ -11040,6 +11133,11 @@ snapshots: normalize-range@0.1.2: {} + npm-run-path@6.0.0: + dependencies: + path-key: 4.0.0 + unicorn-magic: 0.3.0 + nth-check@2.1.1: dependencies: boolbase: 1.0.0 @@ -11197,6 +11295,8 @@ snapshots: unist-util-visit-children: 3.0.0 vfile: 6.0.3 + parse-ms@4.0.0: {} + parse5-htmlparser2-tree-adapter@7.0.0: dependencies: domhandler: 5.0.3 @@ -11220,6 +11320,8 @@ snapshots: path-key@3.1.1: {} + path-key@4.0.0: {} + path-parse@1.0.7: {} path-scurry@1.11.1: @@ -11316,6 +11418,10 @@ snapshots: prettier@2.8.8: {} + pretty-ms@9.1.0: + dependencies: + parse-ms: 4.0.0 + prismjs@1.29.0: {} promise-limit@2.7.0: {} @@ -11898,6 +12004,8 @@ snapshots: strip-bom@3.0.0: {} + strip-final-newline@4.0.0: {} + strip-json-comments@2.0.1: {} strnum@1.0.5: {} @@ -12108,6 +12216,8 @@ snapshots: pako: 0.2.9 tiny-inflate: 1.0.3 + unicorn-magic@0.3.0: {} + unified@11.0.5: dependencies: '@types/unist': 3.0.2 @@ -12501,6 +12611,8 @@ snapshots: yocto-queue@1.1.1: {} + yoctocolors@2.1.1: {} + yoga-wasm-web@0.3.3: {} zod-to-json-schema@3.23.3(zod@3.23.8): From 6a06021eb315cf9cc3fb85212345c152d3fbab0a Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Thu, 14 Nov 2024 19:31:20 -0800 Subject: [PATCH 08/40] Refactor translation-changesets workflow to remove unnecessary code --- .github/workflows/translation-changesets.yml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/.github/workflows/translation-changesets.yml b/.github/workflows/translation-changesets.yml index 59322e41f..b5dd6229d 100644 --- a/.github/workflows/translation-changesets.yml +++ b/.github/workflows/translation-changesets.yml @@ -31,15 +31,6 @@ jobs: const write = require('@changesets/write') const execa = require('execa') - const { base, head } = context.payload?.pull_request || {} - - const res = await github.rest.repos.compareCommits({ - base: base.sha, - head: head.sha, - owner: context.repo.owner, - repo: context.repo.repo - }) - const summary = `Translations Updated (PR #${context.payload.pull_request.number})` const opts = { reject: false } From 27dde3d63ca0ece3a15844920a94f9a4347e6e54 Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Thu, 14 Nov 2024 19:46:42 -0800 Subject: [PATCH 09/40] Update workflow --- .github/workflows/translation-changesets.yml | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/.github/workflows/translation-changesets.yml b/.github/workflows/translation-changesets.yml index b5dd6229d..afdd48a35 100644 --- a/.github/workflows/translation-changesets.yml +++ b/.github/workflows/translation-changesets.yml @@ -4,6 +4,8 @@ on: pull_request: types: [labeled, synchronize] +permissions: + contents: write jobs: build-translation-changesets: @@ -12,6 +14,9 @@ jobs: steps: - name: Checkout Repo uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 + with: + ref: ${{ github.head_ref }} + token: ${{ secrets.STUDIOCMS_SERVICE_TOKEN }} - name: Setup pnpm (corepack enabled) uses: pnpm/action-setup@v3 @@ -24,13 +29,21 @@ jobs: - name: Install Dependencies run: pnpm ci:install + shell: bash - - uses: actions/github-script@v7 + - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7 with: script: | const write = require('@changesets/write') const execa = require('execa') + const creator = context.payload.pull_request.user.login + + if (creator !== 'studiocms-no-reply') { + console.log('Not the StudioCMS bot, skipping') + return + } + const summary = `Translations Updated (PR #${context.payload.pull_request.number})` const opts = { reject: false } @@ -46,7 +59,9 @@ jobs: ] const cwd = process.cwd() - await write.default({ summary, releases }, cwd) + const changesetId = await write.default({ summary, releases }, cwd) + + console.log(`Changeset created: ${changesetId}`) - name: Commit changes From b149a85023c11d8377f79f56be88dce2c7c41073 Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Thu, 14 Nov 2024 19:52:46 -0800 Subject: [PATCH 10/40] simplify --- .github/workflows/translation-changesets.yml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/.github/workflows/translation-changesets.yml b/.github/workflows/translation-changesets.yml index afdd48a35..03d81f9a0 100644 --- a/.github/workflows/translation-changesets.yml +++ b/.github/workflows/translation-changesets.yml @@ -10,7 +10,7 @@ permissions: jobs: build-translation-changesets: runs-on: ubuntu-latest - if: contains(github.event.pull_request.labels.*.name, 'translations') + if: contains(github.event.pull_request.labels.*.name, 'translations') && github.event.pull_request.user.login == 'studiocms-no-reply' steps: - name: Checkout Repo uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 @@ -37,13 +37,6 @@ jobs: const write = require('@changesets/write') const execa = require('execa') - const creator = context.payload.pull_request.user.login - - if (creator !== 'studiocms-no-reply') { - console.log('Not the StudioCMS bot, skipping') - return - } - const summary = `Translations Updated (PR #${context.payload.pull_request.number})` const opts = { reject: false } From 18b1fb1e3d51b73b487ee44c019b7aabc2f55a7a Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Thu, 14 Nov 2024 19:56:56 -0800 Subject: [PATCH 11/40] Refactor translation-changesets workflow to use GitHub Actions expression syntax --- .github/workflows/translation-changesets.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/translation-changesets.yml b/.github/workflows/translation-changesets.yml index 03d81f9a0..c713d226b 100644 --- a/.github/workflows/translation-changesets.yml +++ b/.github/workflows/translation-changesets.yml @@ -10,7 +10,7 @@ permissions: jobs: build-translation-changesets: runs-on: ubuntu-latest - if: contains(github.event.pull_request.labels.*.name, 'translations') && github.event.pull_request.user.login == 'studiocms-no-reply' + if: contains(github.event.pull_request.labels.*.name, 'translations') && ${{ github.event.pull_request.user.login == 'studiocms-no-reply' }} steps: - name: Checkout Repo uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 From 16e2319918709547a800a80a11d43d394473927c Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Thu, 14 Nov 2024 20:18:34 -0800 Subject: [PATCH 12/40] fix --- .github/workflows/translation-changesets.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/translation-changesets.yml b/.github/workflows/translation-changesets.yml index c713d226b..0a93e98cc 100644 --- a/.github/workflows/translation-changesets.yml +++ b/.github/workflows/translation-changesets.yml @@ -10,7 +10,7 @@ permissions: jobs: build-translation-changesets: runs-on: ubuntu-latest - if: contains(github.event.pull_request.labels.*.name, 'translations') && ${{ github.event.pull_request.user.login == 'studiocms-no-reply' }} + if: contains(github.event.pull_request.labels.*.name, 'translations') && github.event.pull_request.user.login == 'studiocms-no-reply' steps: - name: Checkout Repo uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 @@ -34,8 +34,8 @@ jobs: - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7 with: script: | - const write = require('@changesets/write') - const execa = require('execa') + const write = await import('@changesets/write') + const execa = await import('execa') const summary = `Translations Updated (PR #${context.payload.pull_request.number})` From 554297941ebc88d5d80952c8d0af639b2b1c9d05 Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Thu, 14 Nov 2024 22:07:37 -0800 Subject: [PATCH 13/40] add new custom script to replace github-script that was not working --- .github/workflows/translation-changesets.yml | 29 +-- package.json | 6 +- pnpm-lock.yaml | 240 +++++++++++++++++++ scripts/filter-warnings.cjs | 23 ++ scripts/translation-changeset.ts | 38 +++ 5 files changed, 309 insertions(+), 27 deletions(-) create mode 100644 scripts/filter-warnings.cjs create mode 100644 scripts/translation-changeset.ts diff --git a/.github/workflows/translation-changesets.yml b/.github/workflows/translation-changesets.yml index 0a93e98cc..b3f4d645d 100644 --- a/.github/workflows/translation-changesets.yml +++ b/.github/workflows/translation-changesets.yml @@ -31,31 +31,10 @@ jobs: run: pnpm ci:install shell: bash - - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7 - with: - script: | - const write = await import('@changesets/write') - const execa = await import('execa') - - const summary = `Translations Updated (PR #${context.payload.pull_request.number})` - - const opts = { reject: false } - const { stdout } = await execa('grep', [summary, '-r', '.changeset'], opts) - - if (stdout) { - console.log('Changeset already exists') - return - } - - const releases = [ - { name: "@studiocms/core", type: "patch" } - ] - - const cwd = process.cwd() - const changesetId = await write.default({ summary, releases }, cwd) - - console.log(`Changeset created: ${changesetId}`) - + - name: Create Translation Changesets + run: pnpm translations:changesets + env: + CI_PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }} - name: Commit changes uses: stefanzweifel/git-auto-commit-action@8621497c8c39c72f3e2a999a26b4ca1b5058a842 # v5 diff --git a/package.json b/package.json index 501d71f69..69761c4ff 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,8 @@ "update:web": "pnpm --filter web up --latest", "update:docs": "pnpm --filter docs up --latest", "web:dev": "pnpm --filter web dev", - "docs:dev": "pnpm --filter docs dev" + "docs:dev": "pnpm --filter docs dev", + "translations:changeset": "tsm --require=./scripts/filter-warnings.cjs ./scripts/translation-changeset.ts" }, "devDependencies": { "@biomejs/biome": "1.9.3", @@ -37,6 +38,7 @@ "@changesets/changelog-github": "^0.5.0", "@changesets/write": "0.3.2", "execa": "9.5.1", - "typescript": "catalog:" + "typescript": "catalog:", + "tsm": "2.3.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dad244490..8f901fb5a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -354,6 +354,9 @@ importers: execa: specifier: 9.5.1 version: 9.5.1 + tsm: + specifier: 2.3.0 + version: 2.3.0 typescript: specifier: 'catalog:' version: 5.6.3 @@ -1828,6 +1831,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm@0.15.18': + resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + '@esbuild/android-arm@0.21.5': resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} @@ -1936,6 +1945,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-loong64@0.15.18': + resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-loong64@0.21.5': resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} @@ -3893,6 +3908,131 @@ packages: es-module-lexer@1.5.4: resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + esbuild-android-64@0.15.18: + resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + esbuild-android-arm64@0.15.18: + resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + esbuild-darwin-64@0.15.18: + resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + esbuild-darwin-arm64@0.15.18: + resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + esbuild-freebsd-64@0.15.18: + resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + esbuild-freebsd-arm64@0.15.18: + resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + esbuild-linux-32@0.15.18: + resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + esbuild-linux-64@0.15.18: + resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + esbuild-linux-arm64@0.15.18: + resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + esbuild-linux-arm@0.15.18: + resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + esbuild-linux-mips64le@0.15.18: + resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + esbuild-linux-ppc64le@0.15.18: + resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + esbuild-linux-riscv64@0.15.18: + resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + esbuild-linux-s390x@0.15.18: + resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + esbuild-netbsd-64@0.15.18: + resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + esbuild-openbsd-64@0.15.18: + resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + esbuild-sunos-64@0.15.18: + resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + esbuild-windows-32@0.15.18: + resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + esbuild-windows-64@0.15.18: + resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + esbuild-windows-arm64@0.15.18: + resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + esbuild@0.15.18: + resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} + engines: {node: '>=12'} + hasBin: true + esbuild@0.21.5: resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} engines: {node: '>=12'} @@ -5787,6 +5927,11 @@ packages: tslib@2.6.3: resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + tsm@2.3.0: + resolution: {integrity: sha512-++0HFnmmR+gMpDtKTnW3XJ4yv9kVGi20n+NfyQWB9qwJvTaIWY9kBmzek2YUQK5APTQ/1DTrXmm4QtFPmW9Rzw==} + engines: {node: '>=12'} + hasBin: true + tsx@4.16.2: resolution: {integrity: sha512-C1uWweJDgdtX2x600HjaFaucXTilT7tgUZHbOE4+ypskZ1OP8CRCSDkCxG6Vya9EwaFIVagWwpaVAn5wzypaqQ==} engines: {node: '>=18.0.0'} @@ -7394,6 +7539,9 @@ snapshots: '@esbuild/android-arm64@0.23.0': optional: true + '@esbuild/android-arm@0.15.18': + optional: true + '@esbuild/android-arm@0.21.5': optional: true @@ -7448,6 +7596,9 @@ snapshots: '@esbuild/linux-ia32@0.23.0': optional: true + '@esbuild/linux-loong64@0.15.18': + optional: true + '@esbuild/linux-loong64@0.21.5': optional: true @@ -9635,6 +9786,91 @@ snapshots: es-module-lexer@1.5.4: {} + esbuild-android-64@0.15.18: + optional: true + + esbuild-android-arm64@0.15.18: + optional: true + + esbuild-darwin-64@0.15.18: + optional: true + + esbuild-darwin-arm64@0.15.18: + optional: true + + esbuild-freebsd-64@0.15.18: + optional: true + + esbuild-freebsd-arm64@0.15.18: + optional: true + + esbuild-linux-32@0.15.18: + optional: true + + esbuild-linux-64@0.15.18: + optional: true + + esbuild-linux-arm64@0.15.18: + optional: true + + esbuild-linux-arm@0.15.18: + optional: true + + esbuild-linux-mips64le@0.15.18: + optional: true + + esbuild-linux-ppc64le@0.15.18: + optional: true + + esbuild-linux-riscv64@0.15.18: + optional: true + + esbuild-linux-s390x@0.15.18: + optional: true + + esbuild-netbsd-64@0.15.18: + optional: true + + esbuild-openbsd-64@0.15.18: + optional: true + + esbuild-sunos-64@0.15.18: + optional: true + + esbuild-windows-32@0.15.18: + optional: true + + esbuild-windows-64@0.15.18: + optional: true + + esbuild-windows-arm64@0.15.18: + optional: true + + esbuild@0.15.18: + optionalDependencies: + '@esbuild/android-arm': 0.15.18 + '@esbuild/linux-loong64': 0.15.18 + esbuild-android-64: 0.15.18 + esbuild-android-arm64: 0.15.18 + esbuild-darwin-64: 0.15.18 + esbuild-darwin-arm64: 0.15.18 + esbuild-freebsd-64: 0.15.18 + esbuild-freebsd-arm64: 0.15.18 + esbuild-linux-32: 0.15.18 + esbuild-linux-64: 0.15.18 + esbuild-linux-arm: 0.15.18 + esbuild-linux-arm64: 0.15.18 + esbuild-linux-mips64le: 0.15.18 + esbuild-linux-ppc64le: 0.15.18 + esbuild-linux-riscv64: 0.15.18 + esbuild-linux-s390x: 0.15.18 + esbuild-netbsd-64: 0.15.18 + esbuild-openbsd-64: 0.15.18 + esbuild-sunos-64: 0.15.18 + esbuild-windows-32: 0.15.18 + esbuild-windows-64: 0.15.18 + esbuild-windows-arm64: 0.15.18 + esbuild@0.21.5: optionalDependencies: '@esbuild/aix-ppc64': 0.21.5 @@ -12145,6 +12381,10 @@ snapshots: tslib@2.6.3: {} + tsm@2.3.0: + dependencies: + esbuild: 0.15.18 + tsx@4.16.2: dependencies: esbuild: 0.21.5 diff --git a/scripts/filter-warnings.cjs b/scripts/filter-warnings.cjs new file mode 100644 index 000000000..0a41d57f6 --- /dev/null +++ b/scripts/filter-warnings.cjs @@ -0,0 +1,23 @@ +/** + * When using custom loaders like `tsm` to add TypeScript & module support to scripts, + * Node.js outputs a known set of warnings, which distract from the actual script output. + * + * By adding `--require=./scripts/lib/filter-warnings.cjs` to the `node` or `tsm` args, + * this script filters those known warnings (but not any others) from the output. + */ + +// Remove Node's built-in `warning` listener which outputs all warnings to stderr +process.removeAllListeners('warning'); + +// Add our own version that skips known warnings +process.on('warning', (warning) => { + const { name, message } = warning; + if ( + name === 'ExperimentalWarning' && + (message.indexOf('--experimental-loader') > -1 || message.indexOf('Custom ESM Loaders') > -1) + ) + return; + if (name === 'DeprecationWarning' && message.indexOf('Obsolete loader hook') > -1) return; + + console.warn(warning); +}); diff --git a/scripts/translation-changeset.ts b/scripts/translation-changeset.ts new file mode 100644 index 000000000..375a051bd --- /dev/null +++ b/scripts/translation-changeset.ts @@ -0,0 +1,38 @@ +import write from '@changesets/write'; +import { execa } from 'execa'; + +async function run() { + // Get the PR number from the CI environment + const PR_NUMBER = process.env.CI_PULL_REQUEST_NUMBER; + + // If the PR number is not found, exit the process + if (!PR_NUMBER) { + console.log('No PR number found'); + process.exit(0); + } + + // Changeset summary + const summary = `Translation Updated (PR: #${PR_NUMBER})`; + + // Check if the changeset already exists + + // Run the grep command to check if the changeset already exists + const { stdout } = await execa('grep', [summary, '-r', '.changeset'], { reject: false }); + + // If the changeset already exists, exit the process + if (stdout) { + console.log('Changeset already exists'); + process.exit(0); + } + + // Create a new changeset + const changesetId = await write( + { summary, releases: [{ name: '@studiocms/core', type: 'patch' }] }, + process.cwd() + ); + + // Log the changeset id + console.log(`Changeset created: ${changesetId}`); +} + +run(); From 86f79907229d6d1726b25bad7b19daf23f4c51b8 Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Thu, 14 Nov 2024 22:11:25 -0800 Subject: [PATCH 14/40] Refactor translation-changesets workflow to fix command typo --- .github/workflows/translation-changesets.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/translation-changesets.yml b/.github/workflows/translation-changesets.yml index b3f4d645d..f2470367e 100644 --- a/.github/workflows/translation-changesets.yml +++ b/.github/workflows/translation-changesets.yml @@ -32,7 +32,7 @@ jobs: shell: bash - name: Create Translation Changesets - run: pnpm translations:changesets + run: pnpm translations:changeset env: CI_PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }} From 6e06d8c57c12f7e67763d16f5c479567cd82b1f6 Mon Sep 17 00:00:00 2001 From: "StudioCMS (bot)" <no-reply@studiocms.xyz> Date: Fri, 15 Nov 2024 00:23:36 -0800 Subject: [PATCH 15/40] Core i18n:Translations update from StudioCMS i18n (#376) * Translated using Weblate (German) Currently translated at 58.0% (18 of 31 strings) Translated using Weblate (German) Currently translated at 12.9% (4 of 31 strings) Co-authored-by: Louis Escher <louisescher@proton.me> Translate-URL: https://i18n.studiocms.xyz/projects/studiocms/core-i18n/de/ Translation: StudioCMS/Core i18n * [ci] changesets * [ci] changesets * Delete .changeset/dry-zoos-behave.md bug --------- Co-authored-by: Louis Escher <louisescher@proton.me> Co-authored-by: Adam Matthiesen <amatthiesen@outlook.com> --- .changeset/long-cherries-exercise.md | 5 +++ .../src/i18n/translations/de.json | 36 +++++++++---------- 2 files changed, 23 insertions(+), 18 deletions(-) create mode 100644 .changeset/long-cherries-exercise.md diff --git a/.changeset/long-cherries-exercise.md b/.changeset/long-cherries-exercise.md new file mode 100644 index 000000000..671718863 --- /dev/null +++ b/.changeset/long-cherries-exercise.md @@ -0,0 +1,5 @@ +--- +"@studiocms/core": patch +--- + +Translation Updated (PR: #376) diff --git a/packages/studiocms_core/src/i18n/translations/de.json b/packages/studiocms_core/src/i18n/translations/de.json index 4de424a5c..43904161d 100644 --- a/packages/studiocms_core/src/i18n/translations/de.json +++ b/packages/studiocms_core/src/i18n/translations/de.json @@ -1,26 +1,26 @@ { - "displayName": "", + "displayName": "German (de-DE)", "translations": { "@studiocms/auth:login": { - "title": "", - "description": "", - "header": "", - "sub-header-usernamepasswordoauth": "", - "sub-header-usernamepassword": "", - "sub-header-oauth": "", - "sub-header-noprovider": "", - "username-label": "", - "password-label": "", - "login-button": "", - "allow-registration-noaccount": "", - "allow-registration-register": "" + "title": "Login-Seite", + "description": "Login-Seite", + "header": "Login", + "sub-header-usernamepasswordoauth": "Gebe deinen Nutzername & Passwort ein oder verwende einen der Login-Anbieter, um dich einzuloggen.", + "sub-header-usernamepassword": "Gebe deinen Nutzername und Passwort ein.", + "sub-header-oauth": "Wähle einen der Anbieter um dich einzuloggen.", + "sub-header-noprovider": "Kein Login-Anbieter konfiguriert. Bitte kontaktiere deinen Administrator.", + "username-label": "Nutzername", + "password-label": "Passwort", + "login-button": "Einloggen", + "allow-registration-noaccount": "Du hast keinen Account?", + "allow-registration-register": "Registriere dich hier!" }, "@studiocms/auth:signup": { - "title": "", - "description": "", - "header": "", - "sub-header-usernamepasswordoauth": "", - "sub-header-usernamepassword": "", + "title": "Registrierung", + "description": "Registrierung", + "header": "Registrierung", + "sub-header-usernamepasswordoauth": "Erstelle einen Account mit einer der vorliegenden Optionen.", + "sub-header-usernamepassword": "Erstelle einen Account mit dem Registrierungs-Formular.", "sub-header-oauth": "", "sub-header-noprovider": "", "username-label": "", From 65ace07aaf7ad74a409d7a426572a077b5f72209 Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Sat, 16 Nov 2024 08:35:25 -0800 Subject: [PATCH 16/40] Update www/docs/src/content/docs/contributing/getting-started.mdx Co-authored-by: Reuben Tier <64310361+TheOtterlord@users.noreply.github.com> --- www/docs/src/content/docs/contributing/getting-started.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/www/docs/src/content/docs/contributing/getting-started.mdx b/www/docs/src/content/docs/contributing/getting-started.mdx index 4cb3c62d2..ebcc1b14e 100644 --- a/www/docs/src/content/docs/contributing/getting-started.mdx +++ b/www/docs/src/content/docs/contributing/getting-started.mdx @@ -24,5 +24,5 @@ We welcome contributions from the community! Whether it's bug reports, feature r ## Bug Reports and Feature Requests -If you encounter any bugs or have ideas for new features, please open an issue on our [GitHub repository](https://github.com/astrolicious/studiocms). When creating a new issue, please provide as much detail as possible, including steps to reproduce the issue (for bugs) and a clear description of the proposed feature. +If you encounter a bug or want to suggest a new feature, please open an issue on our [GitHub repository](https://github.com/astrolicious/studiocms). When creating a new issue, please provide as much detail as possible, including steps to reproduce the issue (for bugs) and a clear description of the proposed feature. From d5e2719e66d9b4f9f34208440d7f115962e5c34c Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Sat, 16 Nov 2024 08:39:39 -0800 Subject: [PATCH 17/40] move info around to fix the new contributing sections --- .../src/content/docs/contributing/code-contributions.mdx | 2 ++ www/docs/src/content/docs/contributing/getting-started.mdx | 6 +----- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/www/docs/src/content/docs/contributing/code-contributions.mdx b/www/docs/src/content/docs/contributing/code-contributions.mdx index 3c7761cb0..839e914ae 100644 --- a/www/docs/src/content/docs/contributing/code-contributions.mdx +++ b/www/docs/src/content/docs/contributing/code-contributions.mdx @@ -7,6 +7,8 @@ sidebar: import { Steps } from '@astrojs/starlight/components'; +In this guide you will get an overview of the contribution workflow from opening an issue, creating a PR, reviewing, and merging the PR. + If you'd like to contribute code to this project, please follow the steps below: ## Solve an issue diff --git a/www/docs/src/content/docs/contributing/getting-started.mdx b/www/docs/src/content/docs/contributing/getting-started.mdx index ebcc1b14e..b4802c9b1 100644 --- a/www/docs/src/content/docs/contributing/getting-started.mdx +++ b/www/docs/src/content/docs/contributing/getting-started.mdx @@ -10,7 +10,7 @@ Thank you for investing your time in contributing to our project! Read our [Code of Conduct](https://github.com/astrolicious/studiocms?tab=coc-ov-file#code-of-conduct-) to keep our community approachable and respectable. -In this guide you will get an overview of the contribution workflow from opening an issue, creating a PR, reviewing, and merging the PR. +We welcome contributions from the community! Whether it's bug reports, feature requests, or code contributions, we appreciate your help in making this project better. To navigate our codebase with confidence, see [How it works](/how-it-works/) section. ## Our Contributors @@ -18,10 +18,6 @@ Our project exists thanks to all the people who contribute. [Join us on GitHub]( <ContributorList /> -## Getting started - -We welcome contributions from the community! Whether it's bug reports, feature requests, or code contributions, we appreciate your help in making this project better. To navigate our codebase with confidence, see [How it works](/how-it-works/) section. - ## Bug Reports and Feature Requests If you encounter a bug or want to suggest a new feature, please open an issue on our [GitHub repository](https://github.com/astrolicious/studiocms). When creating a new issue, please provide as much detail as possible, including steps to reproduce the issue (for bugs) and a clear description of the proposed feature. From f3c234afa1b4f5951f8020ad739d30e275da8261 Mon Sep 17 00:00:00 2001 From: Reuben Tier <otterlord.dev@gmail.com> Date: Sun, 17 Nov 2024 16:57:18 +0000 Subject: [PATCH 18/40] Remove css imports --- packages/studiocms_ui/src/css/global.css | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/studiocms_ui/src/css/global.css b/packages/studiocms_ui/src/css/global.css index a3ab33444..db1e321a5 100644 --- a/packages/studiocms_ui/src/css/global.css +++ b/packages/studiocms_ui/src/css/global.css @@ -1,4 +1,2 @@ @import url("./colors.css"); -@import url("./sizes.css"); @import url("./resets.css"); -@import url("./spacings.css"); From 79b09904a6aa96ef4d71082934bdd2f76eec2021 Mon Sep 17 00:00:00 2001 From: Louis Escher <66965600+louisescher@users.noreply.github.com> Date: Sun, 17 Nov 2024 20:56:52 +0100 Subject: [PATCH 19/40] Add theme helper, theme toggle component, docs (#377) * Create draft PR for #351 [skip ci] * version and prep docs * Style adjustments to docs * Revert text change * update og images to conform to twitter guidelines * update lockfile * fix lint errors * refactor docs to cleanup the whole thing * remove now unneeded package * update typedoc config * dep cleanup * Refactor Integration.astro to display "N/A" for unreleased packages * update pageTitle to support integrations * add sponsors section * up * Refactor Sponsors.astro to add target and rel attributes to sponsor link * Update sidebar label * Refactor Integration.astro to add support for plugins * add note to styles * update label * Refactor Astro config to add support for @studiocms/blog plugin * fix * Refactor Astro config to remove isScoped and scope properties * Refactor Astro config to remove unused code and improve package name parsing * Refactor Sponsors component styles to center align links and headings * fix icon * Refactor packagecatalog config to remove extra code and improve package name parsing * fix config reference * Refactor PackageCatalog component to filter and sort packages based on pkgType prop * Refactor PackageCatalog component to use 'catalog' prop instead of 'pkgType' * Refactor Astro.props in Integration.astro to include publiclyUsable prop * Refactor config.ts to include redirectSchema * refactor * Refactor Astro.config.mts to include @shikijs/twoslash integration * Refactor Astro.config.mts to use StudioCMSOptions instead of StudioCMSOptionsSchema._input * Dashboard additions removals (#354) * Purge mentions of Astro Studio * Add UI docs (getting started & button) * Update packages/studiocms/src/index.ts Co-authored-by: Adam Matthiesen <amatthiesen@outlook.com> * Fix border rounding * Shrink hero * Update www/docs/astro.config.mts Co-authored-by: Adam Matthiesen <amatthiesen@outlook.com> * Finish button docs, fix merge conflicts * Add more UI lib docs, adjust UI package - Fixed a typo that caused a typedoc warning. -Fixed a CSS leak in the UI library. - Adjusted the DropdownHelper API (added an individual show toggle and renamed some functions) - Looooooooooots more docs stuff * Update button.mdx * Adjust wording * Update dropdown.mdx * Add more UI docs, fix UI lib css * Adjust sponsors css, add more UI lib docs * Improve code snippets * Document textarea, toggle, and user * Changes to UI lib, new UI lib docs * Fix missing comma * Update custom.css * mention include styles * Adjustments for twoslash * Update custom.css * Twoslash more like twobitch * Funny markdown support :) * Made twoslash appear correctly * Add changesets * Add explicitTrigger for twoslash --------- Co-authored-by: Reuben Tier <otterlord.dev@gmail.com> Co-authored-by: Adam Matthiesen <amatthiesen@outlook.com> * start of adding transformers and their css * more twoslash! * Update '@astrojs/starlight' version to 0.28.3 * Update dependencies for '@astrojs/starlight', '@astrojs/db', '@astrojs/node', '@astrojs/react', and '@astrojs/web-vitals' * test * apply fix * update docs and re-enable astro check * Update configuration.mdx with link to reference pages * Add description for StudioCMS DevApps * Refactor StudioCMS package.json exports * more progress * Update Astro version to 4.16.3 and adjust button position in custom.css * update default bracketPairs comment * update to conform to new astro docs and update other links * add ts-nocheck to prevent warnings/errors for shiki transformer * revert * new title transformer for shiki * add titles * cleanup * update demo link in code snippet * Update custom.css styles for code snippets * Update studiocms/src/index.ts and www/docs/src/content/docs/config-reference/options-schema.mdx * Refactor import statement in defineStudioCMSConfig.ts * fix the TS error that was being caused by a `.` instead of a `,` * some css styling for the copy button * update css * Update custom.css with new color tokens and styling for highlighted words and diffs * remove spacing * Update custom.css to add background color for highlighted words and diffs * Update custom.css to adjust background colors for highlighted words and diffs * fixed css * Update custom.css to remove inline-block display for diff spans * Remove test comment, fix copy SVGs, color changes * Add image zoom, remove carousel, adjust hero buttons * refactor css file into multiple files * Refactor shiki transformers and update import paths * Refactor Docs landing page * Refactor SplitCard component CSS * Refactor Youtube.astro component CSS * Refactor why-studioCMS.mdx file * Refactor card CSS to include all the cards from starlight * Refactor index.mdx to include instructions for setting up Turso database * Refactor Getting started guide and remove unused components * Refactor getting started guide * Refactor config references * Refactor config references and add Renderer type * Refactor StudioCMS custom renderer documentation to include information about defining custom renderers and their usage. * cleanup docs * Refactor environment variable documentation and add ReadMore component * Refactor YouTube and landing card components * Refactor Discord button styling in index.mdx and starlight.css * Refactor starlight.css: Add gap to LinkButton button styling * fix * Refactor SplitCard component: Add padding to split container * Refactor SplitCard component: Remove unnecessary padding in split container * Refactor landing page: Update StudioCMS card icon * Custom head component to preload the fonts * Add new component for planned Contributor guide page * Update sidebar component name, and update SiteTitle component * Update astro.config.mts: Add 'x.com' link to StudioCMS social media * Contributing guide! * Update astro.config.mts: Add remotePatterns for images Add new Contributing guide * Update FacePile component: Adjust avatar size and alignment * Update contributing guide * Update contributing guide: Add link to contributing guide in README.md * Update astro.config.mts: Add badge to @studiocms/ui label * Update contributing guide: Update link to contributors list in contributing.mdx * Update dependencies: Add hast-util-to-string, html-escaper, rehype-slug, rehype-autolink-headings, rehype-external-links, and @types/html-escaper * Update anchor link icon style * Update anchor link icon style and display of content elements * Update dependencies: Add shiki-transformer-color-highlight and unified * Update contributor list component and styles * Refactor getContributorsByPath function to remove ignored commit keywords and improve author handling * cleanup * Update external link icon and remove underline from anchor links * Update SiteTitle.astro * Add bun as a package manager option * Refactor getContributorsByPath function to improve author handling and remove ignored commit keywords * Refactor TursoCLI command builder for improved handling of authentication and database commands * Refactor to use dynamic sponsor links * Update strings.ts * Update why-studioCMS.mdx * Feat(devapps): Wordpress Importer (#360) * initial progress * okay well it works! * Add Wordpress importer app * Add WordPress Importer app and update README.md * update readme * update docs * Add Toolbar app image and update README.md * remove unnecessary footnote * Refactor wp-api converters and utils This commit refactors the wp-api converters and utils in the studiocms_devapps package. It introduces the following changes: - Added async/await functionality to ConvertToPageData and ConvertToPostData functions. - Implemented fetching and downloading of title images for pages and posts. - Updated the apiEndpoint function to include the 'media' type. These changes improve the efficiency and functionality of the wp-api converters and utils. * Refactor wp-api converters and utils, and add closeOnOutsideClick function * Refactor createWindowElement function and add closeOnOutsideClick function * Refactor TypeDoc configuration to include additional files * Refactor devApps configuration to include WP API Importer * typo * Refactor wp-api converters and utils, and fix success check in wp-importer * Refactor to remove warning as per @dreyfus92 * Update www/docs/src/content/docs/start-here/why-studioCMS.mdx Co-authored-by: Adam Matthiesen <amatthiesen@outlook.com> * Update www/docs/src/content/docs/start-here/why-studioCMS.mdx Co-authored-by: Adam Matthiesen <amatthiesen@outlook.com> * Update www/docs/src/content/docs/start-here/why-studioCMS.mdx Co-authored-by: Adam Matthiesen <amatthiesen@outlook.com> * Update www/docs/src/content/docs/start-here/why-studioCMS.mdx Co-authored-by: Adam Matthiesen <amatthiesen@outlook.com> * Update title in how-it-works/index.mdx * Fix twoslash popups overflowing parent container * Add theme helper, theme toggle component, docs * Remove unused function call * Update index.ts * Fix a typo in the JSDoc * Update theme-helper.mdx Added an example for how to store the theme * Update theme-helper.mdx --------- Co-authored-by: create-issue-branch[bot] <53036503+create-issue-branch[bot]@users.noreply.github.com> Co-authored-by: Adam Matthiesen <amatthiesen@outlook.com> Co-authored-by: Reuben Tier <otterlord.dev@gmail.com> --- .changeset/sharp-zoos-tickle.md | 5 + .../src/schemas/config/index.ts | 1 - packages/studiocms_ui/src/components.ts | 1 + .../src/components/ThemeToggle.astro | 40 ++++++ packages/studiocms_ui/src/components/index.ts | 1 + .../studiocms_ui/src/utils/ThemeHelper.ts | 127 ++++++++++++++++++ pnpm-lock.yaml | 2 +- .../src/components/ThemeHelperScript.astro | 11 ++ www/docs/src/components/Youtube.astro | 16 +-- .../studiocms-ui/components/theme-helper.mdx | 113 ++++++++++++++++ .../studiocms-ui/components/theme-toggle.mdx | 55 ++++++++ www/web/package.json | 1 - 12 files changed, 362 insertions(+), 11 deletions(-) create mode 100644 .changeset/sharp-zoos-tickle.md create mode 100644 packages/studiocms_ui/src/components/ThemeToggle.astro create mode 100644 packages/studiocms_ui/src/utils/ThemeHelper.ts create mode 100644 www/docs/src/components/ThemeHelperScript.astro create mode 100644 www/docs/src/content/docs/customizing/studiocms-ui/components/theme-helper.mdx create mode 100644 www/docs/src/content/docs/customizing/studiocms-ui/components/theme-toggle.mdx diff --git a/.changeset/sharp-zoos-tickle.md b/.changeset/sharp-zoos-tickle.md new file mode 100644 index 000000000..7f1811374 --- /dev/null +++ b/.changeset/sharp-zoos-tickle.md @@ -0,0 +1,5 @@ +--- +"@studiocms/ui": patch +--- + +Added a theme helper and theme toggle component diff --git a/packages/studiocms_core/src/schemas/config/index.ts b/packages/studiocms_core/src/schemas/config/index.ts index fc7933e7a..d689ec5e5 100644 --- a/packages/studiocms_core/src/schemas/config/index.ts +++ b/packages/studiocms_core/src/schemas/config/index.ts @@ -75,5 +75,4 @@ export const StudioCMSOptionsSchema = z .default({}); export type StudioCMSOptions = typeof StudioCMSOptionsSchema._input; - export type StudioCMSConfig = typeof StudioCMSOptionsSchema._output; diff --git a/packages/studiocms_ui/src/components.ts b/packages/studiocms_ui/src/components.ts index e4ae92774..09998d4fc 100644 --- a/packages/studiocms_ui/src/components.ts +++ b/packages/studiocms_ui/src/components.ts @@ -14,6 +14,7 @@ export { Select } from './components/index'; export { SearchSelect } from './components/index'; export { Dropdown, DropdownHelper } from './components/index'; export { User } from './components/index'; +export { ThemeToggle } from './components/index'; export { Sidebar, diff --git a/packages/studiocms_ui/src/components/ThemeToggle.astro b/packages/studiocms_ui/src/components/ThemeToggle.astro new file mode 100644 index 000000000..bc6472b5c --- /dev/null +++ b/packages/studiocms_ui/src/components/ThemeToggle.astro @@ -0,0 +1,40 @@ +--- +import type { ComponentProps } from "astro/types"; +import Button from "./Button.astro"; + +interface Props extends ComponentProps<typeof Button> {}; + +const props = Astro.props; +--- + +<Button id='sui__theme-toggle' {...props}> + <div id="dark-content"> + <slot name="dark" /> + </div> + <div id="light-content"> + <slot name="light" /> + </div> +</Button> + +<script> + import { ThemeHelper } from '../utils/ThemeHelper'; + + const themeToggle = document.getElementById('sui__theme-toggle'); + const themeHelper = new ThemeHelper(); + + themeHelper.registerToggle(themeToggle); +</script> + +<style is:global> + #sui__theme-toggle #dark-content, #sui__theme-toggle #light-content { + display: none; + } + + [data-theme="dark"] #sui__theme-toggle #dark-content { + display: block; + } + + [data-theme="light"] #sui__theme-toggle #light-content { + display: block; + } +</style> diff --git a/packages/studiocms_ui/src/components/index.ts b/packages/studiocms_ui/src/components/index.ts index 072e5be65..46bf1c7e1 100644 --- a/packages/studiocms_ui/src/components/index.ts +++ b/packages/studiocms_ui/src/components/index.ts @@ -14,6 +14,7 @@ export { default as Select } from "./Select.astro"; export { default as SearchSelect } from "./SearchSelect.astro"; export { default as Dropdown } from "./Dropdown/Dropdown.astro"; export { default as User } from "./User.astro"; +export { default as ThemeToggle } from './ThemeToggle.astro'; export { default as Sidebar } from "./Sidebar/Single.astro"; export { default as DoubleSidebar } from "./Sidebar/Double.astro"; diff --git a/packages/studiocms_ui/src/utils/ThemeHelper.ts b/packages/studiocms_ui/src/utils/ThemeHelper.ts new file mode 100644 index 000000000..ffffb794f --- /dev/null +++ b/packages/studiocms_ui/src/utils/ThemeHelper.ts @@ -0,0 +1,127 @@ +type Theme = 'dark' | 'light' | 'system'; +type ThemeChangeCallback = (newTheme: Theme, oldTheme: Theme) => void; + +/** + * A helper to toggle, set and get the current StudioCMS UI theme. + */ +class ThemeHelper { + private themeManagerElement: HTMLElement; + private observer: MutationObserver | undefined; + private themeChangeCallbacks: ThemeChangeCallback[] = []; + + /** + * A helper to toggle, set and get the current StudioCMS UI theme. + * @param themeProvider The element that should carry the data-theme attribute (replaces the document root) + */ + constructor(themeProvider?: HTMLElement) { + this.themeManagerElement = themeProvider || document.documentElement; + } + + /** + * Get the current theme. + * @param {boolean} resolveSystemTheme Whether to resolve the `system` theme to the actual theme (`dark` or `light`) + * @returns {Theme} The current theme. + */ + public getTheme = <T extends boolean>(resolveSystemTheme?: T): T extends true ? 'dark' | 'light' : Theme => { + const theme = this.themeManagerElement.dataset.theme as Theme || 'system'; + + if (!resolveSystemTheme) { + // Side note: Don't ask me why this type wizardry is needed but it gives proper return types so I don't care + return theme as T extends true ? 'dark' | 'light' : Theme; + } + + if (this.themeManagerElement.dataset.theme !== 'system') { + return this.themeManagerElement.dataset.theme as 'dark' | 'light'; + } + + if (window.matchMedia('(prefers-color-scheme: dark)').matches) { + return 'dark'; + } + + if (window.matchMedia('(prefers-color-scheme: light)').matches) { + return 'light'; + } + + // This should (in theory) never happen since, at time of writing, window.matchMedia is supported + // by 96.83% of all browsers in use. (https://caniuse.com/mdn-api_window_matchmedia) + throw new Error('Unable to resolve theme. (Most likely cause: window.matchMedia is not supported by the browser)'); + }; + + /** + * Sets the current theme. + * @param theme The new theme. One of `dark`, `light` or `system`. + */ + public setTheme = (theme: Theme): void => { + this.themeManagerElement.dataset.theme = theme; + }; + + /** + * Toggles the current theme. + * + * If the theme is set to `system` (or no theme is set via the root element), + * the theme is set depending on the user's color scheme preference (set in the browser). + */ + public toggleTheme = (): void => { + const theme = this.getTheme(); + + if (theme === 'dark') { + this.setTheme('light'); + return; + } + + if (theme === 'light') { + this.setTheme('dark'); + return; + } + + if (window.matchMedia('(prefers-color-scheme: dark)').matches) { + this.setTheme('light'); + return; + } + + if (window.matchMedia('(prefers-color-scheme: light)').matches) { + this.setTheme('dark'); + return; + } + }; + + /** + * Register an element to act as a toggle! When clicked, it will toggle the theme. + * @param toggle The HTML element that should act as the toggle + */ + public registerToggle = (toggle: HTMLElement | null): void => { + if (!toggle) { + console.error('Element passed to toggle registration does not exist.'); + return; + }; + + toggle.addEventListener('click', this.toggleTheme); + }; + + /** + * Allows for adding a callback that gets called whenever the theme changes, + * @param callback The callback to be executed + */ + public onThemeChange = (callback: ThemeChangeCallback): void => { + if (!this.observer) { + this.observer = new MutationObserver(this.themeManagerMutationHandler); + this.observer.observe(this.themeManagerElement, { attributes: true, attributeOldValue: true, attributeFilter: ['data-theme'] }); + } + + this.themeChangeCallbacks.push(callback); + }; + + /** + * Simply gets the first mutation and calls all registered callbacks. + * @param mutations The mutations array from the observer. Due to the specified options, this will always be a 1-length array, + */ + private themeManagerMutationHandler = (mutations: MutationRecord[]): void => { + if (!mutations[0]) return; + + for (const callback of this.themeChangeCallbacks) { + callback(this.getTheme(), mutations[0].oldValue as Theme || 'system'); + } + }; +} + +export { ThemeHelper, type Theme }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ed25aba40..1fe3f2010 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12179,4 +12179,4 @@ snapshots: zod@3.23.8: {} - zwitch@2.0.4: {} + zwitch@2.0.4: {} \ No newline at end of file diff --git a/www/docs/src/components/ThemeHelperScript.astro b/www/docs/src/components/ThemeHelperScript.astro new file mode 100644 index 000000000..dde1575bc --- /dev/null +++ b/www/docs/src/components/ThemeHelperScript.astro @@ -0,0 +1,11 @@ +<script> + import { ThemeHelper } from '@studiocms/ui/utils/ThemeHelper.ts'; + + const themeHelper = new ThemeHelper(); + + const outputSpan = document.querySelector<HTMLSpanElement>('#theme-listener-output')!; + + themeHelper.onThemeChange((newTheme, oldTheme) => { + outputSpan.textContent = `Theme is now: ${newTheme}! (Before: ${oldTheme})`; + }); +</script> diff --git a/www/docs/src/components/Youtube.astro b/www/docs/src/components/Youtube.astro index 6e16aaca6..ea35f9614 100644 --- a/www/docs/src/components/Youtube.astro +++ b/www/docs/src/components/Youtube.astro @@ -1,12 +1,12 @@ --- -import { YouTube } from 'astro-embed'; - -interface Props { - id: string; - title?: string; -} - -const { id, title } = Astro.props; +import { YouTube } from 'astro-embed'; + +interface Props { + id: string; + title?: string; +} + +const { id, title } = Astro.props; --- <YouTube id={id} title={title} /> diff --git a/www/docs/src/content/docs/customizing/studiocms-ui/components/theme-helper.mdx b/www/docs/src/content/docs/customizing/studiocms-ui/components/theme-helper.mdx new file mode 100644 index 000000000..c310ef553 --- /dev/null +++ b/www/docs/src/content/docs/customizing/studiocms-ui/components/theme-helper.mdx @@ -0,0 +1,113 @@ +--- +title: Theme Helper +--- +import { Tabs, TabItem } from '@astrojs/starlight/components'; +import PreviewCard from '~/components/PreviewCard.astro'; +import ThemeHelperScript from '~/components/ThemeHelperScript.astro'; + +To make managing the active theme easier, we provide a helper class to get, set and toggle the theme. Additionally, +you can provide callbacks for when the theme gets changed! + +## Usage + +:::caution +The `ThemeHelper` can only be used client-side (in `<script>` tags). +::: +```ts title="script.ts" twoslash +import { ThemeHelper } from '@studiocms/ui/utils/ThemeHelper.ts'; + +// Instanciate a new helper +const themeHelper = new ThemeHelper(); + +// Get the current theme. (One of `dark`, `light` or `system`) +const theme = themeHelper.getTheme(); + +// Get the current theme but resolve the actual theme if `system` is selected +// @noErrors +const resolvedTheme = themeHelper.getTheme(true); + +// Set the theme to light +themeHelper.setTheme('light'); + +// Toggle the theme +themeHelper.toggleTheme(); + +// Register an element that should act as a toggle +const toggleButton = document.querySelector<HTMLButtonElement>('#toggle-button'); +themeHelper.registerToggle(toggleButton); +``` + +### Listening for theme changes + +Using the `ThemeHelper` class, you can listen to theme changes! This is useful when you have logic that needs to run +whenever the color scheme changes, for example in a `three.js` canvas where you need to change an image +(*\*cough cough\* our login page \*cough\**). + +```ts title="script.ts" twoslash +import { ThemeHelper } from '@studiocms/ui/utils/ThemeHelper.ts'; + +// Instanciate a new helper +const themeHelper = new ThemeHelper(); + +// Add a callback that gets called when the theme changes +themeHelper.onThemeChange((newTheme) => { + // Your logic here! +}); +``` + +Here's a live example: Change the theme via the option in the top-right corner of your screen. If you're on mobile, +open the navbar and scroll all the way down. After you've changed the theme, check the text below: + +<Tabs> + <TabItem label="Preview"> + <PreviewCard> + <span id="theme-listener-output"> + Theme hasn't changed yet. + </span> + </PreviewCard> + </TabItem> + <TabItem label="Code"> + ```html + <span id="theme-listener-output"> + Theme hasn't changed yet. + </span> + ``` + ```ts twoslash + import { ThemeHelper, type Theme } from '@studiocms/ui/utils/ThemeHelper.ts'; + + // Instanciate a new helper + const themeHelper = new ThemeHelper(); + + const outputSpan = document.querySelector<HTMLSpanElement>('#theme-listener-output')!; + + // Add a callback that gets called when the theme changes + // @noErrors + themeHelper.onThemeChange((newTheme: Theme, oldTheme: Theme) => { + // Your logic here! + outputSpan.textContent = `Theme is now: ${newTheme}! (Before: ${oldTheme})`; + }); + ``` + </TabItem> +</Tabs> + +Since `@studiocms/ui` is compatible with Starlight's theme system, this even picks up on those changes. + +### Remembering a users theme selection + +One of the few things the `ThemeHelper` does not do is saving the users theme preference. This is by design, since we don't want to force websites operating in the EU (and other GDPR-enforcing countries) to have to add a cookie notice just for a UI library. Instead, implementation of this functionality is up to the developers themselves. + +As a starting point, here's a barebones example of how to implement this: + +```ts twoslash +import { ThemeHelper, type Theme } from '@studiocms/ui/utils/ThemeHelper.ts'; + +const themeHelper = new ThemeHelper(); + +themeHelper.onThemeChange((newTheme: Theme) => { + localStorage.setItem('theme-selection', newTheme); +}) +``` + +If you want to go even further, you can store this information in a cookie to retrieve it server-side. + +<ThemeHelperScript /> diff --git a/www/docs/src/content/docs/customizing/studiocms-ui/components/theme-toggle.mdx b/www/docs/src/content/docs/customizing/studiocms-ui/components/theme-toggle.mdx new file mode 100644 index 000000000..6b7a4703b --- /dev/null +++ b/www/docs/src/content/docs/customizing/studiocms-ui/components/theme-toggle.mdx @@ -0,0 +1,55 @@ +--- +title: Theme Toggle +--- +import { Tabs, TabItem } from '@astrojs/starlight/components'; +import PreviewCard from '~/components/PreviewCard.astro'; +import { ThemeToggle } from '@studiocms/ui/components'; + +A simple but useful helper component that you can use as a theme toggle. + +## Usage + +<Tabs> + <TabItem label="Preview"> + <PreviewCard> + <ThemeToggle> + <span slot="dark"> + Dark + </span> + <span slot="light"> + Light + </span> + </ThemeToggle> + </PreviewCard> + </TabItem> + <TabItem label="Code"> + ```astro + --- + import { ThemeToggle } from '@studiocms/ui/components/ThemeToggle'; + --- + + <ThemeToggle> + <div slot="dark"> + <!-- Content in here will be displayed when the theme is dark! --> + Dark + </div> + <div slot="light"> + <!-- Content in here will be displayed when the theme is light! --> + Light + </div> + </ThemeToggle> + ``` + </TabItem> +</Tabs> + +Instead of text, you could use icons (for example, a sun and a moon icon) in here! + +### Extending the Toggle + +The `<ThemeToggle />` component is really just a button with two slots. You can pass all props from the +<a href="/customizing/studiocms-ui/components/button/">`<Button />` component</a> and they will apply to the toggle. + +:::danger +The `<ThemeToggle />` element has a unique ID and should only be used once on the entire page, for example in the navbar. +If you need more than one toggle, consider creating your own using the <a href="/customizing/studiocms-ui/components/theme-helper/">`ThemeHelper`</a>. +::: diff --git a/www/web/package.json b/www/web/package.json index 029f3b853..f70123bd0 100644 --- a/www/web/package.json +++ b/www/web/package.json @@ -15,7 +15,6 @@ "astro": "catalog:", "sharp": "catalog:", "typescript": "catalog:", - "@fontsource-variable/onest": "catalog:studiocms-shared", "@iconify-json/heroicons": "catalog:studiocms-shared", From ee0666ce768a8cb67e0b4edcb1edb2d0b243b6e1 Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Sun, 17 Nov 2024 12:25:04 -0800 Subject: [PATCH 20/40] Add Sentry monitoring (#378) * start - playground node * add sentry client config * add to ui-testing playground * add sentry release notification to release and snapshot actions * Add conditional step to create Sentry release --- .github/workflows/changeset-release.yml | 11 + .github/workflows/changeset-snapshot.yml | 10 + playgrounds/node/.env.demo | 5 +- playgrounds/node/astro.config.mts | 8 + playgrounds/node/package.json | 3 +- playgrounds/node/sentry.client.config.js | 12 + playgrounds/ui/astro.config.mts | 10 + playgrounds/ui/package.json | 3 +- playgrounds/ui/sentry.client.config.js | 12 + pnpm-lock.yaml | 1113 +++++++++++++++++++++- 10 files changed, 1169 insertions(+), 18 deletions(-) create mode 100644 playgrounds/node/sentry.client.config.js create mode 100644 playgrounds/ui/sentry.client.config.js diff --git a/.github/workflows/changeset-release.yml b/.github/workflows/changeset-release.yml index 089296498..e5e0db25c 100644 --- a/.github/workflows/changeset-release.yml +++ b/.github/workflows/changeset-release.yml @@ -47,6 +47,17 @@ jobs: GITHUB_TOKEN: ${{ secrets.STUDIOCMS_SERVICE_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + - name: Create Sentry release + if: steps.changesets.outputs.published == 'true' + uses: getsentry/action-release@v1 + env: + SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} + SENTRY_ORG: studiocms + SENTRY_URL: https://sentry.studiocms.xyz/ + with: + environment: production + projects: studiocms-playground studiocms-ui-testing + - name: Add Label to CI PR if: ${{ steps.changesets.outputs.hasChangesets == 'true' }} run: gh pr edit "$PR_URL" --add-label "ci" diff --git a/.github/workflows/changeset-snapshot.yml b/.github/workflows/changeset-snapshot.yml index 4cc14b958..6f45bc361 100644 --- a/.github/workflows/changeset-snapshot.yml +++ b/.github/workflows/changeset-snapshot.yml @@ -134,6 +134,16 @@ jobs: FORCE_COLOR: 0 NO_COLOR: 1 + - name: Create Sentry release + uses: getsentry/action-release@v1 + env: + SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} + SENTRY_ORG: studiocms + SENTRY_URL: https://sentry.studiocms.xyz/ + with: + environment: production + projects: studiocms-playground studiocms-ui-testing + - name: Pull Request Notification uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7 env: diff --git a/playgrounds/node/.env.demo b/playgrounds/node/.env.demo index 2271078e5..d09491cbd 100644 --- a/playgrounds/node/.env.demo +++ b/playgrounds/node/.env.demo @@ -28,4 +28,7 @@ CMS_AUTH0_DOMAIN= CMS_AUTH0_REDIRECT_URI=http://localhost:4321/studiocms_api/auth/auth0/callback ## Cloudinary Javascript SDK -CMS_CLOUDINARY_CLOUDNAME="demo" \ No newline at end of file +CMS_CLOUDINARY_CLOUDNAME="demo" + +# Sentry DSN +SENTRY_AUTH_TOKEN= \ No newline at end of file diff --git a/playgrounds/node/astro.config.mts b/playgrounds/node/astro.config.mts index 83023579b..ae5f8101b 100644 --- a/playgrounds/node/astro.config.mts +++ b/playgrounds/node/astro.config.mts @@ -1,5 +1,6 @@ import db from '@astrojs/db'; import node from '@astrojs/node'; +import sentry from '@sentry/astro'; // import webvitals from '@astrojs/web-vitals'; import studioCMSBlog from '@studiocms/blog'; import devapps from '@studiocms/devapps'; @@ -13,6 +14,13 @@ export default defineConfig({ output: 'server', adapter: node({ mode: 'standalone' }), integrations: [ + sentry({ + dsn: 'https://34abf40ffdbf5e574344842942046b30@sentry.studiocms.xyz/2', + sourceMapsUploadOptions: { + project: 'studiocms-playground', + authToken: process.env.SENTRY_AUTH_TOKEN, + }, + }), db(), // webvitals(), studioCMS(), // StudioCMS Integration options can be found in `studiocms.config.mjs` diff --git a/playgrounds/node/package.json b/playgrounds/node/package.json index fdb52f174..2b3b98867 100644 --- a/playgrounds/node/package.json +++ b/playgrounds/node/package.json @@ -24,6 +24,7 @@ "studiocms": "workspace:*", "sharp": "catalog:", "@studiocms/blog": "workspace:*", - "@studiocms/devapps": "workspace:*" + "@studiocms/devapps": "workspace:*", + "@sentry/astro": "^8.38.0" } } diff --git a/playgrounds/node/sentry.client.config.js b/playgrounds/node/sentry.client.config.js new file mode 100644 index 000000000..fc273d9c5 --- /dev/null +++ b/playgrounds/node/sentry.client.config.js @@ -0,0 +1,12 @@ +import * as Sentry from '@sentry/astro'; + +Sentry.init({ + dsn: 'https://34abf40ffdbf5e574344842942046b30@sentry.studiocms.xyz/2', + integrations: [ + Sentry.feedbackIntegration({ + // Additional SDK configuration goes in here, for example: + colorScheme: 'system', + isNameRequired: true, + }), + ], +}); diff --git a/playgrounds/ui/astro.config.mts b/playgrounds/ui/astro.config.mts index 6397b7bdd..698af2e8e 100644 --- a/playgrounds/ui/astro.config.mts +++ b/playgrounds/ui/astro.config.mts @@ -1,7 +1,17 @@ +import sentry from '@sentry/astro'; import { defineConfig } from 'astro/config'; // https://astro.build/config export default defineConfig({ site: 'https://ui-testing.studiocms.xyz', output: 'static', + integrations: [ + sentry({ + dsn: 'https://4ff533e071fe898f4abf1e5b82dcc4d0@sentry.studiocms.xyz/3', + sourceMapsUploadOptions: { + project: 'studiocms-ui-testing', + authToken: process.env.SENTRY_AUTH_TOKEN, + }, + }), + ], }); diff --git a/playgrounds/ui/package.json b/playgrounds/ui/package.json index 09a0460e2..31cda8505 100644 --- a/playgrounds/ui/package.json +++ b/playgrounds/ui/package.json @@ -18,6 +18,7 @@ "@astrojs/node": "catalog:", "astro": "catalog:", "@studiocms/ui": "workspace:*", - "@fontsource-variable/onest": "catalog:studiocms-shared" + "@fontsource-variable/onest": "catalog:studiocms-shared", + "@sentry/astro": "^8.38.0" } } diff --git a/playgrounds/ui/sentry.client.config.js b/playgrounds/ui/sentry.client.config.js new file mode 100644 index 000000000..bac702e59 --- /dev/null +++ b/playgrounds/ui/sentry.client.config.js @@ -0,0 +1,12 @@ +import * as Sentry from '@sentry/astro'; + +Sentry.init({ + dsn: 'https://4ff533e071fe898f4abf1e5b82dcc4d0@sentry.studiocms.xyz/3', + integrations: [ + Sentry.feedbackIntegration({ + // Additional SDK configuration goes in here, for example: + colorScheme: 'system', + isNameRequired: true, + }), + ], +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1fe3f2010..c5429a20f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -356,7 +356,7 @@ importers: dependencies: '@astrojs/db': specifier: catalog:min - version: 0.14.2(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1) + version: 0.14.2(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1) '@cloudinary/url-gen': specifier: catalog:studiocms-imagehandler version: 1.21.0 @@ -523,7 +523,7 @@ importers: dependencies: '@astrojs/db': specifier: catalog:min - version: 0.14.2(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1) + version: 0.14.2(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1) '@fontsource-variable/onest': specifier: catalog:studiocms-shared version: 5.1.0 @@ -625,7 +625,7 @@ importers: dependencies: '@astrojs/db': specifier: catalog:min - version: 0.14.2(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1) + version: 0.14.2(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1) '@markdoc/markdoc': specifier: catalog:studiocms-renderer version: 0.4.0(@types/react@18.3.5)(react@18.3.1) @@ -677,10 +677,10 @@ importers: dependencies: '@astrojs/db': specifier: 'catalog:' - version: 0.14.2(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1) + version: 0.14.2(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1) '@astrojs/web-vitals': specifier: 'catalog:' - version: 3.0.0(@astrojs/db@0.14.2(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1)) + version: 3.0.0(@astrojs/db@0.14.2(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1)) '@inox-tools/runtime-logger': specifier: catalog:studiocms-shared version: 0.3.4(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) @@ -738,7 +738,7 @@ importers: dependencies: '@astrojs/db': specifier: catalog:min - version: 0.14.2(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1) + version: 0.14.2(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1) '@libsql/client': specifier: catalog:studiocms-devapps version: 0.14.0 @@ -938,13 +938,16 @@ importers: dependencies: '@astrojs/db': specifier: 'catalog:' - version: 0.14.2(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1) + version: 0.14.2(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1) '@astrojs/node': specifier: 'catalog:' version: 8.3.4(astro@4.16.6(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)) '@astrojs/web-vitals': specifier: 'catalog:' - version: 3.0.0(@astrojs/db@0.14.2(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1)) + version: 3.0.0(@astrojs/db@0.14.2(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1)) + '@sentry/astro': + specifier: ^8.38.0 + version: 8.38.0(astro@4.16.6(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)) '@studiocms/blog': specifier: workspace:* version: link:../../packages/studiocms_blog @@ -976,6 +979,9 @@ importers: '@fontsource-variable/onest': specifier: catalog:studiocms-shared version: 5.1.0 + '@sentry/astro': + specifier: ^8.38.0 + version: 8.38.0(astro@4.16.6(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)) '@studiocms/ui': specifier: workspace:* version: link:../../packages/studiocms_ui @@ -1000,7 +1006,7 @@ importers: version: 0.9.4(typescript@5.6.3) '@astrojs/db': specifier: 'catalog:' - version: 0.14.2(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1) + version: 0.14.2(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1) '@astrojs/node': specifier: 'catalog:' version: 8.3.4(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) @@ -1012,7 +1018,7 @@ importers: version: 0.28.3(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@astrojs/web-vitals': specifier: 'catalog:' - version: 3.0.0(@astrojs/db@0.14.2(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1)) + version: 3.0.0(@astrojs/db@0.14.2(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1)) '@fontsource-variable/onest': specifier: catalog:studiocms-shared version: 5.1.0 @@ -2468,6 +2474,228 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@opentelemetry/api-logs@0.52.1': + resolution: {integrity: sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A==} + engines: {node: '>=14'} + + '@opentelemetry/api-logs@0.53.0': + resolution: {integrity: sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==} + engines: {node: '>=14'} + + '@opentelemetry/api-logs@0.54.2': + resolution: {integrity: sha512-4MTVwwmLgUh5QrJnZpYo6YRO5IBLAggf2h8gWDblwRagDStY13aEvt7gGk3jewrMaPlHiF83fENhIx0HO97/cQ==} + engines: {node: '>=14'} + + '@opentelemetry/api@1.9.0': + resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} + engines: {node: '>=8.0.0'} + + '@opentelemetry/context-async-hooks@1.27.0': + resolution: {integrity: sha512-CdZ3qmHCwNhFAzjTgHqrDQ44Qxcpz43cVxZRhOs+Ns/79ug+Mr84Bkb626bkJLkA3+BLimA5YAEVRlJC6pFb7g==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/core@1.26.0': + resolution: {integrity: sha512-1iKxXXE8415Cdv0yjG3G6hQnB5eVEsJce3QaawX8SjDn0mAS0ZM8fAbZZJD4ajvhC15cePvosSCut404KrIIvQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/core@1.27.0': + resolution: {integrity: sha512-yQPKnK5e+76XuiqUH/gKyS8wv/7qITd5ln56QkBTf3uggr0VkXOXfcaAuG330UfdYu83wsyoBwqwxigpIG+Jkg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/instrumentation-amqplib@0.43.0': + resolution: {integrity: sha512-ALjfQC+0dnIEcvNYsbZl/VLh7D2P1HhFF4vicRKHhHFIUV3Shpg4kXgiek5PLhmeKSIPiUB25IYH5RIneclL4A==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-connect@0.40.0': + resolution: {integrity: sha512-3aR/3YBQ160siitwwRLjwqrv2KBT16897+bo6yz8wIfel6nWOxTZBJudcbsK3p42pTC7qrbotJ9t/1wRLpv79Q==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-dataloader@0.12.0': + resolution: {integrity: sha512-pnPxatoFE0OXIZDQhL2okF//dmbiWFzcSc8pUg9TqofCLYZySSxDCgQc69CJBo5JnI3Gz1KP+mOjS4WAeRIH4g==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-express@0.44.0': + resolution: {integrity: sha512-GWgibp6Q0wxyFaaU8ERIgMMYgzcHmGrw3ILUtGchLtLncHNOKk0SNoWGqiylXWWT4HTn5XdV8MGawUgpZh80cA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-fastify@0.41.0': + resolution: {integrity: sha512-pNRjFvf0mvqfJueaeL/qEkuGJwgtE5pgjIHGYwjc2rMViNCrtY9/Sf+Nu8ww6dDd/Oyk2fwZZP7i0XZfCnETrA==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-fs@0.16.0': + resolution: {integrity: sha512-hMDRUxV38ln1R3lNz6osj3YjlO32ykbHqVrzG7gEhGXFQfu7LJUx8t9tEwE4r2h3CD4D0Rw4YGDU4yF4mP3ilg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-generic-pool@0.39.0': + resolution: {integrity: sha512-y4v8Y+tSfRB3NNBvHjbjrn7rX/7sdARG7FuK6zR8PGb28CTa0kHpEGCJqvL9L8xkTNvTXo+lM36ajFGUaK1aNw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-graphql@0.44.0': + resolution: {integrity: sha512-FYXTe3Bv96aNpYktqm86BFUTpjglKD0kWI5T5bxYkLUPEPvFn38vWGMJTGrDMVou/i55E4jlWvcm6hFIqLsMbg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-hapi@0.41.0': + resolution: {integrity: sha512-jKDrxPNXDByPlYcMdZjNPYCvw0SQJjN+B1A+QH+sx+sAHsKSAf9hwFiJSrI6C4XdOls43V/f/fkp9ITkHhKFbQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-http@0.53.0': + resolution: {integrity: sha512-H74ErMeDuZfj7KgYCTOFGWF5W9AfaPnqLQQxeFq85+D29wwV2yqHbz2IKLYpkOh7EI6QwDEl7rZCIxjJLyc/CQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-ioredis@0.43.0': + resolution: {integrity: sha512-i3Dke/LdhZbiUAEImmRG3i7Dimm/BD7t8pDDzwepSvIQ6s2X6FPia7561gw+64w+nx0+G9X14D7rEfaMEmmjig==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-kafkajs@0.4.0': + resolution: {integrity: sha512-I9VwDG314g7SDL4t8kD/7+1ytaDBRbZQjhVaQaVIDR8K+mlsoBhLsWH79yHxhHQKvwCSZwqXF+TiTOhoQVUt7A==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-knex@0.41.0': + resolution: {integrity: sha512-OhI1SlLv5qnsnm2dOVrian/x3431P75GngSpnR7c4fcVFv7prXGYu29Z6ILRWJf/NJt6fkbySmwdfUUnFnHCTg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-koa@0.43.0': + resolution: {integrity: sha512-lDAhSnmoTIN6ELKmLJBplXzT/Jqs5jGZehuG22EdSMaTwgjMpxMDI1YtlKEhiWPWkrz5LUsd0aOO0ZRc9vn3AQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-lru-memoizer@0.40.0': + resolution: {integrity: sha512-21xRwZsEdMPnROu/QsaOIODmzw59IYpGFmuC4aFWvMj6stA8+Ei1tX67nkarJttlNjoM94um0N4X26AD7ff54A==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-mongodb@0.48.0': + resolution: {integrity: sha512-9YWvaGvrrcrydMsYGLu0w+RgmosLMKe3kv/UNlsPy8RLnCkN2z+bhhbjjjuxtUmvEuKZMCoXFluABVuBr1yhjw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-mongoose@0.42.0': + resolution: {integrity: sha512-AnWv+RaR86uG3qNEMwt3plKX1ueRM7AspfszJYVkvkehiicC3bHQA6vWdb6Zvy5HAE14RyFbu9+2hUUjR2NSyg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-mysql2@0.41.0': + resolution: {integrity: sha512-REQB0x+IzVTpoNgVmy5b+UnH1/mDByrneimP6sbDHkp1j8QOl1HyWOrBH/6YWR0nrbU3l825Em5PlybjT3232g==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-mysql@0.41.0': + resolution: {integrity: sha512-jnvrV6BsQWyHS2qb2fkfbfSb1R/lmYwqEZITwufuRl37apTopswu9izc0b1CYRp/34tUG/4k/V39PND6eyiNvw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-nestjs-core@0.40.0': + resolution: {integrity: sha512-WF1hCUed07vKmf5BzEkL0wSPinqJgH7kGzOjjMAiTGacofNXjb/y4KQ8loj2sNsh5C/NN7s1zxQuCgbWbVTGKg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-pg@0.44.0': + resolution: {integrity: sha512-oTWVyzKqXud1BYEGX1loo2o4k4vaU1elr3vPO8NZolrBtFvQ34nx4HgUaexUDuEog00qQt+MLR5gws/p+JXMLQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-redis-4@0.42.0': + resolution: {integrity: sha512-NaD+t2JNcOzX/Qa7kMy68JbmoVIV37fT/fJYzLKu2Wwd+0NCxt+K2OOsOakA8GVg8lSpFdbx4V/suzZZ2Pvdjg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-tedious@0.15.0': + resolution: {integrity: sha512-Kb7yo8Zsq2TUwBbmwYgTAMPK0VbhoS8ikJ6Bup9KrDtCx2JC01nCb+M0VJWXt7tl0+5jARUbKWh5jRSoImxdCw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation-undici@0.6.0': + resolution: {integrity: sha512-ABJBhm5OdhGmbh0S/fOTE4N69IZ00CsHC5ijMYfzbw3E5NwLgpQk5xsljaECrJ8wz1SfXbO03FiSuu5AyRAkvQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.7.0 + + '@opentelemetry/instrumentation@0.52.1': + resolution: {integrity: sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation@0.53.0': + resolution: {integrity: sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/instrumentation@0.54.2': + resolution: {integrity: sha512-go6zpOVoZVztT9r1aPd79Fr3OWiD4N24bCPJsIKkBses8oyFo12F/Ew3UBTdIu6hsW4HC4MVEJygG6TEyJI/lg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + + '@opentelemetry/redis-common@0.36.2': + resolution: {integrity: sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g==} + engines: {node: '>=14'} + + '@opentelemetry/resources@1.27.0': + resolution: {integrity: sha512-jOwt2VJ/lUD5BLc+PMNymDrUCpm5PKi1E9oSVYAvz01U/VdndGmrtV3DU1pG4AwlYhJRHbHfOUIlpBeXCPw6QQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/sdk-trace-base@1.27.0': + resolution: {integrity: sha512-btz6XTQzwsyJjombpeqCX6LhiMQYpzt2pIYNPnw0IPO/3AhT6yjnf8Mnv3ZC2A4eRYOjqrg+bfaXg9XHDRJDWQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': '>=1.0.0 <1.10.0' + + '@opentelemetry/semantic-conventions@1.27.0': + resolution: {integrity: sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==} + engines: {node: '>=14'} + + '@opentelemetry/sql-common@0.40.1': + resolution: {integrity: sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@oslojs/asn1@1.0.0': resolution: {integrity: sha512-zw/wn0sj0j0QKbIXfIlnEcTviaCzYOY3V5rAyjR6YtOByFtJiT574+8p9Wlach0lZH9fddD4yb9laEAIl4vXQA==} @@ -2533,6 +2761,9 @@ packages: '@polka/url@1.0.0-next.25': resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} + '@prisma/instrumentation@5.19.1': + resolution: {integrity: sha512-VLnzMQq7CWroL5AeaW0Py2huiNKeoMfCH3SUxstdzPrlWQi6UQ9UrfcbUkNHlVFqOMacqy8X/8YtE0kuKDpD9w==} + '@resvg/resvg-js-android-arm-eabi@2.6.2': resolution: {integrity: sha512-FrJibrAk6v29eabIPgcTUMPXiEz8ssrAk7TXxsiZzww9UTQ1Z5KAbFJs+Z0Ez+VZTYgnE5IQJqBcoSiMebtPHA==} engines: {node: '>= 10'} @@ -2707,6 +2938,116 @@ packages: cpu: [x64] os: [win32] + '@sentry-internal/browser-utils@8.38.0': + resolution: {integrity: sha512-5QMVcssrAcmjKT0NdFYcX0b0wwZovGAZ9L2GajErXtHkBenjI2sgR2+5J7n+QZGuk2SC1qhGmT1O9i3p3UEwew==} + engines: {node: '>=14.18'} + + '@sentry-internal/feedback@8.38.0': + resolution: {integrity: sha512-AW5HCCAlc3T1jcSuNhbFVNO1CHyJ5g5tsGKEP4VKgu+D1Gg2kZ5S2eFatLBUP/BD5JYb1A7p6XPuzYp1XfMq0A==} + engines: {node: '>=14.18'} + + '@sentry-internal/replay-canvas@8.38.0': + resolution: {integrity: sha512-OxmlWzK9J8mRM+KxdSnQ5xuxq+p7TiBzTz70FT3HltxmeugvDkyp6803UcFqHOPHR35OYeVLOalym+FmvNn9kw==} + engines: {node: '>=14.18'} + + '@sentry-internal/replay@8.38.0': + resolution: {integrity: sha512-mQPShKnIab7oKwkwrRxP/D8fZYHSkDY+cvqORzgi+wAwgnunytJQjz9g6Ww2lJu98rHEkr5SH4V4rs6PZYZmnQ==} + engines: {node: '>=14.18'} + + '@sentry/astro@8.38.0': + resolution: {integrity: sha512-jwqOYIGII1+hMJbBMbjNBw85U+GCeYaR5wloJkNvRa/xuJ/cxU1idU41elltUAk6OAIyBi5icaU1XbVdnhu/dA==} + engines: {node: '>=18.14.1'} + peerDependencies: + astro: '>=3.x || >=4.0.0-beta' + + '@sentry/babel-plugin-component-annotate@2.22.6': + resolution: {integrity: sha512-V2g1Y1I5eSe7dtUVMBvAJr8BaLRr4CLrgNgtPaZyMT4Rnps82SrZ5zqmEkLXPumlXhLUWR6qzoMNN2u+RXVXfQ==} + engines: {node: '>= 14'} + + '@sentry/browser@8.38.0': + resolution: {integrity: sha512-AZR+b0EteNZEGv6JSdBD22S9VhQ7nrljKsSnzxobBULf3BpwmhmCzTbDrqWszKDAIDYmL+yQJIR2glxbknneWQ==} + engines: {node: '>=14.18'} + + '@sentry/bundler-plugin-core@2.22.6': + resolution: {integrity: sha512-1esQdgSUCww9XAntO4pr7uAM5cfGhLsgTK9MEwAKNfvpMYJi9NUTYa3A7AZmdA8V6107Lo4OD7peIPrDRbaDCg==} + engines: {node: '>= 14'} + + '@sentry/cli-darwin@2.38.2': + resolution: {integrity: sha512-21ywIcJCCFrCTyiF1o1PaT7rbelFC2fWmayKYgFElnQ55IzNYkcn8BYhbh/QknE0l1NBRaeWMXwTTdeoqETCCg==} + engines: {node: '>=10'} + os: [darwin] + + '@sentry/cli-linux-arm64@2.38.2': + resolution: {integrity: sha512-4Fp/jjQpNZj4Th+ZckMQvldAuuP0ZcyJ9tJCP1CCOn5poIKPYtY6zcbTP036R7Te14PS4ALOcDNX3VNKfpsifA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux, freebsd] + + '@sentry/cli-linux-arm@2.38.2': + resolution: {integrity: sha512-+AiKDBQKIdQe4NhBiHSHGl0KR+b//HHTrnfK1SaTrOm9HtM4ELXAkjkRF3bmbpSzSQCS5WzcbIxxCJOeaUaO0A==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux, freebsd] + + '@sentry/cli-linux-i686@2.38.2': + resolution: {integrity: sha512-6zVJN10dHIn4R1v+fxuzlblzVBhIVwsaN/S7aBED6Vn1HhAyAcNG2tIzeCLGeDfieYjXlE2sCI82sZkQBCbAGw==} + engines: {node: '>=10'} + cpu: [x86, ia32] + os: [linux, freebsd] + + '@sentry/cli-linux-x64@2.38.2': + resolution: {integrity: sha512-4UiLu9zdVtqPeltELR5MDGKcuqAdQY9xz3emISuA6bm+MXGbt2W1WgX+XY3GElwjZbmH8qpyLUEd34sw6sdcbQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux, freebsd] + + '@sentry/cli-win32-i686@2.38.2': + resolution: {integrity: sha512-DYfSvd5qLPerLpIxj3Xu2rRe3CIlpGOOfGSNI6xvJ5D8j6hqbOHlCzvfC4oBWYVYGtxnwQLMeDGJ7o7RMYulig==} + engines: {node: '>=10'} + cpu: [x86, ia32] + os: [win32] + + '@sentry/cli-win32-x64@2.38.2': + resolution: {integrity: sha512-W5UX58PKY1hNUHo9YJxWNhGvgvv2uOYHI27KchRiUvFYBIqlUUcIdPZDfyzetDfd8qBCxlAsFnkL2VJSNdpA9A==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@sentry/cli@2.38.2': + resolution: {integrity: sha512-CR0oujpAnhegK2pBAv6ZReMqbFTuNJLDZLvoD1B+syrKZX+R+oxkgT2e1htsBbht+wGxAsluVWsIAydSws1GAA==} + engines: {node: '>= 10'} + hasBin: true + + '@sentry/core@8.38.0': + resolution: {integrity: sha512-sGD+5TEHU9G7X7zpyaoJxpOtwjTjvOd1f/MKBrWW2vf9UbYK+GUJrOzLhMoSWp/pHSYgvObkJkDb/HwieQjvhQ==} + engines: {node: '>=14.18'} + + '@sentry/node@8.38.0': + resolution: {integrity: sha512-nwW0XqZFQseXYn0i6i6nKPkbjgHMBEFSF9TnK6mHHqJHHObHIZ6qu5CfvGKgxATia8JPIg9NN8XcyYOnQMi07w==} + engines: {node: '>=14.18'} + + '@sentry/opentelemetry@8.38.0': + resolution: {integrity: sha512-AfjmIf/v7+x2WplhkX66LyGKvrzzPeSgff9uJ0cFCC2s0yd1qA2VPuIwEyr5i/FOJOP5bvFr8tu/hz3LA4+F5Q==} + engines: {node: '>=14.18'} + peerDependencies: + '@opentelemetry/api': ^1.9.0 + '@opentelemetry/core': ^1.25.1 + '@opentelemetry/instrumentation': ^0.54.0 + '@opentelemetry/sdk-trace-base': ^1.26.0 + '@opentelemetry/semantic-conventions': ^1.27.0 + + '@sentry/types@8.38.0': + resolution: {integrity: sha512-fP5H9ZX01W4Z/EYctk3mkSHi7d06cLcX2/UWqwdWbyPWI+pL2QpUPICeO/C+8SnmYx//wFj3qWDhyPCh1PdFAA==} + engines: {node: '>=14.18'} + + '@sentry/utils@8.38.0': + resolution: {integrity: sha512-3X7MgIKIx+2q5Al7QkhaRB4wV6DvzYsaeIwdqKUzGLuRjXmNgJrLoU87TAwQRmZ6Wr3IoEpThZZMNrzYPXxArw==} + engines: {node: '>=14.18'} + + '@sentry/vite-plugin@2.22.6': + resolution: {integrity: sha512-zIieP1VLWQb3wUjFJlwOAoaaJygJhXeUoGd0e/Ha2RLb2eW2S+4gjf6y6NqyY71tZ74LYVZKg/4prB6FAZSMXQ==} + engines: {node: '>= 14'} + '@shikijs/core@1.14.1': resolution: {integrity: sha512-KyHIIpKNaT20FtFPFjCQB5WVSTpLR/n+jQXhWHWVUMm9MaOaG9BGOG0MSyt7yA4+Lm+4c9rTc03tt3nYzeYSfw==} @@ -2782,6 +3123,9 @@ packages: '@types/cheerio@0.22.35': resolution: {integrity: sha512-yD57BchKRvTV+JD53UZ6PD8KWY5g5rvvMLRnZR3EQBCZXiDT/HR+pKpMzFGlWNhFrXlo7VPZXtKvIEwZkAWOIA==} + '@types/connect@3.4.36': + resolution: {integrity: sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==} + '@types/cookie@0.6.0': resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} @@ -2827,6 +3171,9 @@ packages: '@types/ms@0.7.34': resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + '@types/mysql@2.15.26': + resolution: {integrity: sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ==} + '@types/nlcst@2.0.3': resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==} @@ -2845,6 +3192,12 @@ packages: '@types/node@22.0.0': resolution: {integrity: sha512-VT7KSYudcPOzP5Q0wfbowyNLaVR8QWUdw+088uFWwfvpY6uCWaXpqV6ieLAu9WBcnTa7H4Z5RLK8I5t2FuOcqw==} + '@types/pg-pool@2.0.6': + resolution: {integrity: sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==} + + '@types/pg@8.6.1': + resolution: {integrity: sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==} + '@types/prop-types@15.7.12': resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} @@ -2863,12 +3216,18 @@ packages: '@types/semver@7.5.8': resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + '@types/shimmer@1.2.0': + resolution: {integrity: sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==} + '@types/stats.js@0.17.3': resolution: {integrity: sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ==} '@types/tar@6.1.13': resolution: {integrity: sha512-IznnlmU5f4WcGTh2ltRu/Ijpmk8wiWXfF0VA4s+HPjHZgvFggk1YaIkbo5krX/zUCzWF8N/l4+W/LNxnvAJ8nw==} + '@types/tedious@4.0.14': + resolution: {integrity: sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==} + '@types/three@0.169.0': resolution: {integrity: sha512-oan7qCgJBt03wIaK+4xPWclYRPG9wzcg7Z2f5T8xYTNEF95kh0t0lklxLLYBDo7gQiGLYzE6iF4ta7nXF2bcsw==} @@ -3022,6 +3381,11 @@ packages: '@webgpu/types@0.1.49': resolution: {integrity: sha512-NMmS8/DofhH/IFeW+876XrHVWel+J/vdcFCHLDqeJgkH9x0DeiwjVd8LcBdaxdG/T7Rf8VUAYsA8X1efMzLjRQ==} + acorn-import-attributes@1.9.5: + resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} + peerDependencies: + acorn: ^8 + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -3032,6 +3396,10 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} @@ -3338,6 +3706,9 @@ packages: resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} engines: {node: '>=8'} + cjs-module-lexer@1.4.1: + resolution: {integrity: sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==} + cli-boxes@3.0.0: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} @@ -3623,6 +3994,10 @@ packages: domutils@3.1.0: resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} + dotenv@8.6.0: resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} engines: {node: '>=10'} @@ -3904,6 +4279,10 @@ packages: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + find-yarn-workspace-root2@1.2.16: resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} @@ -4007,6 +4386,10 @@ packages: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported + glob@9.3.5: + resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} + engines: {node: '>=16 || 14 >=14.17'} + globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -4147,6 +4530,10 @@ packages: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + human-id@1.0.2: resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} @@ -4165,6 +4552,9 @@ packages: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} + import-in-the-middle@1.11.2: + resolution: {integrity: sha512-gK6Rr6EykBcc6cVWRSBR5TWf8nn6hZMYSRYqCcHa0l0d1fPK7JSYo6+Mlmck76jIX9aL/IZ71c06U2VpFwl1zA==} + import-meta-resolve@4.1.0: resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} @@ -4415,6 +4805,10 @@ packages: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + lodash.castarray@4.4.0: resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} @@ -4462,6 +4856,10 @@ packages: magic-string@0.30.12: resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} + magic-string@0.30.8: + resolution: {integrity: sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==} + engines: {node: '>=12'} + magicast@0.3.5: resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} @@ -4709,6 +5107,10 @@ packages: minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@8.0.4: + resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} + engines: {node: '>=16 || 14 >=14.17'} + minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} @@ -4744,6 +5146,9 @@ packages: mlly@1.7.1: resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} + module-details-from-path@1.0.3: + resolution: {integrity: sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==} + motion@10.18.0: resolution: {integrity: sha512-MVAZZmwM/cp77BrNe1TxTMldxRPjwBNHheU5aPToqT4rJdZxLiADk58H+a0al5jKLxkB0OdgNq6DiVn11cjvIQ==} @@ -4870,6 +5275,10 @@ packages: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + p-limit@6.1.0: resolution: {integrity: sha512-H0jc0q1vOzlEk0TqAKXKZxdl7kX3OFUzCnNVUnq5Pc3DGo0kpeaMuPqxQn235HibwBEb0/pm9dgKTjXy66fBkg==} engines: {node: '>=18'} @@ -4878,6 +5287,10 @@ packages: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + p-map@2.1.0: resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} engines: {node: '>=6'} @@ -4985,6 +5398,17 @@ packages: periscopic@3.1.0: resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} + pg-int8@1.0.1: + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} + engines: {node: '>=4.0.0'} + + pg-protocol@1.7.0: + resolution: {integrity: sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==} + + pg-types@2.2.0: + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} + engines: {node: '>=4'} + picocolors@1.1.0: resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} @@ -5060,6 +5484,22 @@ packages: resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} engines: {node: ^10 || ^12 || >=14} + postgres-array@2.0.0: + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} + engines: {node: '>=4'} + + postgres-bytea@1.0.0: + resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} + engines: {node: '>=0.10.0'} + + postgres-date@1.0.7: + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} + engines: {node: '>=0.10.0'} + + postgres-interval@1.2.0: + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} + engines: {node: '>=0.10.0'} + preferred-pm@4.0.0: resolution: {integrity: sha512-gYBeFTZLu055D8Vv3cSPox/0iTPtkzxpLroSYYA7WXgRi31WCJ51Uyl8ZiPeUUjyvs2MBzK+S8v9JVUgHU/Sqw==} engines: {node: '>=18.12'} @@ -5078,6 +5518,10 @@ packages: resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} engines: {node: '>=6'} + progress@2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + promise-limit@2.7.0: resolution: {integrity: sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw==} @@ -5239,6 +5683,10 @@ packages: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} + require-in-the-middle@7.4.0: + resolution: {integrity: sha512-X34iHADNbNDfr6OTStIAHWSAvvKQRYgLO6duASaVf7J2VA3lvmNYboAHOuLC2huav1IwgZJtyEcJCKVzFxOSMQ==} + engines: {node: '>=8.6.0'} + resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} @@ -5367,6 +5815,9 @@ packages: shiki@1.22.0: resolution: {integrity: sha512-/t5LlhNs+UOKQCYBtl5ZsH/Vclz73GIqT2yQsCBygr8L/ppTdmpL4w3kPLoZJbMKVWtoG77Ue1feOjZfDxvMkw==} + shimmer@1.2.1: + resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} + signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -5736,6 +6187,9 @@ packages: vite: optional: true + unplugin@1.0.1: + resolution: {integrity: sha512-aqrHaVBWW1JVKBHmGo33T5TxeL0qWzfvjWokObHA9bYmN7eNDkwOxmLjhioHl9878qDFMAaT51XNroRyuz7WxA==} + update-browserslist-db@1.1.0: resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} hasBin: true @@ -5954,6 +6408,13 @@ packages: webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + + webpack-virtual-modules@0.5.0: + resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} + whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} @@ -6013,6 +6474,10 @@ packages: utf-8-validate: optional: true + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + xxhash-wasm@1.0.2: resolution: {integrity: sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==} @@ -6053,6 +6518,10 @@ packages: yauzl@2.10.0: resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + yocto-queue@1.1.1: resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} engines: {node: '>=12.20'} @@ -6150,13 +6619,13 @@ snapshots: '@astrojs/compiler@2.10.3': {} - '@astrojs/db@0.14.2(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1)': + '@astrojs/db@0.14.2(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1)': dependencies: '@astrojs/studio': 0.1.1 '@libsql/client': 0.14.0 async-listen: 3.0.1 deep-diff: 1.0.2 - drizzle-orm: 0.31.4(@cloudflare/workers-types@4.20240725.0)(@libsql/client@0.14.0)(@types/react@18.3.5)(react@18.3.1) + drizzle-orm: 0.31.4(@cloudflare/workers-types@4.20240725.0)(@libsql/client@0.14.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1) github-slugger: 2.0.0 kleur: 4.1.5 nanoid: 5.0.7 @@ -6399,9 +6868,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/web-vitals@3.0.0(@astrojs/db@0.14.2(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1))': + '@astrojs/web-vitals@3.0.0(@astrojs/db@0.14.2(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1))': dependencies: - '@astrojs/db': 0.14.2(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1) + '@astrojs/db': 0.14.2(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1) web-vitals: 4.2.3 '@astrojs/yaml2ts@0.2.1': @@ -7686,6 +8155,298 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 + '@opentelemetry/api-logs@0.52.1': + dependencies: + '@opentelemetry/api': 1.9.0 + + '@opentelemetry/api-logs@0.53.0': + dependencies: + '@opentelemetry/api': 1.9.0 + + '@opentelemetry/api-logs@0.54.2': + dependencies: + '@opentelemetry/api': 1.9.0 + + '@opentelemetry/api@1.9.0': {} + + '@opentelemetry/context-async-hooks@1.27.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + + '@opentelemetry/core@1.26.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/semantic-conventions': 1.27.0 + + '@opentelemetry/core@1.27.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/semantic-conventions': 1.27.0 + + '@opentelemetry/instrumentation-amqplib@0.43.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-connect@0.40.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + '@types/connect': 3.4.36 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-dataloader@0.12.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-express@0.44.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-fastify@0.41.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-fs@0.16.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-generic-pool@0.39.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-graphql@0.44.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-hapi@0.41.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-http@0.53.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.26.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-ioredis@0.43.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) + '@opentelemetry/redis-common': 0.36.2 + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-kafkajs@0.4.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-knex@0.41.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-koa@0.43.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-lru-memoizer@0.40.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-mongodb@0.48.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-mongoose@0.42.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-mysql2@0.41.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-mysql@0.41.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + '@types/mysql': 2.15.26 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-nestjs-core@0.40.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-pg@0.44.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) + '@types/pg': 8.6.1 + '@types/pg-pool': 2.0.6 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-redis-4@0.42.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) + '@opentelemetry/redis-common': 0.36.2 + '@opentelemetry/semantic-conventions': 1.27.0 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-tedious@0.15.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + '@types/tedious': 4.0.14 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation-undici@0.6.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.52.1 + '@types/shimmer': 1.2.0 + import-in-the-middle: 1.11.2 + require-in-the-middle: 7.4.0 + semver: 7.6.3 + shimmer: 1.2.1 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation@0.53.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.53.0 + '@types/shimmer': 1.2.0 + import-in-the-middle: 1.11.2 + require-in-the-middle: 7.4.0 + semver: 7.6.3 + shimmer: 1.2.1 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/instrumentation@0.54.2(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.54.2 + '@types/shimmer': 1.2.0 + import-in-the-middle: 1.11.2 + require-in-the-middle: 7.4.0 + semver: 7.6.3 + shimmer: 1.2.1 + transitivePeerDependencies: + - supports-color + + '@opentelemetry/redis-common@0.36.2': {} + + '@opentelemetry/resources@1.27.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + + '@opentelemetry/sdk-trace-base@1.27.0(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + + '@opentelemetry/semantic-conventions@1.27.0': {} + + '@opentelemetry/sql-common@0.40.1(@opentelemetry/api@1.9.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@oslojs/asn1@1.0.0': dependencies: '@oslojs/binary': 1.0.0 @@ -7739,6 +8500,14 @@ snapshots: '@polka/url@1.0.0-next.25': {} + '@prisma/instrumentation@5.19.1': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.27.0(@opentelemetry/api@1.9.0) + transitivePeerDependencies: + - supports-color + '@resvg/resvg-js-android-arm-eabi@2.6.2': optional: true @@ -7854,6 +8623,183 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.21.0': optional: true + '@sentry-internal/browser-utils@8.38.0': + dependencies: + '@sentry/core': 8.38.0 + '@sentry/types': 8.38.0 + '@sentry/utils': 8.38.0 + + '@sentry-internal/feedback@8.38.0': + dependencies: + '@sentry/core': 8.38.0 + '@sentry/types': 8.38.0 + '@sentry/utils': 8.38.0 + + '@sentry-internal/replay-canvas@8.38.0': + dependencies: + '@sentry-internal/replay': 8.38.0 + '@sentry/core': 8.38.0 + '@sentry/types': 8.38.0 + '@sentry/utils': 8.38.0 + + '@sentry-internal/replay@8.38.0': + dependencies: + '@sentry-internal/browser-utils': 8.38.0 + '@sentry/core': 8.38.0 + '@sentry/types': 8.38.0 + '@sentry/utils': 8.38.0 + + '@sentry/astro@8.38.0(astro@4.16.6(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3))': + dependencies: + '@sentry/browser': 8.38.0 + '@sentry/core': 8.38.0 + '@sentry/node': 8.38.0 + '@sentry/types': 8.38.0 + '@sentry/utils': 8.38.0 + '@sentry/vite-plugin': 2.22.6 + astro: 4.16.6(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) + transitivePeerDependencies: + - encoding + - supports-color + + '@sentry/babel-plugin-component-annotate@2.22.6': {} + + '@sentry/browser@8.38.0': + dependencies: + '@sentry-internal/browser-utils': 8.38.0 + '@sentry-internal/feedback': 8.38.0 + '@sentry-internal/replay': 8.38.0 + '@sentry-internal/replay-canvas': 8.38.0 + '@sentry/core': 8.38.0 + '@sentry/types': 8.38.0 + '@sentry/utils': 8.38.0 + + '@sentry/bundler-plugin-core@2.22.6': + dependencies: + '@babel/core': 7.25.8 + '@sentry/babel-plugin-component-annotate': 2.22.6 + '@sentry/cli': 2.38.2 + dotenv: 16.4.5 + find-up: 5.0.0 + glob: 9.3.5 + magic-string: 0.30.8 + unplugin: 1.0.1 + transitivePeerDependencies: + - encoding + - supports-color + + '@sentry/cli-darwin@2.38.2': + optional: true + + '@sentry/cli-linux-arm64@2.38.2': + optional: true + + '@sentry/cli-linux-arm@2.38.2': + optional: true + + '@sentry/cli-linux-i686@2.38.2': + optional: true + + '@sentry/cli-linux-x64@2.38.2': + optional: true + + '@sentry/cli-win32-i686@2.38.2': + optional: true + + '@sentry/cli-win32-x64@2.38.2': + optional: true + + '@sentry/cli@2.38.2': + dependencies: + https-proxy-agent: 5.0.1 + node-fetch: 2.7.0 + progress: 2.0.3 + proxy-from-env: 1.1.0 + which: 2.0.2 + optionalDependencies: + '@sentry/cli-darwin': 2.38.2 + '@sentry/cli-linux-arm': 2.38.2 + '@sentry/cli-linux-arm64': 2.38.2 + '@sentry/cli-linux-i686': 2.38.2 + '@sentry/cli-linux-x64': 2.38.2 + '@sentry/cli-win32-i686': 2.38.2 + '@sentry/cli-win32-x64': 2.38.2 + transitivePeerDependencies: + - encoding + - supports-color + + '@sentry/core@8.38.0': + dependencies: + '@sentry/types': 8.38.0 + '@sentry/utils': 8.38.0 + + '@sentry/node@8.38.0': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/context-async-hooks': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-amqplib': 0.43.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-connect': 0.40.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-dataloader': 0.12.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-express': 0.44.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-fastify': 0.41.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-fs': 0.16.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-generic-pool': 0.39.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-graphql': 0.44.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-hapi': 0.41.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-http': 0.53.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-ioredis': 0.43.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-kafkajs': 0.4.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-knex': 0.41.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-koa': 0.43.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-lru-memoizer': 0.40.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mongodb': 0.48.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mongoose': 0.42.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mysql': 0.41.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mysql2': 0.41.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-nestjs-core': 0.40.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-pg': 0.44.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-redis-4': 0.42.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-tedious': 0.15.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-undici': 0.6.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + '@prisma/instrumentation': 5.19.1 + '@sentry/core': 8.38.0 + '@sentry/opentelemetry': 8.38.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.27.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.54.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.27.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.27.0) + '@sentry/types': 8.38.0 + '@sentry/utils': 8.38.0 + import-in-the-middle: 1.11.2 + transitivePeerDependencies: + - supports-color + + '@sentry/opentelemetry@8.38.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.27.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.54.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.27.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.27.0)': + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.27.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.27.0 + '@sentry/core': 8.38.0 + '@sentry/types': 8.38.0 + '@sentry/utils': 8.38.0 + + '@sentry/types@8.38.0': {} + + '@sentry/utils@8.38.0': + dependencies: + '@sentry/types': 8.38.0 + + '@sentry/vite-plugin@2.22.6': + dependencies: + '@sentry/bundler-plugin-core': 2.22.6 + unplugin: 1.0.1 + transitivePeerDependencies: + - encoding + - supports-color + '@shikijs/core@1.14.1': dependencies: '@types/hast': 3.0.4 @@ -7967,6 +8913,10 @@ snapshots: dependencies: '@types/node': 22.0.0 + '@types/connect@3.4.36': + dependencies: + '@types/node': 22.0.0 + '@types/cookie@0.6.0': {} '@types/debug@4.1.12': @@ -8016,6 +8966,10 @@ snapshots: '@types/ms@0.7.34': {} + '@types/mysql@2.15.26': + dependencies: + '@types/node': 22.0.0 + '@types/nlcst@2.0.3': dependencies: '@types/unist': 3.0.2 @@ -8036,6 +8990,16 @@ snapshots: dependencies: undici-types: 6.11.1 + '@types/pg-pool@2.0.6': + dependencies: + '@types/pg': 8.6.1 + + '@types/pg@8.6.1': + dependencies: + '@types/node': 22.0.0 + pg-protocol: 1.7.0 + pg-types: 2.2.0 + '@types/prop-types@15.7.12': {} '@types/react-dom@18.3.0': @@ -8055,6 +9019,8 @@ snapshots: '@types/semver@7.5.8': {} + '@types/shimmer@1.2.0': {} + '@types/stats.js@0.17.3': {} '@types/tar@6.1.13': @@ -8062,6 +9028,10 @@ snapshots: '@types/node': 22.0.0 minipass: 4.2.8 + '@types/tedious@4.0.14': + dependencies: + '@types/node': 22.0.0 + '@types/three@0.169.0': dependencies: '@tweenjs/tween.js': 23.1.3 @@ -8333,12 +9303,22 @@ snapshots: '@webgpu/types@0.1.49': {} + acorn-import-attributes@1.9.5(acorn@8.12.1): + dependencies: + acorn: 8.12.1 + acorn-jsx@5.3.2(acorn@8.12.1): dependencies: acorn: 8.12.1 acorn@8.12.1: {} + agent-base@6.0.2: + dependencies: + debug: 4.3.7 + transitivePeerDependencies: + - supports-color + ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 @@ -8968,6 +9948,8 @@ snapshots: ci-info@4.0.0: {} + cjs-module-lexer@1.4.1: {} + cli-boxes@3.0.0: {} cli-cursor@5.0.0: @@ -9206,12 +10188,16 @@ snapshots: domelementtype: 2.3.0 domhandler: 5.0.3 + dotenv@16.4.5: {} + dotenv@8.6.0: {} - drizzle-orm@0.31.4(@cloudflare/workers-types@4.20240725.0)(@libsql/client@0.14.0)(@types/react@18.3.5)(react@18.3.1): + drizzle-orm@0.31.4(@cloudflare/workers-types@4.20240725.0)(@libsql/client@0.14.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1): optionalDependencies: '@cloudflare/workers-types': 4.20240725.0 '@libsql/client': 0.14.0 + '@opentelemetry/api': 1.9.0 + '@types/pg': 8.6.1 '@types/react': 18.3.5 react: 18.3.1 @@ -9438,6 +10424,11 @@ snapshots: locate-path: 5.0.0 path-exists: 4.0.0 + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + find-yarn-workspace-root2@1.2.16: dependencies: micromatch: 4.0.8 @@ -9539,6 +10530,13 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 + glob@9.3.5: + dependencies: + fs.realpath: 1.0.0 + minimatch: 8.0.4 + minipass: 4.2.8 + path-scurry: 1.11.1 + globals@11.12.0: {} globby@10.0.1: @@ -9829,6 +10827,13 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.3.7 + transitivePeerDependencies: + - supports-color + human-id@1.0.2: {} i18next@23.15.1: @@ -9845,6 +10850,13 @@ snapshots: ignore@5.3.1: {} + import-in-the-middle@1.11.2: + dependencies: + acorn: 8.12.1 + acorn-import-attributes: 1.9.5(acorn@8.12.1) + cjs-module-lexer: 1.4.1 + module-details-from-path: 1.0.3 + import-meta-resolve@4.1.0: {} importx@0.4.3: @@ -10069,6 +11081,10 @@ snapshots: dependencies: p-locate: 4.1.0 + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + lodash.castarray@4.4.0: {} lodash.isplainobject@4.0.6: {} @@ -10117,6 +11133,10 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 + magic-string@0.30.8: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + magicast@0.3.5: dependencies: '@babel/parser': 7.25.7 @@ -10645,6 +11665,10 @@ snapshots: dependencies: brace-expansion: 1.1.11 + minimatch@8.0.4: + dependencies: + brace-expansion: 2.0.1 + minimatch@9.0.5: dependencies: brace-expansion: 2.0.1 @@ -10675,6 +11699,8 @@ snapshots: pkg-types: 1.1.3 ufo: 1.5.4 + module-details-from-path@1.0.3: {} + motion@10.18.0: dependencies: '@motionone/animation': 10.18.0 @@ -10791,6 +11817,10 @@ snapshots: dependencies: p-try: 2.2.0 + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + p-limit@6.1.0: dependencies: yocto-queue: 1.1.1 @@ -10799,6 +11829,10 @@ snapshots: dependencies: p-limit: 2.3.0 + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + p-map@2.1.0: {} p-queue@6.6.2: @@ -10917,6 +11951,18 @@ snapshots: estree-walker: 3.0.3 is-reference: 3.0.2 + pg-int8@1.0.1: {} + + pg-protocol@1.7.0: {} + + pg-types@2.2.0: + dependencies: + pg-int8: 1.0.1 + postgres-array: 2.0.0 + postgres-bytea: 1.0.0 + postgres-date: 1.0.7 + postgres-interval: 1.2.0 + picocolors@1.1.0: {} picomatch@2.3.1: {} @@ -10981,6 +12027,16 @@ snapshots: picocolors: 1.1.0 source-map-js: 1.2.1 + postgres-array@2.0.0: {} + + postgres-bytea@1.0.0: {} + + postgres-date@1.0.7: {} + + postgres-interval@1.2.0: + dependencies: + xtend: 4.0.2 + preferred-pm@4.0.0: dependencies: find-up-simple: 1.0.0 @@ -10994,6 +12050,8 @@ snapshots: prismjs@1.29.0: {} + progress@2.0.3: {} + promise-limit@2.7.0: {} prompts@2.4.2: @@ -11239,6 +12297,14 @@ snapshots: require-from-string@2.0.2: {} + require-in-the-middle@7.4.0: + dependencies: + debug: 4.3.7 + module-details-from-path: 1.0.3 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + resolve-from@5.0.0: {} resolve-pkg-maps@1.0.0: {} @@ -11465,6 +12531,8 @@ snapshots: '@shikijs/vscode-textmate': 9.3.0 '@types/hast': 3.0.4 + shimmer@1.2.1: {} + signal-exit@3.0.7: {} signal-exit@4.1.0: {} @@ -11867,6 +12935,13 @@ snapshots: - rollup - supports-color + unplugin@1.0.1: + dependencies: + acorn: 8.12.1 + chokidar: 3.6.0 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.5.0 + update-browserslist-db@1.1.0(browserslist@4.23.2): dependencies: browserslist: 4.23.2 @@ -12067,6 +13142,10 @@ snapshots: webidl-conversions@3.0.1: {} + webpack-sources@3.2.3: {} + + webpack-virtual-modules@0.5.0: {} + whatwg-encoding@3.1.1: dependencies: iconv-lite: 0.6.3 @@ -12118,6 +13197,8 @@ snapshots: ws@8.18.0: {} + xtend@4.0.2: {} + xxhash-wasm@1.0.2: {} y18n@5.0.8: {} @@ -12164,6 +13245,8 @@ snapshots: buffer-crc32: 0.2.13 fd-slicer: 1.1.0 + yocto-queue@0.1.0: {} + yocto-queue@1.1.1: {} yoga-wasm-web@0.3.3: {} From e20122d728155f4178d54de54e6487886d876dc8 Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Tue, 12 Nov 2024 22:54:59 -0800 Subject: [PATCH 21/40] start of i18n support --- .../src/components/OAuthButtonStack.astro | 6 +- .../src/components/StaticAuthCheck.astro | 33 + packages/studiocms_auth/src/integration.ts | 8 +- .../src/layouts/AuthLayout.astro | 14 +- .../src/routes/{ => api}/logout.ts | 0 .../studiocms_auth/src/routes/login.astro | 43 +- .../studiocms_auth/src/routes/logout.astro | 33 + .../studiocms_auth/src/routes/signup.astro | 48 +- .../studiocms_auth/src/utils/routeBuilder.ts | 4 +- .../studiocms_core/src/helpers/routemap.ts | 1 + .../src/i18n/LanguageSelector.astro | 103 +++ packages/studiocms_core/src/i18n/index.ts | 151 ++++ .../src/i18n/translations/en-us.json | 43 ++ packages/studiocms_core/src/integration.ts | 2 + packages/studiocms_core/src/stubs/i18n-dts.ts | 107 +++ .../src/utils/coreVirtualModules.ts | 1 + pnpm-lock.yaml | 647 +++++++++++++----- pnpm-workspace.yaml | 4 +- 18 files changed, 1035 insertions(+), 213 deletions(-) create mode 100644 packages/studiocms_auth/src/components/StaticAuthCheck.astro rename packages/studiocms_auth/src/routes/{ => api}/logout.ts (100%) create mode 100644 packages/studiocms_auth/src/routes/logout.astro create mode 100644 packages/studiocms_core/src/i18n/LanguageSelector.astro create mode 100644 packages/studiocms_core/src/i18n/index.ts create mode 100644 packages/studiocms_core/src/i18n/translations/en-us.json create mode 100644 packages/studiocms_core/src/stubs/i18n-dts.ts diff --git a/packages/studiocms_auth/src/components/OAuthButtonStack.astro b/packages/studiocms_auth/src/components/OAuthButtonStack.astro index 731c4f205..bae54cdfc 100644 --- a/packages/studiocms_auth/src/components/OAuthButtonStack.astro +++ b/packages/studiocms_auth/src/components/OAuthButtonStack.astro @@ -1,12 +1,16 @@ --- +import { getLangFromUrl, useTranslations } from 'studiocms:i18n'; import { Divider } from '@studiocms/ui/components'; import OAuthButton from './OAuthButton.astro'; import { providerData, showOAuth } from './oAuthButtonProviders'; +const lang = getLangFromUrl(Astro.url); +const t = useTranslations(lang, '@studiocms/auth:oauth-stack'); + const shouldShowOAuth = showOAuth && providerData.some(({ enabled }) => enabled); --- { shouldShowOAuth && ( - <Divider>or log in using</Divider> + <Divider>{t('or-login-with')}</Divider> <div class="button-stack"> { providerData.map(({enabled, ...props}) => enabled && <OAuthButton {...props} />) diff --git a/packages/studiocms_auth/src/components/StaticAuthCheck.astro b/packages/studiocms_auth/src/components/StaticAuthCheck.astro new file mode 100644 index 000000000..8452ea897 --- /dev/null +++ b/packages/studiocms_auth/src/components/StaticAuthCheck.astro @@ -0,0 +1,33 @@ +--- +import { getUserData } from 'studiocms:auth/lib/user'; +import { StudioCMSRoutes } from 'studiocms:helpers/routemap'; +import { getLangFromUrl, useTranslatedPath } from 'studiocms:i18n'; + +const { isLoggedIn } = await getUserData(Astro); +// Get the language and translations +const referer = Astro.request.headers.get('referer'); + +if (!referer) { + throw new Error('No referer found'); +} + +const lang = getLangFromUrl(new URL(referer)); +const translatePath = useTranslatedPath(lang); +const { + mainLinks: { dashboardIndex }, +} = StudioCMSRoutes; +--- +<div + id="login-check" + style="display: none;" + data-isloggedin={`${isLoggedIn}`} + data-redirectroute={translatePath(dashboardIndex)} + ></div> + +<script is:inline> + const loginCheck = document.getElementById('login-check'); + + if (loginCheck.dataset.isloggedin === 'true') { + window.location.href = loginCheck.dataset.redirectroute; + } +</script> \ No newline at end of file diff --git a/packages/studiocms_auth/src/integration.ts b/packages/studiocms_auth/src/integration.ts index 9d2471ac6..a47d20298 100644 --- a/packages/studiocms_auth/src/integration.ts +++ b/packages/studiocms_auth/src/integration.ts @@ -83,6 +83,7 @@ export default defineIntegration({ }, experimental: { directRenderScript: true, + serverIslands: true, }, vite: { optimizeDeps: { @@ -112,6 +113,11 @@ export default defineIntegration({ entrypoint: resolve('./routes/api/login.ts'), enabled: usernameAndPasswordAPI, }, + { + pattern: 'logout', + entrypoint: resolve('./routes/api/logout.ts'), + enabled: dashboardEnabled && !options.dbStartPage, + }, { pattern: 'register', entrypoint: resolve('./routes/api/register.ts'), @@ -170,7 +176,7 @@ export default defineIntegration({ }, { pattern: 'logout/', - entrypoint: resolve('./routes/logout.ts'), + entrypoint: resolve('./routes/logout.astro'), enabled: dashboardEnabled && !options.dbStartPage, }, { diff --git a/packages/studiocms_auth/src/layouts/AuthLayout.astro b/packages/studiocms_auth/src/layouts/AuthLayout.astro index e378f984b..8d79a6927 100644 --- a/packages/studiocms_auth/src/layouts/AuthLayout.astro +++ b/packages/studiocms_auth/src/layouts/AuthLayout.astro @@ -21,10 +21,11 @@ const { interface Props { title: string; description: string; - lang?: string; + lang: string; + disableScreen?: boolean; } -const { title, description, lang = 'en' } = Astro.props; +const { title, description, lang, disableScreen } = Astro.props; // Get the site config const siteConfig = await db @@ -37,9 +38,10 @@ const siteConfig = await db const loginPageBackground = siteConfig?.loginPageBackground; const loginPageCustomImage = siteConfig?.loginPageCustomImage; -const fallbackImageSrc = loginPageBackground === 'custom' - ? loginPageCustomImage - : validImages.find((x) => x.name !== 'custom' && x.name === loginPageBackground)?.dark; // TODO: Adapt to theme +const fallbackImageSrc = + loginPageBackground === 'custom' + ? loginPageCustomImage + : validImages.find((x) => x.name !== 'custom' && x.name === loginPageBackground)?.dark; // TODO: Adapt to theme --- <!doctype html> <html lang={lang} data-theme="dark"> @@ -87,7 +89,7 @@ const fallbackImageSrc = loginPageBackground === 'custom' <slot /> - <OAuthButtonStack /> + { !disableScreen && <OAuthButtonStack /> } <div class="form-footer"> <slot name="footer" /> diff --git a/packages/studiocms_auth/src/routes/logout.ts b/packages/studiocms_auth/src/routes/api/logout.ts similarity index 100% rename from packages/studiocms_auth/src/routes/logout.ts rename to packages/studiocms_auth/src/routes/api/logout.ts diff --git a/packages/studiocms_auth/src/routes/login.astro b/packages/studiocms_auth/src/routes/login.astro index dee096fe7..4c50d7497 100644 --- a/packages/studiocms_auth/src/routes/login.astro +++ b/packages/studiocms_auth/src/routes/login.astro @@ -1,11 +1,21 @@ --- -import { getUserData } from 'studiocms:auth/lib/user'; import { authEnvCheck } from 'studiocms:auth/utils/authEnvCheck'; import { StudioCMSRoutes } from 'studiocms:helpers/routemap'; +import { getLangFromUrl, staticPaths, useTranslatedPath, useTranslations } from 'studiocms:i18n'; import Config from 'virtual:studiocms/config'; import { Button, Input } from '@studiocms/ui/components'; +import type { GetStaticPaths } from 'astro'; +import StaticAuthCheck from '../components/StaticAuthCheck.astro'; import AuthLayout from '../layouts/AuthLayout.astro'; -import { hashPassword } from '../lib/password'; + +const lang = getLangFromUrl(Astro.url); +const t = useTranslations(lang, '@studiocms/auth:login'); +const tPath = useTranslatedPath(lang); + +export const getStaticPaths = (() => { + const paths = staticPaths(); + return paths; +}) satisfies GetStaticPaths; const { dashboardConfig: { @@ -21,7 +31,6 @@ const { const { authLinks: { loginAPI, signupURL }, - mainLinks: { dashboardIndex }, } = StudioCMSRoutes; const { SHOW_OAUTH } = await authEnvCheck(providers); @@ -29,42 +38,38 @@ const { SHOW_OAUTH } = await authEnvCheck(providers); let paragraph: string; if (usernameAndPassword && SHOW_OAUTH) { - paragraph = 'Enter your username & password or log in using one of the options below.'; + paragraph = t('sub-header-usernamepasswordoauth'); } else if (usernameAndPassword && !SHOW_OAUTH) { - paragraph = 'Enter your username & password.'; + paragraph = t('sub-header-usernamepassword'); } else if (!usernameAndPassword && SHOW_OAUTH) { - paragraph = 'Log in using one of the options below.'; + paragraph = t('sub-header-oauth'); } else { - paragraph = 'No Login provider configured. Please contact your administrator.'; -} - -const user = await getUserData(Astro); - -if (user.isLoggedIn) { - return Astro.redirect(dashboardIndex); + paragraph = t('sub-header-noprovider'); } --- -<AuthLayout title="Login Page" description="Login Page"> +<AuthLayout title={t('title')} description={t('description')} lang={lang}> <div slot="header" class="form-header"> - <h1>Login</h1> + <h1>{t('header')}</h1> <p>{paragraph}</p> </div> { usernameAndPassword && ( <form class="form" id="login-form" method="post" action={loginAPI}> - <Input label="Username" name="username" type="text" /> - <Input label="Password" name="password" type='password' /> + <Input label={t('username-label')} name="username" type="text" /> + <Input label={t('password-label')} name="password" type='password' /> - <Button as="button" type="submit" color='primary' size='md' variant='solid'><span>Log In</span></Button> + <Button as="button" type="submit" color='primary' size='md' variant='solid'><span>{t('login-button')}</span></Button> </form> )} { allowUserRegistration && ( - <p slot="footer">Don't have an account? <a href={signupURL}>Register here!</a></p> + <p slot="footer">{t('allow-registration-noaccount')} <a href={tPath(signupURL)}>{t('allow-registration-register')}</a></p> )} + <StaticAuthCheck server:defer /> + </AuthLayout> <script> diff --git a/packages/studiocms_auth/src/routes/logout.astro b/packages/studiocms_auth/src/routes/logout.astro new file mode 100644 index 000000000..25f5b8dda --- /dev/null +++ b/packages/studiocms_auth/src/routes/logout.astro @@ -0,0 +1,33 @@ +--- +import { StudioCMSRoutes } from 'studiocms:helpers/routemap'; +import { getLangFromUrl, staticPaths, useTranslations } from 'studiocms:i18n'; +import type { GetStaticPaths } from 'astro'; +import AuthLayout from '../layouts/AuthLayout.astro'; + +const lang = getLangFromUrl(Astro.url); +const t = useTranslations(lang, '@studiocms/auth:logout'); + +export const getStaticPaths = (() => { + const paths = staticPaths(); + return paths; +}) satisfies GetStaticPaths; + +const { + authLinks: { logoutAPI }, +} = StudioCMSRoutes; +--- +<AuthLayout title={t('title')} description={t('description')} lang={lang} disableScreen> + +</AuthLayout> + +<div style="display: none;" id="redirect-to-logout" data-redirect={logoutAPI}></div> + +<script> + + const redirectElement = document.getElementById('redirect-to-logout') as HTMLDivElement; + const redirect = redirectElement.getAttribute('data-redirect') as string; + + setTimeout(() => { + window.location.href = redirect; + }, 500); +</script> \ No newline at end of file diff --git a/packages/studiocms_auth/src/routes/signup.astro b/packages/studiocms_auth/src/routes/signup.astro index 227a1000d..f9f0503da 100644 --- a/packages/studiocms_auth/src/routes/signup.astro +++ b/packages/studiocms_auth/src/routes/signup.astro @@ -1,11 +1,22 @@ --- -import { getUserData } from 'studiocms:auth/lib/user'; import { authEnvCheck } from 'studiocms:auth/utils/authEnvCheck'; import { StudioCMSRoutes } from 'studiocms:helpers/routemap'; +import { getLangFromUrl, staticPaths, useTranslatedPath, useTranslations } from 'studiocms:i18n'; import Config from 'virtual:studiocms/config'; import { Button, Input } from '@studiocms/ui/components'; +import type { GetStaticPaths } from 'astro'; +import StaticAuthCheck from '../components/StaticAuthCheck.astro'; import AuthLayout from '../layouts/AuthLayout.astro'; +const lang = getLangFromUrl(Astro.url); +const t = useTranslations(lang, '@studiocms/auth:signup'); +const tPath = useTranslatedPath(lang); + +export const getStaticPaths = (() => { + const paths = staticPaths(); + return paths; +}) satisfies GetStaticPaths; + const { dashboardConfig: { AuthConfig: { @@ -20,7 +31,6 @@ const { const { authLinks: { loginAPI, loginURL }, - mainLinks: { dashboardIndex }, } = StudioCMSRoutes; const { SHOW_OAUTH } = await authEnvCheck(providers); @@ -28,45 +38,41 @@ const { SHOW_OAUTH } = await authEnvCheck(providers); let paragraph: string; if (usernameAndPassword && SHOW_OAUTH) { - paragraph = 'Create an account or log in using one of the options below.'; + paragraph = t('sub-header-usernamepasswordoauth'); } else if (usernameAndPassword && !SHOW_OAUTH) { - paragraph = 'Create an account using the form below.'; + paragraph = t('sub-header-usernamepassword'); } else if (!usernameAndPassword && SHOW_OAUTH) { - paragraph = 'Log in using one of the options below.'; + paragraph = t('sub-header-oauth'); } else { - paragraph = 'No Login provider configured. Please contact your administrator.'; -} - -const user = await getUserData(Astro); - -if (user.isLoggedIn) { - return Astro.redirect(dashboardIndex); + paragraph = t('sub-header-noprovider'); } --- -<AuthLayout title="Signup Page" description="Signup Page"> +<AuthLayout title={t('title')} description={t('description')} lang={lang}> <div slot="header" class="form-header"> - <h1>Sign up</h1> + <h1>{t('header')}</h1> <p>{paragraph}</p> </div> { usernameAndPassword && ( <form class="form" id="signup-form" method="post" action={loginAPI}> - <Input label="Username" name="username" type="text" /> - <Input label="Email" name="email" type="email" /> - <Input label="Display Name" name="displayname" type="text" /> - <Input label="Password" name="password" type="password" /> - <Input label="Confirm Password" name="confirm-password" type="password" /> + <Input label={t('username-label')} name="username" type="text" /> + <Input label={t('email-label')} name="email" type="email" /> + <Input label={t('displayname-label')} name="displayname" type="text" /> + <Input label={t('password-label')} name="password" type="password" /> + <Input label={t('confirm-password-label')} name="confirm-password" type="password" /> - <Button type="submit" as="button" type="submit" color='primary' variant='solid'>Create Account</Button> + <Button type="submit" as="button" type="submit" color='primary' variant='solid'>{t('create-account-button')}</Button> </form> )} { allowUserRegistration && ( - <p slot="footer">Already have an account? <a href={loginURL}>Sign in!</a></p> + <p slot="footer">{t('allow-login-haveaccount')} <a href={tPath(loginURL)}>{t('allow-login-login')}</a></p> )} + <StaticAuthCheck server:defer /> + </AuthLayout> <script> diff --git a/packages/studiocms_auth/src/utils/routeBuilder.ts b/packages/studiocms_auth/src/utils/routeBuilder.ts index 3bb12a4c7..96387f314 100644 --- a/packages/studiocms_auth/src/utils/routeBuilder.ts +++ b/packages/studiocms_auth/src/utils/routeBuilder.ts @@ -19,7 +19,7 @@ export const makeDashboardRoute = (route: string, options: StudioCMSAuthOptions) ? removeLeadingTrailingSlashes(dashboardRouteOverride) : 'dashboard'; - return `${defaultDashboardRoute}/${route}`; + return `[...locale]/${defaultDashboardRoute}/${route}`; }; export const injectAuthAPIRoutes = defineUtility('astro:config:setup')( @@ -149,7 +149,7 @@ export const injectAuthPageRoutes = defineUtility('astro:config:setup')( injectRoute({ pattern: makeDashboardRoute(pattern, options), entrypoint, - prerender: false, // TODO: Change this to true once hybrid mode is ready + prerender: true, }); } } diff --git a/packages/studiocms_core/src/helpers/routemap.ts b/packages/studiocms_core/src/helpers/routemap.ts index c554990d4..f7f361b62 100644 --- a/packages/studiocms_core/src/helpers/routemap.ts +++ b/packages/studiocms_core/src/helpers/routemap.ts @@ -50,6 +50,7 @@ export const StudioCMSRoutes = { logoutURL: await makeDashboardRoute('logout'), signupURL: await makeDashboardRoute('signup'), loginAPI: await makeStudioCMSAPIRoute('auth/login'), // /studiocms_api/auth/login + logoutAPI: await makeStudioCMSAPIRoute('auth/logout'), // /studiocms_api/auth/logout registerAPI: await makeStudioCMSAPIRoute('auth/register'), // /studiocms_api/auth/register githubIndex: await makeStudioCMSAPIRoute('auth/github'), // /studiocms_api/auth/github githubCallback: await makeStudioCMSAPIRoute('auth/github/callback'), // /studiocms_api/auth/github/callback diff --git a/packages/studiocms_core/src/i18n/LanguageSelector.astro b/packages/studiocms_core/src/i18n/LanguageSelector.astro new file mode 100644 index 000000000..6e090c689 --- /dev/null +++ b/packages/studiocms_core/src/i18n/LanguageSelector.astro @@ -0,0 +1,103 @@ +--- +import { languageSelectorOptions, switchLanguage } from './index'; + +const switcher = switchLanguage(Astro); + +// TODO: Update the language selector's styles to match StudioCMS's new design +--- + +<button + id="language-selector" + class="language-selector mr-2" + > + <svg xmlns="http://www.w3.org/2000/svg" class="w-full h-[80%]" width="1.5rem" height="1.5rem" viewBox="0 0 24 24"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M4 5h7M9 3v2c0 4.418-2.239 8-5 8"/><path d="M5 9c0 2.144 2.952 3.908 6.7 4m.3 7l4-9l4 9m-.9-2h-6.2"/></g></svg> +</button> + +<menu id="language-sector-menu" type="context" class="bg-neutral rounded-md p-2"> + { + //Language Buttons Auto-Generated + languageSelectorOptions.map(({ key, value }) => ( + <a class="btn btn-primary" href={switcher(key)}>{value}</a> + )) + } + <div class="flex flex-row-reverse"> + <button + id="language-sector-menu-cancel" + class="btn btn-sm btn-circle btn-outline text-neutral-content" + type="button"> + <svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor"> + <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" /> + </svg> + </button> + </div> +</menu> + +<style> +.language-selector { + background-color: oklch(var(--b2)); + border-radius: 50%; + border: 0.125rem solid; + border-color: oklch(var(--s)); + box-shadow: 0 0 0.25rem 0.015rem rgba(0, 0, 0, 0.694); + width: 2.5rem; + height: 2.5rem; + cursor: pointer; + display: none; + opacity: 0; + z-index: 99998; + transition: opacity 1s ease; + } + #language-sector-menu { + position: absolute; + display: none; + flex-direction: column; + gap: 0.5rem; + left: -4rem; + top: 3rem; + width: max-content; + z-index: 99999; + } + + #language-sector-menu-cancel { + border-radius: 50%; + } +</style> + +<script> + // Get the Language Selector elements + const LanguageSelector = document.getElementById('language-selector') as HTMLButtonElement; + const LanguageSectorMenuCancel = document.getElementById('language-sector-menu-cancel') as HTMLButtonElement; + const LanguageSectorMenu = document.getElementById('language-sector-menu') as HTMLMenuElement; + + // Show the Language Selector on page load + setTimeout(() => { + LanguageSelector.style.display = 'block'; + setTimeout(() => { + LanguageSelector.style.opacity = "1"; + }, 250); + }, 200); + + // Toggle the Language Selector + function toggleLanguageSelector(element: HTMLMenuElement) { + if ( + !element.style.display + || element.style.display === 'none' + ) { + element.style.display = 'flex'; + } else { + element.style.display = 'none'; + } + } + + // Language Selector Event Listeners + LanguageSelector.addEventListener('click', () => + toggleLanguageSelector(LanguageSectorMenu) + ); + LanguageSelector.addEventListener('contextmenu', (e) => { + e.preventDefault(); + toggleLanguageSelector(LanguageSectorMenu) + }); + LanguageSectorMenuCancel.addEventListener('click', () => + toggleLanguageSelector(LanguageSectorMenu) + ); +</script> \ No newline at end of file diff --git a/packages/studiocms_core/src/i18n/index.ts b/packages/studiocms_core/src/i18n/index.ts new file mode 100644 index 000000000..059379fdc --- /dev/null +++ b/packages/studiocms_core/src/i18n/index.ts @@ -0,0 +1,151 @@ +import type { AstroGlobal } from 'astro'; + +export { default as LanguageSelector } from './LanguageSelector.astro'; + +// --- i18n Config --- // + +// Translations +const uiTranslations = { + 'en-us': await import('./translations/en-us.json'), +} as const; + +type UiTranslations = typeof uiTranslations; +type UiLanguageKeys = keyof UiTranslations; +type UiComponentKeys = keyof UiTranslations['en-us']['translations']; + +// Default language - Must match one of the keys in the `ui` object above +const defaultLang: UiLanguageKeys = 'en-us'; + +// Show the default language in the URL (e.g. /en/page) or hide it (e.g. /page) +// This is false in Astro-feedback so there is no need for a language prefix and page redirect on the main route. +const showDefaultLang: boolean = false; + +// --- i18n Utils --- // + +/** + * Example of how to use this i18n utils on a Static page + * + * @example + * ```ts + * export async function getStaticPaths() { + * const paths = staticPaths(); + * return paths; + * } + * ``` + * + * If the default language is hidden, the paths for the default language will be generated without the language prefix while all extra languages will have the prefix. (e.g. When `showDefaultLang` is false: `/en/page` will be `/page` and spanish will be `/es/page`) + * + * @returns An array of paths for all languages + */ +export const staticPaths = () => { + const paths: { params: { locale: string | undefined } }[] = []; + if (!showDefaultLang) paths.push({ params: { locale: undefined } }); + for (const lang in uiTranslations) { + if (lang === defaultLang && !showDefaultLang) continue; + paths.push({ params: { locale: lang } }); + } + return paths; +}; + +/** + * Extracts the language key from the given URL's pathname. + * + * @param url - The URL object from which to extract the language key. + * @returns The language key if it exists in the `uiTranslations`, otherwise returns the default language key. + */ +export function getLangFromUrl(url: URL) { + const [, lang] = url.pathname.split('/'); + if (lang && lang in uiTranslations) return lang as UiLanguageKeys; + return defaultLang; +} + +/** + * Retrieves a translation function for a given language and component. + * + * @param lang - The language key to use for translations. + * @param comp - The component key to use for translations. + * @returns A function that takes a translation key and returns the corresponding translated string. + */ +export function useTranslations( + lang: UiLanguageKeys, + comp: UiComponentKeys +): (key: string) => string { + return function t(key: string): string { + return ( + // @ts-expect-error - Component key is dynamic depending on the component + uiTranslations[lang].translations[comp][key] || + // @ts-expect-error - Component key is dynamic depending on the component + uiTranslations[defaultLang].translations[comp][key] + ); + }; +} + +/** + * Returns a function that translates a given path based on the provided language. + * + * @param lang - The language key to be used for translation. + * @returns A function that takes a path and an optional language key, and returns the translated path. + * If the language key is not provided, the default language key is used. + * If the language is the default language and `showDefaultLang` is false, the original path is returned. + * Otherwise, the path is prefixed with the language key. + */ +export function useTranslatedPath(lang: UiLanguageKeys): (path: string, l?: string) => string { + return function translatePath(path: string, l: string = lang) { + return !showDefaultLang && l === defaultLang ? path : `/${l}${path}`; + }; +} + +/** + * Generates an array of language selector options from the `uiTranslations` object. + * Each option contains a `key` and a `value` where: + * - `key` is a language key from `UiLanguageKeys`. + * - `value` is the display name of the language. + * + * @returns An array of objects representing language selector options. + */ +export const languageSelectorOptions = Object.keys(uiTranslations).map((key) => { + return { + key: key as UiLanguageKeys, + value: uiTranslations[key as UiLanguageKeys].displayName, + }; +}); + +/** + * Retrieves the current URL path, adjusting for language settings. + * + * This function checks if the URL path includes '/_server-islands'. If it does, + * it extracts the referer URL from the request headers and determines the current + * language from that URL. If the current language is the default language, it returns + * the pathname as is. Otherwise, it replaces the language segment in the pathname with '/'. + * + * If the URL path does not include '/_server-islands', it uses the Astro URL directly + * to determine the current language and adjust the pathname accordingly. + * + * @param {AstroGlobal} Astro - The global Astro object containing URL and request information. + */ +export function getCurrentURLPath(Astro: AstroGlobal): string { + if (Astro.url.pathname.includes('/_server-islands')) { + const path = new URL(Astro.request.headers.get('referer') || ''); + const currentLang = getLangFromUrl(path); + return currentLang === defaultLang + ? path.pathname + : path.pathname.replace(`/${currentLang}/`, '/'); + } + const path = Astro.url; + const currentLang = getLangFromUrl(path); + return currentLang === defaultLang + ? path.pathname + : path.pathname.replace(`/${currentLang}/`, '/'); +} + +/** + * Function to switch the language of the current page. + * + * @param {AstroGlobal} Astro - The global Astro object. + */ +export function switchLanguage(Astro: AstroGlobal): (languageKey: UiLanguageKeys) => string { + return function switcher(languageKey: UiLanguageKeys) { + const translatePath = useTranslatedPath(languageKey); + return translatePath(getCurrentURLPath(Astro)); + }; +} diff --git a/packages/studiocms_core/src/i18n/translations/en-us.json b/packages/studiocms_core/src/i18n/translations/en-us.json new file mode 100644 index 000000000..9c67c59bd --- /dev/null +++ b/packages/studiocms_core/src/i18n/translations/en-us.json @@ -0,0 +1,43 @@ +{ + "displayName": "English (en-US)", + "translations": { + "@studiocms/auth:login": { + "title": "Login Page", + "description": "Login Page", + "header": "Login", + "sub-header-usernamepasswordoauth": "Enter your username & password or log in using one of the options below.", + "sub-header-usernamepassword": "Enter your username & password.", + "sub-header-oauth": "Log in using one of the options below.", + "sub-header-noprovider": "No Login provider configured. Please contact your administrator.", + "username-label": "Username", + "password-label": "Password", + "login-button": "Log In", + "allow-registration-noaccount": "Don't have an account?", + "allow-registration-register": "Register here!" + }, + "@studiocms/auth:signup": { + "title": "Sign Up Page", + "description": "Sign Up Page", + "header": "Sign Up", + "sub-header-usernamepasswordoauth": "Create an account or log in using one of the options below.", + "sub-header-usernamepassword": "Create an account using the form below.", + "sub-header-oauth": "Log in using one of the options below.", + "sub-header-noprovider": "No Login provider configured. Please contact your administrator.", + "username-label": "Username", + "email-label": "Email", + "displayname-label": "Display Name", + "password-label": "Password", + "confirm-password-label": "Confirm Password", + "create-account-button": "Create Account", + "allow-login-haveaccount": "Already have an account?", + "allow-login-login": "Login here!" + }, + "@studiocms/auth:logout": { + "title": "Logout Page", + "description": "Logout Page" + }, + "@studiocms/auth:oauth-stack": { + "or-login-with": "or log in using" + } + } +} diff --git a/packages/studiocms_core/src/integration.ts b/packages/studiocms_core/src/integration.ts index ee9dd0cae..923f72dec 100644 --- a/packages/studiocms_core/src/integration.ts +++ b/packages/studiocms_core/src/integration.ts @@ -5,6 +5,7 @@ import { version } from '../package.json'; import { name } from '../package.json'; import { StudioCMSOptionsSchema as optionsSchema } from './schemas'; import { CoreStrings } from './strings'; +import { i18nDTSOutput } from './stubs/i18n-dts'; import { coreVirtualModuleGeneration } from './utils/coreVirtualModules'; export default defineIntegration({ @@ -49,6 +50,7 @@ export default defineIntegration({ 'astro:config:done': async ({ injectTypes }) => { // Inject the DTS File injectTypes(coreDtsFile); + injectTypes(i18nDTSOutput); }, }, }; diff --git a/packages/studiocms_core/src/stubs/i18n-dts.ts b/packages/studiocms_core/src/stubs/i18n-dts.ts new file mode 100644 index 000000000..34453b284 --- /dev/null +++ b/packages/studiocms_core/src/stubs/i18n-dts.ts @@ -0,0 +1,107 @@ +import DTSBuilder from '@matthiesenxyz/astrodtsbuilder'; +import { createResolver } from 'astro-integration-kit'; + +const { resolve } = createResolver(import.meta.url); + +const i18nDTS = DTSBuilder(); + +i18nDTS.addSingleLineNote( + 'This file is generated by StudioCMS and should not be modified manually.' +); + +i18nDTS.addModule('studiocms:i18n', { + namedExports: [ + { + name: 'staticPaths', + typeDef: `typeof import('${resolve('../i18n/index.ts')}').staticPaths`, + multiLineDescription: [ + 'Example of how to use this i18n utils on a Static page', + '', + '```ts', + 'export async function getStaticPaths() {', + ' const paths = staticPaths();', + ' return paths;', + '}', + '```', + '', + 'If the default language is hidden, the paths for the default language will be generated without the language prefix while all extra languages will have the prefix. (e.g. When `showDefaultLang` is false: `/en/page` will be `/page` and spanish will be `/es/page`)', + '', + '@returns An array of paths for all languages', + ], + }, + { + name: 'getLangFromUrl', + typeDef: `typeof import('${resolve('../i18n/index.ts')}').getLangFromUrl`, + multiLineDescription: [ + "Extracts the language key from the given URL's pathname.", + '', + '@param url - The URL object from which to extract the language key.', + '@returns The language key if it exists in the `uiTranslations`, otherwise returns the default language key.', + ], + }, + { + name: 'useTranslations', + typeDef: `typeof import('${resolve('../i18n/index.ts')}').useTranslations`, + multiLineDescription: [ + 'Retrieves a translation function for a given language and component.', + '', + '@param lang - The language key to use for translations.', + '@param comp - The component key to use for translations.', + '@returns A function that takes a translation key and returns the corresponding translated string.', + ], + }, + { + name: 'useTranslatedPath', + typeDef: `typeof import('${resolve('../i18n/index.ts')}').useTranslatedPath`, + multiLineDescription: [ + 'Returns a function that translates a given path based on the provided language.', + '', + '@param lang - The language key to use for translations.', + '@returns A function that takes a path and an optional language key, and returns the translated path.', + 'If the language key is not provided, the default language key is used.', + 'If the language is the default language and `showDefaultLang` is false, the original path is returned.', + 'Otherwise, the path is prefixed with the language key.', + ], + }, + { + name: 'languageSelectorOptions', + typeDef: `typeof import('${resolve('../i18n/index.ts')}').languageSelectorOptions`, + multiLineDescription: [ + 'Generates an array of language selector options from the `uiTranslations` object.', + 'Each option contains a `key` and a `value` where:', + '- `key` is a language key from `UiLanguageKeys`.', + '- `value` is the display name of the language.', + '', + '@returns An array of objects representing language selector options.', + ], + }, + { + name: 'getCurrentURLPath', + typeDef: `typeof import('${resolve('../i18n/index.ts')}').getCurrentURLPath`, + multiLineDescription: [ + 'Retrieves the current URL path, adjusting for language settings.', + '', + 'This function checks if the URL path includes `/_server-islands`. If it does,', + 'it extracts the referer URL from the request headers and determines the current', + 'language from that URL. If the current language is the default language, it returns', + 'the pathname as is. Otherwise, it replaces the language segment in the pathname with `/`.', + '', + 'If the URL path does not include `/_server-islands`, it uses the Astro URL directly', + 'to determine the current language and adjust the pathname accordingly.', + '', + '@param {AstroGlobal} Astro - The global Astro object containing URL and request information.', + ], + }, + { + name: 'switchLanguage', + typeDef: `typeof import('${resolve('../i18n/index.ts')}').switchLanguage`, + multiLineDescription: [ + 'Function to switch the language of the current page.', + '', + '@param {AstroGlobal} Astro - The global Astro object.', + ], + }, + ], +}); + +export const i18nDTSOutput = i18nDTS.makeAstroInjectedType('i18n.d.ts'); diff --git a/packages/studiocms_core/src/utils/coreVirtualModules.ts b/packages/studiocms_core/src/utils/coreVirtualModules.ts index f4c217c8d..f44d484b1 100644 --- a/packages/studiocms_core/src/utils/coreVirtualModules.ts +++ b/packages/studiocms_core/src/utils/coreVirtualModules.ts @@ -97,6 +97,7 @@ export const coreVirtualModuleGeneration = defineUtility('astro:config:setup')( 'studiocms:helpers/contentHelper': `export * from '${contentHelperResolved}';`, 'studiocms:helpers/headDefaults': `export * from '${headDefaultsResolved}';`, 'studiocms:helpers/routemap': `export * from '${routeMapResolved}';`, + 'studiocms:i18n': `export * from '${resolve('../i18n/index.ts')}'`, }; // Inject the Virtual Imports diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c5429a20f..205ae0b7f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,8 +10,8 @@ catalogs: specifier: ^0.9.4 version: 0.9.4 '@astrojs/db': - specifier: ^0.14.2 - version: 0.14.2 + specifier: ^0.14.3 + version: 0.14.3 '@astrojs/markdown-remark': specifier: ^5.2.0 version: 5.2.0 @@ -37,8 +37,8 @@ catalogs: specifier: ^20.14.11 version: 20.14.13 astro: - specifier: ^4.16.6 - version: 4.16.6 + specifier: ^4.16.11 + version: 4.16.11 astro-integration-kit: specifier: ^0.16.1 version: 0.16.1 @@ -677,10 +677,10 @@ importers: dependencies: '@astrojs/db': specifier: 'catalog:' - version: 0.14.2(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1) + version: 0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1) '@astrojs/web-vitals': specifier: 'catalog:' - version: 3.0.0(@astrojs/db@0.14.2(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1)) + version: 3.0.0(@astrojs/db@0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1)) '@inox-tools/runtime-logger': specifier: catalog:studiocms-shared version: 0.3.4(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) @@ -938,16 +938,17 @@ importers: dependencies: '@astrojs/db': specifier: 'catalog:' - version: 0.14.2(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1) + version: 0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1) '@astrojs/node': specifier: 'catalog:' - version: 8.3.4(astro@4.16.6(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)) + version: 8.3.4(astro@4.16.11(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)) '@astrojs/web-vitals': specifier: 'catalog:' version: 3.0.0(@astrojs/db@0.14.2(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1)) '@sentry/astro': specifier: ^8.38.0 version: 8.38.0(astro@4.16.6(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)) + version: 3.0.0(@astrojs/db@0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1)) '@studiocms/blog': specifier: workspace:* version: link:../../packages/studiocms_blog @@ -956,7 +957,7 @@ importers: version: link:../../packages/studiocms_devapps astro: specifier: 'catalog:' - version: 4.16.6(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) + version: 4.16.11(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) sharp: specifier: 'catalog:' version: 0.33.4 @@ -975,7 +976,7 @@ importers: dependencies: '@astrojs/node': specifier: 'catalog:' - version: 8.3.4(astro@4.16.6(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)) + version: 8.3.4(astro@4.16.11(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)) '@fontsource-variable/onest': specifier: catalog:studiocms-shared version: 5.1.0 @@ -987,7 +988,7 @@ importers: version: link:../../packages/studiocms_ui astro: specifier: 'catalog:' - version: 4.16.6(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) + version: 4.16.11(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) devDependencies: '@types/node': specifier: 'catalog:' @@ -1006,25 +1007,25 @@ importers: version: 0.9.4(typescript@5.6.3) '@astrojs/db': specifier: 'catalog:' - version: 0.14.2(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1) + version: 0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1) '@astrojs/node': specifier: 'catalog:' - version: 8.3.4(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 8.3.4(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@astrojs/react': specifier: 'catalog:' - version: 3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.9(@types/node@22.0.0)) + version: 3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.11(@types/node@22.0.0)) '@astrojs/starlight': specifier: 'catalog:' - version: 0.28.3(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@astrojs/web-vitals': specifier: 'catalog:' - version: 3.0.0(@astrojs/db@0.14.2(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1)) + version: 3.0.0(@astrojs/db@0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1)) '@fontsource-variable/onest': specifier: catalog:studiocms-shared version: 5.1.0 '@lorenzo_lewis/starlight-utils': specifier: catalog:docs - version: 0.2.0(@astrojs/starlight@0.28.3(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)))(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.2.0(@astrojs/starlight@0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)))(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@shikijs/transformers': specifier: catalog:docs version: 1.22.0 @@ -1051,10 +1052,10 @@ importers: version: 3.0.2 astro: specifier: 'catalog:' - version: 4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + version: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) astro-embed: specifier: catalog:docs - version: 0.7.4(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.7.4(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) hast: specifier: catalog:docs version: 1.0.0 @@ -1105,10 +1106,10 @@ importers: version: 0.2.0 starlight-image-zoom: specifier: catalog:docs - version: 0.8.0(@astrojs/starlight@0.28.3(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))) + version: 0.8.0(@astrojs/starlight@0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))) starlight-typedoc: specifier: catalog:docs - version: 0.16.0(@astrojs/starlight@0.28.3(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)))(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))(typedoc-plugin-markdown@4.2.9(typedoc@0.26.10(typescript@5.6.3)))(typedoc@0.26.10(typescript@5.6.3)) + version: 0.16.0(@astrojs/starlight@0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)))(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))(typedoc-plugin-markdown@4.2.9(typedoc@0.26.10(typescript@5.6.3)))(typedoc@0.26.10(typescript@5.6.3)) studiocms: specifier: workspace:* version: link:../../packages/studiocms @@ -1132,7 +1133,7 @@ importers: version: 0.9.4(typescript@5.6.3) '@astrojs/tailwind': specifier: 'catalog:' - version: 5.1.2(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))(tailwindcss@3.4.14) + version: 5.1.2(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))(tailwindcss@3.4.14) '@fontsource-variable/onest': specifier: catalog:studiocms-shared version: 5.1.0 @@ -1147,7 +1148,7 @@ importers: version: 0.5.15(tailwindcss@3.4.14) astro: specifier: 'catalog:' - version: 4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + version: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) astro-icon: specifier: catalog:landing version: 1.1.1 @@ -1237,6 +1238,9 @@ packages: '@astrojs/db@0.14.2': resolution: {integrity: sha512-eMudd6KupdcUr3sN58g5qagpCX5PApFy1zRrfPnOMvE6Ndnx+vQtjOkZPgqQ+5vTJ04GrMwzuqhjRB0waaJVoA==} + '@astrojs/db@0.14.3': + resolution: {integrity: sha512-GL7JvdZfTfelH0MSJcgF2zKnOAhCkzAgQlz2LhKZ0YqgJTk+5/5lMsFQtSynJ/CwRKO2XQjop1pvMl6F9XKCNw==} + '@astrojs/internal-helpers@0.4.1': resolution: {integrity: sha512-bMf9jFihO8YP940uD70SI/RDzIhUHJAolWVcO1v5PUivxGKvfLZTLTVVxEYzGYyPsA3ivdLNqMnL5VgmQySa+g==} @@ -1322,6 +1326,10 @@ packages: resolution: {integrity: sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==} engines: {node: '>=6.9.0'} + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} + engines: {node: '>=6.9.0'} + '@babel/compat-data@7.25.2': resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==} engines: {node: '>=6.9.0'} @@ -1330,6 +1338,10 @@ packages: resolution: {integrity: sha512-9ickoLz+hcXCeh7jrcin+/SLWm+GkxE2kTvoYyp38p4WkdFXfQJxDFGWp/YHjiKLPx06z2A7W8XKuqbReXDzsw==} engines: {node: '>=6.9.0'} + '@babel/compat-data@7.26.2': + resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==} + engines: {node: '>=6.9.0'} + '@babel/core@7.25.2': resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} engines: {node: '>=6.9.0'} @@ -1342,6 +1354,10 @@ packages: resolution: {integrity: sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg==} engines: {node: '>=6.9.0'} + '@babel/core@7.26.0': + resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} + engines: {node: '>=6.9.0'} + '@babel/generator@7.25.5': resolution: {integrity: sha512-abd43wyLfbWoxC6ahM8xTkqLpGB2iWBVyuKC9/srhFunCd1SDNrV1s72bBpK4hLj8KLzHBBcOblvLQZBNw9r3w==} engines: {node: '>=6.9.0'} @@ -1350,6 +1366,10 @@ packages: resolution: {integrity: sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==} engines: {node: '>=6.9.0'} + '@babel/generator@7.26.2': + resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} + engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.24.7': resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} engines: {node: '>=6.9.0'} @@ -1358,6 +1378,10 @@ packages: resolution: {integrity: sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==} engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.25.9': + resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} + engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.25.2': resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} engines: {node: '>=6.9.0'} @@ -1366,6 +1390,10 @@ packages: resolution: {integrity: sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==} engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.25.9': + resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-create-class-features-plugin@7.25.0': resolution: {integrity: sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==} engines: {node: '>=6.9.0'} @@ -1384,6 +1412,10 @@ packages: resolution: {integrity: sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==} engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.25.9': + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-transforms@7.25.2': resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} engines: {node: '>=6.9.0'} @@ -1396,6 +1428,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-module-transforms@7.26.0': + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-optimise-call-expression@7.24.7': resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} engines: {node: '>=6.9.0'} @@ -1408,6 +1446,10 @@ packages: resolution: {integrity: sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==} engines: {node: '>=6.9.0'} + '@babel/helper-plugin-utils@7.25.9': + resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} + engines: {node: '>=6.9.0'} + '@babel/helper-replace-supers@7.25.0': resolution: {integrity: sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==} engines: {node: '>=6.9.0'} @@ -1434,6 +1476,10 @@ packages: resolution: {integrity: sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.24.7': resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} @@ -1442,6 +1488,10 @@ packages: resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.24.8': resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} engines: {node: '>=6.9.0'} @@ -1450,6 +1500,10 @@ packages: resolution: {integrity: sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} + engines: {node: '>=6.9.0'} + '@babel/helpers@7.25.0': resolution: {integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==} engines: {node: '>=6.9.0'} @@ -1458,6 +1512,10 @@ packages: resolution: {integrity: sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==} engines: {node: '>=6.9.0'} + '@babel/helpers@7.26.0': + resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} + engines: {node: '>=6.9.0'} + '@babel/highlight@7.24.7': resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} @@ -1481,6 +1539,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.26.2': + resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-syntax-jsx@7.24.7': resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} engines: {node: '>=6.9.0'} @@ -1493,6 +1556,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-jsx@7.25.9': + resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-syntax-typescript@7.24.7': resolution: {integrity: sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==} engines: {node: '>=6.9.0'} @@ -1523,6 +1592,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-jsx@7.25.9': + resolution: {integrity: sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-typescript@7.25.2': resolution: {integrity: sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==} engines: {node: '>=6.9.0'} @@ -1547,6 +1622,10 @@ packages: resolution: {integrity: sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==} engines: {node: '>=6.9.0'} + '@babel/template@7.25.9': + resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} + engines: {node: '>=6.9.0'} + '@babel/traverse@7.25.4': resolution: {integrity: sha512-VJ4XsrD+nOvlXyLzmLzUs/0qjFS4sK30te5yEFlvbbUNEgKaVb2BHZUpAL+ttLPQAHNrsI3zZisbfha5Cvr8vg==} engines: {node: '>=6.9.0'} @@ -1555,6 +1634,10 @@ packages: resolution: {integrity: sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.25.9': + resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} + engines: {node: '>=6.9.0'} + '@babel/types@7.25.6': resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} engines: {node: '>=6.9.0'} @@ -1567,6 +1650,10 @@ packages: resolution: {integrity: sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==} engines: {node: '>=6.9.0'} + '@babel/types@7.26.0': + resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} + engines: {node: '>=6.9.0'} + '@biomejs/biome@1.9.3': resolution: {integrity: sha512-POjAPz0APAmX33WOQFGQrwLvlu7WLV4CFJMlB12b6ZSg+2q6fYu9kZwLCOA+x83zXfcPd1RpuWOKJW0GbBwLIQ==} engines: {node: '>=14.21.3'} @@ -2858,6 +2945,15 @@ packages: rollup: optional: true + '@rollup/pluginutils@5.1.3': + resolution: {integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/rollup-android-arm-eabi@4.21.0': resolution: {integrity: sha512-WTWD8PfoSAJ+qL87lE7votj3syLavxunWhzCnx3XFxFiI/BA/r3X7MUM8dVrH8rb2r4AiO8jJsr3ZjdaftmnfA==} cpu: [arm] @@ -3054,12 +3150,21 @@ packages: '@shikijs/core@1.22.0': resolution: {integrity: sha512-S8sMe4q71TJAW+qG93s5VaiihujRK6rqDFqBnxqvga/3LvqHEnxqBIOPkt//IdXVtHkQWKu4nOQNk0uBGicU7Q==} + '@shikijs/core@1.22.2': + resolution: {integrity: sha512-bvIQcd8BEeR1yFvOYv6HDiyta2FFVePbzeowf5pPS1avczrPK+cjmaxxh0nx5QzbON7+Sv0sQfQVciO7bN72sg==} + '@shikijs/engine-javascript@1.22.0': resolution: {integrity: sha512-AeEtF4Gcck2dwBqCFUKYfsCq0s+eEbCEbkUuFou53NZ0sTGnJnJ/05KHQFZxpii5HMXbocV9URYVowOP2wH5kw==} + '@shikijs/engine-javascript@1.22.2': + resolution: {integrity: sha512-iOvql09ql6m+3d1vtvP8fLCVCK7BQD1pJFmHIECsujB0V32BJ0Ab6hxk1ewVSMFA58FI0pR2Had9BKZdyQrxTw==} + '@shikijs/engine-oniguruma@1.22.0': resolution: {integrity: sha512-5iBVjhu/DYs1HB0BKsRRFipRrD7rqjxlWTj4F2Pf+nQSPqc3kcyqFFeZXnBMzDf0HdqaFVvhDRAGiYNvyLP+Mw==} + '@shikijs/engine-oniguruma@1.22.2': + resolution: {integrity: sha512-GIZPAGzQOy56mGvWMoZRPggn0dTlBf1gutV5TdceLCZlFNqWmuc7u+CzD0Gd9vQUTgLbrt0KLzz6FNprqYAxlA==} + '@shikijs/transformers@1.14.1': resolution: {integrity: sha512-JJqL8QBVCJh3L61jqqEXgFq1cTycwjcGj7aSmqOEsbxnETM9hRlaB74QuXvY/fVJNjbNt8nvWo0VwAXKvMSLRg==} @@ -3072,6 +3177,9 @@ packages: '@shikijs/types@1.22.0': resolution: {integrity: sha512-Fw/Nr7FGFhlQqHfxzZY8Cwtwk5E9nKDUgeLjZgt3UuhcM3yJR9xj3ZGNravZZok8XmEZMiYkSMTPlPkULB8nww==} + '@shikijs/types@1.22.2': + resolution: {integrity: sha512-NCWDa6LGZqTuzjsGfXOBWfjS/fDIbDdmVDug+7ykVe1IKT4c1gakrvlfFYp5NhAXH/lyqLM8wsAPo5wNy73Feg==} + '@shikijs/vscode-textmate@9.3.0': resolution: {integrity: sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==} @@ -3396,9 +3504,10 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} + engines: {node: '>=0.4.0'} + hasBin: true ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} @@ -3520,13 +3629,13 @@ packages: '@astrojs/db': optional: true - astro@4.16.2: - resolution: {integrity: sha512-Dfkpyt6sA+nv6LnOJr+7bt+gQF5Qh02yqVgyes4c4SvcPScteq1bLX22/z/XW+VU0vlciJOMiM8GWtcDiF6gUQ==} + astro@4.16.11: + resolution: {integrity: sha512-Pm0ATut4f8kM2OKbSDbatO5Q/f2ynt1dbc5UGQN8I5bFnJvDbJj3R1NE513BOXXv4GQBKJZUshcZEMvlZpA61g==} engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true - astro@4.16.6: - resolution: {integrity: sha512-LMMbjr+4aN26MOyJzTdjM+Y+srpAIkx7IX9IcdF3eHQLGr8PgkioZp+VQExRfioDIyA2HY6ottVg3QccTzJqYA==} + astro@4.16.2: + resolution: {integrity: sha512-Dfkpyt6sA+nv6LnOJr+7bt+gQF5Qh02yqVgyes4c4SvcPScteq1bLX22/z/XW+VU0vlciJOMiM8GWtcDiF6gUQ==} engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true @@ -5256,6 +5365,10 @@ packages: resolution: {integrity: sha512-GQEkNkH/GHOhPFXcqZs3IDahXEQcQxsSjEkK4KvEEST4t7eNzoMjxTzef+EZ+JluDEV+Raoi3WQ2CflnRdSVnQ==} engines: {node: '>=18'} + ora@8.1.1: + resolution: {integrity: sha512-YWielGi1XzG1UTvOaCFaNgEnuhZVMSHYkW/FQ7UX8O26PtlpdM84c0f7wLPlkvx2RfiQmnzd61d/MGxmpQeJPw==} + engines: {node: '>=18'} + os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} @@ -5815,8 +5928,8 @@ packages: shiki@1.22.0: resolution: {integrity: sha512-/t5LlhNs+UOKQCYBtl5ZsH/Vclz73GIqT2yQsCBygr8L/ppTdmpL4w3kPLoZJbMKVWtoG77Ue1feOjZfDxvMkw==} - shimmer@1.2.1: - resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} + shiki@1.22.2: + resolution: {integrity: sha512-3IZau0NdGKXhH2bBlUk4w1IHNxPh6A5B2sUpyY+8utLu2j/h1QpFkAaUA1bAMxOWWGtTWcAh531vnS4NJKS/lA==} signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -6004,6 +6117,9 @@ packages: tinyexec@0.3.0: resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==} + tinyexec@0.3.1: + resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} + tinyglobby@0.2.5: resolution: {integrity: sha512-Dlqgt6h0QkoHttG53/WGADNh9QhcjCAIZMTERAVhdpmIBEejSuLI9ZmGKWzB7tweBjlk30+s/ofi4SLmBeTYhw==} engines: {node: '>=12.0.0'} @@ -6208,8 +6324,8 @@ packages: vfile@6.0.3: resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - vite@5.4.8: - resolution: {integrity: sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==} + vite@5.4.11: + resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -6239,8 +6355,8 @@ packages: terser: optional: true - vite@5.4.9: - resolution: {integrity: sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==} + vite@5.4.8: + resolution: {integrity: sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -6534,6 +6650,11 @@ packages: peerDependencies: zod: ^3.23.3 + zod-to-json-schema@3.23.5: + resolution: {integrity: sha512-5wlSS0bXfF/BrL4jPAbz9da5hDlDptdEppYfe+x4eIJ7jioqKG9uUxOwPzqof09u/XeVdrgFu29lZi+8XNDJtA==} + peerDependencies: + zod: ^3.23.3 + zod-to-ts@1.2.0: resolution: {integrity: sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==} peerDependencies: @@ -6572,38 +6693,38 @@ snapshots: '@antfu/utils@0.7.10': {} - '@astro-community/astro-embed-integration@0.7.2(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': + '@astro-community/astro-embed-integration@0.7.2(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: '@astro-community/astro-embed-link-preview': 0.2.2 - '@astro-community/astro-embed-twitter': 0.5.6(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) - '@astro-community/astro-embed-vimeo': 0.3.10(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) - '@astro-community/astro-embed-youtube': 0.5.5(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + '@astro-community/astro-embed-twitter': 0.5.6(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + '@astro-community/astro-embed-vimeo': 0.3.10(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + '@astro-community/astro-embed-youtube': 0.5.5(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@types/unist': 2.0.10 - astro: 4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) - astro-auto-import: 0.4.2(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro-auto-import: 0.4.2(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) unist-util-select: 4.0.3 '@astro-community/astro-embed-link-preview@0.2.2': dependencies: '@astro-community/astro-embed-utils': 0.1.3 - '@astro-community/astro-embed-twitter@0.5.6(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': + '@astro-community/astro-embed-twitter@0.5.6(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: '@astro-community/astro-embed-utils': 0.1.3 - astro: 4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) '@astro-community/astro-embed-utils@0.1.3': dependencies: linkedom: 0.14.26 - '@astro-community/astro-embed-vimeo@0.3.10(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': + '@astro-community/astro-embed-vimeo@0.3.10(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: '@astro-community/astro-embed-utils': 0.1.3 - astro: 4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) - '@astro-community/astro-embed-youtube@0.5.5(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': + '@astro-community/astro-embed-youtube@0.5.5(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: - astro: 4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) lite-youtube-embed: 0.3.3 '@astrojs/check@0.9.4(typescript@5.6.3)': @@ -6665,6 +6786,52 @@ snapshots: - sqlite3 - utf-8-validate + '@astrojs/db@0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1)': + dependencies: + '@astrojs/studio': 0.1.1 + '@libsql/client': 0.14.0 + async-listen: 3.0.1 + deep-diff: 1.0.2 + drizzle-orm: 0.31.4(@cloudflare/workers-types@4.20240725.0)(@libsql/client@0.14.0)(@types/react@18.3.5)(react@18.3.1) + github-slugger: 2.0.0 + kleur: 4.1.5 + nanoid: 5.0.7 + open: 10.1.0 + ora: 8.1.0 + prompts: 2.4.2 + yargs-parser: 21.1.1 + zod: 3.23.8 + transitivePeerDependencies: + - '@aws-sdk/client-rds-data' + - '@cloudflare/workers-types' + - '@electric-sql/pglite' + - '@neondatabase/serverless' + - '@op-engineering/op-sqlite' + - '@opentelemetry/api' + - '@planetscale/database' + - '@prisma/client' + - '@tidbcloud/serverless' + - '@types/better-sqlite3' + - '@types/pg' + - '@types/react' + - '@types/sql.js' + - '@vercel/postgres' + - '@xata.io/client' + - better-sqlite3 + - bufferutil + - bun-types + - expo-sqlite + - knex + - kysely + - mysql2 + - pg + - postgres + - prisma + - react + - sql.js + - sqlite3 + - utf-8-validate + '@astrojs/internal-helpers@0.4.1': {} '@astrojs/language-server@2.15.3(typescript@5.6.3)': @@ -6736,12 +6903,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/mdx@3.1.3(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': + '@astrojs/mdx@3.1.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: '@astrojs/markdown-remark': 5.2.0 '@mdx-js/mdx': 3.0.1 acorn: 8.12.1 - astro: 4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) es-module-lexer: 1.5.4 estree-util-visit: 2.0.0 github-slugger: 2.0.0 @@ -6757,17 +6924,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/node@8.3.4(astro@4.16.6(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3))': + '@astrojs/node@8.3.4(astro@4.16.11(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3))': dependencies: - astro: 4.16.6(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.11(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) send: 0.19.1 server-destroy: 1.0.1 transitivePeerDependencies: - supports-color - '@astrojs/node@8.3.4(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': + '@astrojs/node@8.3.4(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: - astro: 4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) send: 0.19.1 server-destroy: 1.0.1 transitivePeerDependencies: @@ -6777,11 +6944,11 @@ snapshots: dependencies: prismjs: 1.29.0 - '@astrojs/react@3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.8(@types/node@22.0.0))': + '@astrojs/react@3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.11(@types/node@22.0.0))': dependencies: '@types/react': 18.3.5 '@types/react-dom': 18.3.0 - '@vitejs/plugin-react': 4.3.1(vite@5.4.8(@types/node@22.0.0)) + '@vitejs/plugin-react': 4.3.1(vite@5.4.11(@types/node@22.0.0)) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) ultrahtml: 1.5.3 @@ -6789,11 +6956,11 @@ snapshots: - supports-color - vite - '@astrojs/react@3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.9(@types/node@22.0.0))': + '@astrojs/react@3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.8(@types/node@22.0.0))': dependencies: '@types/react': 18.3.5 '@types/react-dom': 18.3.0 - '@vitejs/plugin-react': 4.3.1(vite@5.4.9(@types/node@22.0.0)) + '@vitejs/plugin-react': 4.3.1(vite@5.4.8(@types/node@22.0.0)) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) ultrahtml: 1.5.3 @@ -6812,15 +6979,15 @@ snapshots: stream-replace-string: 2.0.0 zod: 3.23.8 - '@astrojs/starlight@0.28.3(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': + '@astrojs/starlight@0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: - '@astrojs/mdx': 3.1.3(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + '@astrojs/mdx': 3.1.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@astrojs/sitemap': 3.1.6 '@pagefind/default-ui': 1.1.0 '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - astro: 4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) - astro-expressive-code: 0.35.6(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro-expressive-code: 0.35.6(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) bcp-47: 2.1.0 hast-util-from-html: 2.0.3 hast-util-select: 6.0.3 @@ -6846,9 +7013,9 @@ snapshots: kleur: 4.1.5 ora: 8.1.0 - '@astrojs/tailwind@5.1.2(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))(tailwindcss@3.4.14)': + '@astrojs/tailwind@5.1.2(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))(tailwindcss@3.4.14)': dependencies: - astro: 4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) autoprefixer: 10.4.20(postcss@8.4.47) postcss: 8.4.47 postcss-load-config: 4.0.2(postcss@8.4.47) @@ -6868,9 +7035,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/web-vitals@3.0.0(@astrojs/db@0.14.2(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1))': + '@astrojs/web-vitals@3.0.0(@astrojs/db@0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1))': dependencies: - '@astrojs/db': 0.14.2(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1) + '@astrojs/db': 0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1) web-vitals: 4.2.3 '@astrojs/yaml2ts@0.2.1': @@ -6887,10 +7054,18 @@ snapshots: '@babel/highlight': 7.25.7 picocolors: 1.1.0 + '@babel/code-frame@7.26.2': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.0 + '@babel/compat-data@7.25.2': {} '@babel/compat-data@7.25.7': {} + '@babel/compat-data@7.26.2': {} + '@babel/core@7.25.2': dependencies: '@ampproject/remapping': 2.3.0 @@ -6951,6 +7126,26 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/core@7.26.0': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helpers': 7.26.0 + '@babel/parser': 7.26.2 + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + convert-source-map: 2.0.0 + debug: 4.3.7 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/generator@7.25.5': dependencies: '@babel/types': 7.25.6 @@ -6965,6 +7160,14 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.0.2 + '@babel/generator@7.26.2': + dependencies: + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.0.2 + '@babel/helper-annotate-as-pure@7.24.7': dependencies: '@babel/types': 7.25.6 @@ -6973,6 +7176,10 @@ snapshots: dependencies: '@babel/types': 7.25.7 + '@babel/helper-annotate-as-pure@7.25.9': + dependencies: + '@babel/types': 7.26.0 + '@babel/helper-compilation-targets@7.25.2': dependencies: '@babel/compat-data': 7.25.2 @@ -6989,6 +7196,14 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 + '@babel/helper-compilation-targets@7.25.9': + dependencies: + '@babel/compat-data': 7.26.2 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.0 + lru-cache: 5.1.1 + semver: 6.3.1 + '@babel/helper-create-class-features-plugin@7.25.0(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 @@ -7023,6 +7238,13 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-imports@7.25.9': + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 @@ -7053,6 +7275,15 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + '@babel/helper-optimise-call-expression@7.24.7': dependencies: '@babel/types': 7.25.6 @@ -7061,6 +7292,8 @@ snapshots: '@babel/helper-plugin-utils@7.25.7': {} + '@babel/helper-plugin-utils@7.25.9': {} + '@babel/helper-replace-supers@7.25.0(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 @@ -7095,14 +7328,20 @@ snapshots: '@babel/helper-string-parser@7.25.7': {} + '@babel/helper-string-parser@7.25.9': {} + '@babel/helper-validator-identifier@7.24.7': {} '@babel/helper-validator-identifier@7.25.7': {} + '@babel/helper-validator-identifier@7.25.9': {} + '@babel/helper-validator-option@7.24.8': {} '@babel/helper-validator-option@7.25.7': {} + '@babel/helper-validator-option@7.25.9': {} + '@babel/helpers@7.25.0': dependencies: '@babel/template': 7.25.0 @@ -7113,6 +7352,11 @@ snapshots: '@babel/template': 7.25.7 '@babel/types': 7.25.7 + '@babel/helpers@7.26.0': + dependencies: + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 + '@babel/highlight@7.24.7': dependencies: '@babel/helper-validator-identifier': 7.24.7 @@ -7139,6 +7383,10 @@ snapshots: dependencies: '@babel/types': 7.25.8 + '@babel/parser@7.26.2': + dependencies: + '@babel/types': 7.26.0 + '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 @@ -7149,10 +7397,10 @@ snapshots: '@babel/core': 7.25.7 '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-jsx@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.25.2)': dependencies: @@ -7189,14 +7437,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-jsx@7.25.7(@babel/core@7.25.8)': + '@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-annotate-as-pure': 7.25.7 - '@babel/helper-module-imports': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-jsx': 7.25.7(@babel/core@7.25.8) - '@babel/types': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color @@ -7238,6 +7486,12 @@ snapshots: '@babel/parser': 7.25.7 '@babel/types': 7.25.7 + '@babel/template@7.25.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 + '@babel/traverse@7.25.4': dependencies: '@babel/code-frame': 7.24.7 @@ -7262,6 +7516,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/traverse@7.25.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 + debug: 4.3.7 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + '@babel/types@7.25.6': dependencies: '@babel/helper-string-parser': 7.24.8 @@ -7280,6 +7546,11 @@ snapshots: '@babel/helper-validator-identifier': 7.25.7 to-fast-properties: 2.0.0 + '@babel/types@7.26.0': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@biomejs/biome@1.9.3': optionalDependencies: '@biomejs/cli-darwin-arm64': 1.9.3 @@ -7984,11 +8255,11 @@ snapshots: dependencies: '@lit-labs/ssr-dom-shim': 1.2.0 - '@lorenzo_lewis/starlight-utils@0.2.0(@astrojs/starlight@0.28.3(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)))(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': + '@lorenzo_lewis/starlight-utils@0.2.0(@astrojs/starlight@0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)))(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: - '@astrojs/starlight': 0.28.3(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) - astro: 4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) - astro-integration-kit: 0.16.1(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + '@astrojs/starlight': 0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro-integration-kit: 0.16.1(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@manypkg/find-root@1.1.0': dependencies: @@ -8575,6 +8846,14 @@ snapshots: optionalDependencies: rollup: 4.21.0 + '@rollup/pluginutils@5.1.3(rollup@4.21.0)': + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 4.0.2 + optionalDependencies: + rollup: 4.21.0 + '@rollup/rollup-android-arm-eabi@4.21.0': optional: true @@ -8813,17 +9092,37 @@ snapshots: '@types/hast': 3.0.4 hast-util-to-html: 9.0.3 + '@shikijs/core@1.22.2': + dependencies: + '@shikijs/engine-javascript': 1.22.2 + '@shikijs/engine-oniguruma': 1.22.2 + '@shikijs/types': 1.22.2 + '@shikijs/vscode-textmate': 9.3.0 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.3 + '@shikijs/engine-javascript@1.22.0': dependencies: '@shikijs/types': 1.22.0 '@shikijs/vscode-textmate': 9.3.0 oniguruma-to-js: 0.4.3 + '@shikijs/engine-javascript@1.22.2': + dependencies: + '@shikijs/types': 1.22.2 + '@shikijs/vscode-textmate': 9.3.0 + oniguruma-to-js: 0.4.3 + '@shikijs/engine-oniguruma@1.22.0': dependencies: '@shikijs/types': 1.22.0 '@shikijs/vscode-textmate': 9.3.0 + '@shikijs/engine-oniguruma@1.22.2': + dependencies: + '@shikijs/types': 1.22.2 + '@shikijs/vscode-textmate': 9.3.0 + '@shikijs/transformers@1.14.1': dependencies: shiki: 1.14.1 @@ -8846,6 +9145,11 @@ snapshots: '@shikijs/vscode-textmate': 9.3.0 '@types/hast': 3.0.4 + '@shikijs/types@1.22.2': + dependencies: + '@shikijs/vscode-textmate': 9.3.0 + '@types/hast': 3.0.4 + '@shikijs/vscode-textmate@9.3.0': {} '@shoelace-style/animations@1.1.0': {} @@ -9229,25 +9533,25 @@ snapshots: - rollup - supports-color - '@vitejs/plugin-react@4.3.1(vite@5.4.8(@types/node@22.0.0))': + '@vitejs/plugin-react@4.3.1(vite@5.4.11(@types/node@22.0.0))': dependencies: '@babel/core': 7.25.8 '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.8) '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.8) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.4.8(@types/node@22.0.0) + vite: 5.4.11(@types/node@22.0.0) transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@4.3.1(vite@5.4.9(@types/node@22.0.0))': + '@vitejs/plugin-react@4.3.1(vite@5.4.8(@types/node@22.0.0))': dependencies: '@babel/core': 7.25.8 '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.8) '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.8) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.4.9(@types/node@22.0.0) + vite: 5.4.8(@types/node@22.0.0) transitivePeerDependencies: - supports-color @@ -9313,11 +9617,7 @@ snapshots: acorn@8.12.1: {} - agent-base@6.0.2: - dependencies: - debug: 4.3.7 - transitivePeerDependencies: - - supports-color + acorn@8.14.0: {} ajv@8.17.1: dependencies: @@ -9379,24 +9679,24 @@ snapshots: astring@1.8.6: {} - astro-auto-import@0.4.2(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): + astro-auto-import@0.4.2(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): dependencies: '@types/node': 18.19.42 acorn: 8.12.1 - astro: 4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) - astro-embed@0.7.4(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): + astro-embed@0.7.4(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): dependencies: - '@astro-community/astro-embed-integration': 0.7.2(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + '@astro-community/astro-embed-integration': 0.7.2(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@astro-community/astro-embed-link-preview': 0.2.2 - '@astro-community/astro-embed-twitter': 0.5.6(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) - '@astro-community/astro-embed-vimeo': 0.3.10(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) - '@astro-community/astro-embed-youtube': 0.5.5(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) - astro: 4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + '@astro-community/astro-embed-twitter': 0.5.6(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + '@astro-community/astro-embed-vimeo': 0.3.10(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + '@astro-community/astro-embed-youtube': 0.5.5(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) - astro-expressive-code@0.35.6(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): + astro-expressive-code@0.35.6(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): dependencies: - astro: 4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) rehype-expressive-code: 0.35.6 astro-icon@1.1.1: @@ -9414,15 +9714,15 @@ snapshots: pathe: 1.1.2 recast: 0.23.9 - astro-integration-kit@0.16.1(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): + astro-integration-kit@0.16.1(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): dependencies: - astro: 4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) pathe: 1.1.2 recast: 0.23.9 - astro-integration-kit@0.16.1(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): + astro-integration-kit@0.16.1(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): dependencies: - astro: 4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) pathe: 1.1.2 recast: 0.23.9 @@ -9444,20 +9744,20 @@ snapshots: callsites: 4.2.0 fast-glob: 3.3.2 - astro@4.16.2(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3): + astro@4.16.11(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3): dependencies: '@astrojs/compiler': 2.10.3 '@astrojs/internal-helpers': 0.4.1 '@astrojs/markdown-remark': 5.3.0 '@astrojs/telemetry': 3.1.0 - '@babel/core': 7.25.7 - '@babel/plugin-transform-react-jsx': 7.25.7(@babel/core@7.25.7) - '@babel/types': 7.25.7 + '@babel/core': 7.26.0 + '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/types': 7.26.0 '@oslojs/encoding': 1.1.0 - '@rollup/pluginutils': 5.1.2(rollup@4.21.0) + '@rollup/pluginutils': 5.1.3(rollup@4.21.0) '@types/babel__core': 7.20.5 '@types/cookie': 0.6.0 - acorn: 8.12.1 + acorn: 8.14.0 aria-query: 5.3.2 axobject-query: 4.1.0 boxen: 8.0.1 @@ -9483,30 +9783,30 @@ snapshots: http-cache-semantics: 4.1.1 js-yaml: 4.1.0 kleur: 4.1.5 - magic-string: 0.30.11 + magic-string: 0.30.12 magicast: 0.3.5 micromatch: 4.0.8 mrmime: 2.0.0 neotraverse: 0.6.18 - ora: 8.1.0 + ora: 8.1.1 p-limit: 6.1.0 p-queue: 8.0.1 preferred-pm: 4.0.0 prompts: 2.4.2 rehype: 13.0.2 semver: 7.6.3 - shiki: 1.22.0 - tinyexec: 0.3.0 - tsconfck: 3.1.3(typescript@5.6.3) + shiki: 1.22.2 + tinyexec: 0.3.1 + tsconfck: 3.1.4(typescript@5.6.3) unist-util-visit: 5.0.0 vfile: 6.0.3 - vite: 5.4.8(@types/node@20.14.13) - vitefu: 1.0.2(vite@5.4.8(@types/node@20.14.13)) + vite: 5.4.11(@types/node@20.14.13) + vitefu: 1.0.3(vite@5.4.11(@types/node@20.14.13)) which-pm: 3.0.0 xxhash-wasm: 1.0.2 yargs-parser: 21.1.1 zod: 3.23.8 - zod-to-json-schema: 3.23.3(zod@3.23.8) + zod-to-json-schema: 3.23.5(zod@3.23.8) zod-to-ts: 1.2.0(typescript@5.6.3)(zod@3.23.8) optionalDependencies: sharp: 0.33.5 @@ -9523,20 +9823,20 @@ snapshots: - terser - typescript - astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3): + astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3): dependencies: '@astrojs/compiler': 2.10.3 '@astrojs/internal-helpers': 0.4.1 '@astrojs/markdown-remark': 5.3.0 '@astrojs/telemetry': 3.1.0 - '@babel/core': 7.25.7 - '@babel/plugin-transform-react-jsx': 7.25.7(@babel/core@7.25.7) - '@babel/types': 7.25.7 + '@babel/core': 7.26.0 + '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/types': 7.26.0 '@oslojs/encoding': 1.1.0 - '@rollup/pluginutils': 5.1.2(rollup@4.21.0) + '@rollup/pluginutils': 5.1.3(rollup@4.21.0) '@types/babel__core': 7.20.5 '@types/cookie': 0.6.0 - acorn: 8.12.1 + acorn: 8.14.0 aria-query: 5.3.2 axobject-query: 4.1.0 boxen: 8.0.1 @@ -9562,30 +9862,30 @@ snapshots: http-cache-semantics: 4.1.1 js-yaml: 4.1.0 kleur: 4.1.5 - magic-string: 0.30.11 + magic-string: 0.30.12 magicast: 0.3.5 micromatch: 4.0.8 mrmime: 2.0.0 neotraverse: 0.6.18 - ora: 8.1.0 + ora: 8.1.1 p-limit: 6.1.0 p-queue: 8.0.1 preferred-pm: 4.0.0 prompts: 2.4.2 rehype: 13.0.2 semver: 7.6.3 - shiki: 1.22.0 - tinyexec: 0.3.0 - tsconfck: 3.1.3(typescript@5.6.3) + shiki: 1.22.2 + tinyexec: 0.3.1 + tsconfck: 3.1.4(typescript@5.6.3) unist-util-visit: 5.0.0 vfile: 6.0.3 - vite: 5.4.8(@types/node@22.0.0) - vitefu: 1.0.2(vite@5.4.8(@types/node@22.0.0)) + vite: 5.4.11(@types/node@22.0.0) + vitefu: 1.0.3(vite@5.4.11(@types/node@22.0.0)) which-pm: 3.0.0 xxhash-wasm: 1.0.2 yargs-parser: 21.1.1 zod: 3.23.8 - zod-to-json-schema: 3.23.3(zod@3.23.8) + zod-to-json-schema: 3.23.5(zod@3.23.8) zod-to-ts: 1.2.0(typescript@5.6.3)(zod@3.23.8) optionalDependencies: sharp: 0.33.5 @@ -9602,15 +9902,15 @@ snapshots: - terser - typescript - astro@4.16.6(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3): + astro@4.16.2(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3): dependencies: '@astrojs/compiler': 2.10.3 '@astrojs/internal-helpers': 0.4.1 '@astrojs/markdown-remark': 5.3.0 '@astrojs/telemetry': 3.1.0 - '@babel/core': 7.25.8 - '@babel/plugin-transform-react-jsx': 7.25.7(@babel/core@7.25.8) - '@babel/types': 7.25.8 + '@babel/core': 7.25.7 + '@babel/plugin-transform-react-jsx': 7.25.7(@babel/core@7.25.7) + '@babel/types': 7.25.7 '@oslojs/encoding': 1.1.0 '@rollup/pluginutils': 5.1.2(rollup@4.21.0) '@types/babel__core': 7.20.5 @@ -9641,7 +9941,7 @@ snapshots: http-cache-semantics: 4.1.1 js-yaml: 4.1.0 kleur: 4.1.5 - magic-string: 0.30.12 + magic-string: 0.30.11 magicast: 0.3.5 micromatch: 4.0.8 mrmime: 2.0.0 @@ -9655,11 +9955,11 @@ snapshots: semver: 7.6.3 shiki: 1.22.0 tinyexec: 0.3.0 - tsconfck: 3.1.4(typescript@5.6.3) + tsconfck: 3.1.3(typescript@5.6.3) unist-util-visit: 5.0.0 vfile: 6.0.3 - vite: 5.4.9(@types/node@20.14.13) - vitefu: 1.0.3(vite@5.4.9(@types/node@20.14.13)) + vite: 5.4.8(@types/node@20.14.13) + vitefu: 1.0.2(vite@5.4.8(@types/node@20.14.13)) which-pm: 3.0.0 xxhash-wasm: 1.0.2 yargs-parser: 21.1.1 @@ -9681,15 +9981,15 @@ snapshots: - terser - typescript - astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3): + astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3): dependencies: '@astrojs/compiler': 2.10.3 '@astrojs/internal-helpers': 0.4.1 '@astrojs/markdown-remark': 5.3.0 '@astrojs/telemetry': 3.1.0 - '@babel/core': 7.25.8 - '@babel/plugin-transform-react-jsx': 7.25.7(@babel/core@7.25.8) - '@babel/types': 7.25.8 + '@babel/core': 7.25.7 + '@babel/plugin-transform-react-jsx': 7.25.7(@babel/core@7.25.7) + '@babel/types': 7.25.7 '@oslojs/encoding': 1.1.0 '@rollup/pluginutils': 5.1.2(rollup@4.21.0) '@types/babel__core': 7.20.5 @@ -9720,7 +10020,7 @@ snapshots: http-cache-semantics: 4.1.1 js-yaml: 4.1.0 kleur: 4.1.5 - magic-string: 0.30.12 + magic-string: 0.30.11 magicast: 0.3.5 micromatch: 4.0.8 mrmime: 2.0.0 @@ -9734,11 +10034,11 @@ snapshots: semver: 7.6.3 shiki: 1.22.0 tinyexec: 0.3.0 - tsconfck: 3.1.4(typescript@5.6.3) + tsconfck: 3.1.3(typescript@5.6.3) unist-util-visit: 5.0.0 vfile: 6.0.3 - vite: 5.4.9(@types/node@22.0.0) - vitefu: 1.0.3(vite@5.4.9(@types/node@22.0.0)) + vite: 5.4.8(@types/node@22.0.0) + vitefu: 1.0.2(vite@5.4.8(@types/node@22.0.0)) which-pm: 3.0.0 xxhash-wasm: 1.0.2 yargs-parser: 21.1.1 @@ -11803,6 +12103,18 @@ snapshots: string-width: 7.2.0 strip-ansi: 7.1.0 + ora@8.1.1: + dependencies: + chalk: 5.3.0 + cli-cursor: 5.0.0 + cli-spinners: 2.9.2 + is-interactive: 2.0.0 + is-unicode-supported: 2.0.0 + log-symbols: 6.0.0 + stdin-discarder: 0.2.2 + string-width: 7.2.0 + strip-ansi: 7.1.0 + os-tmpdir@1.0.2: {} outdent@0.5.0: {} @@ -12531,7 +12843,14 @@ snapshots: '@shikijs/vscode-textmate': 9.3.0 '@types/hast': 3.0.4 - shimmer@1.2.1: {} + shiki@1.22.2: + dependencies: + '@shikijs/core': 1.22.2 + '@shikijs/engine-javascript': 1.22.2 + '@shikijs/engine-oniguruma': 1.22.2 + '@shikijs/types': 1.22.2 + '@shikijs/vscode-textmate': 9.3.0 + '@types/hast': 3.0.4 signal-exit@3.0.7: {} @@ -12575,17 +12894,17 @@ snapshots: sprintf-js@1.0.3: {} - starlight-image-zoom@0.8.0(@astrojs/starlight@0.28.3(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))): + starlight-image-zoom@0.8.0(@astrojs/starlight@0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))): dependencies: - '@astrojs/starlight': 0.28.3(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + '@astrojs/starlight': 0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) rehype-raw: 7.0.0 unist-util-visit: 5.0.0 unist-util-visit-parents: 6.0.1 - starlight-typedoc@0.16.0(@astrojs/starlight@0.28.3(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)))(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))(typedoc-plugin-markdown@4.2.9(typedoc@0.26.10(typescript@5.6.3)))(typedoc@0.26.10(typescript@5.6.3)): + starlight-typedoc@0.16.0(@astrojs/starlight@0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)))(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))(typedoc-plugin-markdown@4.2.9(typedoc@0.26.10(typescript@5.6.3)))(typedoc@0.26.10(typescript@5.6.3)): dependencies: - '@astrojs/starlight': 0.28.3(astro@4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) - astro: 4.16.6(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + '@astrojs/starlight': 0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) github-slugger: 2.0.0 typedoc: 0.26.10(typescript@5.6.3) typedoc-plugin-markdown: 4.2.9(typedoc@0.26.10(typescript@5.6.3)) @@ -12733,6 +13052,8 @@ snapshots: tinyexec@0.3.0: {} + tinyexec@0.3.1: {} + tinyglobby@0.2.5: dependencies: fdir: 6.3.0(picomatch@4.0.2) @@ -12971,7 +13292,7 @@ snapshots: '@types/unist': 3.0.2 vfile-message: 4.0.2 - vite@5.4.8(@types/node@20.14.13): + vite@5.4.11(@types/node@20.14.13): dependencies: esbuild: 0.21.5 postcss: 8.4.47 @@ -12980,7 +13301,7 @@ snapshots: '@types/node': 20.14.13 fsevents: 2.3.3 - vite@5.4.8(@types/node@22.0.0): + vite@5.4.11(@types/node@22.0.0): dependencies: esbuild: 0.21.5 postcss: 8.4.47 @@ -12989,7 +13310,7 @@ snapshots: '@types/node': 22.0.0 fsevents: 2.3.3 - vite@5.4.9(@types/node@20.14.13): + vite@5.4.8(@types/node@20.14.13): dependencies: esbuild: 0.21.5 postcss: 8.4.47 @@ -12998,7 +13319,7 @@ snapshots: '@types/node': 20.14.13 fsevents: 2.3.3 - vite@5.4.9(@types/node@22.0.0): + vite@5.4.8(@types/node@22.0.0): dependencies: esbuild: 0.21.5 postcss: 8.4.47 @@ -13015,13 +13336,13 @@ snapshots: optionalDependencies: vite: 5.4.8(@types/node@22.0.0) - vitefu@1.0.3(vite@5.4.9(@types/node@20.14.13)): + vitefu@1.0.3(vite@5.4.11(@types/node@20.14.13)): optionalDependencies: - vite: 5.4.9(@types/node@20.14.13) + vite: 5.4.11(@types/node@20.14.13) - vitefu@1.0.3(vite@5.4.9(@types/node@22.0.0)): + vitefu@1.0.3(vite@5.4.11(@types/node@22.0.0)): optionalDependencies: - vite: 5.4.9(@types/node@22.0.0) + vite: 5.4.11(@types/node@22.0.0) volar-service-css@0.0.61(@volar/language-service@2.4.6): dependencies: @@ -13255,6 +13576,10 @@ snapshots: dependencies: zod: 3.23.8 + zod-to-json-schema@3.23.5(zod@3.23.8): + dependencies: + zod: 3.23.8 + zod-to-ts@1.2.0(typescript@5.6.3)(zod@3.23.8): dependencies: typescript: 5.6.3 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 1329ecdae..f1927c1f1 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,5 +1,5 @@ catalog: # Confirmed Current Master Catalog - 11.01.2024 - '@astrojs/db': ^0.14.2 + '@astrojs/db': ^0.14.3 '@astrojs/markdown-remark': ^5.2.0 '@astrojs/rss': ^4.0.7 '@astrojs/react': ^3.6.2 @@ -9,7 +9,7 @@ catalog: # Confirmed Current Master Catalog - 11.01.2024 '@astrojs/web-vitals': ^3.0.0 '@astrojs/node': ^8.3.4 '@types/node': ^20.14.11 - astro: ^4.16.6 + astro: ^4.16.11 astro-integration-kit: ^0.16.1 astro-theme-provider: ^0.6.1 sharp: ^0.33.4 From f598ebe87310441338bdea72174e9ba14bd5298a Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Tue, 12 Nov 2024 23:05:56 -0800 Subject: [PATCH 22/40] add changeset --- .changeset/perfect-hornets-swim.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 .changeset/perfect-hornets-swim.md diff --git a/.changeset/perfect-hornets-swim.md b/.changeset/perfect-hornets-swim.md new file mode 100644 index 000000000..a325e1055 --- /dev/null +++ b/.changeset/perfect-hornets-swim.md @@ -0,0 +1,17 @@ +--- +"studiocms": patch +"@studiocms/auth": patch +"@studiocms/core": patch +--- + +Introduce Dashboard i18n logic + +- `studiocms` & `@studiocms/core`: + - Introduce new virtual module `studiocms:i18n`: + This module includes utilities for our new i18n system. + - Add new LanguageSelector component + - Add `en-us` translation file. (`packages/studiocms_core/i18n/translations/`) + +- `@studiocms/auth`: + - Update login/signup routes to utilize new i18n translations + - Transition routes to Hybrid type setup, All API routes will remain server rendered, while pages are now prerendered (Server islands when needed). \ No newline at end of file From e72177f248c881e8abe3f03b22c0e68e10c46303 Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Wed, 13 Nov 2024 22:54:28 -0800 Subject: [PATCH 23/40] add docs --- README.md | 6 ++- packages/studiocms_core/src/i18n/index.ts | 14 +++--- www/docs/astro.config.mts | 4 ++ .../code-contributions.mdx} | 44 ++++--------------- .../docs/contributing/getting-started.mdx | 28 ++++++++++++ .../docs/contributing/translations.mdx | 30 +++++++++++++ .../src/content/docs/how-it-works/index.mdx | 3 +- 7 files changed, 87 insertions(+), 42 deletions(-) rename www/docs/src/content/docs/{start-here/contributing.mdx => contributing/code-contributions.mdx} (69%) create mode 100644 www/docs/src/content/docs/contributing/getting-started.mdx create mode 100644 www/docs/src/content/docs/contributing/translations.mdx diff --git a/README.md b/README.md index 1e13cea5c..e879a1d59 100644 --- a/README.md +++ b/README.md @@ -17,9 +17,13 @@ To see how to get started, check out the [StudioCMS README](./packages/studiocms <a href="https://turso.tech" rel="sponsored" target="_blank"><img src="https://turso.tech/logokit/turso-logo-illustrated.svg" width="400px" /></a> +## StudioCMS Dashboard i18n Status + +<a href="https://i18n.studiocms.xyz/engage/studiocms/"><img src="https://i18n.studiocms.xyz/widget/studiocms/287x66-black.png" alt="Translation status" /></a> + ## Contributing -We welcome contributions from the community! Whether it's bug reports, feature requests, or code contributions, we appreciate your help in making this project better. To get started read our [Contributing Guide](https://docs.studiocms.xyz/start-here/contributing/) +We welcome contributions from the community! Whether it's bug reports, feature requests, or code contributions, we appreciate your help in making this project better. To get started read our [Contributing Guide](https://docs.studiocms.xyz/contributing/getting-started/) ## Chat with Us diff --git a/packages/studiocms_core/src/i18n/index.ts b/packages/studiocms_core/src/i18n/index.ts index 059379fdc..1187e3283 100644 --- a/packages/studiocms_core/src/i18n/index.ts +++ b/packages/studiocms_core/src/i18n/index.ts @@ -71,12 +71,16 @@ export function useTranslations( comp: UiComponentKeys ): (key: string) => string { return function t(key: string): string { - return ( - // @ts-expect-error - Component key is dynamic depending on the component - uiTranslations[lang].translations[comp][key] || + // @ts-expect-error - Component key is dynamic depending on the component + const translation = uiTranslations[lang].translations[comp][key]; + + // If the translation is not found, return the default language translation + if (translation === undefined || translation === '') { // @ts-expect-error - Component key is dynamic depending on the component - uiTranslations[defaultLang].translations[comp][key] - ); + return uiTranslations[defaultLang].translations[comp][key]; + } + + return translation; }; } diff --git a/www/docs/astro.config.mts b/www/docs/astro.config.mts index f2b4217b0..0b53bfb36 100644 --- a/www/docs/astro.config.mts +++ b/www/docs/astro.config.mts @@ -102,6 +102,10 @@ export default defineConfig({ label: 'Start Here', autogenerate: { directory: 'start-here' }, }, + { + label: 'Contributing Guides', + autogenerate: { directory: 'contributing' }, + }, { label: 'Understanding StudioCMS', autogenerate: { directory: 'how-it-works' }, diff --git a/www/docs/src/content/docs/start-here/contributing.mdx b/www/docs/src/content/docs/contributing/code-contributions.mdx similarity index 69% rename from www/docs/src/content/docs/start-here/contributing.mdx rename to www/docs/src/content/docs/contributing/code-contributions.mdx index 063442565..3c7761cb0 100644 --- a/www/docs/src/content/docs/start-here/contributing.mdx +++ b/www/docs/src/content/docs/contributing/code-contributions.mdx @@ -1,44 +1,19 @@ --- -title: Contributing +title: Code Contributions description: Learn how to contribute to StudioCMS sidebar: - order: 99 - badge: - text: New - variant: success + order: 2 --- -import ContributorList from '~/components/ContributorList.astro'; -import { Steps } from '@astrojs/starlight/components'; - -Thank you for investing your time in contributing to our project! - -Read our [Code of Conduct](https://github.com/astrolicious/studiocms?tab=coc-ov-file#code-of-conduct-) to keep our community approachable and respectable. - -In this guide you will get an overview of the contribution workflow from opening an issue, creating a PR, reviewing, and merging the PR. - -### Our Contributors - -Our project exists thanks to all the people who contribute. [Join us on GitHub](https://github.com/astrolicious/studiocms) and add your name to the list! - -<ContributorList /> -## Getting started - -We welcome contributions from the community! Whether it's bug reports, feature requests, or code contributions, we appreciate your help in making this project better. To navigate our codebase with confidence, see [How it works](/how-it-works/) section. - -## Bug Reports and Feature Requests - -If you encounter any bugs or have ideas for new features, please open an issue on our [GitHub repository](https://github.com/astrolicious/studiocms). When creating a new issue, please provide as much detail as possible, including steps to reproduce the issue (for bugs) and a clear description of the proposed feature. - -## Code Contributions +import { Steps } from '@astrojs/starlight/components'; If you'd like to contribute code to this project, please follow the steps below: -### Solve an issue +## Solve an issue Scan through our [existing issues](https://github.com/astrolicious/studiocms/issues) to find one that interests you. You can narrow down the search using `labels` as filters. If you find an issue to work on, you are welcome to open a PR with a fix. -### Make Changes +## Make Changes <Steps> 1. Fork the repository. @@ -58,11 +33,11 @@ Scan through our [existing issues](https://github.com/astrolicious/studiocms/iss 5. Update the documentation, if necessary. </Steps> -### Commit your update +## Commit your update Commit the changes once you are happy with them. -### Pull Request +## Pull Request When you're finished with the changes, create a pull request, also known as a PR. - Fill the "Ready for review" template so that we can review your PR. This template helps reviewers understand your changes as well as the purpose of your pull request. @@ -73,11 +48,10 @@ Once you submit your PR, a Docs team member will review your proposal. We may as - As you update your PR and apply changes, mark each conversation as [resolved](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/commenting-on-a-pull-request#resolving-conversations). - If you run into any merge issues, checkout this [git tutorial](https://github.com/skills/resolve-merge-conflicts) to help you resolve merge conflicts and other issues. -### Your PR is merged! +## Your PR is merged! Congratulations! The StudioCMS team thanks you. Your contribution will be part of the next release. Now that you are part of the StudioCMS community, you can help us review other PRs, answer questions, and help other contributors. If you haven't already, join our [Discord](https://chat.studiocms.xyz) to connect with other contributors and the StudioCMS team. -Oh and you will see your face in the [list of contributors](#our-contributors)! 🎉 - +Oh and you will see your face in the [list of contributors](/contributing/getting-started/#our-contributors)! 🎉 diff --git a/www/docs/src/content/docs/contributing/getting-started.mdx b/www/docs/src/content/docs/contributing/getting-started.mdx new file mode 100644 index 000000000..4cb3c62d2 --- /dev/null +++ b/www/docs/src/content/docs/contributing/getting-started.mdx @@ -0,0 +1,28 @@ +--- +title: Getting Started +description: Learn how to contribute to StudioCMS +sidebar: + order: 1 +--- +import ContributorList from '~/components/ContributorList.astro'; + +Thank you for investing your time in contributing to our project! + +Read our [Code of Conduct](https://github.com/astrolicious/studiocms?tab=coc-ov-file#code-of-conduct-) to keep our community approachable and respectable. + +In this guide you will get an overview of the contribution workflow from opening an issue, creating a PR, reviewing, and merging the PR. + +## Our Contributors + +Our project exists thanks to all the people who contribute. [Join us on GitHub](https://github.com/astrolicious/studiocms) and add your name to the list! + +<ContributorList /> + +## Getting started + +We welcome contributions from the community! Whether it's bug reports, feature requests, or code contributions, we appreciate your help in making this project better. To navigate our codebase with confidence, see [How it works](/how-it-works/) section. + +## Bug Reports and Feature Requests + +If you encounter any bugs or have ideas for new features, please open an issue on our [GitHub repository](https://github.com/astrolicious/studiocms). When creating a new issue, please provide as much detail as possible, including steps to reproduce the issue (for bugs) and a clear description of the proposed feature. + diff --git a/www/docs/src/content/docs/contributing/translations.mdx b/www/docs/src/content/docs/contributing/translations.mdx new file mode 100644 index 000000000..6b5b37f88 --- /dev/null +++ b/www/docs/src/content/docs/contributing/translations.mdx @@ -0,0 +1,30 @@ +--- +title: Translations +description: Learn how to help translate StudioCMS +sidebar: + order: 2 +--- + +import ReadMore from '~/components/ReadMore.astro'; + +StudioCMS is a global project, and we want to make it accessible to everyone. If you are fluent in multiple languages, you can help us translate StudioCMS into your language. + +## Dashboard i18n + +Current translation status: + +<img src="https://i18n.studiocms.xyz/widget/studiocms/horizontal-auto.svg" alt="Translation status" /> + +Visit [our i18n dashboard](https://i18n.studiocms.xyz) to help translate StudioCMS into your language. If your language is not listed, you can add it within the dashboard. + +If you would prefer to contribute translations directly to the repository, the translations are stored in the [`packages/studiocms_core/src/i18n/translations`](https://github.com/astrolicious/studiocms/tree/main/packages/studiocms_core/src/i18n/translations/) directory. You can find the English translations in the [`en-us.json`](https://github.com/astrolicious/studiocms/blob/main/packages/studiocms_core/src/i18n/translations/en-us.json) file. + +<ReadMore> +StudioCMS uses [Weblate](https://weblate.org) for managing translations on top of GitHub. If you are new to Weblate, you can find the [Translating using Weblate Guide](https://docs.weblate.org/en/latest/user/translating.html#) on their website. +</ReadMore> + +Once the translations have been added, they will be added to the [StudioCMS i18n configuration](https://github.com/astrolicious/studiocms/blob/main/packages/studiocms_core/src/i18n/index.ts#L8) and will be available in the next release. + +## Documentation + +**Coming soon!** We are working on prepping to translate the StudioCMS documentation. If you are interested in helping with this, please reach out to us on [Discord](https://chat.studiocms.xyz) \ No newline at end of file diff --git a/www/docs/src/content/docs/how-it-works/index.mdx b/www/docs/src/content/docs/how-it-works/index.mdx index d0525b754..9af145ab3 100644 --- a/www/docs/src/content/docs/how-it-works/index.mdx +++ b/www/docs/src/content/docs/how-it-works/index.mdx @@ -31,7 +31,7 @@ StudioCMS is divided into multiple parts: ## Breakdown -### StudioCMS Core +### StudioCMS: Core StudioCMS Core is an Astro Integration which provides a comprehensive CMS solution out-of-the-box. This integration registers StudioCMS as the first plugin, sets up database configurations, watches for configuration changes, and adds various features including virtual imports, logging, and default frontend routes. @@ -59,6 +59,7 @@ Modules without the `virtual:` prefix have full typings defined and injected int - **`studiocms:helpers/contentHelper`**: Provides the exported content helper functions for StudioCMS. - **`studiocms:helpers/headDefaults`**: Provides the exported head defaults for StudioCMS. - **`studiocms:helpers/routemap`**: Provides the exported route map for StudioCMS. +- **`studiocms:i18n`**: Provides the i18n utilities for StudioCMS. ### StudioCMS: Auth From c07a2e391ba7e04aedc007ba4e94f6f6a59a3276 Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Wed, 13 Nov 2024 23:03:46 -0800 Subject: [PATCH 24/40] move functions around and add jsdocs --- packages/studiocms_core/src/i18n/index.ts | 89 +++++++++++++---------- 1 file changed, 52 insertions(+), 37 deletions(-) diff --git a/packages/studiocms_core/src/i18n/index.ts b/packages/studiocms_core/src/i18n/index.ts index 1187e3283..51f73a3d1 100644 --- a/packages/studiocms_core/src/i18n/index.ts +++ b/packages/studiocms_core/src/i18n/index.ts @@ -9,8 +9,23 @@ const uiTranslations = { 'en-us': await import('./translations/en-us.json'), } as const; +/** + * Represents the type of UI translations. + * This type is derived from the structure of the `uiTranslations` object. + */ type UiTranslations = typeof uiTranslations; + +/** + * Represents the keys of the UiTranslations type. + * This type is used to define the possible keys for UI language translations. + */ type UiLanguageKeys = keyof UiTranslations; + +/** + * Represents the keys of the UI component translations for the 'en-us' locale. + * This type is derived from the 'translations' property of the 'UiTranslations' interface + * for the 'en-us' locale (Source of truth), ensuring that only valid translation keys are used. + */ type UiComponentKeys = keyof UiTranslations['en-us']['translations']; // Default language - Must match one of the keys in the `ui` object above @@ -22,43 +37,6 @@ const showDefaultLang: boolean = false; // --- i18n Utils --- // -/** - * Example of how to use this i18n utils on a Static page - * - * @example - * ```ts - * export async function getStaticPaths() { - * const paths = staticPaths(); - * return paths; - * } - * ``` - * - * If the default language is hidden, the paths for the default language will be generated without the language prefix while all extra languages will have the prefix. (e.g. When `showDefaultLang` is false: `/en/page` will be `/page` and spanish will be `/es/page`) - * - * @returns An array of paths for all languages - */ -export const staticPaths = () => { - const paths: { params: { locale: string | undefined } }[] = []; - if (!showDefaultLang) paths.push({ params: { locale: undefined } }); - for (const lang in uiTranslations) { - if (lang === defaultLang && !showDefaultLang) continue; - paths.push({ params: { locale: lang } }); - } - return paths; -}; - -/** - * Extracts the language key from the given URL's pathname. - * - * @param url - The URL object from which to extract the language key. - * @returns The language key if it exists in the `uiTranslations`, otherwise returns the default language key. - */ -export function getLangFromUrl(url: URL) { - const [, lang] = url.pathname.split('/'); - if (lang && lang in uiTranslations) return lang as UiLanguageKeys; - return defaultLang; -} - /** * Retrieves a translation function for a given language and component. * @@ -114,6 +92,18 @@ export const languageSelectorOptions = Object.keys(uiTranslations).map((key) => }; }); +/** + * Extracts the language key from the given URL's pathname. + * + * @param url - The URL object from which to extract the language key. + * @returns The language key if it exists in the `uiTranslations`, otherwise returns the default language key. + */ +export function getLangFromUrl(url: URL) { + const [, lang] = url.pathname.split('/'); + if (lang && lang in uiTranslations) return lang as UiLanguageKeys; + return defaultLang; +} + /** * Retrieves the current URL path, adjusting for language settings. * @@ -153,3 +143,28 @@ export function switchLanguage(Astro: AstroGlobal): (languageKey: UiLanguageKeys return translatePath(getCurrentURLPath(Astro)); }; } + +/** + * Example of how to use this i18n utils on a Static page + * + * @example + * ```ts + * export async function getStaticPaths() { + * const paths = staticPaths(); + * return paths; + * } + * ``` + * + * If the default language is hidden, the paths for the default language will be generated without the language prefix while all extra languages will have the prefix. (e.g. When `showDefaultLang` is false: `/en/page` will be `/page` and spanish will be `/es/page`) + * + * @returns An array of paths for all languages + */ +export const staticPaths = () => { + const paths: { params: { locale: string | undefined } }[] = []; + if (!showDefaultLang) paths.push({ params: { locale: undefined } }); + for (const lang in uiTranslations) { + if (lang === defaultLang && !showDefaultLang) continue; + paths.push({ params: { locale: lang } }); + } + return paths; +}; From 7ffc807bbdd69467a95044c6e9337621d5275f9b Mon Sep 17 00:00:00 2001 From: "StudioCMS (bot)" <no-reply@studiocms.xyz> Date: Thu, 14 Nov 2024 16:41:35 -0800 Subject: [PATCH 25/40] Added translation using Weblate (German) (#374) Co-authored-by: Louis Escher <louisescher@proton.me> --- .../src/i18n/translations/de.json | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 packages/studiocms_core/src/i18n/translations/de.json diff --git a/packages/studiocms_core/src/i18n/translations/de.json b/packages/studiocms_core/src/i18n/translations/de.json new file mode 100644 index 000000000..4de424a5c --- /dev/null +++ b/packages/studiocms_core/src/i18n/translations/de.json @@ -0,0 +1,43 @@ +{ + "displayName": "", + "translations": { + "@studiocms/auth:login": { + "title": "", + "description": "", + "header": "", + "sub-header-usernamepasswordoauth": "", + "sub-header-usernamepassword": "", + "sub-header-oauth": "", + "sub-header-noprovider": "", + "username-label": "", + "password-label": "", + "login-button": "", + "allow-registration-noaccount": "", + "allow-registration-register": "" + }, + "@studiocms/auth:signup": { + "title": "", + "description": "", + "header": "", + "sub-header-usernamepasswordoauth": "", + "sub-header-usernamepassword": "", + "sub-header-oauth": "", + "sub-header-noprovider": "", + "username-label": "", + "email-label": "", + "displayname-label": "", + "password-label": "", + "confirm-password-label": "", + "create-account-button": "", + "allow-login-haveaccount": "", + "allow-login-login": "" + }, + "@studiocms/auth:logout": { + "title": "", + "description": "" + }, + "@studiocms/auth:oauth-stack": { + "or-login-with": "" + } + } +} From 462a8b5b0c369953ef9f2f4097141c19888f1fdf Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Thu, 14 Nov 2024 17:57:49 -0800 Subject: [PATCH 26/40] add labeler --- .github/labeler.yml | 5 +++++ .github/workflows/labeler.yml | 17 +++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 .github/labeler.yml create mode 100644 .github/workflows/labeler.yml diff --git a/.github/labeler.yml b/.github/labeler.yml new file mode 100644 index 000000000..4c6b1adeb --- /dev/null +++ b/.github/labeler.yml @@ -0,0 +1,5 @@ +# See https://github.com/actions/labeler/tree/main for more information about the labeler action + +translations: + - changed-files: + - any-glob-to-any-file: packages/studiocms_core/src/i18n/translations/* \ No newline at end of file diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml new file mode 100644 index 000000000..8a76c8118 --- /dev/null +++ b/.github/workflows/labeler.yml @@ -0,0 +1,17 @@ +name: Pull Request Labeler + +on: [pull_request_target] + +permissions: + contents: read + pull-requests: write + +jobs: + label: + runs-on: ubuntu-latest + steps: + - uses: actions/labeler@v5 + with: + repo-token: "${{ secrets.STUDIOCMS_SERVICE_TOKEN }}" + configuration-path: .github/labeler.yml + sync-labels: true \ No newline at end of file From d7e7fc0a4a9363b68926ee0d81cd2c4a79260c78 Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Thu, 14 Nov 2024 19:30:11 -0800 Subject: [PATCH 27/40] Add @changesets/write and execa dependencies and implement automatated changesets for translations --- .github/workflows/translation-changesets.yml | 68 +++++++++++ package.json | 2 + pnpm-lock.yaml | 116 +++++++++++++++++++ 3 files changed, 186 insertions(+) create mode 100644 .github/workflows/translation-changesets.yml diff --git a/.github/workflows/translation-changesets.yml b/.github/workflows/translation-changesets.yml new file mode 100644 index 000000000..59322e41f --- /dev/null +++ b/.github/workflows/translation-changesets.yml @@ -0,0 +1,68 @@ +name: Translation Changesets + +on: + pull_request: + types: [labeled, synchronize] + + +jobs: + build-translation-changesets: + runs-on: ubuntu-latest + if: contains(github.event.pull_request.labels.*.name, 'translations') + steps: + - name: Checkout Repo + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 + + - name: Setup pnpm (corepack enabled) + uses: pnpm/action-setup@v3 + + - name: Setup Node.js 20.x + uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6 # v4 + with: + node-version-file: '.node-version' + cache: 'pnpm' + + - name: Install Dependencies + run: pnpm ci:install + + - uses: actions/github-script@v7 + with: + script: | + const write = require('@changesets/write') + const execa = require('execa') + + const { base, head } = context.payload?.pull_request || {} + + const res = await github.rest.repos.compareCommits({ + base: base.sha, + head: head.sha, + owner: context.repo.owner, + repo: context.repo.repo + }) + + const summary = `Translations Updated (PR #${context.payload.pull_request.number})` + + const opts = { reject: false } + const { stdout } = await execa('grep', [summary, '-r', '.changeset'], opts) + + if (stdout) { + console.log('Changeset already exists') + return + } + + const releases = [ + { name: "@studiocms/core", type: "patch" } + ] + + const cwd = process.cwd() + await write.default({ summary, releases }, cwd) + + + - name: Commit changes + uses: stefanzweifel/git-auto-commit-action@8621497c8c39c72f3e2a999a26b4ca1b5058a842 # v5 + with: + commit_message: '[ci] changesets' + branch: ${{ github.head_ref }} + commit_user_name: astrolicious + commit_user_email: no-reply@studiocms.xyz + commit_author: StudioCMS <no-reply@studiocms.xyz> \ No newline at end of file diff --git a/package.json b/package.json index 12cf9b2fc..501d71f69 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,8 @@ "@changesets/cli": "2.27.9", "@changesets/config": "3.0.3", "@changesets/changelog-github": "^0.5.0", + "@changesets/write": "0.3.2", + "execa": "9.5.1", "typescript": "catalog:" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 205ae0b7f..21e87c3d0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -345,9 +345,15 @@ importers: '@changesets/config': specifier: 3.0.3 version: 3.0.3 + '@changesets/write': + specifier: 0.3.2 + version: 0.3.2 '@moonrepo/cli': specifier: 1.28.3 version: 1.28.3 + execa: + specifier: 9.5.1 + version: 9.5.1 typescript: specifier: 'catalog:' version: 5.6.3 @@ -3034,6 +3040,7 @@ packages: cpu: [x64] os: [win32] +<<<<<<< HEAD '@sentry-internal/browser-utils@8.38.0': resolution: {integrity: sha512-5QMVcssrAcmjKT0NdFYcX0b0wwZovGAZ9L2GajErXtHkBenjI2sgR2+5J7n+QZGuk2SC1qhGmT1O9i3p3UEwew==} engines: {node: '>=14.18'} @@ -3143,6 +3150,10 @@ packages: '@sentry/vite-plugin@2.22.6': resolution: {integrity: sha512-zIieP1VLWQb3wUjFJlwOAoaaJygJhXeUoGd0e/Ha2RLb2eW2S+4gjf6y6NqyY71tZ74LYVZKg/4prB6FAZSMXQ==} engines: {node: '>= 14'} +======= + '@sec-ant/readable-stream@0.4.1': + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} +>>>>>>> ab5d092 (Add @changesets/write and execa dependencies and implement automatated changesets for translations) '@shikijs/core@1.14.1': resolution: {integrity: sha512-KyHIIpKNaT20FtFPFjCQB5WVSTpLR/n+jQXhWHWVUMm9MaOaG9BGOG0MSyt7yA4+Lm+4c9rTc03tt3nYzeYSfw==} @@ -3198,6 +3209,10 @@ packages: engines: {node: '>= 8.0.0'} hasBin: true + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} + '@tailwindcss/typography@0.5.15': resolution: {integrity: sha512-AqhlCXl+8grUz8uqExv5OTtgpjuVIwFTSXTrh8y9/pw6q2ek7fJ+Y8ZEVw7EB2DCcuCOtEjf9w3+J3rzts01uA==} peerDependencies: @@ -4313,6 +4328,10 @@ packages: eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + execa@9.5.1: + resolution: {integrity: sha512-QY5PPtSonnGwhhHDNI7+3RvY285c7iuJFFB+lU+oEzMY/gEGJ808owqJsrr8Otd1E/x07po1LkUBmdAc5duPAg==} + engines: {node: ^18.19.0 || >=20.5.0} + expressive-code@0.35.6: resolution: {integrity: sha512-+mx+TPTbMqgo0mL92Xh9QgjW0kSQIsEivMgEcOnaqKqL7qCw8Vkqc5Rg/di7ZYw4aMUSr74VTc+w8GQWu05j1g==} @@ -4376,6 +4395,10 @@ packages: fflate@0.8.2: resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + figures@6.1.0: + resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} + engines: {node: '>=18'} + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -4473,6 +4496,10 @@ packages: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} + get-stream@9.0.1: + resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} + engines: {node: '>=18'} + get-tsconfig@4.7.6: resolution: {integrity: sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==} @@ -4646,6 +4673,10 @@ packages: human-id@1.0.2: resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} + human-signals@8.0.0: + resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==} + engines: {node: '>=18.18.0'} + i18next@23.15.1: resolution: {integrity: sha512-wB4abZ3uK7EWodYisHl/asf8UYEhrI/vj/8aoSsrj/ZDxj4/UXPOa1KvFt1Fq5hkUHquNqwFlDprmjZ8iySgYA==} @@ -4762,6 +4793,10 @@ packages: is-reference@3.0.2: resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} + is-stream@4.0.1: + resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} + engines: {node: '>=18'} + is-subdir@1.2.0: resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} engines: {node: '>=4'} @@ -5329,6 +5364,10 @@ packages: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} + npm-run-path@6.0.0: + resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} + engines: {node: '>=18'} + nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} @@ -5461,6 +5500,10 @@ packages: parse-latin@7.0.0: resolution: {integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==} + parse-ms@4.0.0: + resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} + engines: {node: '>=18'} + parse5-htmlparser2-tree-adapter@7.0.0: resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} @@ -5488,6 +5531,10 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} @@ -5627,6 +5674,10 @@ packages: engines: {node: '>=10.13.0'} hasBin: true + pretty-ms@9.1.0: + resolution: {integrity: sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==} + engines: {node: '>=18'} + prismjs@1.29.0: resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} engines: {node: '>=6'} @@ -6042,6 +6093,10 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} + strip-final-newline@4.0.0: + resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} + engines: {node: '>=18'} + strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} @@ -6251,6 +6306,10 @@ packages: unicode-trie@2.0.0: resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} + unicorn-magic@0.3.0: + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} + engines: {node: '>=18'} + unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} @@ -6642,6 +6701,10 @@ packages: resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} engines: {node: '>=12.20'} + yoctocolors@2.1.1: + resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} + engines: {node: '>=18'} + yoga-wasm-web@0.3.3: resolution: {integrity: sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==} @@ -8902,6 +8965,7 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.21.0': optional: true +<<<<<<< HEAD '@sentry-internal/browser-utils@8.38.0': dependencies: '@sentry/core': 8.38.0 @@ -9078,6 +9142,9 @@ snapshots: transitivePeerDependencies: - encoding - supports-color +======= + '@sec-ant/readable-stream@0.4.1': {} +>>>>>>> ab5d092 (Add @changesets/write and execa dependencies and implement automatated changesets for translations) '@shikijs/core@1.14.1': dependencies: @@ -9174,6 +9241,8 @@ snapshots: fflate: 0.7.4 string.prototype.codepointat: 0.2.1 + '@sindresorhus/merge-streams@4.0.0': {} + '@tailwindcss/typography@0.5.15(tailwindcss@3.4.14)': dependencies: lodash.castarray: 4.4.0 @@ -10643,6 +10712,21 @@ snapshots: eventemitter3@5.0.1: {} + execa@9.5.1: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + cross-spawn: 7.0.3 + figures: 6.1.0 + get-stream: 9.0.1 + human-signals: 8.0.0 + is-plain-obj: 4.1.0 + is-stream: 4.0.1 + npm-run-path: 6.0.0 + pretty-ms: 9.1.0 + signal-exit: 4.1.0 + strip-final-newline: 4.0.0 + yoctocolors: 2.1.1 + expressive-code@0.35.6: dependencies: '@expressive-code/core': 0.35.6 @@ -10713,6 +10797,10 @@ snapshots: fflate@0.8.2: {} + figures@6.1.0: + dependencies: + is-unicode-supported: 2.0.0 + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -10798,6 +10886,11 @@ snapshots: dependencies: pump: 3.0.0 + get-stream@9.0.1: + dependencies: + '@sec-ant/readable-stream': 0.4.1 + is-stream: 4.0.1 + get-tsconfig@4.7.6: dependencies: resolve-pkg-maps: 1.0.0 @@ -11136,6 +11229,8 @@ snapshots: human-id@1.0.2: {} + human-signals@8.0.0: {} + i18next@23.15.1: dependencies: '@babel/runtime': 7.25.0 @@ -11238,6 +11333,8 @@ snapshots: dependencies: '@types/estree': 1.0.5 + is-stream@4.0.1: {} + is-subdir@1.2.0: dependencies: better-path-resolve: 1.0.0 @@ -12054,6 +12151,11 @@ snapshots: normalize-range@0.1.2: {} + npm-run-path@6.0.0: + dependencies: + path-key: 4.0.0 + unicorn-magic: 0.3.0 + nth-check@2.1.1: dependencies: boolbase: 1.0.0 @@ -12219,6 +12321,8 @@ snapshots: unist-util-visit-children: 3.0.0 vfile: 6.0.3 + parse-ms@4.0.0: {} + parse5-htmlparser2-tree-adapter@7.0.0: dependencies: domhandler: 5.0.3 @@ -12242,6 +12346,8 @@ snapshots: path-key@3.1.1: {} + path-key@4.0.0: {} + path-parse@1.0.7: {} path-scurry@1.11.1: @@ -12360,6 +12466,10 @@ snapshots: prettier@2.8.8: {} + pretty-ms@9.1.0: + dependencies: + parse-ms: 4.0.0 + prismjs@1.29.0: {} progress@2.0.3: {} @@ -12952,6 +13062,8 @@ snapshots: strip-bom@3.0.0: {} + strip-final-newline@4.0.0: {} + strip-json-comments@2.0.1: {} strnum@1.0.5: {} @@ -13162,6 +13274,8 @@ snapshots: pako: 0.2.9 tiny-inflate: 1.0.3 + unicorn-magic@0.3.0: {} + unified@11.0.5: dependencies: '@types/unist': 3.0.2 @@ -13570,6 +13684,8 @@ snapshots: yocto-queue@1.1.1: {} + yoctocolors@2.1.1: {} + yoga-wasm-web@0.3.3: {} zod-to-json-schema@3.23.3(zod@3.23.8): From 3401b64fff47c5f4caacb284373a4a6be40d4d3b Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Thu, 14 Nov 2024 19:31:20 -0800 Subject: [PATCH 28/40] Refactor translation-changesets workflow to remove unnecessary code --- .github/workflows/translation-changesets.yml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/.github/workflows/translation-changesets.yml b/.github/workflows/translation-changesets.yml index 59322e41f..b5dd6229d 100644 --- a/.github/workflows/translation-changesets.yml +++ b/.github/workflows/translation-changesets.yml @@ -31,15 +31,6 @@ jobs: const write = require('@changesets/write') const execa = require('execa') - const { base, head } = context.payload?.pull_request || {} - - const res = await github.rest.repos.compareCommits({ - base: base.sha, - head: head.sha, - owner: context.repo.owner, - repo: context.repo.repo - }) - const summary = `Translations Updated (PR #${context.payload.pull_request.number})` const opts = { reject: false } From c05a8585f936b3d1240b21e596f6694367d7d36a Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Thu, 14 Nov 2024 19:46:42 -0800 Subject: [PATCH 29/40] Update workflow --- .github/workflows/translation-changesets.yml | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/.github/workflows/translation-changesets.yml b/.github/workflows/translation-changesets.yml index b5dd6229d..afdd48a35 100644 --- a/.github/workflows/translation-changesets.yml +++ b/.github/workflows/translation-changesets.yml @@ -4,6 +4,8 @@ on: pull_request: types: [labeled, synchronize] +permissions: + contents: write jobs: build-translation-changesets: @@ -12,6 +14,9 @@ jobs: steps: - name: Checkout Repo uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 + with: + ref: ${{ github.head_ref }} + token: ${{ secrets.STUDIOCMS_SERVICE_TOKEN }} - name: Setup pnpm (corepack enabled) uses: pnpm/action-setup@v3 @@ -24,13 +29,21 @@ jobs: - name: Install Dependencies run: pnpm ci:install + shell: bash - - uses: actions/github-script@v7 + - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7 with: script: | const write = require('@changesets/write') const execa = require('execa') + const creator = context.payload.pull_request.user.login + + if (creator !== 'studiocms-no-reply') { + console.log('Not the StudioCMS bot, skipping') + return + } + const summary = `Translations Updated (PR #${context.payload.pull_request.number})` const opts = { reject: false } @@ -46,7 +59,9 @@ jobs: ] const cwd = process.cwd() - await write.default({ summary, releases }, cwd) + const changesetId = await write.default({ summary, releases }, cwd) + + console.log(`Changeset created: ${changesetId}`) - name: Commit changes From d92ea4b3c0de604ebf687a5a26bb9a15f12e788e Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Thu, 14 Nov 2024 19:52:46 -0800 Subject: [PATCH 30/40] simplify --- .github/workflows/translation-changesets.yml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/.github/workflows/translation-changesets.yml b/.github/workflows/translation-changesets.yml index afdd48a35..03d81f9a0 100644 --- a/.github/workflows/translation-changesets.yml +++ b/.github/workflows/translation-changesets.yml @@ -10,7 +10,7 @@ permissions: jobs: build-translation-changesets: runs-on: ubuntu-latest - if: contains(github.event.pull_request.labels.*.name, 'translations') + if: contains(github.event.pull_request.labels.*.name, 'translations') && github.event.pull_request.user.login == 'studiocms-no-reply' steps: - name: Checkout Repo uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 @@ -37,13 +37,6 @@ jobs: const write = require('@changesets/write') const execa = require('execa') - const creator = context.payload.pull_request.user.login - - if (creator !== 'studiocms-no-reply') { - console.log('Not the StudioCMS bot, skipping') - return - } - const summary = `Translations Updated (PR #${context.payload.pull_request.number})` const opts = { reject: false } From 8319d8198440a07f172ca8a4d7007bbf78554849 Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Thu, 14 Nov 2024 19:56:56 -0800 Subject: [PATCH 31/40] Refactor translation-changesets workflow to use GitHub Actions expression syntax --- .github/workflows/translation-changesets.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/translation-changesets.yml b/.github/workflows/translation-changesets.yml index 03d81f9a0..c713d226b 100644 --- a/.github/workflows/translation-changesets.yml +++ b/.github/workflows/translation-changesets.yml @@ -10,7 +10,7 @@ permissions: jobs: build-translation-changesets: runs-on: ubuntu-latest - if: contains(github.event.pull_request.labels.*.name, 'translations') && github.event.pull_request.user.login == 'studiocms-no-reply' + if: contains(github.event.pull_request.labels.*.name, 'translations') && ${{ github.event.pull_request.user.login == 'studiocms-no-reply' }} steps: - name: Checkout Repo uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 From 1ec6137c5a35d43268049826618f89ef643d1ac2 Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Thu, 14 Nov 2024 20:18:34 -0800 Subject: [PATCH 32/40] fix --- .github/workflows/translation-changesets.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/translation-changesets.yml b/.github/workflows/translation-changesets.yml index c713d226b..0a93e98cc 100644 --- a/.github/workflows/translation-changesets.yml +++ b/.github/workflows/translation-changesets.yml @@ -10,7 +10,7 @@ permissions: jobs: build-translation-changesets: runs-on: ubuntu-latest - if: contains(github.event.pull_request.labels.*.name, 'translations') && ${{ github.event.pull_request.user.login == 'studiocms-no-reply' }} + if: contains(github.event.pull_request.labels.*.name, 'translations') && github.event.pull_request.user.login == 'studiocms-no-reply' steps: - name: Checkout Repo uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 @@ -34,8 +34,8 @@ jobs: - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7 with: script: | - const write = require('@changesets/write') - const execa = require('execa') + const write = await import('@changesets/write') + const execa = await import('execa') const summary = `Translations Updated (PR #${context.payload.pull_request.number})` From 5cd08ce4861e7c9515f52fa201505fd4a72519e6 Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Thu, 14 Nov 2024 22:07:37 -0800 Subject: [PATCH 33/40] add new custom script to replace github-script that was not working --- .github/workflows/translation-changesets.yml | 29 +-- package.json | 6 +- pnpm-lock.yaml | 240 +++++++++++++++++++ scripts/filter-warnings.cjs | 23 ++ scripts/translation-changeset.ts | 38 +++ 5 files changed, 309 insertions(+), 27 deletions(-) create mode 100644 scripts/filter-warnings.cjs create mode 100644 scripts/translation-changeset.ts diff --git a/.github/workflows/translation-changesets.yml b/.github/workflows/translation-changesets.yml index 0a93e98cc..b3f4d645d 100644 --- a/.github/workflows/translation-changesets.yml +++ b/.github/workflows/translation-changesets.yml @@ -31,31 +31,10 @@ jobs: run: pnpm ci:install shell: bash - - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7 - with: - script: | - const write = await import('@changesets/write') - const execa = await import('execa') - - const summary = `Translations Updated (PR #${context.payload.pull_request.number})` - - const opts = { reject: false } - const { stdout } = await execa('grep', [summary, '-r', '.changeset'], opts) - - if (stdout) { - console.log('Changeset already exists') - return - } - - const releases = [ - { name: "@studiocms/core", type: "patch" } - ] - - const cwd = process.cwd() - const changesetId = await write.default({ summary, releases }, cwd) - - console.log(`Changeset created: ${changesetId}`) - + - name: Create Translation Changesets + run: pnpm translations:changesets + env: + CI_PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }} - name: Commit changes uses: stefanzweifel/git-auto-commit-action@8621497c8c39c72f3e2a999a26b4ca1b5058a842 # v5 diff --git a/package.json b/package.json index 501d71f69..69761c4ff 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,8 @@ "update:web": "pnpm --filter web up --latest", "update:docs": "pnpm --filter docs up --latest", "web:dev": "pnpm --filter web dev", - "docs:dev": "pnpm --filter docs dev" + "docs:dev": "pnpm --filter docs dev", + "translations:changeset": "tsm --require=./scripts/filter-warnings.cjs ./scripts/translation-changeset.ts" }, "devDependencies": { "@biomejs/biome": "1.9.3", @@ -37,6 +38,7 @@ "@changesets/changelog-github": "^0.5.0", "@changesets/write": "0.3.2", "execa": "9.5.1", - "typescript": "catalog:" + "typescript": "catalog:", + "tsm": "2.3.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 21e87c3d0..f9307209d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -354,6 +354,9 @@ importers: execa: specifier: 9.5.1 version: 9.5.1 + tsm: + specifier: 2.3.0 + version: 2.3.0 typescript: specifier: 'catalog:' version: 5.6.3 @@ -1835,6 +1838,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm@0.15.18': + resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + '@esbuild/android-arm@0.21.5': resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} @@ -1943,6 +1952,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-loong64@0.15.18': + resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-loong64@0.21.5': resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} @@ -4267,6 +4282,131 @@ packages: es-module-lexer@1.5.4: resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + esbuild-android-64@0.15.18: + resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + esbuild-android-arm64@0.15.18: + resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + esbuild-darwin-64@0.15.18: + resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + esbuild-darwin-arm64@0.15.18: + resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + esbuild-freebsd-64@0.15.18: + resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + esbuild-freebsd-arm64@0.15.18: + resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + esbuild-linux-32@0.15.18: + resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + esbuild-linux-64@0.15.18: + resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + esbuild-linux-arm64@0.15.18: + resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + esbuild-linux-arm@0.15.18: + resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + esbuild-linux-mips64le@0.15.18: + resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + esbuild-linux-ppc64le@0.15.18: + resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + esbuild-linux-riscv64@0.15.18: + resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + esbuild-linux-s390x@0.15.18: + resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + esbuild-netbsd-64@0.15.18: + resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + esbuild-openbsd-64@0.15.18: + resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + esbuild-sunos-64@0.15.18: + resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + esbuild-windows-32@0.15.18: + resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + esbuild-windows-64@0.15.18: + resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + esbuild-windows-arm64@0.15.18: + resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + esbuild@0.15.18: + resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} + engines: {node: '>=12'} + hasBin: true + esbuild@0.21.5: resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} engines: {node: '>=12'} @@ -6234,6 +6374,11 @@ packages: tslib@2.6.3: resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + tsm@2.3.0: + resolution: {integrity: sha512-++0HFnmmR+gMpDtKTnW3XJ4yv9kVGi20n+NfyQWB9qwJvTaIWY9kBmzek2YUQK5APTQ/1DTrXmm4QtFPmW9Rzw==} + engines: {node: '>=12'} + hasBin: true + tsx@4.16.2: resolution: {integrity: sha512-C1uWweJDgdtX2x600HjaFaucXTilT7tgUZHbOE4+ypskZ1OP8CRCSDkCxG6Vya9EwaFIVagWwpaVAn5wzypaqQ==} engines: {node: '>=18.0.0'} @@ -7859,6 +8004,9 @@ snapshots: '@esbuild/android-arm64@0.23.0': optional: true + '@esbuild/android-arm@0.15.18': + optional: true + '@esbuild/android-arm@0.21.5': optional: true @@ -7913,6 +8061,9 @@ snapshots: '@esbuild/linux-ia32@0.23.0': optional: true + '@esbuild/linux-loong64@0.15.18': + optional: true + '@esbuild/linux-loong64@0.21.5': optional: true @@ -10613,6 +10764,91 @@ snapshots: es-module-lexer@1.5.4: {} + esbuild-android-64@0.15.18: + optional: true + + esbuild-android-arm64@0.15.18: + optional: true + + esbuild-darwin-64@0.15.18: + optional: true + + esbuild-darwin-arm64@0.15.18: + optional: true + + esbuild-freebsd-64@0.15.18: + optional: true + + esbuild-freebsd-arm64@0.15.18: + optional: true + + esbuild-linux-32@0.15.18: + optional: true + + esbuild-linux-64@0.15.18: + optional: true + + esbuild-linux-arm64@0.15.18: + optional: true + + esbuild-linux-arm@0.15.18: + optional: true + + esbuild-linux-mips64le@0.15.18: + optional: true + + esbuild-linux-ppc64le@0.15.18: + optional: true + + esbuild-linux-riscv64@0.15.18: + optional: true + + esbuild-linux-s390x@0.15.18: + optional: true + + esbuild-netbsd-64@0.15.18: + optional: true + + esbuild-openbsd-64@0.15.18: + optional: true + + esbuild-sunos-64@0.15.18: + optional: true + + esbuild-windows-32@0.15.18: + optional: true + + esbuild-windows-64@0.15.18: + optional: true + + esbuild-windows-arm64@0.15.18: + optional: true + + esbuild@0.15.18: + optionalDependencies: + '@esbuild/android-arm': 0.15.18 + '@esbuild/linux-loong64': 0.15.18 + esbuild-android-64: 0.15.18 + esbuild-android-arm64: 0.15.18 + esbuild-darwin-64: 0.15.18 + esbuild-darwin-arm64: 0.15.18 + esbuild-freebsd-64: 0.15.18 + esbuild-freebsd-arm64: 0.15.18 + esbuild-linux-32: 0.15.18 + esbuild-linux-64: 0.15.18 + esbuild-linux-arm: 0.15.18 + esbuild-linux-arm64: 0.15.18 + esbuild-linux-mips64le: 0.15.18 + esbuild-linux-ppc64le: 0.15.18 + esbuild-linux-riscv64: 0.15.18 + esbuild-linux-s390x: 0.15.18 + esbuild-netbsd-64: 0.15.18 + esbuild-openbsd-64: 0.15.18 + esbuild-sunos-64: 0.15.18 + esbuild-windows-32: 0.15.18 + esbuild-windows-64: 0.15.18 + esbuild-windows-arm64: 0.15.18 + esbuild@0.21.5: optionalDependencies: '@esbuild/aix-ppc64': 0.21.5 @@ -13203,6 +13439,10 @@ snapshots: tslib@2.6.3: {} + tsm@2.3.0: + dependencies: + esbuild: 0.15.18 + tsx@4.16.2: dependencies: esbuild: 0.21.5 diff --git a/scripts/filter-warnings.cjs b/scripts/filter-warnings.cjs new file mode 100644 index 000000000..0a41d57f6 --- /dev/null +++ b/scripts/filter-warnings.cjs @@ -0,0 +1,23 @@ +/** + * When using custom loaders like `tsm` to add TypeScript & module support to scripts, + * Node.js outputs a known set of warnings, which distract from the actual script output. + * + * By adding `--require=./scripts/lib/filter-warnings.cjs` to the `node` or `tsm` args, + * this script filters those known warnings (but not any others) from the output. + */ + +// Remove Node's built-in `warning` listener which outputs all warnings to stderr +process.removeAllListeners('warning'); + +// Add our own version that skips known warnings +process.on('warning', (warning) => { + const { name, message } = warning; + if ( + name === 'ExperimentalWarning' && + (message.indexOf('--experimental-loader') > -1 || message.indexOf('Custom ESM Loaders') > -1) + ) + return; + if (name === 'DeprecationWarning' && message.indexOf('Obsolete loader hook') > -1) return; + + console.warn(warning); +}); diff --git a/scripts/translation-changeset.ts b/scripts/translation-changeset.ts new file mode 100644 index 000000000..375a051bd --- /dev/null +++ b/scripts/translation-changeset.ts @@ -0,0 +1,38 @@ +import write from '@changesets/write'; +import { execa } from 'execa'; + +async function run() { + // Get the PR number from the CI environment + const PR_NUMBER = process.env.CI_PULL_REQUEST_NUMBER; + + // If the PR number is not found, exit the process + if (!PR_NUMBER) { + console.log('No PR number found'); + process.exit(0); + } + + // Changeset summary + const summary = `Translation Updated (PR: #${PR_NUMBER})`; + + // Check if the changeset already exists + + // Run the grep command to check if the changeset already exists + const { stdout } = await execa('grep', [summary, '-r', '.changeset'], { reject: false }); + + // If the changeset already exists, exit the process + if (stdout) { + console.log('Changeset already exists'); + process.exit(0); + } + + // Create a new changeset + const changesetId = await write( + { summary, releases: [{ name: '@studiocms/core', type: 'patch' }] }, + process.cwd() + ); + + // Log the changeset id + console.log(`Changeset created: ${changesetId}`); +} + +run(); From f14387b476d5c6c66aad7d86f68625d8ac481acd Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Thu, 14 Nov 2024 22:11:25 -0800 Subject: [PATCH 34/40] Refactor translation-changesets workflow to fix command typo --- .github/workflows/translation-changesets.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/translation-changesets.yml b/.github/workflows/translation-changesets.yml index b3f4d645d..f2470367e 100644 --- a/.github/workflows/translation-changesets.yml +++ b/.github/workflows/translation-changesets.yml @@ -32,7 +32,7 @@ jobs: shell: bash - name: Create Translation Changesets - run: pnpm translations:changesets + run: pnpm translations:changeset env: CI_PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }} From c0d8cb860d97157d00dc14071c7f787dd8fe332a Mon Sep 17 00:00:00 2001 From: "StudioCMS (bot)" <no-reply@studiocms.xyz> Date: Fri, 15 Nov 2024 00:23:36 -0800 Subject: [PATCH 35/40] Core i18n:Translations update from StudioCMS i18n (#376) * Translated using Weblate (German) Currently translated at 58.0% (18 of 31 strings) Translated using Weblate (German) Currently translated at 12.9% (4 of 31 strings) Co-authored-by: Louis Escher <louisescher@proton.me> Translate-URL: https://i18n.studiocms.xyz/projects/studiocms/core-i18n/de/ Translation: StudioCMS/Core i18n * [ci] changesets * [ci] changesets * Delete .changeset/dry-zoos-behave.md bug --------- Co-authored-by: Louis Escher <louisescher@proton.me> Co-authored-by: Adam Matthiesen <amatthiesen@outlook.com> --- .changeset/long-cherries-exercise.md | 5 +++ .../src/i18n/translations/de.json | 36 +++++++++---------- 2 files changed, 23 insertions(+), 18 deletions(-) create mode 100644 .changeset/long-cherries-exercise.md diff --git a/.changeset/long-cherries-exercise.md b/.changeset/long-cherries-exercise.md new file mode 100644 index 000000000..671718863 --- /dev/null +++ b/.changeset/long-cherries-exercise.md @@ -0,0 +1,5 @@ +--- +"@studiocms/core": patch +--- + +Translation Updated (PR: #376) diff --git a/packages/studiocms_core/src/i18n/translations/de.json b/packages/studiocms_core/src/i18n/translations/de.json index 4de424a5c..43904161d 100644 --- a/packages/studiocms_core/src/i18n/translations/de.json +++ b/packages/studiocms_core/src/i18n/translations/de.json @@ -1,26 +1,26 @@ { - "displayName": "", + "displayName": "German (de-DE)", "translations": { "@studiocms/auth:login": { - "title": "", - "description": "", - "header": "", - "sub-header-usernamepasswordoauth": "", - "sub-header-usernamepassword": "", - "sub-header-oauth": "", - "sub-header-noprovider": "", - "username-label": "", - "password-label": "", - "login-button": "", - "allow-registration-noaccount": "", - "allow-registration-register": "" + "title": "Login-Seite", + "description": "Login-Seite", + "header": "Login", + "sub-header-usernamepasswordoauth": "Gebe deinen Nutzername & Passwort ein oder verwende einen der Login-Anbieter, um dich einzuloggen.", + "sub-header-usernamepassword": "Gebe deinen Nutzername und Passwort ein.", + "sub-header-oauth": "Wähle einen der Anbieter um dich einzuloggen.", + "sub-header-noprovider": "Kein Login-Anbieter konfiguriert. Bitte kontaktiere deinen Administrator.", + "username-label": "Nutzername", + "password-label": "Passwort", + "login-button": "Einloggen", + "allow-registration-noaccount": "Du hast keinen Account?", + "allow-registration-register": "Registriere dich hier!" }, "@studiocms/auth:signup": { - "title": "", - "description": "", - "header": "", - "sub-header-usernamepasswordoauth": "", - "sub-header-usernamepassword": "", + "title": "Registrierung", + "description": "Registrierung", + "header": "Registrierung", + "sub-header-usernamepasswordoauth": "Erstelle einen Account mit einer der vorliegenden Optionen.", + "sub-header-usernamepassword": "Erstelle einen Account mit dem Registrierungs-Formular.", "sub-header-oauth": "", "sub-header-noprovider": "", "username-label": "", From 625bb998dd131d79476d7a76295c0553180acc4d Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Sat, 16 Nov 2024 08:35:25 -0800 Subject: [PATCH 36/40] Update www/docs/src/content/docs/contributing/getting-started.mdx Co-authored-by: Reuben Tier <64310361+TheOtterlord@users.noreply.github.com> --- www/docs/src/content/docs/contributing/getting-started.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/www/docs/src/content/docs/contributing/getting-started.mdx b/www/docs/src/content/docs/contributing/getting-started.mdx index 4cb3c62d2..ebcc1b14e 100644 --- a/www/docs/src/content/docs/contributing/getting-started.mdx +++ b/www/docs/src/content/docs/contributing/getting-started.mdx @@ -24,5 +24,5 @@ We welcome contributions from the community! Whether it's bug reports, feature r ## Bug Reports and Feature Requests -If you encounter any bugs or have ideas for new features, please open an issue on our [GitHub repository](https://github.com/astrolicious/studiocms). When creating a new issue, please provide as much detail as possible, including steps to reproduce the issue (for bugs) and a clear description of the proposed feature. +If you encounter a bug or want to suggest a new feature, please open an issue on our [GitHub repository](https://github.com/astrolicious/studiocms). When creating a new issue, please provide as much detail as possible, including steps to reproduce the issue (for bugs) and a clear description of the proposed feature. From 38a78a9a2834703b0185c993275e53c4b7faaa7e Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Sat, 16 Nov 2024 08:39:39 -0800 Subject: [PATCH 37/40] move info around to fix the new contributing sections --- .../src/content/docs/contributing/code-contributions.mdx | 2 ++ www/docs/src/content/docs/contributing/getting-started.mdx | 6 +----- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/www/docs/src/content/docs/contributing/code-contributions.mdx b/www/docs/src/content/docs/contributing/code-contributions.mdx index 3c7761cb0..839e914ae 100644 --- a/www/docs/src/content/docs/contributing/code-contributions.mdx +++ b/www/docs/src/content/docs/contributing/code-contributions.mdx @@ -7,6 +7,8 @@ sidebar: import { Steps } from '@astrojs/starlight/components'; +In this guide you will get an overview of the contribution workflow from opening an issue, creating a PR, reviewing, and merging the PR. + If you'd like to contribute code to this project, please follow the steps below: ## Solve an issue diff --git a/www/docs/src/content/docs/contributing/getting-started.mdx b/www/docs/src/content/docs/contributing/getting-started.mdx index ebcc1b14e..b4802c9b1 100644 --- a/www/docs/src/content/docs/contributing/getting-started.mdx +++ b/www/docs/src/content/docs/contributing/getting-started.mdx @@ -10,7 +10,7 @@ Thank you for investing your time in contributing to our project! Read our [Code of Conduct](https://github.com/astrolicious/studiocms?tab=coc-ov-file#code-of-conduct-) to keep our community approachable and respectable. -In this guide you will get an overview of the contribution workflow from opening an issue, creating a PR, reviewing, and merging the PR. +We welcome contributions from the community! Whether it's bug reports, feature requests, or code contributions, we appreciate your help in making this project better. To navigate our codebase with confidence, see [How it works](/how-it-works/) section. ## Our Contributors @@ -18,10 +18,6 @@ Our project exists thanks to all the people who contribute. [Join us on GitHub]( <ContributorList /> -## Getting started - -We welcome contributions from the community! Whether it's bug reports, feature requests, or code contributions, we appreciate your help in making this project better. To navigate our codebase with confidence, see [How it works](/how-it-works/) section. - ## Bug Reports and Feature Requests If you encounter a bug or want to suggest a new feature, please open an issue on our [GitHub repository](https://github.com/astrolicious/studiocms). When creating a new issue, please provide as much detail as possible, including steps to reproduce the issue (for bugs) and a clear description of the proposed feature. From a62c50256b90288c1947396240fd82f705dd5f23 Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Sun, 17 Nov 2024 13:16:08 -0800 Subject: [PATCH 38/40] fix lockfile --- pnpm-lock.yaml | 279 ++++++++++++++++++++++++++++--------------------- 1 file changed, 160 insertions(+), 119 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f9307209d..88c37cb95 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -38,7 +38,7 @@ catalogs: version: 20.14.13 astro: specifier: ^4.16.11 - version: 4.16.11 + version: 4.16.13 astro-integration-kit: specifier: ^0.16.1 version: 0.16.1 @@ -686,10 +686,10 @@ importers: dependencies: '@astrojs/db': specifier: 'catalog:' - version: 0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1) + version: 0.14.3(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1) '@astrojs/web-vitals': specifier: 'catalog:' - version: 3.0.0(@astrojs/db@0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1)) + version: 3.0.0(@astrojs/db@0.14.3(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1)) '@inox-tools/runtime-logger': specifier: catalog:studiocms-shared version: 0.3.4(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) @@ -947,17 +947,16 @@ importers: dependencies: '@astrojs/db': specifier: 'catalog:' - version: 0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1) + version: 0.14.3(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1) '@astrojs/node': specifier: 'catalog:' - version: 8.3.4(astro@4.16.11(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)) + version: 8.3.4(astro@4.16.13(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)) '@astrojs/web-vitals': specifier: 'catalog:' - version: 3.0.0(@astrojs/db@0.14.2(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1)) + version: 3.0.0(@astrojs/db@0.14.3(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1)) '@sentry/astro': specifier: ^8.38.0 - version: 8.38.0(astro@4.16.6(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)) - version: 3.0.0(@astrojs/db@0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1)) + version: 8.38.0(astro@4.16.13(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)) '@studiocms/blog': specifier: workspace:* version: link:../../packages/studiocms_blog @@ -966,7 +965,7 @@ importers: version: link:../../packages/studiocms_devapps astro: specifier: 'catalog:' - version: 4.16.11(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) + version: 4.16.13(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) sharp: specifier: 'catalog:' version: 0.33.4 @@ -985,19 +984,19 @@ importers: dependencies: '@astrojs/node': specifier: 'catalog:' - version: 8.3.4(astro@4.16.11(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)) + version: 8.3.4(astro@4.16.13(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)) '@fontsource-variable/onest': specifier: catalog:studiocms-shared version: 5.1.0 '@sentry/astro': specifier: ^8.38.0 - version: 8.38.0(astro@4.16.6(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)) + version: 8.38.0(astro@4.16.13(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)) '@studiocms/ui': specifier: workspace:* version: link:../../packages/studiocms_ui astro: specifier: 'catalog:' - version: 4.16.11(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) + version: 4.16.13(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) devDependencies: '@types/node': specifier: 'catalog:' @@ -1016,25 +1015,25 @@ importers: version: 0.9.4(typescript@5.6.3) '@astrojs/db': specifier: 'catalog:' - version: 0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1) + version: 0.14.3(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1) '@astrojs/node': specifier: 'catalog:' - version: 8.3.4(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 8.3.4(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@astrojs/react': specifier: 'catalog:' version: 3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.11(@types/node@22.0.0)) '@astrojs/starlight': specifier: 'catalog:' - version: 0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.28.3(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@astrojs/web-vitals': specifier: 'catalog:' - version: 3.0.0(@astrojs/db@0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1)) + version: 3.0.0(@astrojs/db@0.14.3(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1)) '@fontsource-variable/onest': specifier: catalog:studiocms-shared version: 5.1.0 '@lorenzo_lewis/starlight-utils': specifier: catalog:docs - version: 0.2.0(@astrojs/starlight@0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)))(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.2.0(@astrojs/starlight@0.28.3(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)))(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@shikijs/transformers': specifier: catalog:docs version: 1.22.0 @@ -1061,10 +1060,10 @@ importers: version: 3.0.2 astro: specifier: 'catalog:' - version: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + version: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) astro-embed: specifier: catalog:docs - version: 0.7.4(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.7.4(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) hast: specifier: catalog:docs version: 1.0.0 @@ -1115,10 +1114,10 @@ importers: version: 0.2.0 starlight-image-zoom: specifier: catalog:docs - version: 0.8.0(@astrojs/starlight@0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))) + version: 0.8.0(@astrojs/starlight@0.28.3(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))) starlight-typedoc: specifier: catalog:docs - version: 0.16.0(@astrojs/starlight@0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)))(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))(typedoc-plugin-markdown@4.2.9(typedoc@0.26.10(typescript@5.6.3)))(typedoc@0.26.10(typescript@5.6.3)) + version: 0.16.0(@astrojs/starlight@0.28.3(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)))(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))(typedoc-plugin-markdown@4.2.9(typedoc@0.26.10(typescript@5.6.3)))(typedoc@0.26.10(typescript@5.6.3)) studiocms: specifier: workspace:* version: link:../../packages/studiocms @@ -1142,7 +1141,7 @@ importers: version: 0.9.4(typescript@5.6.3) '@astrojs/tailwind': specifier: 'catalog:' - version: 5.1.2(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))(tailwindcss@3.4.14) + version: 5.1.2(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))(tailwindcss@3.4.14) '@fontsource-variable/onest': specifier: catalog:studiocms-shared version: 5.1.0 @@ -1157,7 +1156,7 @@ importers: version: 0.5.15(tailwindcss@3.4.14) astro: specifier: 'catalog:' - version: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + version: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) astro-icon: specifier: catalog:landing version: 1.1.1 @@ -3055,7 +3054,9 @@ packages: cpu: [x64] os: [win32] -<<<<<<< HEAD + '@sec-ant/readable-stream@0.4.1': + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + '@sentry-internal/browser-utils@8.38.0': resolution: {integrity: sha512-5QMVcssrAcmjKT0NdFYcX0b0wwZovGAZ9L2GajErXtHkBenjI2sgR2+5J7n+QZGuk2SC1qhGmT1O9i3p3UEwew==} engines: {node: '>=14.18'} @@ -3165,10 +3166,6 @@ packages: '@sentry/vite-plugin@2.22.6': resolution: {integrity: sha512-zIieP1VLWQb3wUjFJlwOAoaaJygJhXeUoGd0e/Ha2RLb2eW2S+4gjf6y6NqyY71tZ74LYVZKg/4prB6FAZSMXQ==} engines: {node: '>= 14'} -======= - '@sec-ant/readable-stream@0.4.1': - resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} ->>>>>>> ab5d092 (Add @changesets/write and execa dependencies and implement automatated changesets for translations) '@shikijs/core@1.14.1': resolution: {integrity: sha512-KyHIIpKNaT20FtFPFjCQB5WVSTpLR/n+jQXhWHWVUMm9MaOaG9BGOG0MSyt7yA4+Lm+4c9rTc03tt3nYzeYSfw==} @@ -3176,20 +3173,20 @@ packages: '@shikijs/core@1.22.0': resolution: {integrity: sha512-S8sMe4q71TJAW+qG93s5VaiihujRK6rqDFqBnxqvga/3LvqHEnxqBIOPkt//IdXVtHkQWKu4nOQNk0uBGicU7Q==} - '@shikijs/core@1.22.2': - resolution: {integrity: sha512-bvIQcd8BEeR1yFvOYv6HDiyta2FFVePbzeowf5pPS1avczrPK+cjmaxxh0nx5QzbON7+Sv0sQfQVciO7bN72sg==} + '@shikijs/core@1.23.0': + resolution: {integrity: sha512-J4Fo22oBlfRHAXec+1AEzcowv+Qdf4ZQkuP/X/UHYH9+KA9LvyFXSXyS+HxuBRFfon+u7bsmKdRBjoZlbDVRkQ==} '@shikijs/engine-javascript@1.22.0': resolution: {integrity: sha512-AeEtF4Gcck2dwBqCFUKYfsCq0s+eEbCEbkUuFou53NZ0sTGnJnJ/05KHQFZxpii5HMXbocV9URYVowOP2wH5kw==} - '@shikijs/engine-javascript@1.22.2': - resolution: {integrity: sha512-iOvql09ql6m+3d1vtvP8fLCVCK7BQD1pJFmHIECsujB0V32BJ0Ab6hxk1ewVSMFA58FI0pR2Had9BKZdyQrxTw==} + '@shikijs/engine-javascript@1.23.0': + resolution: {integrity: sha512-CcrppseWShG+8Efp1iil9divltuXVdCaU4iu+CKvzTGZO5RmXyAiSx668M7VbX8+s/vt1ZKu75Vn/jWi8O3G/Q==} '@shikijs/engine-oniguruma@1.22.0': resolution: {integrity: sha512-5iBVjhu/DYs1HB0BKsRRFipRrD7rqjxlWTj4F2Pf+nQSPqc3kcyqFFeZXnBMzDf0HdqaFVvhDRAGiYNvyLP+Mw==} - '@shikijs/engine-oniguruma@1.22.2': - resolution: {integrity: sha512-GIZPAGzQOy56mGvWMoZRPggn0dTlBf1gutV5TdceLCZlFNqWmuc7u+CzD0Gd9vQUTgLbrt0KLzz6FNprqYAxlA==} + '@shikijs/engine-oniguruma@1.23.0': + resolution: {integrity: sha512-gS8bZLqVvmZXX+E5JUMJICsBp+kx6gj79MH/UEpKHKIqnUzppgbmEn6zLa6mB5D+sHse2gFei3YYJxQe1EzZXQ==} '@shikijs/transformers@1.14.1': resolution: {integrity: sha512-JJqL8QBVCJh3L61jqqEXgFq1cTycwjcGj7aSmqOEsbxnETM9hRlaB74QuXvY/fVJNjbNt8nvWo0VwAXKvMSLRg==} @@ -3203,8 +3200,8 @@ packages: '@shikijs/types@1.22.0': resolution: {integrity: sha512-Fw/Nr7FGFhlQqHfxzZY8Cwtwk5E9nKDUgeLjZgt3UuhcM3yJR9xj3ZGNravZZok8XmEZMiYkSMTPlPkULB8nww==} - '@shikijs/types@1.22.2': - resolution: {integrity: sha512-NCWDa6LGZqTuzjsGfXOBWfjS/fDIbDdmVDug+7ykVe1IKT4c1gakrvlfFYp5NhAXH/lyqLM8wsAPo5wNy73Feg==} + '@shikijs/types@1.23.0': + resolution: {integrity: sha512-HiwzsihRao+IbPk7FER/EQT/D0dEEK3n5LAtHDzL5iRT+JMblA7y9uitUnjEnHeLkKigNM+ZplrP7MuEyyc5kA==} '@shikijs/vscode-textmate@9.3.0': resolution: {integrity: sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==} @@ -3539,6 +3536,10 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} @@ -3659,8 +3660,8 @@ packages: '@astrojs/db': optional: true - astro@4.16.11: - resolution: {integrity: sha512-Pm0ATut4f8kM2OKbSDbatO5Q/f2ynt1dbc5UGQN8I5bFnJvDbJj3R1NE513BOXXv4GQBKJZUshcZEMvlZpA61g==} + astro@4.16.13: + resolution: {integrity: sha512-Mtd76+BC0zLWqoXpf9xc731AhdH4MNh5JFHYdLRvSH0Nqn48hA64dPGh/cWsJvh/DZFmC0NTZusM1Qq2gyNaVg==} engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true @@ -4252,6 +4253,9 @@ packages: emmet@2.4.7: resolution: {integrity: sha512-O5O5QNqtdlnQM2bmKHtJgyChcrFMgQuulI+WdiOw2NArzprUqqxUW6bgYtKvzKgrsYpuLWalOkdhNP+1jluhCA==} + emoji-regex-xs@1.0.0: + resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} + emoji-regex@10.3.0: resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} @@ -5533,6 +5537,9 @@ packages: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} + oniguruma-to-es@0.1.2: + resolution: {integrity: sha512-sBYKVJlIMB0WPO+tSu/NNB1ytSFeHyyJZ3Ayxfx3f/QUuXu0lvZk0VB4K7npmdlHSC0ldqanzh/sUSlAbgCTfw==} + oniguruma-to-js@0.4.3: resolution: {integrity: sha512-X0jWUcAlxORhOqqBREgPMgnshB7ZGYszBNspP+tS9hPD3l13CdaXcHbgImoHUHlrvGx/7AvFEkTRhAGYh+jzjQ==} @@ -5814,8 +5821,8 @@ packages: engines: {node: '>=10.13.0'} hasBin: true - pretty-ms@9.1.0: - resolution: {integrity: sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==} + pretty-ms@9.2.0: + resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} engines: {node: '>=18'} prismjs@1.29.0: @@ -5901,9 +5908,18 @@ packages: regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + regex-recursion@4.2.1: + resolution: {integrity: sha512-QHNZyZAeKdndD1G3bKAbBEKOSSK4KOHQrAJ01N1LJeb0SoH4DJIeFhp0uUpETgONifS4+P3sOgoA1dhzgrQvhA==} + + regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + regex@4.3.3: resolution: {integrity: sha512-r/AadFO7owAq1QJVeZ/nq9jNS1vyZt+6t1p/E59B56Rn2GCya+gr1KSyOzNL/er+r+B7phv5jG2xU2Nz1YkmJg==} + regex@4.4.0: + resolution: {integrity: sha512-uCUSuobNVeqUupowbdZub6ggI5/JZkYyJdDogddJr60L764oxC2pMZov1fQ3wM9bdyzUILDG+Sqx6NAKAz9rKQ==} + registry-auth-token@5.0.2: resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==} engines: {node: '>=14'} @@ -6119,8 +6135,11 @@ packages: shiki@1.22.0: resolution: {integrity: sha512-/t5LlhNs+UOKQCYBtl5ZsH/Vclz73GIqT2yQsCBygr8L/ppTdmpL4w3kPLoZJbMKVWtoG77Ue1feOjZfDxvMkw==} - shiki@1.22.2: - resolution: {integrity: sha512-3IZau0NdGKXhH2bBlUk4w1IHNxPh6A5B2sUpyY+8utLu2j/h1QpFkAaUA1bAMxOWWGtTWcAh531vnS4NJKS/lA==} + shiki@1.23.0: + resolution: {integrity: sha512-xfdu9DqPkIpExH29cmiTlgo0/jBki5la1Tkfhsv+Wu5TT3APLNHslR1acxuKJOCWqVdSc+pIbs/2ozjVRGppdg==} + + shimmer@1.2.1: + resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -6901,38 +6920,38 @@ snapshots: '@antfu/utils@0.7.10': {} - '@astro-community/astro-embed-integration@0.7.2(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': + '@astro-community/astro-embed-integration@0.7.2(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: '@astro-community/astro-embed-link-preview': 0.2.2 - '@astro-community/astro-embed-twitter': 0.5.6(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) - '@astro-community/astro-embed-vimeo': 0.3.10(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) - '@astro-community/astro-embed-youtube': 0.5.5(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + '@astro-community/astro-embed-twitter': 0.5.6(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + '@astro-community/astro-embed-vimeo': 0.3.10(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + '@astro-community/astro-embed-youtube': 0.5.5(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@types/unist': 2.0.10 - astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) - astro-auto-import: 0.4.2(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro-auto-import: 0.4.2(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) unist-util-select: 4.0.3 '@astro-community/astro-embed-link-preview@0.2.2': dependencies: '@astro-community/astro-embed-utils': 0.1.3 - '@astro-community/astro-embed-twitter@0.5.6(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': + '@astro-community/astro-embed-twitter@0.5.6(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: '@astro-community/astro-embed-utils': 0.1.3 - astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) '@astro-community/astro-embed-utils@0.1.3': dependencies: linkedom: 0.14.26 - '@astro-community/astro-embed-vimeo@0.3.10(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': + '@astro-community/astro-embed-vimeo@0.3.10(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: '@astro-community/astro-embed-utils': 0.1.3 - astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) - '@astro-community/astro-embed-youtube@0.5.5(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': + '@astro-community/astro-embed-youtube@0.5.5(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: - astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) lite-youtube-embed: 0.3.3 '@astrojs/check@0.9.4(typescript@5.6.3)': @@ -6994,13 +7013,13 @@ snapshots: - sqlite3 - utf-8-validate - '@astrojs/db@0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1)': + '@astrojs/db@0.14.3(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1)': dependencies: '@astrojs/studio': 0.1.1 '@libsql/client': 0.14.0 async-listen: 3.0.1 deep-diff: 1.0.2 - drizzle-orm: 0.31.4(@cloudflare/workers-types@4.20240725.0)(@libsql/client@0.14.0)(@types/react@18.3.5)(react@18.3.1) + drizzle-orm: 0.31.4(@cloudflare/workers-types@4.20240725.0)(@libsql/client@0.14.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1) github-slugger: 2.0.0 kleur: 4.1.5 nanoid: 5.0.7 @@ -7111,12 +7130,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/mdx@3.1.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': + '@astrojs/mdx@3.1.3(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: '@astrojs/markdown-remark': 5.2.0 '@mdx-js/mdx': 3.0.1 acorn: 8.12.1 - astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) es-module-lexer: 1.5.4 estree-util-visit: 2.0.0 github-slugger: 2.0.0 @@ -7132,17 +7151,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/node@8.3.4(astro@4.16.11(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3))': + '@astrojs/node@8.3.4(astro@4.16.13(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3))': dependencies: - astro: 4.16.11(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.13(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) send: 0.19.1 server-destroy: 1.0.1 transitivePeerDependencies: - supports-color - '@astrojs/node@8.3.4(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': + '@astrojs/node@8.3.4(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: - astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) send: 0.19.1 server-destroy: 1.0.1 transitivePeerDependencies: @@ -7187,15 +7206,15 @@ snapshots: stream-replace-string: 2.0.0 zod: 3.23.8 - '@astrojs/starlight@0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': + '@astrojs/starlight@0.28.3(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: - '@astrojs/mdx': 3.1.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + '@astrojs/mdx': 3.1.3(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@astrojs/sitemap': 3.1.6 '@pagefind/default-ui': 1.1.0 '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) - astro-expressive-code: 0.35.6(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro-expressive-code: 0.35.6(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) bcp-47: 2.1.0 hast-util-from-html: 2.0.3 hast-util-select: 6.0.3 @@ -7221,9 +7240,9 @@ snapshots: kleur: 4.1.5 ora: 8.1.0 - '@astrojs/tailwind@5.1.2(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))(tailwindcss@3.4.14)': + '@astrojs/tailwind@5.1.2(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))(tailwindcss@3.4.14)': dependencies: - astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) autoprefixer: 10.4.20(postcss@8.4.47) postcss: 8.4.47 postcss-load-config: 4.0.2(postcss@8.4.47) @@ -7243,9 +7262,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/web-vitals@3.0.0(@astrojs/db@0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1))': + '@astrojs/web-vitals@3.0.0(@astrojs/db@0.14.3(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1))': dependencies: - '@astrojs/db': 0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1) + '@astrojs/db': 0.14.3(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1) web-vitals: 4.2.3 '@astrojs/yaml2ts@0.2.1': @@ -8469,11 +8488,11 @@ snapshots: dependencies: '@lit-labs/ssr-dom-shim': 1.2.0 - '@lorenzo_lewis/starlight-utils@0.2.0(@astrojs/starlight@0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)))(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': + '@lorenzo_lewis/starlight-utils@0.2.0(@astrojs/starlight@0.28.3(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)))(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: - '@astrojs/starlight': 0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) - astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) - astro-integration-kit: 0.16.1(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + '@astrojs/starlight': 0.28.3(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro-integration-kit: 0.16.1(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@manypkg/find-root@1.1.0': dependencies: @@ -9116,7 +9135,8 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.21.0': optional: true -<<<<<<< HEAD + '@sec-ant/readable-stream@0.4.1': {} + '@sentry-internal/browser-utils@8.38.0': dependencies: '@sentry/core': 8.38.0 @@ -9143,7 +9163,7 @@ snapshots: '@sentry/types': 8.38.0 '@sentry/utils': 8.38.0 - '@sentry/astro@8.38.0(astro@4.16.6(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3))': + '@sentry/astro@8.38.0(astro@4.16.13(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3))': dependencies: '@sentry/browser': 8.38.0 '@sentry/core': 8.38.0 @@ -9151,7 +9171,7 @@ snapshots: '@sentry/types': 8.38.0 '@sentry/utils': 8.38.0 '@sentry/vite-plugin': 2.22.6 - astro: 4.16.6(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.13(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) transitivePeerDependencies: - encoding - supports-color @@ -9293,9 +9313,6 @@ snapshots: transitivePeerDependencies: - encoding - supports-color -======= - '@sec-ant/readable-stream@0.4.1': {} ->>>>>>> ab5d092 (Add @changesets/write and execa dependencies and implement automatated changesets for translations) '@shikijs/core@1.14.1': dependencies: @@ -9310,11 +9327,11 @@ snapshots: '@types/hast': 3.0.4 hast-util-to-html: 9.0.3 - '@shikijs/core@1.22.2': + '@shikijs/core@1.23.0': dependencies: - '@shikijs/engine-javascript': 1.22.2 - '@shikijs/engine-oniguruma': 1.22.2 - '@shikijs/types': 1.22.2 + '@shikijs/engine-javascript': 1.23.0 + '@shikijs/engine-oniguruma': 1.23.0 + '@shikijs/types': 1.23.0 '@shikijs/vscode-textmate': 9.3.0 '@types/hast': 3.0.4 hast-util-to-html: 9.0.3 @@ -9325,20 +9342,20 @@ snapshots: '@shikijs/vscode-textmate': 9.3.0 oniguruma-to-js: 0.4.3 - '@shikijs/engine-javascript@1.22.2': + '@shikijs/engine-javascript@1.23.0': dependencies: - '@shikijs/types': 1.22.2 + '@shikijs/types': 1.23.0 '@shikijs/vscode-textmate': 9.3.0 - oniguruma-to-js: 0.4.3 + oniguruma-to-es: 0.1.2 '@shikijs/engine-oniguruma@1.22.0': dependencies: '@shikijs/types': 1.22.0 '@shikijs/vscode-textmate': 9.3.0 - '@shikijs/engine-oniguruma@1.22.2': + '@shikijs/engine-oniguruma@1.23.0': dependencies: - '@shikijs/types': 1.22.2 + '@shikijs/types': 1.23.0 '@shikijs/vscode-textmate': 9.3.0 '@shikijs/transformers@1.14.1': @@ -9363,7 +9380,7 @@ snapshots: '@shikijs/vscode-textmate': 9.3.0 '@types/hast': 3.0.4 - '@shikijs/types@1.22.2': + '@shikijs/types@1.23.0': dependencies: '@shikijs/vscode-textmate': 9.3.0 '@types/hast': 3.0.4 @@ -9839,6 +9856,12 @@ snapshots: acorn@8.14.0: {} + agent-base@6.0.2: + dependencies: + debug: 4.3.7 + transitivePeerDependencies: + - supports-color + ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 @@ -9899,24 +9922,24 @@ snapshots: astring@1.8.6: {} - astro-auto-import@0.4.2(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): + astro-auto-import@0.4.2(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): dependencies: '@types/node': 18.19.42 acorn: 8.12.1 - astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) - astro-embed@0.7.4(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): + astro-embed@0.7.4(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): dependencies: - '@astro-community/astro-embed-integration': 0.7.2(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + '@astro-community/astro-embed-integration': 0.7.2(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@astro-community/astro-embed-link-preview': 0.2.2 - '@astro-community/astro-embed-twitter': 0.5.6(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) - '@astro-community/astro-embed-vimeo': 0.3.10(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) - '@astro-community/astro-embed-youtube': 0.5.5(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) - astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + '@astro-community/astro-embed-twitter': 0.5.6(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + '@astro-community/astro-embed-vimeo': 0.3.10(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + '@astro-community/astro-embed-youtube': 0.5.5(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) - astro-expressive-code@0.35.6(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): + astro-expressive-code@0.35.6(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): dependencies: - astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) rehype-expressive-code: 0.35.6 astro-icon@1.1.1: @@ -9934,9 +9957,9 @@ snapshots: pathe: 1.1.2 recast: 0.23.9 - astro-integration-kit@0.16.1(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): + astro-integration-kit@0.16.1(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): dependencies: - astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) pathe: 1.1.2 recast: 0.23.9 @@ -9964,7 +9987,7 @@ snapshots: callsites: 4.2.0 fast-glob: 3.3.2 - astro@4.16.11(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3): + astro@4.16.13(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3): dependencies: '@astrojs/compiler': 2.10.3 '@astrojs/internal-helpers': 0.4.1 @@ -10015,7 +10038,7 @@ snapshots: prompts: 2.4.2 rehype: 13.0.2 semver: 7.6.3 - shiki: 1.22.2 + shiki: 1.23.0 tinyexec: 0.3.1 tsconfck: 3.1.4(typescript@5.6.3) unist-util-visit: 5.0.0 @@ -10043,7 +10066,7 @@ snapshots: - terser - typescript - astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3): + astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3): dependencies: '@astrojs/compiler': 2.10.3 '@astrojs/internal-helpers': 0.4.1 @@ -10094,7 +10117,7 @@ snapshots: prompts: 2.4.2 rehype: 13.0.2 semver: 7.6.3 - shiki: 1.22.2 + shiki: 1.23.0 tinyexec: 0.3.1 tsconfck: 3.1.4(typescript@5.6.3) unist-util-visit: 5.0.0 @@ -10738,6 +10761,8 @@ snapshots: '@emmetio/abbreviation': 2.3.3 '@emmetio/css-abbreviation': 2.1.8 + emoji-regex-xs@1.0.0: {} + emoji-regex@10.3.0: {} emoji-regex@8.0.0: {} @@ -10958,7 +10983,7 @@ snapshots: is-plain-obj: 4.1.0 is-stream: 4.0.1 npm-run-path: 6.0.0 - pretty-ms: 9.1.0 + pretty-ms: 9.2.0 signal-exit: 4.1.0 strip-final-newline: 4.0.0 yoctocolors: 2.1.1 @@ -12418,6 +12443,12 @@ snapshots: dependencies: mimic-function: 5.0.1 + oniguruma-to-es@0.1.2: + dependencies: + emoji-regex-xs: 1.0.0 + regex: 4.4.0 + regex-recursion: 4.2.1 + oniguruma-to-js@0.4.3: dependencies: regex: 4.3.3 @@ -12702,7 +12733,7 @@ snapshots: prettier@2.8.8: {} - pretty-ms@9.1.0: + pretty-ms@9.2.0: dependencies: parse-ms: 4.0.0 @@ -12784,8 +12815,16 @@ snapshots: regenerator-runtime@0.14.1: {} + regex-recursion@4.2.1: + dependencies: + regex-utilities: 2.3.0 + + regex-utilities@2.3.0: {} + regex@4.3.3: {} + regex@4.4.0: {} + registry-auth-token@5.0.2: dependencies: '@pnpm/npm-conf': 2.2.2 @@ -13189,15 +13228,17 @@ snapshots: '@shikijs/vscode-textmate': 9.3.0 '@types/hast': 3.0.4 - shiki@1.22.2: + shiki@1.23.0: dependencies: - '@shikijs/core': 1.22.2 - '@shikijs/engine-javascript': 1.22.2 - '@shikijs/engine-oniguruma': 1.22.2 - '@shikijs/types': 1.22.2 + '@shikijs/core': 1.23.0 + '@shikijs/engine-javascript': 1.23.0 + '@shikijs/engine-oniguruma': 1.23.0 + '@shikijs/types': 1.23.0 '@shikijs/vscode-textmate': 9.3.0 '@types/hast': 3.0.4 + shimmer@1.2.1: {} + signal-exit@3.0.7: {} signal-exit@4.1.0: {} @@ -13240,17 +13281,17 @@ snapshots: sprintf-js@1.0.3: {} - starlight-image-zoom@0.8.0(@astrojs/starlight@0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))): + starlight-image-zoom@0.8.0(@astrojs/starlight@0.28.3(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))): dependencies: - '@astrojs/starlight': 0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + '@astrojs/starlight': 0.28.3(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) rehype-raw: 7.0.0 unist-util-visit: 5.0.0 unist-util-visit-parents: 6.0.1 - starlight-typedoc@0.16.0(@astrojs/starlight@0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)))(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))(typedoc-plugin-markdown@4.2.9(typedoc@0.26.10(typescript@5.6.3)))(typedoc@0.26.10(typescript@5.6.3)): + starlight-typedoc@0.16.0(@astrojs/starlight@0.28.3(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)))(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))(typedoc-plugin-markdown@4.2.9(typedoc@0.26.10(typescript@5.6.3)))(typedoc@0.26.10(typescript@5.6.3)): dependencies: - '@astrojs/starlight': 0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) - astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + '@astrojs/starlight': 0.28.3(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) github-slugger: 2.0.0 typedoc: 0.26.10(typescript@5.6.3) typedoc-plugin-markdown: 4.2.9(typedoc@0.26.10(typescript@5.6.3)) @@ -13943,4 +13984,4 @@ snapshots: zod@3.23.8: {} - zwitch@2.0.4: {} \ No newline at end of file + zwitch@2.0.4: {} From b006140959438c20d13c9e42901b8732d7d55749 Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Sun, 17 Nov 2024 13:17:26 -0800 Subject: [PATCH 39/40] fix lockfile --- pnpm-lock.yaml | 1985 +++++++----------------------------------------- 1 file changed, 280 insertions(+), 1705 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d7d3c79cc..a51e42b3a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,7 +14,7 @@ catalogs: version: 0.14.3 '@astrojs/markdown-remark': specifier: ^5.2.0 - version: 5.2.0 + version: 5.3.0 '@astrojs/node': specifier: ^8.3.4 version: 8.3.4 @@ -38,11 +38,7 @@ catalogs: version: 20.14.13 astro: specifier: ^4.16.11 -<<<<<<< HEAD version: 4.16.13 -======= - version: 4.16.11 ->>>>>>> origin/dashboard-i18n astro-integration-kit: specifier: ^0.16.1 version: 0.16.1 @@ -51,13 +47,13 @@ catalogs: version: 0.6.1 sharp: specifier: ^0.33.4 - version: 0.33.4 + version: 0.33.5 typescript: specifier: ^5.6.3 version: 5.6.3 vite: specifier: ^5.4.8 - version: 5.4.8 + version: 5.4.11 docs: '@11ty/eleventy-fetch': specifier: ^4.0.1 @@ -121,7 +117,7 @@ catalogs: version: 6.0.0 shiki: specifier: ^1.22.0 - version: 1.22.0 + version: 1.23.0 shiki-transformer-color-highlight: specifier: ^0.2.0 version: 0.2.0 @@ -171,10 +167,10 @@ catalogs: min: '@astrojs/db': specifier: '>=0.14.2' - version: 0.14.2 + version: 0.14.3 astro: specifier: '>=4.16' - version: 4.16.2 + version: 4.16.13 studiocms: '@types/semver': specifier: ^7.5.8 @@ -219,7 +215,7 @@ catalogs: version: 2.0.0 remark-rehype: specifier: ^11.1.0 - version: 11.1.0 + version: 11.1.1 unified: specifier: ^11.0.5 version: 11.0.5 @@ -255,7 +251,7 @@ catalogs: version: 3.0.1 '@shikijs/transformers': specifier: ^1.14.1 - version: 1.14.1 + version: 1.22.0 '@types/react': specifier: ^18.3.5 version: 18.3.5 @@ -294,7 +290,7 @@ catalogs: version: 4.0.0 shiki: specifier: ^1.14.1 - version: 1.22.0 + version: 1.23.0 studiocms-shared: '@fontsource-variable/onest': specifier: 5.1.0 @@ -369,7 +365,7 @@ importers: dependencies: '@astrojs/db': specifier: catalog:min - version: 0.14.2(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1) + version: 0.14.3(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1) '@cloudinary/url-gen': specifier: catalog:studiocms-imagehandler version: 1.21.0 @@ -378,22 +374,22 @@ importers: version: 5.1.0 '@inox-tools/runtime-logger': specifier: catalog:studiocms-shared - version: 0.3.4(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.3.4(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@markdoc/markdoc': specifier: catalog:studiocms-renderer version: 0.4.0(@types/react@18.3.5)(react@18.3.1) '@matthiesenxyz/astrodtsbuilder': specifier: catalog:studiocms-shared - version: 0.1.2(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.1.2(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@matthiesenxyz/astrolace': specifier: catalog:studiocms-shared - version: 0.3.2(@types/react@18.3.5)(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.3.2(@types/react@18.3.5)(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@matthiesenxyz/integration-utils': specifier: catalog:studiocms-shared - version: 0.2.0(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.2.0(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@matthiesenxyz/unocss-preset-daisyui': specifier: catalog:studiocms-shared - version: 0.1.2(daisyui@4.12.10(postcss@8.4.47))(unocss@0.62.3(postcss@8.4.47)(rollup@4.21.0)(vite@5.4.8(@types/node@22.0.0))) + version: 0.1.2(daisyui@4.12.10(postcss@8.4.47))(unocss@0.62.3(postcss@8.4.47)(rollup@4.21.0)(vite@5.4.11(@types/node@22.0.0))) '@oslojs/binary': specifier: catalog:studiocms-auth version: 1.0.0 @@ -405,7 +401,7 @@ importers: version: 1.1.0 '@shikijs/transformers': specifier: catalog:studiocms-renderer - version: 1.14.1 + version: 1.22.0 '@studiocms/assets': specifier: workspace:* version: link:../studiocms_assets @@ -444,7 +440,7 @@ importers: version: 0.169.0 '@unocss/astro': specifier: catalog:studiocms-shared - version: 0.62.3(rollup@4.21.0)(vite@5.4.8(@types/node@22.0.0)) + version: 0.62.3(rollup@4.21.0)(vite@5.4.11(@types/node@22.0.0)) '@unocss/reset': specifier: catalog:studiocms-shared version: 0.62.3 @@ -453,10 +449,10 @@ importers: version: 2.0.1 astro: specifier: catalog:min - version: 4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + version: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) astro-integration-kit: specifier: 'catalog:' - version: 0.16.1(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.16.1(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) bcryptjs: specifier: catalog:studiocms-auth version: 2.4.3 @@ -477,7 +473,7 @@ importers: version: 1.2.2(marked@13.0.3) marked-shiki: specifier: catalog:studiocms-renderer - version: 1.1.0(marked@13.0.3)(shiki@1.22.0) + version: 1.1.0(marked@13.0.3)(shiki@1.23.0) marked-smartypants: specifier: catalog:studiocms-renderer version: 1.1.7(marked@13.0.3) @@ -492,7 +488,7 @@ importers: version: 10.0.1 remark-rehype: specifier: catalog:studiocms-core - version: 11.1.0 + version: 11.1.1 rollup-plugin-copy: specifier: catalog:studiocms-shared version: 3.5.0 @@ -501,13 +497,13 @@ importers: version: 7.6.3 shiki: specifier: catalog:studiocms-renderer - version: 1.22.0 + version: 1.23.0 three: specifier: catalog:studiocms-auth version: 0.170.0 unocss: specifier: catalog:studiocms-shared - version: 0.62.3(postcss@8.4.47)(rollup@4.21.0)(vite@5.4.8(@types/node@22.0.0)) + version: 0.62.3(postcss@8.4.47)(rollup@4.21.0)(vite@5.4.11(@types/node@22.0.0)) devDependencies: '@types/semver': specifier: catalog:studiocms @@ -517,38 +513,38 @@ importers: version: 5.6.3 vite: specifier: 'catalog:' - version: 5.4.8(@types/node@22.0.0) + version: 5.4.11(@types/node@22.0.0) packages/studiocms_assets: dependencies: astro: specifier: catalog:min - version: 4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + version: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) devDependencies: typescript: specifier: 'catalog:' version: 5.6.3 vite: specifier: 'catalog:' - version: 5.4.8(@types/node@22.0.0) + version: 5.4.11(@types/node@22.0.0) packages/studiocms_auth: dependencies: '@astrojs/db': specifier: catalog:min - version: 0.14.2(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1) + version: 0.14.3(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1) '@fontsource-variable/onest': specifier: catalog:studiocms-shared version: 5.1.0 '@inox-tools/runtime-logger': specifier: catalog:studiocms-shared - version: 0.3.4(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.3.4(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@matthiesenxyz/astrodtsbuilder': specifier: catalog:studiocms-shared - version: 0.1.2(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.1.2(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@matthiesenxyz/integration-utils': specifier: catalog:studiocms-shared - version: 0.2.0(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.2.0(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@oslojs/binary': specifier: catalog:studiocms-auth version: 1.0.0 @@ -575,10 +571,10 @@ importers: version: 2.0.1 astro: specifier: catalog:min - version: 4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + version: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) astro-integration-kit: specifier: 'catalog:' - version: 0.16.1(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.16.1(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) bcryptjs: specifier: catalog:studiocms-auth version: 2.4.3 @@ -594,7 +590,7 @@ importers: version: 5.6.3 vite: specifier: 'catalog:' - version: 5.4.8(@types/node@22.0.0) + version: 5.4.11(@types/node@22.0.0) packages/studiocms_betaresources: dependencies: @@ -603,14 +599,14 @@ importers: version: link:../studiocms_assets astro: specifier: catalog:min - version: 4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + version: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) devDependencies: typescript: specifier: 'catalog:' version: 5.6.3 vite: specifier: 'catalog:' - version: 5.4.8(@types/node@22.0.0) + version: 5.4.11(@types/node@22.0.0) packages/studiocms_blog: dependencies: @@ -625,10 +621,10 @@ importers: version: link:../studiocms_frontend astro: specifier: catalog:min - version: 4.16.2(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) + version: 4.16.13(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) astro-theme-provider: specifier: 'catalog:' - version: 0.6.1(astro@4.16.2(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.6.1(astro@4.16.13(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)) devDependencies: '@types/node': specifier: 'catalog:' @@ -638,28 +634,28 @@ importers: dependencies: '@astrojs/db': specifier: catalog:min - version: 0.14.2(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1) + version: 0.14.3(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1) '@markdoc/markdoc': specifier: catalog:studiocms-renderer version: 0.4.0(@types/react@18.3.5)(react@18.3.1) '@matthiesenxyz/astrodtsbuilder': specifier: catalog:studiocms-shared - version: 0.1.2(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.1.2(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@matthiesenxyz/astrolace': specifier: catalog:studiocms-shared - version: 0.3.2(@types/react@18.3.5)(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.3.2(@types/react@18.3.5)(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@matthiesenxyz/integration-utils': specifier: catalog:studiocms-shared - version: 0.2.0(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.2.0(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@studiocms/robotstxt': specifier: workspace:* version: link:../studiocms_robotstxt astro: specifier: catalog:min - version: 4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + version: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) astro-integration-kit: specifier: 'catalog:' - version: 0.16.1(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.16.1(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) marked: specifier: catalog:studiocms-renderer version: 13.0.3 @@ -671,10 +667,10 @@ importers: version: 2.0.0 remark-rehype: specifier: catalog:studiocms-core - version: 11.1.0 + version: 11.1.1 shiki: specifier: catalog:studiocms-renderer - version: 1.22.0 + version: 1.23.0 unified: specifier: catalog:studiocms-core version: 11.0.5 @@ -684,38 +680,31 @@ importers: version: 5.6.3 vite: specifier: 'catalog:' - version: 5.4.8(@types/node@22.0.0) + version: 5.4.11(@types/node@22.0.0) packages/studiocms_dashboard: dependencies: '@astrojs/db': specifier: 'catalog:' -<<<<<<< HEAD version: 0.14.3(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1) '@astrojs/web-vitals': specifier: 'catalog:' version: 3.0.0(@astrojs/db@0.14.3(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1)) -======= - version: 0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1) - '@astrojs/web-vitals': - specifier: 'catalog:' - version: 3.0.0(@astrojs/db@0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1)) ->>>>>>> origin/dashboard-i18n '@inox-tools/runtime-logger': specifier: catalog:studiocms-shared - version: 0.3.4(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.3.4(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@matthiesenxyz/astrodtsbuilder': specifier: catalog:studiocms-shared - version: 0.1.2(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.1.2(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@matthiesenxyz/astrolace': specifier: catalog:studiocms-shared - version: 0.3.2(@types/react@18.3.5)(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.3.2(@types/react@18.3.5)(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@matthiesenxyz/integration-utils': specifier: catalog:studiocms-shared - version: 0.2.0(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.2.0(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@matthiesenxyz/unocss-preset-daisyui': specifier: catalog:studiocms-shared - version: 0.1.2(daisyui@4.12.10(postcss@8.4.47))(unocss@0.62.3(postcss@8.4.47)(rollup@4.21.0)(vite@5.4.8(@types/node@22.0.0))) + version: 0.1.2(daisyui@4.12.10(postcss@8.4.47))(unocss@0.62.3(postcss@8.4.47)(rollup@4.21.0)(vite@5.4.11(@types/node@22.0.0))) '@studiocms/assets': specifier: workspace:* version: link:../studiocms_assets @@ -730,35 +719,35 @@ importers: version: link:../studiocms_renderers '@unocss/astro': specifier: catalog:studiocms-shared - version: 0.62.3(rollup@4.21.0)(vite@5.4.8(@types/node@22.0.0)) + version: 0.62.3(rollup@4.21.0)(vite@5.4.11(@types/node@22.0.0)) '@unocss/reset': specifier: catalog:studiocms-shared version: 0.62.3 astro: specifier: catalog:min - version: 4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + version: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) astro-integration-kit: specifier: 'catalog:' - version: 0.16.1(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.16.1(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) daisyui: specifier: catalog:studiocms-shared version: 4.12.10(postcss@8.4.47) unocss: specifier: catalog:studiocms-shared - version: 0.62.3(postcss@8.4.47)(rollup@4.21.0)(vite@5.4.8(@types/node@22.0.0)) + version: 0.62.3(postcss@8.4.47)(rollup@4.21.0)(vite@5.4.11(@types/node@22.0.0)) devDependencies: typescript: specifier: 'catalog:' version: 5.6.3 vite: specifier: 'catalog:' - version: 5.4.8(@types/node@22.0.0) + version: 5.4.11(@types/node@22.0.0) packages/studiocms_devapps: dependencies: '@astrojs/db': specifier: catalog:min - version: 0.14.2(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1) + version: 0.14.3(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1) '@libsql/client': specifier: catalog:studiocms-devapps version: 0.14.0 @@ -773,10 +762,10 @@ importers: version: 5.0.5 astro: specifier: catalog:min - version: 4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + version: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) astro-integration-kit: specifier: 'catalog:' - version: 0.16.1(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.16.1(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) cheerio: specifier: catalog:studiocms-devapps version: 1.0.0 @@ -792,13 +781,13 @@ importers: version: 5.6.3 vite: specifier: 'catalog:' - version: 5.4.8(@types/node@22.0.0) + version: 5.4.11(@types/node@22.0.0) packages/studiocms_frontend: dependencies: '@matthiesenxyz/integration-utils': specifier: catalog:studiocms-shared - version: 0.2.0(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.2.0(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@studiocms/core': specifier: workspace:* version: link:../studiocms_core @@ -807,17 +796,17 @@ importers: version: link:../studiocms_renderers astro: specifier: catalog:min - version: 4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + version: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) astro-integration-kit: specifier: 'catalog:' - version: 0.16.1(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.16.1(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) devDependencies: typescript: specifier: 'catalog:' version: 5.6.3 vite: specifier: 'catalog:' - version: 5.4.8(@types/node@22.0.0) + version: 5.4.11(@types/node@22.0.0) packages/studiocms_imagehandler: dependencies: @@ -826,62 +815,62 @@ importers: version: 1.21.0 '@matthiesenxyz/astrodtsbuilder': specifier: catalog:studiocms-shared - version: 0.1.2(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.1.2(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@matthiesenxyz/integration-utils': specifier: catalog:studiocms-shared - version: 0.2.0(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.2.0(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@studiocms/core': specifier: workspace:* version: link:../studiocms_core astro: specifier: catalog:min - version: 4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + version: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) astro-integration-kit: specifier: 'catalog:' - version: 0.16.1(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.16.1(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) devDependencies: typescript: specifier: 'catalog:' version: 5.6.3 vite: specifier: 'catalog:' - version: 5.4.8(@types/node@22.0.0) + version: 5.4.11(@types/node@22.0.0) packages/studiocms_renderers: dependencies: '@astrojs/markdown-remark': specifier: 'catalog:' - version: 5.2.0 + version: 5.3.0 '@astrojs/react': specifier: 'catalog:' - version: 3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.8(@types/node@22.0.0)) + version: 3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.11(@types/node@22.0.0)) '@inox-tools/runtime-logger': specifier: catalog:studiocms-shared - version: 0.3.4(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.3.4(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@markdoc/markdoc': specifier: catalog:studiocms-renderer version: 0.4.0(@types/react@18.3.5)(react@18.3.1) '@matthiesenxyz/astrodtsbuilder': specifier: catalog:studiocms-shared - version: 0.1.2(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.1.2(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@matthiesenxyz/integration-utils': specifier: catalog:studiocms-shared - version: 0.2.0(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.2.0(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@mdx-js/mdx': specifier: catalog:studiocms-renderer version: 3.0.1 '@shikijs/transformers': specifier: catalog:studiocms-renderer - version: 1.14.1 + version: 1.22.0 '@studiocms/core': specifier: workspace:* version: link:../studiocms_core astro: specifier: catalog:min - version: 4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + version: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) astro-integration-kit: specifier: 'catalog:' - version: 0.16.1(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + version: 0.16.1(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) marked: specifier: catalog:studiocms-renderer version: 13.0.3 @@ -896,7 +885,7 @@ importers: version: 1.2.2(marked@13.0.3) marked-shiki: specifier: catalog:studiocms-renderer - version: 1.1.0(marked@13.0.3)(shiki@1.22.0) + version: 1.1.0(marked@13.0.3)(shiki@1.23.0) marked-smartypants: specifier: catalog:studiocms-renderer version: 1.1.7(marked@13.0.3) @@ -914,7 +903,7 @@ importers: version: 4.0.0 shiki: specifier: catalog:studiocms-renderer - version: 1.22.0 + version: 1.23.0 unified: specifier: catalog:studiocms-core version: 11.0.5 @@ -930,13 +919,13 @@ importers: version: 5.6.3 vite: specifier: 'catalog:' - version: 5.4.8(@types/node@22.0.0) + version: 5.4.11(@types/node@22.0.0) packages/studiocms_robotstxt: dependencies: astro: specifier: catalog:min - version: 4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + version: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) packages/studiocms_ui: dependencies: @@ -945,20 +934,19 @@ importers: version: 5.1.0 astro: specifier: catalog:min - version: 4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + version: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) devDependencies: typescript: specifier: 'catalog:' version: 5.6.3 vite: specifier: 'catalog:' - version: 5.4.8(@types/node@22.0.0) + version: 5.4.11(@types/node@22.0.0) playgrounds/node: dependencies: '@astrojs/db': specifier: 'catalog:' -<<<<<<< HEAD version: 0.14.3(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1) '@astrojs/node': specifier: 'catalog:' @@ -969,15 +957,6 @@ importers: '@sentry/astro': specifier: ^8.38.0 version: 8.38.0(astro@4.16.13(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)) -======= - version: 0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1) - '@astrojs/node': - specifier: 'catalog:' - version: 8.3.4(astro@4.16.11(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)) - '@astrojs/web-vitals': - specifier: 'catalog:' - version: 3.0.0(@astrojs/db@0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1)) ->>>>>>> origin/dashboard-i18n '@studiocms/blog': specifier: workspace:* version: link:../../packages/studiocms_blog @@ -986,14 +965,10 @@ importers: version: link:../../packages/studiocms_devapps astro: specifier: 'catalog:' -<<<<<<< HEAD version: 4.16.13(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) -======= - version: 4.16.11(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) ->>>>>>> origin/dashboard-i18n sharp: specifier: 'catalog:' - version: 0.33.4 + version: 0.33.5 studiocms: specifier: workspace:* version: link:../../packages/studiocms @@ -1009,11 +984,7 @@ importers: dependencies: '@astrojs/node': specifier: 'catalog:' -<<<<<<< HEAD version: 8.3.4(astro@4.16.13(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)) -======= - version: 8.3.4(astro@4.16.11(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)) ->>>>>>> origin/dashboard-i18n '@fontsource-variable/onest': specifier: catalog:studiocms-shared version: 5.1.0 @@ -1025,11 +996,7 @@ importers: version: link:../../packages/studiocms_ui astro: specifier: 'catalog:' -<<<<<<< HEAD version: 4.16.13(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) -======= - version: 4.16.11(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) ->>>>>>> origin/dashboard-i18n devDependencies: '@types/node': specifier: 'catalog:' @@ -1048,43 +1015,25 @@ importers: version: 0.9.4(typescript@5.6.3) '@astrojs/db': specifier: 'catalog:' -<<<<<<< HEAD version: 0.14.3(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1) '@astrojs/node': specifier: 'catalog:' version: 8.3.4(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) -======= - version: 0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1) - '@astrojs/node': - specifier: 'catalog:' - version: 8.3.4(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) ->>>>>>> origin/dashboard-i18n '@astrojs/react': specifier: 'catalog:' version: 3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.11(@types/node@22.0.0)) '@astrojs/starlight': specifier: 'catalog:' -<<<<<<< HEAD version: 0.28.3(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@astrojs/web-vitals': specifier: 'catalog:' version: 3.0.0(@astrojs/db@0.14.3(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1)) -======= - version: 0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) - '@astrojs/web-vitals': - specifier: 'catalog:' - version: 3.0.0(@astrojs/db@0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1)) ->>>>>>> origin/dashboard-i18n '@fontsource-variable/onest': specifier: catalog:studiocms-shared version: 5.1.0 '@lorenzo_lewis/starlight-utils': specifier: catalog:docs -<<<<<<< HEAD version: 0.2.0(@astrojs/starlight@0.28.3(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)))(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) -======= - version: 0.2.0(@astrojs/starlight@0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)))(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) ->>>>>>> origin/dashboard-i18n '@shikijs/transformers': specifier: catalog:docs version: 1.22.0 @@ -1111,17 +1060,10 @@ importers: version: 3.0.2 astro: specifier: 'catalog:' -<<<<<<< HEAD version: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) astro-embed: specifier: catalog:docs version: 0.7.4(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) -======= - version: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) - astro-embed: - specifier: catalog:docs - version: 0.7.4(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) ->>>>>>> origin/dashboard-i18n hast: specifier: catalog:docs version: 1.0.0 @@ -1163,26 +1105,19 @@ importers: version: 6.0.0 sharp: specifier: 'catalog:' - version: 0.33.4 + version: 0.33.5 shiki: specifier: catalog:docs - version: 1.22.0 + version: 1.23.0 shiki-transformer-color-highlight: specifier: catalog:docs version: 0.2.0 starlight-image-zoom: specifier: catalog:docs -<<<<<<< HEAD version: 0.8.0(@astrojs/starlight@0.28.3(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))) starlight-typedoc: specifier: catalog:docs version: 0.16.0(@astrojs/starlight@0.28.3(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)))(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))(typedoc-plugin-markdown@4.2.9(typedoc@0.26.10(typescript@5.6.3)))(typedoc@0.26.10(typescript@5.6.3)) -======= - version: 0.8.0(@astrojs/starlight@0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))) - starlight-typedoc: - specifier: catalog:docs - version: 0.16.0(@astrojs/starlight@0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)))(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))(typedoc-plugin-markdown@4.2.9(typedoc@0.26.10(typescript@5.6.3)))(typedoc@0.26.10(typescript@5.6.3)) ->>>>>>> origin/dashboard-i18n studiocms: specifier: workspace:* version: link:../../packages/studiocms @@ -1206,11 +1141,7 @@ importers: version: 0.9.4(typescript@5.6.3) '@astrojs/tailwind': specifier: 'catalog:' -<<<<<<< HEAD version: 5.1.2(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))(tailwindcss@3.4.14) -======= - version: 5.1.2(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))(tailwindcss@3.4.14) ->>>>>>> origin/dashboard-i18n '@fontsource-variable/onest': specifier: catalog:studiocms-shared version: 5.1.0 @@ -1225,11 +1156,7 @@ importers: version: 0.5.15(tailwindcss@3.4.14) astro: specifier: 'catalog:' -<<<<<<< HEAD version: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) -======= - version: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) ->>>>>>> origin/dashboard-i18n astro-icon: specifier: catalog:landing version: 1.1.1 @@ -1247,7 +1174,7 @@ importers: version: 0.3.2 sharp: specifier: 'catalog:' - version: 0.33.4 + version: 0.33.5 tailwind-merge: specifier: catalog:landing version: 2.5.4 @@ -1316,9 +1243,6 @@ packages: '@astrojs/compiler@2.10.3': resolution: {integrity: sha512-bL/O7YBxsFt55YHU021oL+xz+B/9HvGNId3F9xURN16aeqDK9juHGktdkCSXz+U4nqFACq6ZFvWomOzhV+zfPw==} - '@astrojs/db@0.14.2': - resolution: {integrity: sha512-eMudd6KupdcUr3sN58g5qagpCX5PApFy1zRrfPnOMvE6Ndnx+vQtjOkZPgqQ+5vTJ04GrMwzuqhjRB0waaJVoA==} - '@astrojs/db@0.14.3': resolution: {integrity: sha512-GL7JvdZfTfelH0MSJcgF2zKnOAhCkzAgQlz2LhKZ0YqgJTk+5/5lMsFQtSynJ/CwRKO2XQjop1pvMl6F9XKCNw==} @@ -1399,10 +1323,6 @@ packages: '@astrojs/yaml2ts@0.2.1': resolution: {integrity: sha512-CBaNwDQJz20E5WxzQh4thLVfhB3JEEGz72wRA+oJp6fQR37QLAqXZJU0mHC+yqMOQ6oj0GfRPJrz6hjf+zm6zA==} - '@babel/code-frame@7.24.7': - resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} - engines: {node: '>=6.9.0'} - '@babel/code-frame@7.25.7': resolution: {integrity: sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==} engines: {node: '>=6.9.0'} @@ -1411,26 +1331,10 @@ packages: resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.25.2': - resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.25.7': - resolution: {integrity: sha512-9ickoLz+hcXCeh7jrcin+/SLWm+GkxE2kTvoYyp38p4WkdFXfQJxDFGWp/YHjiKLPx06z2A7W8XKuqbReXDzsw==} - engines: {node: '>=6.9.0'} - '@babel/compat-data@7.26.2': resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==} engines: {node: '>=6.9.0'} - '@babel/core@7.25.2': - resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.25.7': - resolution: {integrity: sha512-yJ474Zv3cwiSOO9nXJuqzvwEeM+chDuQ8GJirw+pZ91sCGCyOZ3dJkVE09fTV0VEVzXyLWhh3G/AolYTPX7Mow==} - engines: {node: '>=6.9.0'} - '@babel/core@7.25.8': resolution: {integrity: sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg==} engines: {node: '>=6.9.0'} @@ -1439,10 +1343,6 @@ packages: resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} engines: {node: '>=6.9.0'} - '@babel/generator@7.25.5': - resolution: {integrity: sha512-abd43wyLfbWoxC6ahM8xTkqLpGB2iWBVyuKC9/srhFunCd1SDNrV1s72bBpK4hLj8KLzHBBcOblvLQZBNw9r3w==} - engines: {node: '>=6.9.0'} - '@babel/generator@7.25.7': resolution: {integrity: sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==} engines: {node: '>=6.9.0'} @@ -1451,22 +1351,10 @@ packages: resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} engines: {node: '>=6.9.0'} - '@babel/helper-annotate-as-pure@7.24.7': - resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-annotate-as-pure@7.25.7': - resolution: {integrity: sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==} - engines: {node: '>=6.9.0'} - '@babel/helper-annotate-as-pure@7.25.9': resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.25.2': - resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} - engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.25.7': resolution: {integrity: sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==} engines: {node: '>=6.9.0'} @@ -1485,24 +1373,10 @@ packages: resolution: {integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.24.7': - resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-imports@7.25.7': - resolution: {integrity: sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==} - engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.25.9': resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.25.2': - resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/helper-module-transforms@7.25.7': resolution: {integrity: sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==} engines: {node: '>=6.9.0'} @@ -1519,14 +1393,6 @@ packages: resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.24.8': - resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-plugin-utils@7.25.7': - resolution: {integrity: sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==} - engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.25.9': resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} engines: {node: '>=6.9.0'} @@ -1537,10 +1403,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-simple-access@7.24.7': - resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} - engines: {node: '>=6.9.0'} - '@babel/helper-simple-access@7.25.7': resolution: {integrity: sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==} engines: {node: '>=6.9.0'} @@ -1549,46 +1411,18 @@ packages: resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.24.8': - resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.25.7': - resolution: {integrity: sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==} - engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.25.9': resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.24.7': - resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.25.7': - resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.25.9': resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.24.8': - resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-option@7.25.7': - resolution: {integrity: sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.25.9': resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.25.0': - resolution: {integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==} - engines: {node: '>=6.9.0'} - '@babel/helpers@7.25.7': resolution: {integrity: sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==} engines: {node: '>=6.9.0'} @@ -1597,24 +1431,10 @@ packages: resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} engines: {node: '>=6.9.0'} - '@babel/highlight@7.24.7': - resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} - engines: {node: '>=6.9.0'} - '@babel/highlight@7.25.7': resolution: {integrity: sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.25.4': - resolution: {integrity: sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/parser@7.25.7': - resolution: {integrity: sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.25.8': resolution: {integrity: sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==} engines: {node: '>=6.0.0'} @@ -1625,18 +1445,6 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-syntax-jsx@7.24.7': - resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-jsx@7.25.7': - resolution: {integrity: sha512-ruZOnKO+ajVL/MVx+PwNBPOkrnXTXoWMtte1MBpegfCArhqOe3Bj52avVj1huLLxNKYKXYaSxZ2F+woK1ekXfw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-jsx@7.25.9': resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} engines: {node: '>=6.9.0'} @@ -1667,12 +1475,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx@7.25.7': - resolution: {integrity: sha512-vILAg5nwGlR9EXE8JIOX4NHXd49lrYbN8hnjffDtoULwpL9hUx/N55nqh2qd0q6FyNDfjl9V79ecKGvFbcSA0Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-react-jsx@7.25.9': resolution: {integrity: sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==} engines: {node: '>=6.9.0'} @@ -1695,10 +1497,6 @@ packages: resolution: {integrity: sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==} engines: {node: '>=6.9.0'} - '@babel/template@7.25.0': - resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} - engines: {node: '>=6.9.0'} - '@babel/template@7.25.7': resolution: {integrity: sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==} engines: {node: '>=6.9.0'} @@ -1707,10 +1505,6 @@ packages: resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.25.4': - resolution: {integrity: sha512-VJ4XsrD+nOvlXyLzmLzUs/0qjFS4sK30te5yEFlvbbUNEgKaVb2BHZUpAL+ttLPQAHNrsI3zZisbfha5Cvr8vg==} - engines: {node: '>=6.9.0'} - '@babel/traverse@7.25.7': resolution: {integrity: sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==} engines: {node: '>=6.9.0'} @@ -1719,14 +1513,6 @@ packages: resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} engines: {node: '>=6.9.0'} - '@babel/types@7.25.6': - resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.25.7': - resolution: {integrity: sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ==} - engines: {node: '>=6.9.0'} - '@babel/types@7.25.8': resolution: {integrity: sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==} engines: {node: '>=6.9.0'} @@ -2216,218 +2002,105 @@ packages: '@iconify/utils@2.1.32': resolution: {integrity: sha512-LeifFZPPKu28O3AEDpYJNdEbvS4/ojAPyIW+pF/vUpJTYnbTiXUHkCh0bwgFRzKvdpb8H4Fbfd/742++MF4fPQ==} - '@img/sharp-darwin-arm64@0.33.4': - resolution: {integrity: sha512-p0suNqXufJs9t3RqLBO6vvrgr5OhgbWp76s5gTRvdmxmuv9E1rcaqGUsl3l4mKVmXPkTkTErXediAui4x+8PSA==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [darwin] - '@img/sharp-darwin-arm64@0.33.5': resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [darwin] - '@img/sharp-darwin-x64@0.33.4': - resolution: {integrity: sha512-0l7yRObwtTi82Z6ebVI2PnHT8EB2NxBgpK2MiKJZJ7cz32R4lxd001ecMhzzsZig3Yv9oclvqqdV93jo9hy+Dw==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [darwin] - '@img/sharp-darwin-x64@0.33.5': resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [darwin] - '@img/sharp-libvips-darwin-arm64@1.0.2': - resolution: {integrity: sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==} - engines: {macos: '>=11', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [darwin] - '@img/sharp-libvips-darwin-arm64@1.0.4': resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} cpu: [arm64] os: [darwin] - '@img/sharp-libvips-darwin-x64@1.0.2': - resolution: {integrity: sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==} - engines: {macos: '>=10.13', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [darwin] - '@img/sharp-libvips-darwin-x64@1.0.4': resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} cpu: [x64] os: [darwin] - '@img/sharp-libvips-linux-arm64@1.0.2': - resolution: {integrity: sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==} - engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [linux] - '@img/sharp-libvips-linux-arm64@1.0.4': resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} cpu: [arm64] os: [linux] - '@img/sharp-libvips-linux-arm@1.0.2': - resolution: {integrity: sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==} - engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm] - os: [linux] - '@img/sharp-libvips-linux-arm@1.0.5': resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} cpu: [arm] os: [linux] - '@img/sharp-libvips-linux-s390x@1.0.2': - resolution: {integrity: sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==} - engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [s390x] - os: [linux] - '@img/sharp-libvips-linux-s390x@1.0.4': resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} cpu: [s390x] os: [linux] - '@img/sharp-libvips-linux-x64@1.0.2': - resolution: {integrity: sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==} - engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [linux] - '@img/sharp-libvips-linux-x64@1.0.4': resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} cpu: [x64] os: [linux] - '@img/sharp-libvips-linuxmusl-arm64@1.0.2': - resolution: {integrity: sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==} - engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [linux] - '@img/sharp-libvips-linuxmusl-arm64@1.0.4': resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} cpu: [arm64] os: [linux] - '@img/sharp-libvips-linuxmusl-x64@1.0.2': - resolution: {integrity: sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==} - engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [linux] - '@img/sharp-libvips-linuxmusl-x64@1.0.4': resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} cpu: [x64] os: [linux] - '@img/sharp-linux-arm64@0.33.4': - resolution: {integrity: sha512-2800clwVg1ZQtxwSoTlHvtm9ObgAax7V6MTAB/hDT945Tfyy3hVkmiHpeLPCKYqYR1Gcmv1uDZ3a4OFwkdBL7Q==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [linux] - '@img/sharp-linux-arm64@0.33.5': resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - '@img/sharp-linux-arm@0.33.4': - resolution: {integrity: sha512-RUgBD1c0+gCYZGCCe6mMdTiOFS0Zc/XrN0fYd6hISIKcDUbAW5NtSQW9g/powkrXYm6Vzwd6y+fqmExDuCdHNQ==} - engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm] - os: [linux] - '@img/sharp-linux-arm@0.33.5': resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] - '@img/sharp-linux-s390x@0.33.4': - resolution: {integrity: sha512-h3RAL3siQoyzSoH36tUeS0PDmb5wINKGYzcLB5C6DIiAn2F3udeFAum+gj8IbA/82+8RGCTn7XW8WTFnqag4tQ==} - engines: {glibc: '>=2.31', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [s390x] - os: [linux] - '@img/sharp-linux-s390x@0.33.5': resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] - '@img/sharp-linux-x64@0.33.4': - resolution: {integrity: sha512-GoR++s0XW9DGVi8SUGQ/U4AeIzLdNjHka6jidVwapQ/JebGVQIpi52OdyxCNVRE++n1FCLzjDovJNozif7w/Aw==} - engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [linux] - '@img/sharp-linux-x64@0.33.5': resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - '@img/sharp-linuxmusl-arm64@0.33.4': - resolution: {integrity: sha512-nhr1yC3BlVrKDTl6cO12gTpXMl4ITBUZieehFvMntlCXFzH2bvKG76tBL2Y/OqhupZt81pR7R+Q5YhJxW0rGgQ==} - engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [arm64] - os: [linux] - '@img/sharp-linuxmusl-arm64@0.33.5': resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - '@img/sharp-linuxmusl-x64@0.33.4': - resolution: {integrity: sha512-uCPTku0zwqDmZEOi4ILyGdmW76tH7dm8kKlOIV1XC5cLyJ71ENAAqarOHQh0RLfpIpbV5KOpXzdU6XkJtS0daw==} - engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [linux] - '@img/sharp-linuxmusl-x64@0.33.5': resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - '@img/sharp-wasm32@0.33.4': - resolution: {integrity: sha512-Bmmauh4sXUsUqkleQahpdNXKvo+wa1V9KhT2pDA4VJGKwnKMJXiSTGphn0gnJrlooda0QxCtXc6RX1XAU6hMnQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [wasm32] - '@img/sharp-wasm32@0.33.5': resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] - '@img/sharp-win32-ia32@0.33.4': - resolution: {integrity: sha512-99SJ91XzUhYHbx7uhK3+9Lf7+LjwMGQZMDlO/E/YVJ7Nc3lyDFZPGhjwiYdctoH2BOzW9+TnfqcaMKt0jHLdqw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [ia32] - os: [win32] - '@img/sharp-win32-ia32@0.33.5': resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] - '@img/sharp-win32-x64@0.33.4': - resolution: {integrity: sha512-3QLocdTRVIrFNye5YocZl+KKpYKP+fksi1QhmOArgx7GyhIbQp/WrJRu176jm8IxromS7RIkzMiMINVdBtC8Aw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} - cpu: [x64] - os: [win32] - '@img/sharp-win32-x64@0.33.5': resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -3020,24 +2693,6 @@ packages: resolution: {integrity: sha512-xBaJish5OeGmniDj9cW5PRa/PtmuVU3ziqrbr5xJj901ZDN4TosrVaNZpEiLZAxdfnhAe7uQ7QFWfjPe9d9K2Q==} engines: {node: '>= 10'} - '@rollup/pluginutils@5.1.0': - resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/pluginutils@5.1.2': - resolution: {integrity: sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - '@rollup/pluginutils@5.1.3': resolution: {integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==} engines: {node: '>=14.0.0'} @@ -3130,7 +2785,6 @@ packages: '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} -<<<<<<< HEAD '@sentry-internal/browser-utils@8.38.0': resolution: {integrity: sha512-5QMVcssrAcmjKT0NdFYcX0b0wwZovGAZ9L2GajErXtHkBenjI2sgR2+5J7n+QZGuk2SC1qhGmT1O9i3p3UEwew==} engines: {node: '>=14.18'} @@ -3241,46 +2895,23 @@ packages: resolution: {integrity: sha512-zIieP1VLWQb3wUjFJlwOAoaaJygJhXeUoGd0e/Ha2RLb2eW2S+4gjf6y6NqyY71tZ74LYVZKg/4prB6FAZSMXQ==} engines: {node: '>= 14'} -======= ->>>>>>> origin/dashboard-i18n - '@shikijs/core@1.14.1': - resolution: {integrity: sha512-KyHIIpKNaT20FtFPFjCQB5WVSTpLR/n+jQXhWHWVUMm9MaOaG9BGOG0MSyt7yA4+Lm+4c9rTc03tt3nYzeYSfw==} - '@shikijs/core@1.22.0': resolution: {integrity: sha512-S8sMe4q71TJAW+qG93s5VaiihujRK6rqDFqBnxqvga/3LvqHEnxqBIOPkt//IdXVtHkQWKu4nOQNk0uBGicU7Q==} -<<<<<<< HEAD '@shikijs/core@1.23.0': resolution: {integrity: sha512-J4Fo22oBlfRHAXec+1AEzcowv+Qdf4ZQkuP/X/UHYH9+KA9LvyFXSXyS+HxuBRFfon+u7bsmKdRBjoZlbDVRkQ==} -======= - '@shikijs/core@1.22.2': - resolution: {integrity: sha512-bvIQcd8BEeR1yFvOYv6HDiyta2FFVePbzeowf5pPS1avczrPK+cjmaxxh0nx5QzbON7+Sv0sQfQVciO7bN72sg==} ->>>>>>> origin/dashboard-i18n '@shikijs/engine-javascript@1.22.0': resolution: {integrity: sha512-AeEtF4Gcck2dwBqCFUKYfsCq0s+eEbCEbkUuFou53NZ0sTGnJnJ/05KHQFZxpii5HMXbocV9URYVowOP2wH5kw==} -<<<<<<< HEAD '@shikijs/engine-javascript@1.23.0': resolution: {integrity: sha512-CcrppseWShG+8Efp1iil9divltuXVdCaU4iu+CKvzTGZO5RmXyAiSx668M7VbX8+s/vt1ZKu75Vn/jWi8O3G/Q==} -======= - '@shikijs/engine-javascript@1.22.2': - resolution: {integrity: sha512-iOvql09ql6m+3d1vtvP8fLCVCK7BQD1pJFmHIECsujB0V32BJ0Ab6hxk1ewVSMFA58FI0pR2Had9BKZdyQrxTw==} ->>>>>>> origin/dashboard-i18n '@shikijs/engine-oniguruma@1.22.0': resolution: {integrity: sha512-5iBVjhu/DYs1HB0BKsRRFipRrD7rqjxlWTj4F2Pf+nQSPqc3kcyqFFeZXnBMzDf0HdqaFVvhDRAGiYNvyLP+Mw==} -<<<<<<< HEAD '@shikijs/engine-oniguruma@1.23.0': resolution: {integrity: sha512-gS8bZLqVvmZXX+E5JUMJICsBp+kx6gj79MH/UEpKHKIqnUzppgbmEn6zLa6mB5D+sHse2gFei3YYJxQe1EzZXQ==} -======= - '@shikijs/engine-oniguruma@1.22.2': - resolution: {integrity: sha512-GIZPAGzQOy56mGvWMoZRPggn0dTlBf1gutV5TdceLCZlFNqWmuc7u+CzD0Gd9vQUTgLbrt0KLzz6FNprqYAxlA==} ->>>>>>> origin/dashboard-i18n - - '@shikijs/transformers@1.14.1': - resolution: {integrity: sha512-JJqL8QBVCJh3L61jqqEXgFq1cTycwjcGj7aSmqOEsbxnETM9hRlaB74QuXvY/fVJNjbNt8nvWo0VwAXKvMSLRg==} '@shikijs/transformers@1.22.0': resolution: {integrity: sha512-k7iMOYuGQA62KwAuJOQBgH2IQb5vP8uiB3lMvAMGUgAMMurePOx3Z7oNqJdcpxqZP6I9cc7nc4DNqSKduCxmdg==} @@ -3291,13 +2922,8 @@ packages: '@shikijs/types@1.22.0': resolution: {integrity: sha512-Fw/Nr7FGFhlQqHfxzZY8Cwtwk5E9nKDUgeLjZgt3UuhcM3yJR9xj3ZGNravZZok8XmEZMiYkSMTPlPkULB8nww==} -<<<<<<< HEAD '@shikijs/types@1.23.0': resolution: {integrity: sha512-HiwzsihRao+IbPk7FER/EQT/D0dEEK3n5LAtHDzL5iRT+JMblA7y9uitUnjEnHeLkKigNM+ZplrP7MuEyyc5kA==} -======= - '@shikijs/types@1.22.2': - resolution: {integrity: sha512-NCWDa6LGZqTuzjsGfXOBWfjS/fDIbDdmVDug+7ykVe1IKT4c1gakrvlfFYp5NhAXH/lyqLM8wsAPo5wNy73Feg==} ->>>>>>> origin/dashboard-i18n '@shikijs/vscode-textmate@9.3.0': resolution: {integrity: sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==} @@ -3632,13 +3258,10 @@ packages: engines: {node: '>=0.4.0'} hasBin: true -<<<<<<< HEAD agent-base@6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} -======= ->>>>>>> origin/dashboard-i18n ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} @@ -3759,18 +3382,8 @@ packages: '@astrojs/db': optional: true -<<<<<<< HEAD astro@4.16.13: resolution: {integrity: sha512-Mtd76+BC0zLWqoXpf9xc731AhdH4MNh5JFHYdLRvSH0Nqn48hA64dPGh/cWsJvh/DZFmC0NTZusM1Qq2gyNaVg==} -======= - astro@4.16.11: - resolution: {integrity: sha512-Pm0ATut4f8kM2OKbSDbatO5Q/f2ynt1dbc5UGQN8I5bFnJvDbJj3R1NE513BOXXv4GQBKJZUshcZEMvlZpA61g==} ->>>>>>> origin/dashboard-i18n - engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} - hasBin: true - - astro@4.16.2: - resolution: {integrity: sha512-Dfkpyt6sA+nv6LnOJr+7bt+gQF5Qh02yqVgyes4c4SvcPScteq1bLX22/z/XW+VU0vlciJOMiM8GWtcDiF6gUQ==} engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true @@ -3781,13 +3394,6 @@ packages: asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - autoprefixer@10.4.19: - resolution: {integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - autoprefixer@10.4.20: resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} engines: {node: ^10 || ^12 || >=14} @@ -3849,11 +3455,6 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.23.2: - resolution: {integrity: sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - browserslist@4.24.0: resolution: {integrity: sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -3891,9 +3492,6 @@ packages: camelize@1.0.1: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} - caniuse-lite@1.0.30001644: - resolution: {integrity: sha512-YGvlOZB4QhZuiis+ETS0VXR+MExbFf4fZYYeMTEE0aTQd/RdIjkTyZjLrbYVKnHzppDvnOhritRVv+i7Go6mHw==} - caniuse-lite@1.0.30001667: resolution: {integrity: sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw==} @@ -4348,9 +3946,6 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.3: - resolution: {integrity: sha512-QNdYSS5i8D9axWp/6XIezRObRHqaav/ur9z1VzCDUCH1XIFOr9WQk5xmgunhsTpjjgDy3oLxO/WMOVZlpUQrlA==} - electron-to-chromium@1.5.33: resolution: {integrity: sha512-+cYTcFB1QqD4j4LegwLfpCNxifb6dDFUAwk6RsLusCwIaZI6or2f+q8rs5tTB2YC53HhOlIbEaqHMAAC8IOIwA==} @@ -4811,9 +4406,6 @@ packages: hast-util-embedded@3.0.0: resolution: {integrity: sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==} - hast-util-from-html@2.0.1: - resolution: {integrity: sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==} - hast-util-from-html@2.0.3: resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==} @@ -4847,9 +4439,6 @@ packages: hast-util-to-estree@3.1.0: resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==} - hast-util-to-html@9.0.1: - resolution: {integrity: sha512-hZOofyZANbyWo+9RP75xIDV/gq+OUKx+T46IlwERnKmfpwp81XBFbT9mi26ws+SJchA4RVUQwIBJpqEOBhMzEQ==} - hast-util-to-html@9.0.3: resolution: {integrity: sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==} @@ -5093,11 +4682,6 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true - jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - jsesc@3.0.2: resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} engines: {node: '>=6'} @@ -5147,6 +4731,7 @@ packages: libsql@0.4.6: resolution: {integrity: sha512-F5M+ltteK6dCcpjMahrkgT96uFJvVI8aQ4r9f2AzHQjC7BkAYtvfMSTWGvRBezRgMUIU2h1Sy0pF9nOGOD5iyA==} + cpu: [x64, arm64, wasm32] os: [darwin, linux, win32] lilconfig@2.1.0: @@ -5242,9 +4827,6 @@ packages: lunr@2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} - magic-string@0.30.11: - resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} - magic-string@0.30.12: resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} @@ -5651,10 +5233,6 @@ packages: resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} engines: {node: '>=18'} - ora@8.1.0: - resolution: {integrity: sha512-GQEkNkH/GHOhPFXcqZs3IDahXEQcQxsSjEkK4KvEEST4t7eNzoMjxTzef+EZ+JluDEV+Raoi3WQ2CflnRdSVnQ==} - engines: {node: '>=18'} - ora@8.1.1: resolution: {integrity: sha512-YWielGi1XzG1UTvOaCFaNgEnuhZVMSHYkW/FQ7UX8O26PtlpdM84c0f7wLPlkvx2RfiQmnzd61d/MGxmpQeJPw==} engines: {node: '>=18'} @@ -5925,13 +5503,8 @@ packages: engines: {node: '>=10.13.0'} hasBin: true -<<<<<<< HEAD pretty-ms@9.2.0: resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} -======= - pretty-ms@9.1.0: - resolution: {integrity: sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==} ->>>>>>> origin/dashboard-i18n engines: {node: '>=18'} prismjs@1.29.0: @@ -6023,9 +5596,6 @@ packages: regex-utilities@2.3.0: resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} - regex@4.3.3: - resolution: {integrity: sha512-r/AadFO7owAq1QJVeZ/nq9jNS1vyZt+6t1p/E59B56Rn2GCya+gr1KSyOzNL/er+r+B7phv5jG2xU2Nz1YkmJg==} - regex@4.4.0: resolution: {integrity: sha512-uCUSuobNVeqUupowbdZub6ggI5/JZkYyJdDogddJr60L764oxC2pMZov1fQ3wM9bdyzUILDG+Sqx6NAKAz9rKQ==} @@ -6064,9 +5634,6 @@ packages: rehype-slug@6.0.0: resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} - rehype-stringify@10.0.0: - resolution: {integrity: sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==} - rehype-stringify@10.0.1: resolution: {integrity: sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==} @@ -6085,9 +5652,6 @@ packages: remark-parse@11.0.0: resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} - remark-rehype@11.1.0: - resolution: {integrity: sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==} - remark-rehype@11.1.1: resolution: {integrity: sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==} @@ -6211,10 +5775,6 @@ packages: setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - sharp@0.33.4: - resolution: {integrity: sha512-7i/dt5kGl7qR4gwPRD2biwD2/SvBn3O04J77XKFgL2OnZtQw+AG9wnuS/csmu80nPRHLYE9E41fyEiG8nhH6/Q==} - engines: {libvips: '>=8.15.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0} - sharp@0.33.5: resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -6238,22 +5798,14 @@ packages: shiki-transformer-color-highlight@0.2.0: resolution: {integrity: sha512-KvQYFqhf7gdZCr1GcwWHqPS/sYl0RgwhCET95Sf3N8UX2yHUBqJbis9CbkR+KcnGxR6PWO4I/jB3Q64+yquNrQ==} - shiki@1.14.1: - resolution: {integrity: sha512-FujAN40NEejeXdzPt+3sZ3F2dx1U24BY2XTY01+MG8mbxCiA2XukXdcbyMyLAHJ/1AUUnQd1tZlvIjefWWEJeA==} - shiki@1.22.0: resolution: {integrity: sha512-/t5LlhNs+UOKQCYBtl5ZsH/Vclz73GIqT2yQsCBygr8L/ppTdmpL4w3kPLoZJbMKVWtoG77Ue1feOjZfDxvMkw==} -<<<<<<< HEAD shiki@1.23.0: resolution: {integrity: sha512-xfdu9DqPkIpExH29cmiTlgo0/jBki5la1Tkfhsv+Wu5TT3APLNHslR1acxuKJOCWqVdSc+pIbs/2ozjVRGppdg==} shimmer@1.2.1: resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} -======= - shiki@1.22.2: - resolution: {integrity: sha512-3IZau0NdGKXhH2bBlUk4w1IHNxPh6A5B2sUpyY+8utLu2j/h1QpFkAaUA1bAMxOWWGtTWcAh531vnS4NJKS/lA==} ->>>>>>> origin/dashboard-i18n signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -6442,9 +5994,6 @@ packages: tinyexec@0.2.0: resolution: {integrity: sha512-au8dwv4xKSDR+Fw52csDo3wcDztPdne2oM1o/7LFro4h6bdFmvyUAeAfX40pwDtzHgRFqz1XWaUqgKS2G83/ig==} - tinyexec@0.3.0: - resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==} - tinyexec@0.3.1: resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} @@ -6484,16 +6033,6 @@ packages: ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - tsconfck@3.1.3: - resolution: {integrity: sha512-ulNZP1SVpRDesxeMLON/LtWM8HIgAJEIVpVVhBM6gsmvQ8+Rh+ZG7FWGvHh7Ah3pRABwVJWklWCr/BTZSv0xnQ==} - engines: {node: ^18 || >=20} - hasBin: true - peerDependencies: - typescript: ^5.0.0 - peerDependenciesMeta: - typescript: - optional: true - tsconfck@3.1.4: resolution: {integrity: sha512-kdqWFGVJqe+KGYvlSO9NIaWn9jT1Ny4oKVzAJsKii5eoE9snzTJzL4+MMVOMn+fikWGFmKEylcXL710V/kIPJQ==} engines: {node: ^18 || >=20} @@ -6692,55 +6231,16 @@ packages: terser: optional: true - vite@5.4.8: - resolution: {integrity: sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true + vitefu@1.0.3: + resolution: {integrity: sha512-iKKfOMBHob2WxEJbqbJjHAkmYgvFDPhuqrO82om83S8RLk+17FtyMBfcyeH8GqD0ihShtkMW/zzJgiA51hCNCQ==} peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0-beta.0 peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: + vite: optional: true - vitefu@1.0.2: - resolution: {integrity: sha512-0/iAvbXyM3RiPPJ4lyD4w6Mjgtf4ejTK6TPvTNG3H32PLwuT0N/ZjJLiXug7ETE/LWtTeHw9WRv7uX/tIKYyKg==} - peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 - peerDependenciesMeta: - vite: - optional: true - - vitefu@1.0.3: - resolution: {integrity: sha512-iKKfOMBHob2WxEJbqbJjHAkmYgvFDPhuqrO82om83S8RLk+17FtyMBfcyeH8GqD0ihShtkMW/zzJgiA51hCNCQ==} - peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0-beta.0 - peerDependenciesMeta: - vite: - optional: true - - volar-service-css@0.0.61: - resolution: {integrity: sha512-Ct9L/w+IB1JU8F4jofcNCGoHy6TF83aiapfZq9A0qYYpq+Kk5dH+ONS+rVZSsuhsunq8UvAuF8Gk6B8IFLfniw==} + volar-service-css@0.0.61: + resolution: {integrity: sha512-Ct9L/w+IB1JU8F4jofcNCGoHy6TF83aiapfZq9A0qYYpq+Kk5dH+ONS+rVZSsuhsunq8UvAuF8Gk6B8IFLfniw==} peerDependencies: '@volar/language-service': ~2.4.0 peerDependenciesMeta: @@ -6986,11 +6486,6 @@ packages: yoga-wasm-web@0.3.3: resolution: {integrity: sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==} - zod-to-json-schema@3.23.3: - resolution: {integrity: sha512-TYWChTxKQbRJp5ST22o/Irt9KC5nj7CdBKYB/AosCRdj/wxEMvv4NNaj9XVUHDOIp53ZxArGhnw5HMZziPFjog==} - peerDependencies: - zod: ^3.23.3 - zod-to-json-schema@3.23.5: resolution: {integrity: sha512-5wlSS0bXfF/BrL4jPAbz9da5hDlDptdEppYfe+x4eIJ7jioqKG9uUxOwPzqof09u/XeVdrgFu29lZi+8XNDJtA==} peerDependencies: @@ -7034,7 +6529,6 @@ snapshots: '@antfu/utils@0.7.10': {} -<<<<<<< HEAD '@astro-community/astro-embed-integration@0.7.2(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: '@astro-community/astro-embed-link-preview': 0.2.2 @@ -7044,40 +6538,21 @@ snapshots: '@types/unist': 2.0.10 astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) astro-auto-import: 0.4.2(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) -======= - '@astro-community/astro-embed-integration@0.7.2(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': - dependencies: - '@astro-community/astro-embed-link-preview': 0.2.2 - '@astro-community/astro-embed-twitter': 0.5.6(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) - '@astro-community/astro-embed-vimeo': 0.3.10(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) - '@astro-community/astro-embed-youtube': 0.5.5(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) - '@types/unist': 2.0.10 - astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) - astro-auto-import: 0.4.2(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) ->>>>>>> origin/dashboard-i18n unist-util-select: 4.0.3 '@astro-community/astro-embed-link-preview@0.2.2': dependencies: '@astro-community/astro-embed-utils': 0.1.3 -<<<<<<< HEAD '@astro-community/astro-embed-twitter@0.5.6(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: '@astro-community/astro-embed-utils': 0.1.3 astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) -======= - '@astro-community/astro-embed-twitter@0.5.6(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': - dependencies: - '@astro-community/astro-embed-utils': 0.1.3 - astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) ->>>>>>> origin/dashboard-i18n '@astro-community/astro-embed-utils@0.1.3': dependencies: linkedom: 0.14.26 -<<<<<<< HEAD '@astro-community/astro-embed-vimeo@0.3.10(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: '@astro-community/astro-embed-utils': 0.1.3 @@ -7086,16 +6561,6 @@ snapshots: '@astro-community/astro-embed-youtube@0.5.5(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) -======= - '@astro-community/astro-embed-vimeo@0.3.10(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': - dependencies: - '@astro-community/astro-embed-utils': 0.1.3 - astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) - - '@astro-community/astro-embed-youtube@0.5.5(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': - dependencies: - astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) ->>>>>>> origin/dashboard-i18n lite-youtube-embed: 0.3.3 '@astrojs/check@0.9.4(typescript@5.6.3)': @@ -7111,52 +6576,6 @@ snapshots: '@astrojs/compiler@2.10.3': {} - '@astrojs/db@0.14.2(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1)': - dependencies: - '@astrojs/studio': 0.1.1 - '@libsql/client': 0.14.0 - async-listen: 3.0.1 - deep-diff: 1.0.2 - drizzle-orm: 0.31.4(@cloudflare/workers-types@4.20240725.0)(@libsql/client@0.14.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1) - github-slugger: 2.0.0 - kleur: 4.1.5 - nanoid: 5.0.7 - open: 10.1.0 - ora: 8.1.0 - prompts: 2.4.2 - yargs-parser: 21.1.1 - zod: 3.23.8 - transitivePeerDependencies: - - '@aws-sdk/client-rds-data' - - '@cloudflare/workers-types' - - '@electric-sql/pglite' - - '@neondatabase/serverless' - - '@op-engineering/op-sqlite' - - '@opentelemetry/api' - - '@planetscale/database' - - '@prisma/client' - - '@tidbcloud/serverless' - - '@types/better-sqlite3' - - '@types/pg' - - '@types/react' - - '@types/sql.js' - - '@vercel/postgres' - - '@xata.io/client' - - better-sqlite3 - - bufferutil - - bun-types - - expo-sqlite - - knex - - kysely - - mysql2 - - pg - - postgres - - prisma - - react - - sql.js - - sqlite3 - - utf-8-validate - '@astrojs/db@0.14.3(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1)': dependencies: '@astrojs/studio': 0.1.1 @@ -7168,53 +6587,7 @@ snapshots: kleur: 4.1.5 nanoid: 5.0.7 open: 10.1.0 - ora: 8.1.0 - prompts: 2.4.2 - yargs-parser: 21.1.1 - zod: 3.23.8 - transitivePeerDependencies: - - '@aws-sdk/client-rds-data' - - '@cloudflare/workers-types' - - '@electric-sql/pglite' - - '@neondatabase/serverless' - - '@op-engineering/op-sqlite' - - '@opentelemetry/api' - - '@planetscale/database' - - '@prisma/client' - - '@tidbcloud/serverless' - - '@types/better-sqlite3' - - '@types/pg' - - '@types/react' - - '@types/sql.js' - - '@vercel/postgres' - - '@xata.io/client' - - better-sqlite3 - - bufferutil - - bun-types - - expo-sqlite - - knex - - kysely - - mysql2 - - pg - - postgres - - prisma - - react - - sql.js - - sqlite3 - - utf-8-validate - - '@astrojs/db@0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1)': - dependencies: - '@astrojs/studio': 0.1.1 - '@libsql/client': 0.14.0 - async-listen: 3.0.1 - deep-diff: 1.0.2 - drizzle-orm: 0.31.4(@cloudflare/workers-types@4.20240725.0)(@libsql/client@0.14.0)(@types/react@18.3.5)(react@18.3.1) - github-slugger: 2.0.0 - kleur: 4.1.5 - nanoid: 5.0.7 - open: 10.1.0 - ora: 8.1.0 + ora: 8.1.1 prompts: 2.4.2 yargs-parser: 21.1.1 zod: 3.23.8 @@ -7278,17 +6651,17 @@ snapshots: dependencies: '@astrojs/prism': 3.1.0 github-slugger: 2.0.0 - hast-util-from-html: 2.0.1 + hast-util-from-html: 2.0.3 hast-util-to-text: 4.0.2 import-meta-resolve: 4.1.0 mdast-util-definitions: 6.0.0 rehype-raw: 7.0.0 - rehype-stringify: 10.0.0 + rehype-stringify: 10.0.1 remark-gfm: 4.0.0 remark-parse: 11.0.0 remark-rehype: 11.1.1 remark-smartypants: 3.0.2 - shiki: 1.22.0 + shiki: 1.23.0 unified: 11.0.5 unist-util-remove-position: 5.0.0 unist-util-visit: 5.0.0 @@ -7311,7 +6684,7 @@ snapshots: remark-parse: 11.0.0 remark-rehype: 11.1.1 remark-smartypants: 3.0.2 - shiki: 1.22.0 + shiki: 1.23.0 unified: 11.0.5 unist-util-remove-position: 5.0.0 unist-util-visit: 5.0.0 @@ -7320,20 +6693,12 @@ snapshots: transitivePeerDependencies: - supports-color -<<<<<<< HEAD '@astrojs/mdx@3.1.3(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': -======= - '@astrojs/mdx@3.1.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': ->>>>>>> origin/dashboard-i18n dependencies: '@astrojs/markdown-remark': 5.2.0 '@mdx-js/mdx': 3.0.1 - acorn: 8.12.1 -<<<<<<< HEAD + acorn: 8.14.0 astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) -======= - astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) ->>>>>>> origin/dashboard-i18n es-module-lexer: 1.5.4 estree-util-visit: 2.0.0 github-slugger: 2.0.0 @@ -7349,29 +6714,17 @@ snapshots: transitivePeerDependencies: - supports-color -<<<<<<< HEAD '@astrojs/node@8.3.4(astro@4.16.13(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3))': dependencies: astro: 4.16.13(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) -======= - '@astrojs/node@8.3.4(astro@4.16.11(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3))': - dependencies: - astro: 4.16.11(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) ->>>>>>> origin/dashboard-i18n send: 0.19.1 server-destroy: 1.0.1 transitivePeerDependencies: - supports-color -<<<<<<< HEAD '@astrojs/node@8.3.4(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) -======= - '@astrojs/node@8.3.4(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': - dependencies: - astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) ->>>>>>> origin/dashboard-i18n send: 0.19.1 server-destroy: 1.0.1 transitivePeerDependencies: @@ -7393,18 +6746,6 @@ snapshots: - supports-color - vite - '@astrojs/react@3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.8(@types/node@22.0.0))': - dependencies: - '@types/react': 18.3.5 - '@types/react-dom': 18.3.0 - '@vitejs/plugin-react': 4.3.1(vite@5.4.8(@types/node@22.0.0)) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - ultrahtml: 1.5.3 - transitivePeerDependencies: - - supports-color - - vite - '@astrojs/rss@4.0.7': dependencies: fast-xml-parser: 4.4.1 @@ -7416,26 +6757,15 @@ snapshots: stream-replace-string: 2.0.0 zod: 3.23.8 -<<<<<<< HEAD '@astrojs/starlight@0.28.3(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: '@astrojs/mdx': 3.1.3(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) -======= - '@astrojs/starlight@0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': - dependencies: - '@astrojs/mdx': 3.1.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) ->>>>>>> origin/dashboard-i18n '@astrojs/sitemap': 3.1.6 '@pagefind/default-ui': 1.1.0 '@types/hast': 3.0.4 '@types/mdast': 4.0.4 -<<<<<<< HEAD astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) astro-expressive-code: 0.35.6(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) -======= - astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) - astro-expressive-code: 0.35.6(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) ->>>>>>> origin/dashboard-i18n bcp-47: 2.1.0 hast-util-from-html: 2.0.3 hast-util-select: 6.0.3 @@ -7459,17 +6789,11 @@ snapshots: dependencies: ci-info: 4.0.0 kleur: 4.1.5 - ora: 8.1.0 + ora: 8.1.1 -<<<<<<< HEAD '@astrojs/tailwind@5.1.2(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))(tailwindcss@3.4.14)': dependencies: astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) -======= - '@astrojs/tailwind@5.1.2(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))(tailwindcss@3.4.14)': - dependencies: - astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) ->>>>>>> origin/dashboard-i18n autoprefixer: 10.4.20(postcss@8.4.47) postcss: 8.4.47 postcss-load-config: 4.0.2(postcss@8.4.47) @@ -7489,26 +6813,15 @@ snapshots: transitivePeerDependencies: - supports-color -<<<<<<< HEAD '@astrojs/web-vitals@3.0.0(@astrojs/db@0.14.3(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1))': dependencies: '@astrojs/db': 0.14.3(@cloudflare/workers-types@4.20240725.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@18.3.5)(react@18.3.1) -======= - '@astrojs/web-vitals@3.0.0(@astrojs/db@0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1))': - dependencies: - '@astrojs/db': 0.14.3(@cloudflare/workers-types@4.20240725.0)(@types/react@18.3.5)(react@18.3.1) ->>>>>>> origin/dashboard-i18n web-vitals: 4.2.3 '@astrojs/yaml2ts@0.2.1': dependencies: yaml: 2.5.1 - '@babel/code-frame@7.24.7': - dependencies: - '@babel/highlight': 7.24.7 - picocolors: 1.1.0 - '@babel/code-frame@7.25.7': dependencies: '@babel/highlight': 7.25.7 @@ -7520,52 +6833,8 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.0 - '@babel/compat-data@7.25.2': {} - - '@babel/compat-data@7.25.7': {} - '@babel/compat-data@7.26.2': {} - '@babel/core@7.25.2': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.5 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helpers': 7.25.0 - '@babel/parser': 7.25.4 - '@babel/template': 7.25.0 - '@babel/traverse': 7.25.4 - '@babel/types': 7.25.6 - convert-source-map: 2.0.0 - debug: 4.3.7 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/core@7.25.7': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.25.7 - '@babel/generator': 7.25.7 - '@babel/helper-compilation-targets': 7.25.7 - '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.7) - '@babel/helpers': 7.25.7 - '@babel/parser': 7.25.7 - '@babel/template': 7.25.7 - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.7 - convert-source-map: 2.0.0 - debug: 4.3.7 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - '@babel/core@7.25.8': dependencies: '@ampproject/remapping': 2.3.0 @@ -7606,16 +6875,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.25.5': - dependencies: - '@babel/types': 7.25.6 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 - '@babel/generator@7.25.7': dependencies: - '@babel/types': 7.25.7 + '@babel/types': 7.26.0 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.0.2 @@ -7628,30 +6890,14 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.0.2 - '@babel/helper-annotate-as-pure@7.24.7': - dependencies: - '@babel/types': 7.25.6 - - '@babel/helper-annotate-as-pure@7.25.7': - dependencies: - '@babel/types': 7.25.7 - '@babel/helper-annotate-as-pure@7.25.9': dependencies: '@babel/types': 7.26.0 - '@babel/helper-compilation-targets@7.25.2': - dependencies: - '@babel/compat-data': 7.25.2 - '@babel/helper-validator-option': 7.24.8 - browserslist: 4.23.2 - lru-cache: 5.1.1 - semver: 6.3.1 - '@babel/helper-compilation-targets@7.25.7': dependencies: - '@babel/compat-data': 7.25.7 - '@babel/helper-validator-option': 7.25.7 + '@babel/compat-data': 7.26.2 + '@babel/helper-validator-option': 7.25.9 browserslist: 4.24.0 lru-cache: 5.1.1 semver: 6.3.1 @@ -7664,37 +6910,23 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.25.0(@babel/core@7.25.2)': + '@babel/helper-create-class-features-plugin@7.25.0(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 '@babel/helper-member-expression-to-functions': 7.24.8 '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) + '@babel/helper-replace-supers': 7.25.0(@babel/core@7.26.0) '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/traverse': 7.25.4 + '@babel/traverse': 7.25.9 semver: 6.3.1 transitivePeerDependencies: - supports-color '@babel/helper-member-expression-to-functions@7.24.8': dependencies: - '@babel/traverse': 7.25.4 - '@babel/types': 7.25.6 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-imports@7.24.7': - dependencies: - '@babel/traverse': 7.25.4 - '@babel/types': 7.25.6 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-imports@7.25.7': - dependencies: - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.7 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color @@ -7705,33 +6937,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-simple-access': 7.24.7 - '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.4 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.25.7(@babel/core@7.25.7)': - dependencies: - '@babel/core': 7.25.7 - '@babel/helper-module-imports': 7.25.7 - '@babel/helper-simple-access': 7.25.7 - '@babel/helper-validator-identifier': 7.25.7 - '@babel/traverse': 7.25.7 - transitivePeerDependencies: - - supports-color - '@babel/helper-module-transforms@7.25.7(@babel/core@7.25.8)': dependencies: '@babel/core': 7.25.8 - '@babel/helper-module-imports': 7.25.7 + '@babel/helper-module-imports': 7.25.9 '@babel/helper-simple-access': 7.25.7 - '@babel/helper-validator-identifier': 7.25.7 - '@babel/traverse': 7.25.7 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.25.9 transitivePeerDependencies: - supports-color @@ -7746,156 +6958,92 @@ snapshots: '@babel/helper-optimise-call-expression@7.24.7': dependencies: - '@babel/types': 7.25.6 - - '@babel/helper-plugin-utils@7.24.8': {} - - '@babel/helper-plugin-utils@7.25.7': {} + '@babel/types': 7.26.0 '@babel/helper-plugin-utils@7.25.9': {} - '@babel/helper-replace-supers@7.25.0(@babel/core@7.25.2)': + '@babel/helper-replace-supers@7.25.0(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 '@babel/helper-member-expression-to-functions': 7.24.8 '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/traverse': 7.25.4 - transitivePeerDependencies: - - supports-color - - '@babel/helper-simple-access@7.24.7': - dependencies: - '@babel/traverse': 7.25.4 - '@babel/types': 7.25.6 + '@babel/traverse': 7.25.9 transitivePeerDependencies: - supports-color '@babel/helper-simple-access@7.25.7': dependencies: - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.7 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.24.7': dependencies: - '@babel/traverse': 7.25.4 - '@babel/types': 7.25.6 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color - '@babel/helper-string-parser@7.24.8': {} - - '@babel/helper-string-parser@7.25.7': {} - '@babel/helper-string-parser@7.25.9': {} - '@babel/helper-validator-identifier@7.24.7': {} - - '@babel/helper-validator-identifier@7.25.7': {} - '@babel/helper-validator-identifier@7.25.9': {} - '@babel/helper-validator-option@7.24.8': {} - - '@babel/helper-validator-option@7.25.7': {} - '@babel/helper-validator-option@7.25.9': {} - '@babel/helpers@7.25.0': - dependencies: - '@babel/template': 7.25.0 - '@babel/types': 7.25.6 - '@babel/helpers@7.25.7': dependencies: - '@babel/template': 7.25.7 - '@babel/types': 7.25.7 + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 '@babel/helpers@7.26.0': dependencies: '@babel/template': 7.25.9 '@babel/types': 7.26.0 - '@babel/highlight@7.24.7': - dependencies: - '@babel/helper-validator-identifier': 7.24.7 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.1.0 - '@babel/highlight@7.25.7': dependencies: - '@babel/helper-validator-identifier': 7.25.7 + '@babel/helper-validator-identifier': 7.25.9 chalk: 2.4.2 js-tokens: 4.0.0 picocolors: 1.1.0 - '@babel/parser@7.25.4': - dependencies: - '@babel/types': 7.25.6 - - '@babel/parser@7.25.7': - dependencies: - '@babel/types': 7.25.7 - '@babel/parser@7.25.8': dependencies: - '@babel/types': 7.25.8 + '@babel/types': 7.26.0 '@babel/parser@7.26.2': dependencies: '@babel/types': 7.26.0 - '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - - '@babel/plugin-syntax-jsx@7.25.7(@babel/core@7.25.7)': - dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-syntax-typescript@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.25.2)': + '@babel/plugin-transform-modules-commonjs@7.24.8(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-simple-access': 7.24.7 + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-simple-access': 7.25.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.8)': + '@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 - - '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.25.8)': - dependencies: - '@babel/core': 7.25.8 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-react-jsx@7.25.7(@babel/core@7.25.7)': + '@babel/plugin-transform-react-jsx-source@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.7 - '@babel/helper-annotate-as-pure': 7.25.7 - '@babel/helper-module-imports': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-jsx': 7.25.7(@babel/core@7.25.7) - '@babel/types': 7.25.7 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 '@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.0)': dependencies: @@ -7908,25 +7056,25 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-typescript@7.25.2(@babel/core@7.25.2)': + '@babel/plugin-transform-typescript@7.25.2(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.25.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.25.2) + '@babel/plugin-syntax-typescript': 7.24.7(@babel/core@7.26.0) transitivePeerDependencies: - supports-color - '@babel/preset-typescript@7.24.7(@babel/core@7.25.2)': + '@babel/preset-typescript@7.24.7(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-validator-option': 7.24.8 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.25.2) - '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.24.8(@babel/core@7.26.0) + '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.26.0) transitivePeerDependencies: - supports-color @@ -7934,17 +7082,11 @@ snapshots: dependencies: regenerator-runtime: 0.14.1 - '@babel/template@7.25.0': - dependencies: - '@babel/code-frame': 7.24.7 - '@babel/parser': 7.25.4 - '@babel/types': 7.25.6 - '@babel/template@7.25.7': dependencies: - '@babel/code-frame': 7.25.7 - '@babel/parser': 7.25.7 - '@babel/types': 7.25.7 + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 '@babel/template@7.25.9': dependencies: @@ -7952,25 +7094,13 @@ snapshots: '@babel/parser': 7.26.2 '@babel/types': 7.26.0 - '@babel/traverse@7.25.4': - dependencies: - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.5 - '@babel/parser': 7.25.4 - '@babel/template': 7.25.0 - '@babel/types': 7.25.6 - debug: 4.3.7 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - '@babel/traverse@7.25.7': dependencies: - '@babel/code-frame': 7.25.7 - '@babel/generator': 7.25.7 - '@babel/parser': 7.25.7 - '@babel/template': 7.25.7 - '@babel/types': 7.25.7 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 debug: 4.3.7 globals: 11.12.0 transitivePeerDependencies: @@ -7988,22 +7118,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/types@7.25.6': - dependencies: - '@babel/helper-string-parser': 7.24.8 - '@babel/helper-validator-identifier': 7.24.7 - to-fast-properties: 2.0.0 - - '@babel/types@7.25.7': - dependencies: - '@babel/helper-string-parser': 7.25.7 - '@babel/helper-validator-identifier': 7.25.7 - to-fast-properties: 2.0.0 - '@babel/types@7.25.8': dependencies: - '@babel/helper-string-parser': 7.25.7 - '@babel/helper-validator-identifier': 7.25.7 + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 to-fast-properties: 2.0.0 '@babel/types@7.26.0': @@ -8410,7 +7528,7 @@ snapshots: '@expressive-code/plugin-shiki@0.35.6': dependencies: '@expressive-code/core': 0.35.6 - shiki: 1.22.0 + shiki: 1.23.0 '@expressive-code/plugin-text-markers@0.35.6': dependencies: @@ -8464,168 +7582,93 @@ snapshots: transitivePeerDependencies: - supports-color - '@img/sharp-darwin-arm64@0.33.4': - optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.0.2 - optional: true - '@img/sharp-darwin-arm64@0.33.5': optionalDependencies: '@img/sharp-libvips-darwin-arm64': 1.0.4 optional: true - '@img/sharp-darwin-x64@0.33.4': - optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.0.2 - optional: true - '@img/sharp-darwin-x64@0.33.5': optionalDependencies: '@img/sharp-libvips-darwin-x64': 1.0.4 optional: true - '@img/sharp-libvips-darwin-arm64@1.0.2': - optional: true - '@img/sharp-libvips-darwin-arm64@1.0.4': optional: true - '@img/sharp-libvips-darwin-x64@1.0.2': - optional: true - '@img/sharp-libvips-darwin-x64@1.0.4': optional: true - '@img/sharp-libvips-linux-arm64@1.0.2': - optional: true - '@img/sharp-libvips-linux-arm64@1.0.4': optional: true - '@img/sharp-libvips-linux-arm@1.0.2': - optional: true - '@img/sharp-libvips-linux-arm@1.0.5': optional: true - '@img/sharp-libvips-linux-s390x@1.0.2': - optional: true - '@img/sharp-libvips-linux-s390x@1.0.4': optional: true - '@img/sharp-libvips-linux-x64@1.0.2': - optional: true - '@img/sharp-libvips-linux-x64@1.0.4': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.0.2': - optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.0.4': optional: true - '@img/sharp-libvips-linuxmusl-x64@1.0.2': - optional: true - '@img/sharp-libvips-linuxmusl-x64@1.0.4': optional: true - '@img/sharp-linux-arm64@0.33.4': - optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.0.2 - optional: true - '@img/sharp-linux-arm64@0.33.5': optionalDependencies: '@img/sharp-libvips-linux-arm64': 1.0.4 optional: true - '@img/sharp-linux-arm@0.33.4': - optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.0.2 - optional: true - '@img/sharp-linux-arm@0.33.5': optionalDependencies: '@img/sharp-libvips-linux-arm': 1.0.5 optional: true - '@img/sharp-linux-s390x@0.33.4': - optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.0.2 - optional: true - '@img/sharp-linux-s390x@0.33.5': optionalDependencies: '@img/sharp-libvips-linux-s390x': 1.0.4 optional: true - '@img/sharp-linux-x64@0.33.4': - optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.0.2 - optional: true - '@img/sharp-linux-x64@0.33.5': optionalDependencies: '@img/sharp-libvips-linux-x64': 1.0.4 optional: true - '@img/sharp-linuxmusl-arm64@0.33.4': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.0.2 - optional: true - '@img/sharp-linuxmusl-arm64@0.33.5': optionalDependencies: '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 optional: true - '@img/sharp-linuxmusl-x64@0.33.4': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.0.2 - optional: true - '@img/sharp-linuxmusl-x64@0.33.5': optionalDependencies: '@img/sharp-libvips-linuxmusl-x64': 1.0.4 optional: true - '@img/sharp-wasm32@0.33.4': - dependencies: - '@emnapi/runtime': 1.2.0 - optional: true - '@img/sharp-wasm32@0.33.5': dependencies: '@emnapi/runtime': 1.2.0 optional: true - '@img/sharp-win32-ia32@0.33.4': - optional: true - '@img/sharp-win32-ia32@0.33.5': optional: true - '@img/sharp-win32-x64@0.33.4': - optional: true - '@img/sharp-win32-x64@0.33.5': optional: true - '@inox-tools/modular-station@0.3.3(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': + '@inox-tools/modular-station@0.3.3(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: '@inox-tools/utils': 0.2.0 - astro: 4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) - astro-integration-kit: 0.16.1(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro-integration-kit: 0.16.1(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) - '@inox-tools/runtime-logger@0.3.4(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': + '@inox-tools/runtime-logger@0.3.4(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: - '@inox-tools/modular-station': 0.3.3(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + '@inox-tools/modular-station': 0.3.3(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@inox-tools/utils': 0.2.0 - astro: 4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) - astro-integration-kit: 0.16.1(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro-integration-kit: 0.16.1(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) '@inox-tools/utils@0.2.0': {} @@ -8721,19 +7764,11 @@ snapshots: dependencies: '@lit-labs/ssr-dom-shim': 1.2.0 -<<<<<<< HEAD '@lorenzo_lewis/starlight-utils@0.2.0(@astrojs/starlight@0.28.3(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)))(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: '@astrojs/starlight': 0.28.3(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) astro-integration-kit: 0.16.1(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) -======= - '@lorenzo_lewis/starlight-utils@0.2.0(@astrojs/starlight@0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)))(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': - dependencies: - '@astrojs/starlight': 0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) - astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) - astro-integration-kit: 0.16.1(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) ->>>>>>> origin/dashboard-i18n '@manypkg/find-root@1.1.0': dependencies: @@ -8757,36 +7792,36 @@ snapshots: '@types/react': 18.3.5 react: 18.3.1 - '@matthiesenxyz/astrodtsbuilder@0.1.2(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': + '@matthiesenxyz/astrodtsbuilder@0.1.2(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: - astro: 4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) - '@matthiesenxyz/astrolace@0.3.2(@types/react@18.3.5)(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': + '@matthiesenxyz/astrolace@0.3.2(@types/react@18.3.5)(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: '@shoelace-style/shoelace': 2.16.0(@types/react@18.3.5) - astro: 4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) - astro-integration-kit: 0.16.1(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro-integration-kit: 0.16.1(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) lit: 3.1.4 zod: 3.23.8 transitivePeerDependencies: - '@types/react' - '@matthiesenxyz/integration-utils@0.2.0(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': + '@matthiesenxyz/integration-utils@0.2.0(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))': dependencies: - astro: 4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) - astro-integration-kit: 0.16.1(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) + astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + astro-integration-kit: 0.16.1(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) package-json: 10.0.1 semver: 7.6.3 - '@matthiesenxyz/unocss-preset-daisyui@0.1.2(daisyui@4.12.10(postcss@8.4.47))(unocss@0.62.3(postcss@8.4.47)(rollup@4.21.0)(vite@5.4.8(@types/node@22.0.0)))': + '@matthiesenxyz/unocss-preset-daisyui@0.1.2(daisyui@4.12.10(postcss@8.4.47))(unocss@0.62.3(postcss@8.4.47)(rollup@4.21.0)(vite@5.4.11(@types/node@22.0.0)))': dependencies: - autoprefixer: 10.4.19(postcss@8.4.47) + autoprefixer: 10.4.20(postcss@8.4.47) camelcase: 8.0.0 daisyui: 4.12.10(postcss@8.4.47) parsel-js: 1.1.2 postcss: 8.4.47 postcss-js: 4.0.1(postcss@8.4.47) - unocss: 0.62.3(postcss@8.4.47)(rollup@4.21.0)(vite@5.4.8(@types/node@22.0.0)) + unocss: 0.62.3(postcss@8.4.47)(rollup@4.21.0)(vite@5.4.11(@types/node@22.0.0)) '@mdx-js/mdx@3.0.1': dependencies: @@ -9304,22 +8339,6 @@ snapshots: '@resvg/resvg-js-win32-ia32-msvc': 2.6.2 '@resvg/resvg-js-win32-x64-msvc': 2.6.2 - '@rollup/pluginutils@5.1.0(rollup@4.21.0)': - dependencies: - '@types/estree': 1.0.5 - estree-walker: 2.0.2 - picomatch: 2.3.1 - optionalDependencies: - rollup: 4.21.0 - - '@rollup/pluginutils@5.1.2(rollup@4.21.0)': - dependencies: - '@types/estree': 1.0.5 - estree-walker: 2.0.2 - picomatch: 2.3.1 - optionalDependencies: - rollup: 4.21.0 - '@rollup/pluginutils@5.1.3(rollup@4.21.0)': dependencies: '@types/estree': 1.0.5 @@ -9378,7 +8397,6 @@ snapshots: '@sec-ant/readable-stream@0.4.1': {} -<<<<<<< HEAD '@sentry-internal/browser-utils@8.38.0': dependencies: '@sentry/core': 8.38.0 @@ -9556,12 +8574,6 @@ snapshots: - encoding - supports-color -======= ->>>>>>> origin/dashboard-i18n - '@shikijs/core@1.14.1': - dependencies: - '@types/hast': 3.0.4 - '@shikijs/core@1.22.0': dependencies: '@shikijs/engine-javascript': 1.22.0 @@ -9571,19 +8583,11 @@ snapshots: '@types/hast': 3.0.4 hast-util-to-html: 9.0.3 -<<<<<<< HEAD '@shikijs/core@1.23.0': dependencies: '@shikijs/engine-javascript': 1.23.0 '@shikijs/engine-oniguruma': 1.23.0 '@shikijs/types': 1.23.0 -======= - '@shikijs/core@1.22.2': - dependencies: - '@shikijs/engine-javascript': 1.22.2 - '@shikijs/engine-oniguruma': 1.22.2 - '@shikijs/types': 1.22.2 ->>>>>>> origin/dashboard-i18n '@shikijs/vscode-textmate': 9.3.0 '@types/hast': 3.0.4 hast-util-to-html: 9.0.3 @@ -9594,40 +8598,22 @@ snapshots: '@shikijs/vscode-textmate': 9.3.0 oniguruma-to-js: 0.4.3 -<<<<<<< HEAD '@shikijs/engine-javascript@1.23.0': dependencies: '@shikijs/types': 1.23.0 '@shikijs/vscode-textmate': 9.3.0 oniguruma-to-es: 0.1.2 -======= - '@shikijs/engine-javascript@1.22.2': - dependencies: - '@shikijs/types': 1.22.2 - '@shikijs/vscode-textmate': 9.3.0 - oniguruma-to-js: 0.4.3 ->>>>>>> origin/dashboard-i18n '@shikijs/engine-oniguruma@1.22.0': dependencies: '@shikijs/types': 1.22.0 '@shikijs/vscode-textmate': 9.3.0 -<<<<<<< HEAD '@shikijs/engine-oniguruma@1.23.0': dependencies: '@shikijs/types': 1.23.0 -======= - '@shikijs/engine-oniguruma@1.22.2': - dependencies: - '@shikijs/types': 1.22.2 ->>>>>>> origin/dashboard-i18n '@shikijs/vscode-textmate': 9.3.0 - '@shikijs/transformers@1.14.1': - dependencies: - shiki: 1.14.1 - '@shikijs/transformers@1.22.0': dependencies: shiki: 1.22.0 @@ -9646,11 +8632,7 @@ snapshots: '@shikijs/vscode-textmate': 9.3.0 '@types/hast': 3.0.4 -<<<<<<< HEAD '@shikijs/types@1.23.0': -======= - '@shikijs/types@1.22.2': ->>>>>>> origin/dashboard-i18n dependencies: '@shikijs/vscode-textmate': 9.3.0 '@types/hast': 3.0.4 @@ -9699,24 +8681,24 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.25.4 - '@babel/types': 7.25.7 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.6 '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.25.7 + '@babel/types': 7.26.0 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.25.4 - '@babel/types': 7.25.7 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 '@types/babel__traverse@7.20.6': dependencies: - '@babel/types': 7.25.7 + '@babel/types': 7.26.0 '@types/bcryptjs@2.4.6': {} @@ -9880,13 +8862,13 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@unocss/astro@0.62.3(rollup@4.21.0)(vite@5.4.8(@types/node@22.0.0))': + '@unocss/astro@0.62.3(rollup@4.21.0)(vite@5.4.11(@types/node@22.0.0))': dependencies: '@unocss/core': 0.62.3 '@unocss/reset': 0.62.3 - '@unocss/vite': 0.62.3(rollup@4.21.0)(vite@5.4.8(@types/node@22.0.0)) + '@unocss/vite': 0.62.3(rollup@4.21.0)(vite@5.4.11(@types/node@22.0.0)) optionalDependencies: - vite: 5.4.8(@types/node@22.0.0) + vite: 5.4.11(@types/node@22.0.0) transitivePeerDependencies: - rollup - supports-color @@ -9894,7 +8876,7 @@ snapshots: '@unocss/cli@0.62.3(rollup@4.21.0)': dependencies: '@ampproject/remapping': 2.3.0 - '@rollup/pluginutils': 5.1.0(rollup@4.21.0) + '@rollup/pluginutils': 5.1.3(rollup@4.21.0) '@unocss/config': 0.62.3 '@unocss/core': 0.62.3 '@unocss/preset-uno': 0.62.3 @@ -9902,7 +8884,7 @@ snapshots: chokidar: 3.6.0 colorette: 2.0.20 consola: 3.2.3 - magic-string: 0.30.11 + magic-string: 0.30.12 pathe: 1.1.2 perfect-debounce: 1.0.0 tinyglobby: 0.2.5 @@ -9936,7 +8918,7 @@ snapshots: '@unocss/core': 0.62.3 '@unocss/rule-utils': 0.62.3 css-tree: 2.3.1 - magic-string: 0.30.11 + magic-string: 0.30.12 postcss: 8.4.47 tinyglobby: 0.2.5 transitivePeerDependencies: @@ -9992,15 +8974,15 @@ snapshots: '@unocss/rule-utils@0.62.3': dependencies: '@unocss/core': 0.62.3 - magic-string: 0.30.11 + magic-string: 0.30.12 '@unocss/scope@0.62.3': {} '@unocss/transformer-attributify-jsx-babel@0.62.3': dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) - '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2) + '@babel/core': 7.26.0 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/preset-typescript': 7.24.7(@babel/core@7.26.0) '@unocss/core': 0.62.3 transitivePeerDependencies: - supports-color @@ -10023,45 +9005,34 @@ snapshots: dependencies: '@unocss/core': 0.62.3 - '@unocss/vite@0.62.3(rollup@4.21.0)(vite@5.4.8(@types/node@22.0.0))': + '@unocss/vite@0.62.3(rollup@4.21.0)(vite@5.4.11(@types/node@22.0.0))': dependencies: '@ampproject/remapping': 2.3.0 - '@rollup/pluginutils': 5.1.0(rollup@4.21.0) + '@rollup/pluginutils': 5.1.3(rollup@4.21.0) '@unocss/config': 0.62.3 '@unocss/core': 0.62.3 '@unocss/inspector': 0.62.3 '@unocss/scope': 0.62.3 '@unocss/transformer-directives': 0.62.3 chokidar: 3.6.0 - magic-string: 0.30.11 + magic-string: 0.30.12 tinyglobby: 0.2.5 - vite: 5.4.8(@types/node@22.0.0) + vite: 5.4.11(@types/node@22.0.0) transitivePeerDependencies: - rollup - supports-color '@vitejs/plugin-react@4.3.1(vite@5.4.11(@types/node@22.0.0))': dependencies: - '@babel/core': 7.25.8 - '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.8) + '@babel/core': 7.26.0 + '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.26.0) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 vite: 5.4.11(@types/node@22.0.0) transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@4.3.1(vite@5.4.8(@types/node@22.0.0))': - dependencies: - '@babel/core': 7.25.8 - '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.8) - '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.8) - '@types/babel__core': 7.20.5 - react-refresh: 0.14.2 - vite: 5.4.8(@types/node@22.0.0) - transitivePeerDependencies: - - supports-color - '@volar/kit@2.4.6(typescript@5.6.3)': dependencies: '@volar/language-service': 2.4.6 @@ -10118,23 +9089,20 @@ snapshots: dependencies: acorn: 8.12.1 - acorn-jsx@5.3.2(acorn@8.12.1): + acorn-jsx@5.3.2(acorn@8.14.0): dependencies: - acorn: 8.12.1 + acorn: 8.14.0 acorn@8.12.1: {} acorn@8.14.0: {} -<<<<<<< HEAD agent-base@6.0.2: dependencies: debug: 4.3.7 transitivePeerDependencies: - supports-color -======= ->>>>>>> origin/dashboard-i18n ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 @@ -10195,11 +9163,10 @@ snapshots: astring@1.8.6: {} -<<<<<<< HEAD astro-auto-import@0.4.2(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): dependencies: '@types/node': 18.19.42 - acorn: 8.12.1 + acorn: 8.14.0 astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) astro-embed@0.7.4(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): @@ -10212,173 +9179,50 @@ snapshots: astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) astro-expressive-code@0.35.6(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): - dependencies: - astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) -======= - astro-auto-import@0.4.2(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): - dependencies: - '@types/node': 18.19.42 - acorn: 8.12.1 - astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) - - astro-embed@0.7.4(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): - dependencies: - '@astro-community/astro-embed-integration': 0.7.2(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) - '@astro-community/astro-embed-link-preview': 0.2.2 - '@astro-community/astro-embed-twitter': 0.5.6(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) - '@astro-community/astro-embed-vimeo': 0.3.10(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) - '@astro-community/astro-embed-youtube': 0.5.5(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) - astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) - - astro-expressive-code@0.35.6(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): - dependencies: - astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) ->>>>>>> origin/dashboard-i18n - rehype-expressive-code: 0.35.6 - - astro-icon@1.1.1: - dependencies: - '@iconify/tools': 4.0.5 - '@iconify/types': 2.0.0 - '@iconify/utils': 2.1.32 - transitivePeerDependencies: - - debug - - supports-color - - astro-integration-kit@0.14.0(astro@4.16.2(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)): - dependencies: - astro: 4.16.2(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) - pathe: 1.1.2 - recast: 0.23.9 - -<<<<<<< HEAD - astro-integration-kit@0.16.1(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): - dependencies: - astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) -======= - astro-integration-kit@0.16.1(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): - dependencies: - astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) ->>>>>>> origin/dashboard-i18n - pathe: 1.1.2 - recast: 0.23.9 - - astro-integration-kit@0.16.1(astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): - dependencies: - astro: 4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) - pathe: 1.1.2 - recast: 0.23.9 - - astro-pages@0.3.0(astro@4.16.2(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)): - dependencies: - astro: 4.16.2(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) - fast-glob: 3.3.2 - - astro-public@0.1.0(astro@4.16.2(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)): - dependencies: - astro: 4.16.2(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) - - astro-theme-provider@0.6.1(astro@4.16.2(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)): - dependencies: - astro: 4.16.2(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) - astro-integration-kit: 0.14.0(astro@4.16.2(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)) - astro-pages: 0.3.0(astro@4.16.2(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)) - astro-public: 0.1.0(astro@4.16.2(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)) - callsites: 4.2.0 - fast-glob: 3.3.2 - -<<<<<<< HEAD - astro@4.16.13(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3): -======= - astro@4.16.11(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3): ->>>>>>> origin/dashboard-i18n - dependencies: - '@astrojs/compiler': 2.10.3 - '@astrojs/internal-helpers': 0.4.1 - '@astrojs/markdown-remark': 5.3.0 - '@astrojs/telemetry': 3.1.0 - '@babel/core': 7.26.0 - '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) - '@babel/types': 7.26.0 - '@oslojs/encoding': 1.1.0 - '@rollup/pluginutils': 5.1.3(rollup@4.21.0) - '@types/babel__core': 7.20.5 - '@types/cookie': 0.6.0 - acorn: 8.14.0 - aria-query: 5.3.2 - axobject-query: 4.1.0 - boxen: 8.0.1 - ci-info: 4.0.0 - clsx: 2.1.1 - common-ancestor-path: 1.0.1 - cookie: 0.7.2 - cssesc: 3.0.0 - debug: 4.3.7 - deterministic-object-hash: 2.0.2 - devalue: 5.1.1 - diff: 5.2.0 - dlv: 1.1.3 - dset: 3.1.4 - es-module-lexer: 1.5.4 - esbuild: 0.21.5 - estree-walker: 3.0.3 - fast-glob: 3.3.2 - flattie: 1.1.1 - github-slugger: 2.0.0 - gray-matter: 4.0.3 - html-escaper: 3.0.3 - http-cache-semantics: 4.1.1 - js-yaml: 4.1.0 - kleur: 4.1.5 - magic-string: 0.30.12 - magicast: 0.3.5 - micromatch: 4.0.8 - mrmime: 2.0.0 - neotraverse: 0.6.18 - ora: 8.1.1 - p-limit: 6.1.0 - p-queue: 8.0.1 - preferred-pm: 4.0.0 - prompts: 2.4.2 - rehype: 13.0.2 - semver: 7.6.3 -<<<<<<< HEAD - shiki: 1.23.0 -======= - shiki: 1.22.2 ->>>>>>> origin/dashboard-i18n - tinyexec: 0.3.1 - tsconfck: 3.1.4(typescript@5.6.3) - unist-util-visit: 5.0.0 - vfile: 6.0.3 - vite: 5.4.11(@types/node@20.14.13) - vitefu: 1.0.3(vite@5.4.11(@types/node@20.14.13)) - which-pm: 3.0.0 - xxhash-wasm: 1.0.2 - yargs-parser: 21.1.1 - zod: 3.23.8 - zod-to-json-schema: 3.23.5(zod@3.23.8) - zod-to-ts: 1.2.0(typescript@5.6.3)(zod@3.23.8) - optionalDependencies: - sharp: 0.33.5 + dependencies: + astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + rehype-expressive-code: 0.35.6 + + astro-icon@1.1.1: + dependencies: + '@iconify/tools': 4.0.5 + '@iconify/types': 2.0.0 + '@iconify/utils': 2.1.32 transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - rollup - - sass - - sass-embedded - - stylus - - sugarss + - debug - supports-color - - terser - - typescript -<<<<<<< HEAD - astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3): -======= - astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3): ->>>>>>> origin/dashboard-i18n + astro-integration-kit@0.14.0(astro@4.16.13(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)): + dependencies: + astro: 4.16.13(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) + pathe: 1.1.2 + recast: 0.23.9 + + astro-integration-kit@0.16.1(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)): + dependencies: + astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) + pathe: 1.1.2 + recast: 0.23.9 + + astro-pages@0.3.0(astro@4.16.13(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)): + dependencies: + astro: 4.16.13(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) + fast-glob: 3.3.2 + + astro-public@0.1.0(astro@4.16.13(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)): + dependencies: + astro: 4.16.13(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) + + astro-theme-provider@0.6.1(astro@4.16.13(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)): + dependencies: + astro: 4.16.13(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3) + astro-integration-kit: 0.14.0(astro@4.16.13(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)) + astro-pages: 0.3.0(astro@4.16.13(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)) + astro-public: 0.1.0(astro@4.16.13(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3)) + callsites: 4.2.0 + fast-glob: 3.3.2 + + astro@4.16.13(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3): dependencies: '@astrojs/compiler': 2.10.3 '@astrojs/internal-helpers': 0.4.1 @@ -10429,17 +9273,13 @@ snapshots: prompts: 2.4.2 rehype: 13.0.2 semver: 7.6.3 -<<<<<<< HEAD shiki: 1.23.0 -======= - shiki: 1.22.2 ->>>>>>> origin/dashboard-i18n tinyexec: 0.3.1 tsconfck: 3.1.4(typescript@5.6.3) unist-util-visit: 5.0.0 vfile: 6.0.3 - vite: 5.4.11(@types/node@22.0.0) - vitefu: 1.0.3(vite@5.4.11(@types/node@22.0.0)) + vite: 5.4.11(@types/node@20.14.13) + vitefu: 1.0.3(vite@5.4.11(@types/node@20.14.13)) which-pm: 3.0.0 xxhash-wasm: 1.0.2 yargs-parser: 21.1.1 @@ -10461,99 +9301,20 @@ snapshots: - terser - typescript - astro@4.16.2(@types/node@20.14.13)(rollup@4.21.0)(typescript@5.6.3): - dependencies: - '@astrojs/compiler': 2.10.3 - '@astrojs/internal-helpers': 0.4.1 - '@astrojs/markdown-remark': 5.3.0 - '@astrojs/telemetry': 3.1.0 - '@babel/core': 7.25.7 - '@babel/plugin-transform-react-jsx': 7.25.7(@babel/core@7.25.7) - '@babel/types': 7.25.7 - '@oslojs/encoding': 1.1.0 - '@rollup/pluginutils': 5.1.2(rollup@4.21.0) - '@types/babel__core': 7.20.5 - '@types/cookie': 0.6.0 - acorn: 8.12.1 - aria-query: 5.3.2 - axobject-query: 4.1.0 - boxen: 8.0.1 - ci-info: 4.0.0 - clsx: 2.1.1 - common-ancestor-path: 1.0.1 - cookie: 0.7.2 - cssesc: 3.0.0 - debug: 4.3.7 - deterministic-object-hash: 2.0.2 - devalue: 5.1.1 - diff: 5.2.0 - dlv: 1.1.3 - dset: 3.1.4 - es-module-lexer: 1.5.4 - esbuild: 0.21.5 - estree-walker: 3.0.3 - fast-glob: 3.3.2 - flattie: 1.1.1 - github-slugger: 2.0.0 - gray-matter: 4.0.3 - html-escaper: 3.0.3 - http-cache-semantics: 4.1.1 - js-yaml: 4.1.0 - kleur: 4.1.5 - magic-string: 0.30.11 - magicast: 0.3.5 - micromatch: 4.0.8 - mrmime: 2.0.0 - neotraverse: 0.6.18 - ora: 8.1.0 - p-limit: 6.1.0 - p-queue: 8.0.1 - preferred-pm: 4.0.0 - prompts: 2.4.2 - rehype: 13.0.2 - semver: 7.6.3 - shiki: 1.22.0 - tinyexec: 0.3.0 - tsconfck: 3.1.3(typescript@5.6.3) - unist-util-visit: 5.0.0 - vfile: 6.0.3 - vite: 5.4.8(@types/node@20.14.13) - vitefu: 1.0.2(vite@5.4.8(@types/node@20.14.13)) - which-pm: 3.0.0 - xxhash-wasm: 1.0.2 - yargs-parser: 21.1.1 - zod: 3.23.8 - zod-to-json-schema: 3.23.3(zod@3.23.8) - zod-to-ts: 1.2.0(typescript@5.6.3)(zod@3.23.8) - optionalDependencies: - sharp: 0.33.5 - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - rollup - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - typescript - - astro@4.16.2(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3): + astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3): dependencies: '@astrojs/compiler': 2.10.3 '@astrojs/internal-helpers': 0.4.1 '@astrojs/markdown-remark': 5.3.0 '@astrojs/telemetry': 3.1.0 - '@babel/core': 7.25.7 - '@babel/plugin-transform-react-jsx': 7.25.7(@babel/core@7.25.7) - '@babel/types': 7.25.7 + '@babel/core': 7.26.0 + '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/types': 7.26.0 '@oslojs/encoding': 1.1.0 - '@rollup/pluginutils': 5.1.2(rollup@4.21.0) + '@rollup/pluginutils': 5.1.3(rollup@4.21.0) '@types/babel__core': 7.20.5 '@types/cookie': 0.6.0 - acorn: 8.12.1 + acorn: 8.14.0 aria-query: 5.3.2 axobject-query: 4.1.0 boxen: 8.0.1 @@ -10579,30 +9340,30 @@ snapshots: http-cache-semantics: 4.1.1 js-yaml: 4.1.0 kleur: 4.1.5 - magic-string: 0.30.11 + magic-string: 0.30.12 magicast: 0.3.5 micromatch: 4.0.8 mrmime: 2.0.0 neotraverse: 0.6.18 - ora: 8.1.0 + ora: 8.1.1 p-limit: 6.1.0 p-queue: 8.0.1 preferred-pm: 4.0.0 prompts: 2.4.2 rehype: 13.0.2 semver: 7.6.3 - shiki: 1.22.0 - tinyexec: 0.3.0 - tsconfck: 3.1.3(typescript@5.6.3) + shiki: 1.23.0 + tinyexec: 0.3.1 + tsconfck: 3.1.4(typescript@5.6.3) unist-util-visit: 5.0.0 vfile: 6.0.3 - vite: 5.4.8(@types/node@22.0.0) - vitefu: 1.0.2(vite@5.4.8(@types/node@22.0.0)) + vite: 5.4.11(@types/node@22.0.0) + vitefu: 1.0.3(vite@5.4.11(@types/node@22.0.0)) which-pm: 3.0.0 xxhash-wasm: 1.0.2 yargs-parser: 21.1.1 zod: 3.23.8 - zod-to-json-schema: 3.23.3(zod@3.23.8) + zod-to-json-schema: 3.23.5(zod@3.23.8) zod-to-ts: 1.2.0(typescript@5.6.3)(zod@3.23.8) optionalDependencies: sharp: 0.33.5 @@ -10623,16 +9384,6 @@ snapshots: asynckit@0.4.0: {} - autoprefixer@10.4.19(postcss@8.4.47): - dependencies: - browserslist: 4.23.2 - caniuse-lite: 1.0.30001644 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.1.0 - postcss: 8.4.47 - postcss-value-parser: 4.2.0 - autoprefixer@10.4.20(postcss@8.4.47): dependencies: browserslist: 4.24.0 @@ -10703,13 +9454,6 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.23.2: - dependencies: - caniuse-lite: 1.0.30001644 - electron-to-chromium: 1.5.3 - node-releases: 2.0.18 - update-browserslist-db: 1.1.0(browserslist@4.23.2) - browserslist@4.24.0: dependencies: caniuse-lite: 1.0.30001667 @@ -10738,8 +9482,6 @@ snapshots: camelize@1.0.1: {} - caniuse-lite@1.0.30001644: {} - caniuse-lite@1.0.30001667: {} ccount@2.0.1: {} @@ -11068,8 +9810,6 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.3: {} - electron-to-chromium@1.5.33: {} emmet@2.4.7: @@ -11299,11 +10039,7 @@ snapshots: is-plain-obj: 4.1.0 is-stream: 4.0.1 npm-run-path: 6.0.0 -<<<<<<< HEAD pretty-ms: 9.2.0 -======= - pretty-ms: 9.1.0 ->>>>>>> origin/dashboard-i18n signal-exit: 4.1.0 strip-final-newline: 4.0.0 yoctocolors: 2.1.1 @@ -11559,15 +10295,6 @@ snapshots: '@types/hast': 3.0.4 hast-util-is-element: 3.0.0 - hast-util-from-html@2.0.1: - dependencies: - '@types/hast': 3.0.4 - devlop: 1.1.0 - hast-util-from-parse5: 8.0.1 - parse5: 7.1.2 - vfile: 6.0.3 - vfile-message: 4.0.2 - hast-util-from-html@2.0.3: dependencies: '@types/hast': 3.0.4 @@ -11671,21 +10398,6 @@ snapshots: transitivePeerDependencies: - supports-color - hast-util-to-html@9.0.1: - dependencies: - '@types/hast': 3.0.4 - '@types/unist': 3.0.2 - ccount: 2.0.1 - comma-separated-tokens: 2.0.3 - hast-util-raw: 9.0.4 - hast-util-whitespace: 3.0.0 - html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.0 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - stringify-entities: 4.0.4 - zwitch: 2.0.4 - hast-util-to-html@9.0.3: dependencies: '@types/hast': 3.0.4 @@ -11955,8 +10667,6 @@ snapshots: dependencies: argparse: 2.0.1 - jsesc@2.5.2: {} - jsesc@3.0.2: {} json-buffer@3.0.1: {} @@ -12103,10 +10813,6 @@ snapshots: lunr@2.3.9: {} - magic-string@0.30.11: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 - magic-string@0.30.12: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -12117,8 +10823,8 @@ snapshots: magicast@0.3.5: dependencies: - '@babel/parser': 7.25.7 - '@babel/types': 7.25.7 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 source-map-js: 1.2.1 markdown-extensions@2.0.0: {} @@ -12146,10 +10852,10 @@ snapshots: dependencies: marked: 13.0.3 - marked-shiki@1.1.0(marked@13.0.3)(shiki@1.22.0): + marked-shiki@1.1.0(marked@13.0.3)(shiki@1.23.0): dependencies: marked: 13.0.3 - shiki: 1.22.0 + shiki: 1.23.0 marked-smartypants@1.1.7(marked@13.0.3): dependencies: @@ -12479,8 +11185,8 @@ snapshots: micromark-extension-mdxjs@3.0.0: dependencies: - acorn: 8.12.1 - acorn-jsx: 5.3.2(acorn@8.12.1) + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) micromark-extension-mdx-expression: 3.0.0 micromark-extension-mdx-jsx: 3.0.0 micromark-extension-mdx-md: 2.0.0 @@ -12672,7 +11378,7 @@ snapshots: mlly@1.7.1: dependencies: - acorn: 8.12.1 + acorn: 8.14.0 pathe: 1.1.2 pkg-types: 1.1.3 ufo: 1.5.4 @@ -12771,7 +11477,7 @@ snapshots: oniguruma-to-js@0.4.3: dependencies: - regex: 4.3.3 + regex: 4.4.0 open@10.1.0: dependencies: @@ -12780,18 +11486,6 @@ snapshots: is-inside-container: 1.0.0 is-wsl: 3.1.0 - ora@8.1.0: - dependencies: - chalk: 5.3.0 - cli-cursor: 5.0.0 - cli-spinners: 2.9.2 - is-interactive: 2.0.0 - is-unicode-supported: 2.0.0 - log-symbols: 6.0.0 - stdin-discarder: 0.2.2 - string-width: 7.2.0 - strip-ansi: 7.1.0 - ora@8.1.1: dependencies: chalk: 5.3.0 @@ -13053,11 +11747,7 @@ snapshots: prettier@2.8.8: {} -<<<<<<< HEAD pretty-ms@9.2.0: -======= - pretty-ms@9.1.0: ->>>>>>> origin/dashboard-i18n dependencies: parse-ms: 4.0.0 @@ -13145,8 +11835,6 @@ snapshots: regex-utilities@2.3.0: {} - regex@4.3.3: {} - regex@4.4.0: {} registry-auth-token@5.0.2: @@ -13226,12 +11914,6 @@ snapshots: hast-util-to-string: 3.0.1 unist-util-visit: 5.0.0 - rehype-stringify@10.0.0: - dependencies: - '@types/hast': 3.0.4 - hast-util-to-html: 9.0.1 - unified: 11.0.5 - rehype-stringify@10.0.1: dependencies: '@types/hast': 3.0.4 @@ -13281,14 +11963,6 @@ snapshots: transitivePeerDependencies: - supports-color - remark-rehype@11.1.0: - dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - mdast-util-to-hast: 13.2.0 - unified: 11.0.5 - vfile: 6.0.3 - remark-rehype@11.1.1: dependencies: '@types/hast': 3.0.4 @@ -13467,32 +12141,6 @@ snapshots: setprototypeof@1.2.0: {} - sharp@0.33.4: - dependencies: - color: 4.2.3 - detect-libc: 2.0.3 - semver: 7.6.3 - optionalDependencies: - '@img/sharp-darwin-arm64': 0.33.4 - '@img/sharp-darwin-x64': 0.33.4 - '@img/sharp-libvips-darwin-arm64': 1.0.2 - '@img/sharp-libvips-darwin-x64': 1.0.2 - '@img/sharp-libvips-linux-arm': 1.0.2 - '@img/sharp-libvips-linux-arm64': 1.0.2 - '@img/sharp-libvips-linux-s390x': 1.0.2 - '@img/sharp-libvips-linux-x64': 1.0.2 - '@img/sharp-libvips-linuxmusl-arm64': 1.0.2 - '@img/sharp-libvips-linuxmusl-x64': 1.0.2 - '@img/sharp-linux-arm': 0.33.4 - '@img/sharp-linux-arm64': 0.33.4 - '@img/sharp-linux-s390x': 0.33.4 - '@img/sharp-linux-x64': 0.33.4 - '@img/sharp-linuxmusl-arm64': 0.33.4 - '@img/sharp-linuxmusl-x64': 0.33.4 - '@img/sharp-wasm32': 0.33.4 - '@img/sharp-win32-ia32': 0.33.4 - '@img/sharp-win32-x64': 0.33.4 - sharp@0.33.5: dependencies: color: 4.2.3 @@ -13518,7 +12166,6 @@ snapshots: '@img/sharp-wasm32': 0.33.5 '@img/sharp-win32-ia32': 0.33.5 '@img/sharp-win32-x64': 0.33.5 - optional: true shebang-command@1.2.0: dependencies: @@ -13534,15 +12181,10 @@ snapshots: shiki-transformer-color-highlight@0.2.0: dependencies: - '@shikijs/core': 1.22.0 - '@shikijs/types': 1.22.0 + '@shikijs/core': 1.23.0 + '@shikijs/types': 1.23.0 colorjs.io: 0.5.2 - shiki@1.14.1: - dependencies: - '@shikijs/core': 1.14.1 - '@types/hast': 3.0.4 - shiki@1.22.0: dependencies: '@shikijs/core': 1.22.0 @@ -13552,7 +12194,6 @@ snapshots: '@shikijs/vscode-textmate': 9.3.0 '@types/hast': 3.0.4 -<<<<<<< HEAD shiki@1.23.0: dependencies: '@shikijs/core': 1.23.0 @@ -13564,17 +12205,6 @@ snapshots: shimmer@1.2.1: {} -======= - shiki@1.22.2: - dependencies: - '@shikijs/core': 1.22.2 - '@shikijs/engine-javascript': 1.22.2 - '@shikijs/engine-oniguruma': 1.22.2 - '@shikijs/types': 1.22.2 - '@shikijs/vscode-textmate': 9.3.0 - '@types/hast': 3.0.4 - ->>>>>>> origin/dashboard-i18n signal-exit@3.0.7: {} signal-exit@4.1.0: {} @@ -13617,30 +12247,17 @@ snapshots: sprintf-js@1.0.3: {} -<<<<<<< HEAD starlight-image-zoom@0.8.0(@astrojs/starlight@0.28.3(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))): dependencies: '@astrojs/starlight': 0.28.3(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) -======= - starlight-image-zoom@0.8.0(@astrojs/starlight@0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))): - dependencies: - '@astrojs/starlight': 0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) ->>>>>>> origin/dashboard-i18n rehype-raw: 7.0.0 unist-util-visit: 5.0.0 unist-util-visit-parents: 6.0.1 -<<<<<<< HEAD starlight-typedoc@0.16.0(@astrojs/starlight@0.28.3(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)))(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))(typedoc-plugin-markdown@4.2.9(typedoc@0.26.10(typescript@5.6.3)))(typedoc@0.26.10(typescript@5.6.3)): dependencies: '@astrojs/starlight': 0.28.3(astro@4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) astro: 4.16.13(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) -======= - starlight-typedoc@0.16.0(@astrojs/starlight@0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)))(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3))(typedoc-plugin-markdown@4.2.9(typedoc@0.26.10(typescript@5.6.3)))(typedoc@0.26.10(typescript@5.6.3)): - dependencies: - '@astrojs/starlight': 0.28.3(astro@4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3)) - astro: 4.16.11(@types/node@22.0.0)(rollup@4.21.0)(typescript@5.6.3) ->>>>>>> origin/dashboard-i18n github-slugger: 2.0.0 typedoc: 0.26.10(typescript@5.6.3) typedoc-plugin-markdown: 4.2.9(typedoc@0.26.10(typescript@5.6.3)) @@ -13788,8 +12405,6 @@ snapshots: tinyexec@0.2.0: {} - tinyexec@0.3.0: {} - tinyexec@0.3.1: {} tinyglobby@0.2.5: @@ -13819,10 +12434,6 @@ snapshots: ts-interface-checker@0.1.13: {} - tsconfck@3.1.3(typescript@5.6.3): - optionalDependencies: - typescript: 5.6.3 - tsconfck@3.1.4(typescript@5.6.3): optionalDependencies: typescript: 5.6.3 @@ -13865,7 +12476,7 @@ snapshots: lunr: 2.3.9 markdown-it: 14.1.0 minimatch: 9.0.5 - shiki: 1.22.0 + shiki: 1.23.0 typescript: 5.6.3 yaml: 2.5.1 @@ -13971,9 +12582,9 @@ snapshots: universalify@0.1.2: {} - unocss@0.62.3(postcss@8.4.47)(rollup@4.21.0)(vite@5.4.8(@types/node@22.0.0)): + unocss@0.62.3(postcss@8.4.47)(rollup@4.21.0)(vite@5.4.11(@types/node@22.0.0)): dependencies: - '@unocss/astro': 0.62.3(rollup@4.21.0)(vite@5.4.8(@types/node@22.0.0)) + '@unocss/astro': 0.62.3(rollup@4.21.0)(vite@5.4.11(@types/node@22.0.0)) '@unocss/cli': 0.62.3(rollup@4.21.0) '@unocss/core': 0.62.3 '@unocss/extractor-arbitrary-variants': 0.62.3 @@ -13992,9 +12603,9 @@ snapshots: '@unocss/transformer-compile-class': 0.62.3 '@unocss/transformer-directives': 0.62.3 '@unocss/transformer-variant-group': 0.62.3 - '@unocss/vite': 0.62.3(rollup@4.21.0)(vite@5.4.8(@types/node@22.0.0)) + '@unocss/vite': 0.62.3(rollup@4.21.0)(vite@5.4.11(@types/node@22.0.0)) optionalDependencies: - vite: 5.4.8(@types/node@22.0.0) + vite: 5.4.11(@types/node@22.0.0) transitivePeerDependencies: - postcss - rollup @@ -14007,12 +12618,6 @@ snapshots: webpack-sources: 3.2.3 webpack-virtual-modules: 0.5.0 - update-browserslist-db@1.1.0(browserslist@4.23.2): - dependencies: - browserslist: 4.23.2 - escalade: 3.1.2 - picocolors: 1.1.0 - update-browserslist-db@1.1.0(browserslist@4.24.0): dependencies: browserslist: 4.24.0 @@ -14054,32 +12659,6 @@ snapshots: '@types/node': 22.0.0 fsevents: 2.3.3 - vite@5.4.8(@types/node@20.14.13): - dependencies: - esbuild: 0.21.5 - postcss: 8.4.47 - rollup: 4.21.0 - optionalDependencies: - '@types/node': 20.14.13 - fsevents: 2.3.3 - - vite@5.4.8(@types/node@22.0.0): - dependencies: - esbuild: 0.21.5 - postcss: 8.4.47 - rollup: 4.21.0 - optionalDependencies: - '@types/node': 22.0.0 - fsevents: 2.3.3 - - vitefu@1.0.2(vite@5.4.8(@types/node@20.14.13)): - optionalDependencies: - vite: 5.4.8(@types/node@20.14.13) - - vitefu@1.0.2(vite@5.4.8(@types/node@22.0.0)): - optionalDependencies: - vite: 5.4.8(@types/node@22.0.0) - vitefu@1.0.3(vite@5.4.11(@types/node@20.14.13)): optionalDependencies: vite: 5.4.11(@types/node@20.14.13) @@ -14318,10 +12897,6 @@ snapshots: yoga-wasm-web@0.3.3: {} - zod-to-json-schema@3.23.3(zod@3.23.8): - dependencies: - zod: 3.23.8 - zod-to-json-schema@3.23.5(zod@3.23.8): dependencies: zod: 3.23.8 From b854ea7ec99903571f1794aedcae4747e98f414a Mon Sep 17 00:00:00 2001 From: Adam Matthiesen <amatthiesen@outlook.com> Date: Wed, 20 Nov 2024 09:58:22 -0800 Subject: [PATCH 40/40] update sentry settings to enable session replay --- playgrounds/node/astro.config.mts | 2 ++ playgrounds/node/sentry.client.config.js | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/playgrounds/node/astro.config.mts b/playgrounds/node/astro.config.mts index ae5f8101b..eb4b66c25 100644 --- a/playgrounds/node/astro.config.mts +++ b/playgrounds/node/astro.config.mts @@ -16,6 +16,8 @@ export default defineConfig({ integrations: [ sentry({ dsn: 'https://34abf40ffdbf5e574344842942046b30@sentry.studiocms.xyz/2', + replaysSessionSampleRate: 1.0, + replaysOnErrorSampleRate: 1.0, sourceMapsUploadOptions: { project: 'studiocms-playground', authToken: process.env.SENTRY_AUTH_TOKEN, diff --git a/playgrounds/node/sentry.client.config.js b/playgrounds/node/sentry.client.config.js index fc273d9c5..be25b78ae 100644 --- a/playgrounds/node/sentry.client.config.js +++ b/playgrounds/node/sentry.client.config.js @@ -8,5 +8,9 @@ Sentry.init({ colorScheme: 'system', isNameRequired: true, }), + Sentry.replayIntegration(), ], + // Session Replay + replaysSessionSampleRate: 1.0, // `0.1` sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production. + replaysOnErrorSampleRate: 1.0, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur. });