1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-09-19 17:52:45 +02:00

Fix/website performance (#10489)

This commit is contained in:
Fredrik Strand Oseberg 2025-08-27 15:54:32 +02:00 committed by GitHub
parent 64eaf21928
commit 8da040b89a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 1066 additions and 73 deletions

View File

@ -22,5 +22,5 @@ jobs:
uses: actions/dependency-review-action@v4
with:
fail-on-severity: moderate
allow-licenses: Apache-2.0, MIT, BSD-2-Clause, BSD-3-Clause, ISC, 0BSD, CC0-1.0, Unlicense, BlueOak-1.0.0, CC-BY-4.0, Artistic-2.0, PSF-2.0
allow-licenses: Apache-2.0, MIT, BSD-2-Clause, BSD-3-Clause, ISC, 0BSD, CC0-1.0, Unlicense, BlueOak-1.0.0, CC-BY-4.0, Artistic-2.0, PSF-2.0, MPL-2.0
comment-summary-in-pr: always

View File

@ -64,6 +64,9 @@ const getUnleashRepoStars = async () => {
export default async function createConfigAsync(): Promise<Config> {
const stars = await getUnleashRepoStars();
return {
future: {
experimental_faster: true, // turns Docusaurus Faster on globally
},
title: 'Unleash Documentation',
tagline: 'The enterprise ready feature flag service',
url: 'https://docs.getunleash.io',
@ -81,6 +84,17 @@ export default async function createConfigAsync(): Promise<Config> {
// expose env vars etc here
environment: process.env.NODE_ENV,
},
headTags: [
{
tagName: 'link',
attributes: {
rel: 'preload',
href: '/img/unleash_logo_dark.svg',
as: 'image',
type: 'image/svg+xml',
},
},
],
themeConfig: {
defaultMode: 'light',
disableSwitch: true,
@ -90,6 +104,9 @@ export default async function createConfigAsync(): Promise<Config> {
apiKey: 'dc9c4491fcf9143ee34015f22d1dd9d6',
indexName: 'getunleash',
},
theme: {
customCss: './src/css/custom.css',
},
metadata: [
{ name: 'og:image:width', content: '1200' },
{ name: 'og:image:height', content: '630' },
@ -421,16 +438,11 @@ class="header-github-link"
remarkPlugins: [[pluginNpm2Yarn, { sync: true }]],
docItemComponent: '@theme/ApiItem',
sidebarPath: './sidebars.ts',
breadcrumbs: true,
},
theme: {
customCss: './src/css/custom.css',
},
googleAnalytics: {
trackingID: 'UA-134882379-1',
},
googleTagManager: {
containerId: 'GTM-KV5PRR2',
},
sitemap: {
changefreq: 'weekly',
lastmod: 'date',
@ -902,29 +914,5 @@ class="header-github-link"
'docusaurus-theme-openapi-docs', // Allows use of @theme/ApiItem and other components
'@docusaurus/theme-mermaid',
],
scripts: [
{
src: 'https://widget.kapa.ai/kapa-widget.bundle.js', // See configuration: https://docs.kapa.ai/integrations/website-widget/configuration
'data-website-id': '1d187510-1726-4011-b0f7-62742ae064ee',
'data-project-name': 'Unleash',
'data-project-color': '#1A4049',
'data-project-logo':
'https://cdn.getunleash.io/uploads/2024/05/logo-unleash-white.svg',
'data-modal-image':
'https://cdn.getunleash.io/uploads/2022/05/logo.png',
'data-button-position-right': '0',
'data-button-border-radius': '10px 0px 0px 10px',
'data-button-width': '80px',
'data-button-height': '100px',
'data-button-image-height': '55px',
'data-button-image-width': '55px',
'data-button-text-font-weight': '400',
'data-button-text-font-size': '16px',
'data-button-text-font-family': '"Sen", sans-serif',
'data-button-text': 'ASK AI',
defer: true,
},
],
clientModules: ['./global.js'],
};
}

View File

@ -1,3 +0,0 @@
if(typeof document !== 'undefined') {
!function(){var e,t,n;e="5fe670e3422303a",t=function(){Reo.init({clientID:"5fe670e3422303a"})},(n=document.createElement("script")).src="https://static.reo.dev/"+e+"/reo.js",n.async=!0,n.onload=t,document.head.appendChild(n)}();
}

View File

@ -21,6 +21,7 @@
},
"dependencies": {
"@docusaurus/core": "^3.7.0",
"@docusaurus/faster": "^3.8.1",
"@docusaurus/plugin-client-redirects": "^3.7.0",
"@docusaurus/plugin-content-docs": "^3.7.0",
"@docusaurus/plugin-google-analytics": "^3.7.0",

View File

@ -1,29 +1,98 @@
// biome-ignore lint/correctness/noUnusedImports: Needs this for React to work
import React from 'react';
import React, { useState, useCallback } from 'react';
import Admonition from '@theme/Admonition';
import styles from './VideoContent.module.css';
// Extract YouTube video ID from various URL formats
const extractVideoId = (url) => {
const regex =
/(?:youtube\.com\/(?:[^\/]+\/.+\/|(?:v|e(?:mbed)?)\/|.*[?&]v=)|youtu\.be\/)([^"&?\/\s]{11})/;
const match = url.match(regex);
return match ? match[1] : null;
};
const LazyVideo = ({ url, title = 'YouTube video player' }) => {
const [isLoaded, setIsLoaded] = useState(false);
const videoId = extractVideoId(url);
const handleLoad = useCallback(() => {
setIsLoaded(true);
}, []);
if (!videoId) {
return (
<Admonition type='warning'>Invalid YouTube URL: {url}</Admonition>
);
}
if (!isLoaded) {
return (
<div
className={styles.videoThumbnail}
onClick={handleLoad}
onKeyDown={(e) => e.key === 'Enter' && handleLoad()}
role='button'
tabIndex={0}
aria-label={`Load ${title}`}
>
<img
className={styles.thumbnailImage}
src={`https://img.youtube.com/vi/${videoId}/hqdefault.jpg`}
alt={`${title} thumbnail`}
fetchPriority='high'
/>
<div className={styles.playButton}>
<svg
width='32'
height='32'
viewBox='0 0 24 24'
fill='white'
style={{ marginLeft: '2px' }}
>
<path d='M8 5v14l11-7z' />
</svg>
</div>
<div className={styles.loadingHint}>Click to load video</div>
</div>
);
}
const Component = ({ videoUrls }) => {
return (
<article className='unleash-video-container'>
{videoUrls ? (
videoUrls.map((url) => (
<iframe
key={url}
width='100%'
height='auto'
src={url}
title='YouTube video player'
allowFullScreen
/>
))
) : (
<Admonition type='danger'>
You need to provide YouTube video URLs for this component to
work properly.
</Admonition>
)}
<div className={styles.videoWrapper}>
<iframe
className={styles.loadedVideo}
src={`${url}${url.includes('?') ? '&' : '?'}autoplay=1`}
title={title}
allow='accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share'
allowFullScreen
loading='lazy'
/>
</div>
);
};
const VideoContent = ({ videoUrls }) => {
if (!videoUrls || videoUrls.length === 0) {
return (
<Admonition type='danger'>
You need to provide YouTube video URLs for this component to
work properly.
</Admonition>
);
}
return (
<article className={`unleash-video-container ${styles.videoContainer}`}>
{videoUrls.map((url, index) => (
<LazyVideo
key={url}
url={url}
title={`YouTube video player ${index + 1}`}
/>
))}
</article>
);
};
export default Component;
export default VideoContent;

View File

@ -0,0 +1,129 @@
/* Video thumbnail hover effects */
.videoThumbnail {
position: relative;
width: 100%;
padding-bottom: 56.25%; /* 16:9 aspect ratio */
cursor: pointer;
border-radius: 8px;
overflow: hidden;
border: 1px solid var(--ifm-color-emphasis-200);
transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.thumbnailImage {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
object-fit: cover;
}
.videoThumbnail:hover {
transform: translateY(-2px);
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
}
.videoThumbnail:hover .playButton {
transform: translate(-50%, -50%) scale(1.1);
background-color: var(--ifm-color-primary);
}
.playButton {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 80px;
height: 80px;
background-color: rgba(0, 0, 0, 0.8);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
transition: all 0.3s ease;
border: 3px solid rgba(255, 255, 255, 0.9);
}
.loadingHint {
position: absolute;
bottom: 10px;
left: 10px;
background-color: rgba(0, 0, 0, 0.7);
color: white;
padding: 4px 8px;
border-radius: 4px;
font-size: 12px;
font-weight: 500;
backdrop-filter: blur(4px);
}
.videoContainer {
display: flex;
flex-direction: column;
gap: 1.5rem;
margin: 1rem 0;
width: 100%;
max-width: 100%;
}
.videoWrapper {
position: relative;
width: 100%;
padding-bottom: 56.25%; /* 16:9 aspect ratio */
border-radius: 8px;
overflow: hidden;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
}
.loadedVideo {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
border: none;
}
/* Dark mode adjustments */
[data-theme="dark"] .videoThumbnail {
border-color: var(--ifm-color-emphasis-300);
}
[data-theme="dark"] .videoThumbnail:hover {
box-shadow: 0 4px 20px rgba(255, 255, 255, 0.1);
}
/* Responsive design */
@media (max-width: 768px) {
.playButton {
width: 60px;
height: 60px;
}
.videoContainer {
gap: 1rem;
}
}
/* Loading state */
.videoThumbnail:focus-visible {
outline: 2px solid var(--ifm-color-primary);
outline-offset: 2px;
}
/* Animation for smooth loading */
.videoWrapper {
animation: fadeInScale 0.3s ease-out;
}
@keyframes fadeInScale {
from {
opacity: 0;
transform: scale(0.95);
}
to {
opacity: 1;
transform: scale(1);
}
}

View File

@ -68,6 +68,22 @@ html[data-theme="light"] {
--unleash-color-footer-icon: #657a80;
}
main:after {
background-image: url("/img/mountain-texture.png");
position: fixed;
display: block;
z-index: 0;
bottom: 0px;
right: 0px;
width: 350px;
aspect-ratio: 652 / 905;
background-size: cover;
pointer-events: none;
user-select: none;
background-repeat: no-repeat;
content: "";
}
html[data-theme="dark"] {
--ifm-color-primary-lightest: #d1d1ff;
--ifm-color-primary-lighter: #c9c9ff;
@ -237,22 +253,6 @@ main .container {
}
}
main:after {
background-image: url("/img/mountain-texture.png");
position: fixed;
display: block;
z-index: 0;
bottom: 0px;
right: 0px;
width: 350px;
aspect-ratio: 652 / 905;
background-size: cover;
pointer-events: none;
user-select: none;
background-repeat: no-repeat;
content: "";
}
html[data-theme="dark"] {
main:after {
opacity: 0.06;

View File

@ -79,7 +79,7 @@ const GitHubContributors = ({ owner, repo, filePath }) => {
title={`@${name}`}
>
<img
src={contributor.avatar_url}
src={`${contributor.avatar_url}&s=66`}
alt={contributor.login}
width={70}
/>

161
website/src/theme/Root.tsx Normal file
View File

@ -0,0 +1,161 @@
import React, { useEffect } from 'react';
import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment';
export default function Root({ children }: { children: React.ReactNode }) {
useEffect(() => {
if (!ExecutionEnvironment.canUseDOM) {
return;
}
const loadGoogleAnalytics = () => {
if (
window.gtag ||
document.querySelector('script[src*="googletagmanager"]')
) {
return;
}
// Load Google Analytics
const gaScript = document.createElement('script');
gaScript.async = true;
gaScript.src =
'https://www.googletagmanager.com/gtag/js?id=UA-134882379-1';
document.head.appendChild(gaScript);
// Initialize gtag
window.dataLayer = window.dataLayer || [];
function gtag(...args: any[]) {
window.dataLayer.push(args);
}
window.gtag = gtag;
gtag('js', new Date());
gtag('config', 'UA-134882379-1');
};
const loadGoogleTagManager = () => {
if (
window.google_tag_manager ||
document.querySelector(
'script[src*="googletagmanager.com/gtm.js"]',
)
) {
return;
}
// Load GTM script
const gtmScript = document.createElement('script');
gtmScript.async = true;
gtmScript.src =
'https://www.googletagmanager.com/gtm.js?id=GTM-KV5PRR2';
document.head.appendChild(gtmScript);
// Initialize dataLayer
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
'gtm.start': new Date().getTime(),
event: 'gtm.js',
});
};
const loadKapaWidget = () => {
if (
document.querySelector('script[src*="kapa-widget.bundle.js"]')
) {
return;
}
const script = document.createElement('script');
script.src = 'https://widget.kapa.ai/kapa-widget.bundle.js';
script.async = true;
script.defer = true;
script.setAttribute(
'data-website-id',
'1d187510-1726-4011-b0f7-62742ae064ee',
);
script.setAttribute('data-project-name', 'Unleash');
script.setAttribute('data-project-color', '#1A4049');
script.setAttribute(
'data-project-logo',
'https://cdn.getunleash.io/uploads/2024/05/logo-unleash-white.svg',
);
script.setAttribute(
'data-modal-image',
'https://cdn.getunleash.io/uploads/2022/05/logo.png',
);
script.setAttribute('data-button-position-right', '0');
script.setAttribute(
'data-button-border-radius',
'10px 0px 0px 10px',
);
script.setAttribute('data-button-width', '80px');
script.setAttribute('data-button-height', '100px');
script.setAttribute('data-button-image-height', '55px');
script.setAttribute('data-button-image-width', '55px');
script.setAttribute('data-button-text-font-weight', '400');
script.setAttribute('data-button-text-font-size', '16px');
script.setAttribute(
'data-button-text-font-family',
'"Sen", sans-serif',
);
script.setAttribute('data-button-text', 'ASK AI');
document.head.appendChild(script);
};
let hasInteracted = false;
let fallbackTimer: NodeJS.Timeout;
const handleUserInteraction = () => {
if (hasInteracted) return;
hasInteracted = true;
if (fallbackTimer) {
clearTimeout(fallbackTimer);
}
loadGoogleAnalytics();
loadGoogleTagManager();
loadKapaWidget();
window.removeEventListener('scroll', handleUserInteraction);
window.removeEventListener('click', handleUserInteraction);
window.removeEventListener('touchstart', handleUserInteraction);
window.removeEventListener('mousemove', handleUserInteraction);
};
window.addEventListener('scroll', handleUserInteraction, {
once: true,
passive: true,
});
window.addEventListener('click', handleUserInteraction, { once: true });
window.addEventListener('touchstart', handleUserInteraction, {
once: true,
passive: true,
});
window.addEventListener('mousemove', handleUserInteraction, {
once: true,
passive: true,
});
fallbackTimer = setTimeout(() => {
if (!hasInteracted) {
hasInteracted = true;
loadGoogleAnalytics();
loadGoogleTagManager();
}
}, 3000);
return () => {
window.removeEventListener('scroll', handleUserInteraction);
window.removeEventListener('click', handleUserInteraction);
window.removeEventListener('touchstart', handleUserInteraction);
window.removeEventListener('mousemove', handleUserInteraction);
if (fallbackTimer) {
clearTimeout(fallbackTimer);
}
};
}, []);
return <>{children}</>;
}

View File

@ -2254,6 +2254,25 @@ __metadata:
languageName: node
linkType: hard
"@docusaurus/faster@npm:^3.8.1":
version: 3.8.1
resolution: "@docusaurus/faster@npm:3.8.1"
dependencies:
"@docusaurus/types": "npm:3.8.1"
"@rspack/core": "npm:^1.3.15"
"@swc/core": "npm:^1.7.39"
"@swc/html": "npm:^1.7.39"
browserslist: "npm:^4.24.2"
lightningcss: "npm:^1.27.0"
swc-loader: "npm:^0.2.6"
tslib: "npm:^2.6.0"
webpack: "npm:^5.95.0"
peerDependencies:
"@docusaurus/types": "*"
checksum: 10c0/349ae447d1641bad8a6b5f741234576638c80130d04c546091c16603d2fdede11cdb9ca7e35cad3e481d6db4e1b57ab88dd088a8d1b2e24df823e383cf2485e3
languageName: node
linkType: hard
"@docusaurus/logger@npm:3.7.0":
version: 3.7.0
resolution: "@docusaurus/logger@npm:3.7.0"
@ -2690,6 +2709,26 @@ __metadata:
languageName: node
linkType: hard
"@docusaurus/types@npm:3.8.1":
version: 3.8.1
resolution: "@docusaurus/types@npm:3.8.1"
dependencies:
"@mdx-js/mdx": "npm:^3.0.0"
"@types/history": "npm:^4.7.11"
"@types/react": "npm:*"
commander: "npm:^5.1.0"
joi: "npm:^17.9.2"
react-helmet-async: "npm:@slorber/react-helmet-async@1.3.0"
utility-types: "npm:^3.10.0"
webpack: "npm:^5.95.0"
webpack-merge: "npm:^5.9.0"
peerDependencies:
react: ^18.0.0 || ^19.0.0
react-dom: ^18.0.0 || ^19.0.0
checksum: 10c0/1a70a104c73b8cd6329e5feda72732be606d65d5fbd7b99453756dac50dd91f7d35ddacd782468d7b92f786ab0094a68bed45e52fa104e5fa3bb4836282a6f41
languageName: node
linkType: hard
"@docusaurus/utils-common@npm:3.7.0":
version: 3.7.0
resolution: "@docusaurus/utils-common@npm:3.7.0"
@ -2744,6 +2783,34 @@ __metadata:
languageName: node
linkType: hard
"@emnapi/core@npm:^1.4.5":
version: 1.4.5
resolution: "@emnapi/core@npm:1.4.5"
dependencies:
"@emnapi/wasi-threads": "npm:1.0.4"
tslib: "npm:^2.4.0"
checksum: 10c0/da4a57f65f325d720d0e0d1a9c6618b90c4c43a5027834a110476984e1d47c95ebaed4d316b5dddb9c0ed9a493ffeb97d1934f9677035f336d8a36c1f3b2818f
languageName: node
linkType: hard
"@emnapi/runtime@npm:^1.4.5":
version: 1.4.5
resolution: "@emnapi/runtime@npm:1.4.5"
dependencies:
tslib: "npm:^2.4.0"
checksum: 10c0/37a0278be5ac81e918efe36f1449875cbafba947039c53c65a1f8fc238001b866446fc66041513b286baaff5d6f9bec667f5164b3ca481373a8d9cb65bfc984b
languageName: node
linkType: hard
"@emnapi/wasi-threads@npm:1.0.4":
version: 1.0.4
resolution: "@emnapi/wasi-threads@npm:1.0.4"
dependencies:
tslib: "npm:^2.4.0"
checksum: 10c0/2c91a53e62f875800baf035c4d42c9c0d18e5afd9a31ca2aac8b435aeaeaeaac386b5b3d0d0e70aa7a5a9852bbe05106b1f680cd82cce03145c703b423d41313
languageName: node
linkType: hard
"@exodus/schemasafe@npm:^1.0.0-rc.2":
version: 1.3.0
resolution: "@exodus/schemasafe@npm:1.3.0"
@ -2964,6 +3031,72 @@ __metadata:
languageName: node
linkType: hard
"@module-federation/error-codes@npm:0.17.1":
version: 0.17.1
resolution: "@module-federation/error-codes@npm:0.17.1"
checksum: 10c0/24e99dbb7a918a513ce94ddcf8cc40c16da89ea19cdaa85148ab535c99df45afb4b05a3989113621bd5a0b2d4280492cde4a39cf22a9b38a6a2ef3ce07763806
languageName: node
linkType: hard
"@module-federation/runtime-core@npm:0.17.1":
version: 0.17.1
resolution: "@module-federation/runtime-core@npm:0.17.1"
dependencies:
"@module-federation/error-codes": "npm:0.17.1"
"@module-federation/sdk": "npm:0.17.1"
checksum: 10c0/f952bb01e35a39db65ec2fc9da05aff79d621be47d207bc7afaa886116f9d6cfd14e3c58fe8602b301abf6a4e0c086e44a822284756fcef84fe2b0c66d7fe175
languageName: node
linkType: hard
"@module-federation/runtime-tools@npm:0.17.1":
version: 0.17.1
resolution: "@module-federation/runtime-tools@npm:0.17.1"
dependencies:
"@module-federation/runtime": "npm:0.17.1"
"@module-federation/webpack-bundler-runtime": "npm:0.17.1"
checksum: 10c0/d766646be3f178e8f0931fbf145223d8bef43da3e63aac9fab99c82e4c9c65f3a78983f1e16bea92aebacb12c2a4c65b74743f75088eba5ce69deff0309ca0fa
languageName: node
linkType: hard
"@module-federation/runtime@npm:0.17.1":
version: 0.17.1
resolution: "@module-federation/runtime@npm:0.17.1"
dependencies:
"@module-federation/error-codes": "npm:0.17.1"
"@module-federation/runtime-core": "npm:0.17.1"
"@module-federation/sdk": "npm:0.17.1"
checksum: 10c0/8bb27a205cc861b6eaa02164a7e2e984785bfb9926cdf3b8fcb44c8d873e617022a002b033f411c1057d8f089e2ab18752e0386638c82ec5f8f9f0e89498129c
languageName: node
linkType: hard
"@module-federation/sdk@npm:0.17.1":
version: 0.17.1
resolution: "@module-federation/sdk@npm:0.17.1"
checksum: 10c0/67c9e4870effd2a8908da39dd3d78efea998809a92ef7078092db1e4de65014c679e552ec5e8804eb64a99e394e7882f7e6d889e733d71c6fd4c909c3c34b4e8
languageName: node
linkType: hard
"@module-federation/webpack-bundler-runtime@npm:0.17.1":
version: 0.17.1
resolution: "@module-federation/webpack-bundler-runtime@npm:0.17.1"
dependencies:
"@module-federation/runtime": "npm:0.17.1"
"@module-federation/sdk": "npm:0.17.1"
checksum: 10c0/c143c9494e44b4e0b6ed5ded4fcc8525d1bc38bfedd56e94ec8478b697dcfa06545a7bd62ec1b2480fba91557feaa4dce24aaa03089b051c195def3673d191fc
languageName: node
linkType: hard
"@napi-rs/wasm-runtime@npm:^1.0.1":
version: 1.0.3
resolution: "@napi-rs/wasm-runtime@npm:1.0.3"
dependencies:
"@emnapi/core": "npm:^1.4.5"
"@emnapi/runtime": "npm:^1.4.5"
"@tybys/wasm-util": "npm:^0.10.0"
checksum: 10c0/7918d82477e75931b6e35bb003464382eb93e526362f81a98bf8610407a67b10f4d041931015ad48072c89db547deb7e471dfb91f4ab11ac63a24d8580297f75
languageName: node
linkType: hard
"@nodelib/fs.scandir@npm:2.1.5":
version: 2.1.5
resolution: "@nodelib/fs.scandir@npm:2.1.5"
@ -3256,6 +3389,140 @@ __metadata:
languageName: node
linkType: hard
"@rspack/binding-darwin-arm64@npm:1.4.11":
version: 1.4.11
resolution: "@rspack/binding-darwin-arm64@npm:1.4.11"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
"@rspack/binding-darwin-x64@npm:1.4.11":
version: 1.4.11
resolution: "@rspack/binding-darwin-x64@npm:1.4.11"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
"@rspack/binding-linux-arm64-gnu@npm:1.4.11":
version: 1.4.11
resolution: "@rspack/binding-linux-arm64-gnu@npm:1.4.11"
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
"@rspack/binding-linux-arm64-musl@npm:1.4.11":
version: 1.4.11
resolution: "@rspack/binding-linux-arm64-musl@npm:1.4.11"
conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
"@rspack/binding-linux-x64-gnu@npm:1.4.11":
version: 1.4.11
resolution: "@rspack/binding-linux-x64-gnu@npm:1.4.11"
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
"@rspack/binding-linux-x64-musl@npm:1.4.11":
version: 1.4.11
resolution: "@rspack/binding-linux-x64-musl@npm:1.4.11"
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
"@rspack/binding-wasm32-wasi@npm:1.4.11":
version: 1.4.11
resolution: "@rspack/binding-wasm32-wasi@npm:1.4.11"
dependencies:
"@napi-rs/wasm-runtime": "npm:^1.0.1"
conditions: cpu=wasm32
languageName: node
linkType: hard
"@rspack/binding-win32-arm64-msvc@npm:1.4.11":
version: 1.4.11
resolution: "@rspack/binding-win32-arm64-msvc@npm:1.4.11"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
"@rspack/binding-win32-ia32-msvc@npm:1.4.11":
version: 1.4.11
resolution: "@rspack/binding-win32-ia32-msvc@npm:1.4.11"
conditions: os=win32 & cpu=ia32
languageName: node
linkType: hard
"@rspack/binding-win32-x64-msvc@npm:1.4.11":
version: 1.4.11
resolution: "@rspack/binding-win32-x64-msvc@npm:1.4.11"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
"@rspack/binding@npm:1.4.11":
version: 1.4.11
resolution: "@rspack/binding@npm:1.4.11"
dependencies:
"@rspack/binding-darwin-arm64": "npm:1.4.11"
"@rspack/binding-darwin-x64": "npm:1.4.11"
"@rspack/binding-linux-arm64-gnu": "npm:1.4.11"
"@rspack/binding-linux-arm64-musl": "npm:1.4.11"
"@rspack/binding-linux-x64-gnu": "npm:1.4.11"
"@rspack/binding-linux-x64-musl": "npm:1.4.11"
"@rspack/binding-wasm32-wasi": "npm:1.4.11"
"@rspack/binding-win32-arm64-msvc": "npm:1.4.11"
"@rspack/binding-win32-ia32-msvc": "npm:1.4.11"
"@rspack/binding-win32-x64-msvc": "npm:1.4.11"
dependenciesMeta:
"@rspack/binding-darwin-arm64":
optional: true
"@rspack/binding-darwin-x64":
optional: true
"@rspack/binding-linux-arm64-gnu":
optional: true
"@rspack/binding-linux-arm64-musl":
optional: true
"@rspack/binding-linux-x64-gnu":
optional: true
"@rspack/binding-linux-x64-musl":
optional: true
"@rspack/binding-wasm32-wasi":
optional: true
"@rspack/binding-win32-arm64-msvc":
optional: true
"@rspack/binding-win32-ia32-msvc":
optional: true
"@rspack/binding-win32-x64-msvc":
optional: true
checksum: 10c0/c02eacc3b88befa38d8043ec58099235e678bad5ec24cb5653f99932dbfcf630481a93cd338f7e60a192c69701aa4db778ca707c3a328ef2af57d55813709b4c
languageName: node
linkType: hard
"@rspack/core@npm:^1.3.15":
version: 1.4.11
resolution: "@rspack/core@npm:1.4.11"
dependencies:
"@module-federation/runtime-tools": "npm:0.17.1"
"@rspack/binding": "npm:1.4.11"
"@rspack/lite-tapable": "npm:1.0.1"
peerDependencies:
"@swc/helpers": ">=0.5.1"
peerDependenciesMeta:
"@swc/helpers":
optional: true
checksum: 10c0/56a3a98f3472da9d2091425973ded31250a6ea0ab0d66aa188b355ae8675620882b9b2bf9e22593fb0e4371714fa3806fec6663246f8bcc2a04a2c9390aceb9a
languageName: node
linkType: hard
"@rspack/lite-tapable@npm:1.0.1":
version: 1.0.1
resolution: "@rspack/lite-tapable@npm:1.0.1"
checksum: 10c0/90bb1bc414dc51ea2d0933e09f78d25584f3f50a85f4cb8228930bd29e5931bf55eff4f348a06c51dd3149fc73b8ae3920bf0ae5ae8a0c9fe1d9b404e6ecf5b7
languageName: node
linkType: hard
"@sideway/address@npm:^4.1.5":
version: 4.1.5
resolution: "@sideway/address@npm:4.1.5"
@ -3467,6 +3734,248 @@ __metadata:
languageName: node
linkType: hard
"@swc/core-darwin-arm64@npm:1.13.4":
version: 1.13.4
resolution: "@swc/core-darwin-arm64@npm:1.13.4"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
"@swc/core-darwin-x64@npm:1.13.4":
version: 1.13.4
resolution: "@swc/core-darwin-x64@npm:1.13.4"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
"@swc/core-linux-arm-gnueabihf@npm:1.13.4":
version: 1.13.4
resolution: "@swc/core-linux-arm-gnueabihf@npm:1.13.4"
conditions: os=linux & cpu=arm
languageName: node
linkType: hard
"@swc/core-linux-arm64-gnu@npm:1.13.4":
version: 1.13.4
resolution: "@swc/core-linux-arm64-gnu@npm:1.13.4"
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
"@swc/core-linux-arm64-musl@npm:1.13.4":
version: 1.13.4
resolution: "@swc/core-linux-arm64-musl@npm:1.13.4"
conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
"@swc/core-linux-x64-gnu@npm:1.13.4":
version: 1.13.4
resolution: "@swc/core-linux-x64-gnu@npm:1.13.4"
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
"@swc/core-linux-x64-musl@npm:1.13.4":
version: 1.13.4
resolution: "@swc/core-linux-x64-musl@npm:1.13.4"
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
"@swc/core-win32-arm64-msvc@npm:1.13.4":
version: 1.13.4
resolution: "@swc/core-win32-arm64-msvc@npm:1.13.4"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
"@swc/core-win32-ia32-msvc@npm:1.13.4":
version: 1.13.4
resolution: "@swc/core-win32-ia32-msvc@npm:1.13.4"
conditions: os=win32 & cpu=ia32
languageName: node
linkType: hard
"@swc/core-win32-x64-msvc@npm:1.13.4":
version: 1.13.4
resolution: "@swc/core-win32-x64-msvc@npm:1.13.4"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
"@swc/core@npm:^1.7.39":
version: 1.13.4
resolution: "@swc/core@npm:1.13.4"
dependencies:
"@swc/core-darwin-arm64": "npm:1.13.4"
"@swc/core-darwin-x64": "npm:1.13.4"
"@swc/core-linux-arm-gnueabihf": "npm:1.13.4"
"@swc/core-linux-arm64-gnu": "npm:1.13.4"
"@swc/core-linux-arm64-musl": "npm:1.13.4"
"@swc/core-linux-x64-gnu": "npm:1.13.4"
"@swc/core-linux-x64-musl": "npm:1.13.4"
"@swc/core-win32-arm64-msvc": "npm:1.13.4"
"@swc/core-win32-ia32-msvc": "npm:1.13.4"
"@swc/core-win32-x64-msvc": "npm:1.13.4"
"@swc/counter": "npm:^0.1.3"
"@swc/types": "npm:^0.1.24"
peerDependencies:
"@swc/helpers": ">=0.5.17"
dependenciesMeta:
"@swc/core-darwin-arm64":
optional: true
"@swc/core-darwin-x64":
optional: true
"@swc/core-linux-arm-gnueabihf":
optional: true
"@swc/core-linux-arm64-gnu":
optional: true
"@swc/core-linux-arm64-musl":
optional: true
"@swc/core-linux-x64-gnu":
optional: true
"@swc/core-linux-x64-musl":
optional: true
"@swc/core-win32-arm64-msvc":
optional: true
"@swc/core-win32-ia32-msvc":
optional: true
"@swc/core-win32-x64-msvc":
optional: true
peerDependenciesMeta:
"@swc/helpers":
optional: true
checksum: 10c0/4c762961085421dcb88faa187466b36e363984f40003df87a82df0194d42bd930a788a1c8e0523534f007824a2c4c37888e6bceda93c72458e6b1d0caa3dff88
languageName: node
linkType: hard
"@swc/counter@npm:^0.1.3":
version: 0.1.3
resolution: "@swc/counter@npm:0.1.3"
checksum: 10c0/8424f60f6bf8694cfd2a9bca45845bce29f26105cda8cf19cdb9fd3e78dc6338699e4db77a89ae449260bafa1cc6bec307e81e7fb96dbf7dcfce0eea55151356
languageName: node
linkType: hard
"@swc/html-darwin-arm64@npm:1.13.4":
version: 1.13.4
resolution: "@swc/html-darwin-arm64@npm:1.13.4"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
"@swc/html-darwin-x64@npm:1.13.4":
version: 1.13.4
resolution: "@swc/html-darwin-x64@npm:1.13.4"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
"@swc/html-linux-arm-gnueabihf@npm:1.13.4":
version: 1.13.4
resolution: "@swc/html-linux-arm-gnueabihf@npm:1.13.4"
conditions: os=linux & cpu=arm
languageName: node
linkType: hard
"@swc/html-linux-arm64-gnu@npm:1.13.4":
version: 1.13.4
resolution: "@swc/html-linux-arm64-gnu@npm:1.13.4"
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
"@swc/html-linux-arm64-musl@npm:1.13.4":
version: 1.13.4
resolution: "@swc/html-linux-arm64-musl@npm:1.13.4"
conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
"@swc/html-linux-x64-gnu@npm:1.13.4":
version: 1.13.4
resolution: "@swc/html-linux-x64-gnu@npm:1.13.4"
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
"@swc/html-linux-x64-musl@npm:1.13.4":
version: 1.13.4
resolution: "@swc/html-linux-x64-musl@npm:1.13.4"
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
"@swc/html-win32-arm64-msvc@npm:1.13.4":
version: 1.13.4
resolution: "@swc/html-win32-arm64-msvc@npm:1.13.4"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
"@swc/html-win32-ia32-msvc@npm:1.13.4":
version: 1.13.4
resolution: "@swc/html-win32-ia32-msvc@npm:1.13.4"
conditions: os=win32 & cpu=ia32
languageName: node
linkType: hard
"@swc/html-win32-x64-msvc@npm:1.13.4":
version: 1.13.4
resolution: "@swc/html-win32-x64-msvc@npm:1.13.4"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
"@swc/html@npm:^1.7.39":
version: 1.13.4
resolution: "@swc/html@npm:1.13.4"
dependencies:
"@swc/counter": "npm:^0.1.3"
"@swc/html-darwin-arm64": "npm:1.13.4"
"@swc/html-darwin-x64": "npm:1.13.4"
"@swc/html-linux-arm-gnueabihf": "npm:1.13.4"
"@swc/html-linux-arm64-gnu": "npm:1.13.4"
"@swc/html-linux-arm64-musl": "npm:1.13.4"
"@swc/html-linux-x64-gnu": "npm:1.13.4"
"@swc/html-linux-x64-musl": "npm:1.13.4"
"@swc/html-win32-arm64-msvc": "npm:1.13.4"
"@swc/html-win32-ia32-msvc": "npm:1.13.4"
"@swc/html-win32-x64-msvc": "npm:1.13.4"
dependenciesMeta:
"@swc/html-darwin-arm64":
optional: true
"@swc/html-darwin-x64":
optional: true
"@swc/html-linux-arm-gnueabihf":
optional: true
"@swc/html-linux-arm64-gnu":
optional: true
"@swc/html-linux-arm64-musl":
optional: true
"@swc/html-linux-x64-gnu":
optional: true
"@swc/html-linux-x64-musl":
optional: true
"@swc/html-win32-arm64-msvc":
optional: true
"@swc/html-win32-ia32-msvc":
optional: true
"@swc/html-win32-x64-msvc":
optional: true
checksum: 10c0/efac687f77d147a274d6e1fa468fd1d0233932a1dd13d0f3cddeb2ba5732fe3b1d82a33d58168a4a7e5ba68c6fe21b3ed5b42bfdf56642d85c54d05e0a5cb91e
languageName: node
linkType: hard
"@swc/types@npm:^0.1.24":
version: 0.1.24
resolution: "@swc/types@npm:0.1.24"
dependencies:
"@swc/counter": "npm:^0.1.3"
checksum: 10c0/4ca95a338f070f48303e705996bacfc1219f606c45274bed4f6e3488b86b7b20397bd52792e58fdea0fa924fc939695b5eb5ff7f3ff4737382148fe6097e235a
languageName: node
linkType: hard
"@szmarczak/http-timer@npm:^5.0.1":
version: 5.0.1
resolution: "@szmarczak/http-timer@npm:5.0.1"
@ -3490,6 +3999,15 @@ __metadata:
languageName: node
linkType: hard
"@tybys/wasm-util@npm:^0.10.0":
version: 0.10.0
resolution: "@tybys/wasm-util@npm:0.10.0"
dependencies:
tslib: "npm:^2.4.0"
checksum: 10c0/044feba55c1e2af703aa4946139969badb183ce1a659a75ed60bc195a90e73a3f3fc53bcd643497c9954597763ddb051fec62f80962b2ca6fc716ba897dc696e
languageName: node
linkType: hard
"@types/acorn@npm:^4.0.0":
version: 4.0.6
resolution: "@types/acorn@npm:4.0.6"
@ -7115,6 +7633,13 @@ __metadata:
languageName: node
linkType: hard
"detect-libc@npm:^2.0.3":
version: 2.0.4
resolution: "detect-libc@npm:2.0.4"
checksum: 10c0/c15541f836eba4b1f521e4eecc28eefefdbc10a94d3b8cb4c507689f332cc111babb95deda66f2de050b22122113189986d5190be97d51b5a2b23b938415e67c
languageName: node
linkType: hard
"detect-node@npm:^2.0.4":
version: 2.1.0
resolution: "detect-node@npm:2.1.0"
@ -10163,6 +10688,116 @@ __metadata:
languageName: node
linkType: hard
"lightningcss-darwin-arm64@npm:1.30.1":
version: 1.30.1
resolution: "lightningcss-darwin-arm64@npm:1.30.1"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
"lightningcss-darwin-x64@npm:1.30.1":
version: 1.30.1
resolution: "lightningcss-darwin-x64@npm:1.30.1"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
"lightningcss-freebsd-x64@npm:1.30.1":
version: 1.30.1
resolution: "lightningcss-freebsd-x64@npm:1.30.1"
conditions: os=freebsd & cpu=x64
languageName: node
linkType: hard
"lightningcss-linux-arm-gnueabihf@npm:1.30.1":
version: 1.30.1
resolution: "lightningcss-linux-arm-gnueabihf@npm:1.30.1"
conditions: os=linux & cpu=arm
languageName: node
linkType: hard
"lightningcss-linux-arm64-gnu@npm:1.30.1":
version: 1.30.1
resolution: "lightningcss-linux-arm64-gnu@npm:1.30.1"
conditions: os=linux & cpu=arm64 & libc=glibc
languageName: node
linkType: hard
"lightningcss-linux-arm64-musl@npm:1.30.1":
version: 1.30.1
resolution: "lightningcss-linux-arm64-musl@npm:1.30.1"
conditions: os=linux & cpu=arm64 & libc=musl
languageName: node
linkType: hard
"lightningcss-linux-x64-gnu@npm:1.30.1":
version: 1.30.1
resolution: "lightningcss-linux-x64-gnu@npm:1.30.1"
conditions: os=linux & cpu=x64 & libc=glibc
languageName: node
linkType: hard
"lightningcss-linux-x64-musl@npm:1.30.1":
version: 1.30.1
resolution: "lightningcss-linux-x64-musl@npm:1.30.1"
conditions: os=linux & cpu=x64 & libc=musl
languageName: node
linkType: hard
"lightningcss-win32-arm64-msvc@npm:1.30.1":
version: 1.30.1
resolution: "lightningcss-win32-arm64-msvc@npm:1.30.1"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
"lightningcss-win32-x64-msvc@npm:1.30.1":
version: 1.30.1
resolution: "lightningcss-win32-x64-msvc@npm:1.30.1"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
"lightningcss@npm:^1.27.0":
version: 1.30.1
resolution: "lightningcss@npm:1.30.1"
dependencies:
detect-libc: "npm:^2.0.3"
lightningcss-darwin-arm64: "npm:1.30.1"
lightningcss-darwin-x64: "npm:1.30.1"
lightningcss-freebsd-x64: "npm:1.30.1"
lightningcss-linux-arm-gnueabihf: "npm:1.30.1"
lightningcss-linux-arm64-gnu: "npm:1.30.1"
lightningcss-linux-arm64-musl: "npm:1.30.1"
lightningcss-linux-x64-gnu: "npm:1.30.1"
lightningcss-linux-x64-musl: "npm:1.30.1"
lightningcss-win32-arm64-msvc: "npm:1.30.1"
lightningcss-win32-x64-msvc: "npm:1.30.1"
dependenciesMeta:
lightningcss-darwin-arm64:
optional: true
lightningcss-darwin-x64:
optional: true
lightningcss-freebsd-x64:
optional: true
lightningcss-linux-arm-gnueabihf:
optional: true
lightningcss-linux-arm64-gnu:
optional: true
lightningcss-linux-arm64-musl:
optional: true
lightningcss-linux-x64-gnu:
optional: true
lightningcss-linux-x64-musl:
optional: true
lightningcss-win32-arm64-msvc:
optional: true
lightningcss-win32-x64-msvc:
optional: true
checksum: 10c0/1e1ad908f3c68bf39d964a6735435a8dd5474fb2765076732d64a7b6aa2af1f084da65a9462443a9adfebf7dcfb02fb532fce1d78697f2a9de29c8f40f09aee3
languageName: node
linkType: hard
"lilconfig@npm:^3.1.1":
version: 3.1.2
resolution: "lilconfig@npm:3.1.2"
@ -16006,6 +16641,18 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
"swc-loader@npm:^0.2.6":
version: 0.2.6
resolution: "swc-loader@npm:0.2.6"
dependencies:
"@swc/counter": "npm:^0.1.3"
peerDependencies:
"@swc/core": ^1.2.147
webpack: ">=2"
checksum: 10c0/b06926c5cb153931589c2166aa4c7c052cc53c68758acdda480d1eb59ecddf7d74b168e33166c4f807cc9dbae4395de9d80a14ad43e265fffaa775638abf71ce
languageName: node
linkType: hard
"tapable@npm:^1.0.0":
version: 1.1.3
resolution: "tapable@npm:1.1.3"
@ -16237,7 +16884,7 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
languageName: node
linkType: hard
"tslib@npm:^2.0.3, tslib@npm:^2.6.0":
"tslib@npm:^2.0.3, tslib@npm:^2.4.0, tslib@npm:^2.6.0":
version: 2.8.1
resolution: "tslib@npm:2.8.1"
checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62
@ -17156,6 +17803,7 @@ plugin-image-zoom@flexanalytics/plugin-image-zoom:
resolution: "websitev-2@workspace:."
dependencies:
"@docusaurus/core": "npm:^3.7.0"
"@docusaurus/faster": "npm:^3.8.1"
"@docusaurus/module-type-aliases": "npm:^3.7.0"
"@docusaurus/plugin-client-redirects": "npm:^3.7.0"
"@docusaurus/plugin-content-docs": "npm:^3.7.0"