diff --git a/apps/link/.eslintrc.cjs b/apps/link/.eslintrc.cjs new file mode 100644 index 00000000..d7599646 --- /dev/null +++ b/apps/link/.eslintrc.cjs @@ -0,0 +1,4 @@ +module.exports = { + root: true, + extends: ['custom'], +}; \ No newline at end of file diff --git a/apps/link/.gitignore b/apps/link/.gitignore new file mode 100644 index 00000000..b9383764 --- /dev/null +++ b/apps/link/.gitignore @@ -0,0 +1,28 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +public/assets +.assetpack +src/manifest.json diff --git a/apps/link/.storybook/main.ts b/apps/link/.storybook/main.ts new file mode 100644 index 00000000..095846bf --- /dev/null +++ b/apps/link/.storybook/main.ts @@ -0,0 +1,2 @@ +// https://github.com/storybookjs/storybook/issues/29567 +export { main as default } from 'config-storybook'; \ No newline at end of file diff --git a/apps/link/.storybook/preview.ts b/apps/link/.storybook/preview.ts new file mode 100644 index 00000000..7d921d52 --- /dev/null +++ b/apps/link/.storybook/preview.ts @@ -0,0 +1,3 @@ +import { preview } from 'config-storybook'; + +export default preview; \ No newline at end of file diff --git a/apps/link/README.md b/apps/link/README.md new file mode 100644 index 00000000..fce48a8d --- /dev/null +++ b/apps/link/README.md @@ -0,0 +1,199 @@ +# Link - PixiJS Creation Template + Web SDK Integration + +A modern game development setup that combines the power of **PixiJS Creation Template** with the **Web SDK monorepo ecosystem**, giving you the best of both worlds for professional game development. + +## ๐ŸŽฏ Purpose + +This project demonstrates how to integrate a standalone PixiJS Creation Template into the Web SDK monorepo while preserving all the valuable features from both ecosystems. It's perfect for developers who want: + +- **Professional PixiJS development tools** (AssetPack, Creation Engine, etc.) +- **Modern monorepo benefits** (shared utilities, configurations, tooling) +- **Flexibility** to use either approach based on project needs +- **Scalability** for complex game development workflows + +## โœจ Benefits + +### From PixiJS Creation Template +- ๐Ÿš€ **Creation Engine** - Advanced game engine with built-in navigation, audio, and lifecycle management +- ๐Ÿ“ฆ **AssetPack Integration** - Automatic asset optimization, sprite sheet generation, and manifest creation +- ๐Ÿ“ฑ **Responsive Design** - Built-in viewport management and resize handling +- ๐ŸŽต **Audio System** - Integrated background music and sound effects management +- ๐Ÿ—๏ธ **Professional Architecture** - Screen-based navigation, popup system, and component organization +- โšก **Modern Tooling** - Latest PixiJS 8, TypeScript, Vite, and hot reload +- ๐ŸŽจ **UI Components** - Pre-built buttons, animations, and interactive elements + +### From Web SDK Monorepo +- ๐Ÿ”ง **Shared Utilities** - Access to battle-tested functions for timing, randomization, and more +- ๐Ÿ“‹ **Consistent Configs** - Unified ESLint, TypeScript, and build configurations +- ๐Ÿข **Monorepo Benefits** - Shared dependencies, cross-package imports, and unified tooling +- ๐Ÿงช **Testing Infrastructure** - Storybook integration ready for component testing +- ๐ŸŒ **Deployment Pipeline** - Integration with existing Web SDK build and deployment processes +- ๐Ÿ“š **Knowledge Sharing** - Learn from other apps and components in the ecosystem + +## ๐Ÿ—๏ธ Architecture + +``` +apps/link/ +โ”œโ”€โ”€ src/ +โ”‚ โ”œโ”€โ”€ app/ # Game screens, UI, and components +โ”‚ โ”‚ โ”œโ”€โ”€ screens/ # Screen-based navigation system +โ”‚ โ”‚ โ”œโ”€โ”€ popups/ # Modal popups and overlays +โ”‚ โ”‚ โ”œโ”€โ”€ ui/ # Reusable UI components +โ”‚ โ”‚ โ””โ”€โ”€ utils/ # App-specific utilities +โ”‚ โ”œโ”€โ”€ engine/ # Creation Engine with plugins +โ”‚ โ”œโ”€โ”€ main.ts # Application entry point +โ”‚ โ””โ”€โ”€ webSDKIntegration.ts # Bridge to Web SDK utilities +โ”œโ”€โ”€ raw-assets/ # Source assets (processed by AssetPack) +โ”œโ”€โ”€ public/ # Static assets and generated sprites +โ”œโ”€โ”€ scripts/ # AssetPack configuration and build tools +โ””โ”€โ”€ package.json # Hybrid dependencies from both ecosystems +``` + +## ๐Ÿšฆ Getting Started + +### Prerequisites +- Node.js 22.16.0+ (recommended) +- pnpm 10.5.0+ + +### Development +```bash +# From the monorepo root +cd web-sdk +pnpm install + +# Start development server +pnpm run dev --filter=link + +# Access your app at http://localhost:3006 +``` + +### Building +```bash +# Build for production +pnpm run build --filter=link +``` + +## ๐Ÿ› ๏ธ Key Features + +### Creation Engine +The app uses a sophisticated engine that provides: +- **Screen Management** - Navigate between different game screens +- **Audio Management** - Background music and sound effects +- **Popup System** - Modal dialogs and overlays +- **Resize Handling** - Automatic viewport adjustments +- **Asset Loading** - Efficient resource management + +### AssetPack Integration +Automatic asset processing that: +- **Optimizes Images** - Compression and format conversion +- **Generates Sprites** - Automatic sprite sheet creation +- **Creates Manifests** - Asset loading configurations +- **Handles Multiple Formats** - Support for various image and audio formats + +### Web SDK Utilities +Access to proven utilities: +```typescript +import { WebSDKIntegration, utils } from './webSDKIntegration'; + +// Random number generation +const randomValue = utils.randomInteger({ min: 1, max: 100 }); + +// Async timing utilities +await utils.waitForTimeout(1000); +await utils.waitForResolve(callback); + +// Viewport and responsive design +const isPortrait = WebSDKIntegration.isPortrait(); +const scaleFactor = WebSDKIntegration.getScaleFactor(); +``` + +## ๐ŸŽฎ Example Usage + +### Creating a New Screen +```typescript +import { Container } from 'pixi.js'; +import { WebSDKIntegration, utils } from '../../../webSDKIntegration'; + +export class MyGameScreen extends Container { + public static assetBundles = ["gameplay"]; + + constructor() { + super(); + this.setupGameplay(); + } + + private async setupGameplay() { + // Use Web SDK utilities + const randomSeed = utils.randomInteger({ min: 1, max: 1000 }); + + // Access engine features + const stage = WebSDKIntegration.getStage(); + + // Your game logic here + } + + public resize(width: number, height: number) { + // Responsive design with Web SDK helpers + const scaleFactor = WebSDKIntegration.getScaleFactor(); + this.scale.set(scaleFactor); + } +} +``` + +### Using AssetPack +1. Add assets to `raw-assets/` folder +2. AssetPack automatically processes them during development +3. Access optimized assets in your code: +```typescript +// AssetPack generates optimized versions automatically +const texture = await Assets.load('my-sprite.png'); +``` + +## ๐Ÿ”„ Integration Benefits + +### Why This Hybrid Approach? + +1. **Best of Both Worlds** - Get professional PixiJS tooling + monorepo benefits +2. **No Vendor Lock-in** - Can evolve toward pure Web SDK or pure PixiJS as needed +3. **Learning Path** - Gradual adoption of Web SDK patterns while keeping familiar PixiJS structure +4. **Team Flexibility** - Accommodate different developer preferences and skills +5. **Future-Proof** - Easy to migrate features between approaches + +### When to Use This Setup + +โœ… **Perfect for:** +- Complex PixiJS games that need professional tooling +- Teams wanting to leverage existing Web SDK infrastructure +- Projects requiring both standalone and integrated development +- Learning and experimenting with different architectures + +โŒ **Consider alternatives for:** +- Simple games that don't need advanced asset processing +- Pure Web SDK projects following established patterns +- Projects with strict architectural requirements + +## ๐Ÿค Contributing + +This setup demonstrates integration patterns that can be applied to other projects in the monorepo. Feel free to: +- Enhance the Web SDK integration layer +- Add more utility bridges between systems +- Share learnings with other app developers +- Contribute improvements back to both ecosystems + +## ๐Ÿ“š Resources + +- [PixiJS Creation Template Documentation](https://github.com/pixijs/create-pixi) +- [Web SDK Documentation](../../../README.md) +- [AssetPack Documentation](https://assetpack.org/) +- [PixiJS Documentation](https://pixijs.download/release/docs/index.html) + +## ๐ŸŽฏ Next Steps + +1. **Explore the Creation Engine** - Check out screen navigation and audio systems +2. **Experiment with AssetPack** - Add assets and see automatic optimization +3. **Use Web SDK Utilities** - Integrate more shared functions as needed +4. **Build Your Game** - Start developing with this powerful hybrid setup + +--- + +*This project showcases how modern web development can benefit from combining specialized tools with monorepo architectures for maximum flexibility and power.* \ No newline at end of file diff --git a/apps/link/index.html b/apps/link/index.html new file mode 100644 index 00000000..c618e966 --- /dev/null +++ b/apps/link/index.html @@ -0,0 +1,17 @@ + + + + + + + + PixiJS - Template + + + +
+
+
+ + + diff --git a/apps/link/package.json b/apps/link/package.json new file mode 100644 index 00000000..2a025eb5 --- /dev/null +++ b/apps/link/package.json @@ -0,0 +1,36 @@ +{ + "name": "link", + "version": "0.0.0", + "private": true, + "license": "MIT", + "type": "module", + "scripts": { + "format": "prettier --write --ignore-path=../../.prettierignore .", + "lint": "eslint \"src\"", + "storybook": "cross-env PUBLIC_CHROMATIC=true storybook dev -p 6006 public", + "dev": "vite dev --host --port 3006", + "build": "vite build", + "preview": "vite preview" + }, + "dependencies": { + "@esotericsoftware/spine-pixi-v8": "^4.2.74", + "@pixi/sound": "^6.0.1", + "@pixi/ui": "^2.2.2", + "motion": "^12.4.7", + "pixi.js": "^8.8.1", + "lodash": "4.17.16", + "@types/lodash": "4.17.16", + "constants-shared": "workspace:*", + "utils-shared": "workspace:*", + "utils-sound": "workspace:*", + "vite": "6.2.0" + }, + "devDependencies": { + "@assetpack/core": "^1.4.0", + "cross-env": "^10.0.0", + "eslint": "9.21.0", + "eslint-config-custom": "workspace:*", + "config-ts": "workspace:*", + "typescript": "~5.7.3" + } +} diff --git a/apps/link/public/favicon.png b/apps/link/public/favicon.png new file mode 100644 index 00000000..fdc13bcf Binary files /dev/null and b/apps/link/public/favicon.png differ diff --git a/apps/link/public/style.css b/apps/link/public/style.css new file mode 100644 index 00000000..f4524fd0 --- /dev/null +++ b/apps/link/public/style.css @@ -0,0 +1,15 @@ +body { + margin: 0; + padding: 0; + color: rgba(255, 255, 255, 0.87); + background-color: #000000; +} + +#app { + width: 100%; + height: 100vh; + overflow: hidden; + display: flex; + justify-content: center; + align-items: center; +} diff --git a/apps/link/raw-assets/main{m}/logo-white.svg b/apps/link/raw-assets/main{m}/logo-white.svg new file mode 100644 index 00000000..ab56cb20 --- /dev/null +++ b/apps/link/raw-assets/main{m}/logo-white.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/link/raw-assets/main{m}/sounds/bgm-main.mp3 b/apps/link/raw-assets/main{m}/sounds/bgm-main.mp3 new file mode 100644 index 00000000..67a94ca9 Binary files /dev/null and b/apps/link/raw-assets/main{m}/sounds/bgm-main.mp3 differ diff --git a/apps/link/raw-assets/main{m}/sounds/sfx-hover.wav b/apps/link/raw-assets/main{m}/sounds/sfx-hover.wav new file mode 100644 index 00000000..8db0f190 Binary files /dev/null and b/apps/link/raw-assets/main{m}/sounds/sfx-hover.wav differ diff --git a/apps/link/raw-assets/main{m}/sounds/sfx-press.wav b/apps/link/raw-assets/main{m}/sounds/sfx-press.wav new file mode 100644 index 00000000..d0c28ce9 Binary files /dev/null and b/apps/link/raw-assets/main{m}/sounds/sfx-press.wav differ diff --git a/apps/link/raw-assets/main{m}/ui{tps}/button.png b/apps/link/raw-assets/main{m}/ui{tps}/button.png new file mode 100644 index 00000000..475c202b Binary files /dev/null and b/apps/link/raw-assets/main{m}/ui{tps}/button.png differ diff --git a/apps/link/raw-assets/main{m}/ui{tps}/icon-pause.png b/apps/link/raw-assets/main{m}/ui{tps}/icon-pause.png new file mode 100644 index 00000000..725736c0 Binary files /dev/null and b/apps/link/raw-assets/main{m}/ui{tps}/icon-pause.png differ diff --git a/apps/link/raw-assets/main{m}/ui{tps}/icon-settings.png b/apps/link/raw-assets/main{m}/ui{tps}/icon-settings.png new file mode 100644 index 00000000..8cd9614a Binary files /dev/null and b/apps/link/raw-assets/main{m}/ui{tps}/icon-settings.png differ diff --git a/apps/link/raw-assets/main{m}/ui{tps}/rounded-rectangle.png b/apps/link/raw-assets/main{m}/ui{tps}/rounded-rectangle.png new file mode 100644 index 00000000..17401993 Binary files /dev/null and b/apps/link/raw-assets/main{m}/ui{tps}/rounded-rectangle.png differ diff --git a/apps/link/raw-assets/preload{m}/logo.svg b/apps/link/raw-assets/preload{m}/logo.svg new file mode 100644 index 00000000..81b64185 --- /dev/null +++ b/apps/link/raw-assets/preload{m}/logo.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/link/scripts/assetpack-vite-plugin.ts b/apps/link/scripts/assetpack-vite-plugin.ts new file mode 100644 index 00000000..392796a1 --- /dev/null +++ b/apps/link/scripts/assetpack-vite-plugin.ts @@ -0,0 +1,53 @@ +// vite.config.mts +import type { AssetPackConfig } from "@assetpack/core"; +import { AssetPack } from "@assetpack/core"; +import { pixiPipes } from "@assetpack/core/pixi"; +import type { Plugin, ResolvedConfig } from "vite"; + +export function assetpackPlugin() { + const apConfig = { + entry: "./raw-assets", + pipes: [ + ...pixiPipes({ + cacheBust: false, + manifest: { + output: "./src/manifest.json", + }, + }), + ], + } as AssetPackConfig; + let mode: ResolvedConfig["command"]; + let ap: AssetPack | undefined; + + return { + name: "vite-plugin-assetpack", + configResolved(resolvedConfig) { + mode = resolvedConfig.command; + if (!resolvedConfig.publicDir) return; + if (apConfig.output) return; + // remove the root from the public dir + const publicDir = resolvedConfig.publicDir.replace(process.cwd(), ""); + + if (process.platform === "win32") { + apConfig.output = `${publicDir}/assets/`; + } else { + apConfig.output = `.${publicDir}/assets/`; + } + }, + buildStart: async () => { + if (mode === "serve") { + if (ap) return; + ap = new AssetPack(apConfig); + await ap.watch(); + } else { + await new AssetPack(apConfig).run(); + } + }, + buildEnd: async () => { + if (ap) { + await ap.stop(); + ap = undefined; + } + }, + } as Plugin; +} diff --git a/apps/link/src/app/getEngine.ts b/apps/link/src/app/getEngine.ts new file mode 100644 index 00000000..3dc2080e --- /dev/null +++ b/apps/link/src/app/getEngine.ts @@ -0,0 +1,15 @@ +import type { CreationEngine } from "../engine/engine"; + +let instance: CreationEngine | null = null; + +/** + * Get the main application engine + * This is a simple way to access the engine instance from anywhere in the app + */ +export function engine(): CreationEngine { + return instance!; +} + +export function setEngine(app: CreationEngine) { + instance = app; +} diff --git a/apps/link/src/app/popups/PausePopup.ts b/apps/link/src/app/popups/PausePopup.ts new file mode 100644 index 00000000..6f1bfc2a --- /dev/null +++ b/apps/link/src/app/popups/PausePopup.ts @@ -0,0 +1,88 @@ +import { animate } from "motion"; +import { BlurFilter, Container, Sprite, Texture } from "pixi.js"; + +import { engine } from "../getEngine"; +import { Button } from "../ui/Button"; +import { Label } from "../ui/Label"; +import { RoundedBox } from "../ui/RoundedBox"; + +/** Popup that shows up when gameplay is paused */ +export class PausePopup extends Container { + /** The dark semi-transparent background covering current screen */ + private bg: Sprite; + /** Container for the popup UI components */ + private panel: Container; + /** The popup title label */ + private title: Label; + /** Button that closes the popup */ + private doneButton: Button; + /** The panel background */ + private panelBase: RoundedBox; + + constructor() { + super(); + + this.bg = new Sprite(Texture.WHITE); + this.bg.tint = 0x0; + this.bg.interactive = true; + this.addChild(this.bg); + + this.panel = new Container(); + this.addChild(this.panel); + + this.panelBase = new RoundedBox({ height: 300 }); + this.panel.addChild(this.panelBase); + + this.title = new Label({ + text: "Paused", + style: { fill: 0xec1561, fontSize: 50 }, + }); + this.title.y = -80; + this.panel.addChild(this.title); + + this.doneButton = new Button({ text: "Resume" }); + this.doneButton.y = 70; + this.doneButton.onPress.connect(() => engine().navigation.dismissPopup()); + this.panel.addChild(this.doneButton); + } + + /** Resize the popup, fired whenever window size changes */ + public resize(width: number, height: number) { + this.bg.width = width; + this.bg.height = height; + this.panel.x = width * 0.5; + this.panel.y = height * 0.5; + } + + /** Present the popup, animated */ + public async show() { + const currentEngine = engine(); + if (currentEngine.navigation.currentScreen) { + currentEngine.navigation.currentScreen.filters = [ + new BlurFilter({ strength: 5 }), + ]; + } + this.bg.alpha = 0; + this.panel.pivot.y = -400; + animate(this.bg, { alpha: 0.8 }, { duration: 0.2, ease: "linear" }); + await animate( + this.panel.pivot, + { y: 0 }, + { duration: 0.3, ease: "backOut" }, + ); + } + + /** Dismiss the popup, animated */ + public async hide() { + const currentEngine = engine(); + if (currentEngine.navigation.currentScreen) { + currentEngine.navigation.currentScreen.filters = []; + } + animate(this.bg, { alpha: 0 }, { duration: 0.2, ease: "linear" }); + await animate( + this.panel.pivot, + { y: -500 }, + { duration: 0.3, ease: "backIn" }, + ); + } +} diff --git a/apps/link/src/app/popups/SettingsPopup.ts b/apps/link/src/app/popups/SettingsPopup.ts new file mode 100644 index 00000000..b85136dc --- /dev/null +++ b/apps/link/src/app/popups/SettingsPopup.ts @@ -0,0 +1,150 @@ +import { List } from "@pixi/ui"; +import { animate } from "motion"; +import type { Text } from "pixi.js"; +import { BlurFilter, Container, Sprite, Texture } from "pixi.js"; + +import { engine } from "../getEngine"; +import { Button } from "../ui/Button"; +import { Label } from "../ui/Label"; +import { RoundedBox } from "../ui/RoundedBox"; +import { VolumeSlider } from "../ui/VolumeSlider"; +import { userSettings } from "../utils/userSettings"; + +/** Popup for volume */ +export class SettingsPopup extends Container { + /** The dark semi-transparent background covering current screen */ + private bg: Sprite; + /** Container for the popup UI components */ + private panel: Container; + /** The popup title label */ + private title: Text; + /** Button that closes the popup */ + private doneButton: Button; + /** The panel background */ + private panelBase: RoundedBox; + /** The build version label */ + private versionLabel: Text; + /** Layout that organises the UI components */ + private layout: List; + /** Slider that changes the master volume */ + private masterSlider: VolumeSlider; + /** Slider that changes background music volume */ + private bgmSlider: VolumeSlider; + /** Slider that changes sound effects volume */ + private sfxSlider: VolumeSlider; + + constructor() { + super(); + + this.bg = new Sprite(Texture.WHITE); + this.bg.tint = 0x0; + this.bg.interactive = true; + this.addChild(this.bg); + + this.panel = new Container(); + this.addChild(this.panel); + + this.panelBase = new RoundedBox({ height: 425 }); + this.panel.addChild(this.panelBase); + + this.title = new Label({ + text: "Settings", + style: { + fill: 0xec1561, + fontSize: 50, + }, + }); + this.title.y = -this.panelBase.boxHeight * 0.5 + 60; + this.panel.addChild(this.title); + + this.doneButton = new Button({ text: "OK" }); + this.doneButton.y = this.panelBase.boxHeight * 0.5 - 78; + this.doneButton.onPress.connect(() => engine().navigation.dismissPopup()); + this.panel.addChild(this.doneButton); + + this.versionLabel = new Label({ + text: `Version ${APP_VERSION}`, + style: { + fill: 0xffffff, + fontSize: 12, + }, + }); + this.versionLabel.alpha = 0.5; + this.versionLabel.y = this.panelBase.boxHeight * 0.5 - 15; + this.panel.addChild(this.versionLabel); + + this.layout = new List({ type: "vertical", elementsMargin: 4 }); + this.layout.x = -140; + this.layout.y = -80; + this.panel.addChild(this.layout); + + this.masterSlider = new VolumeSlider("Master Volume"); + this.masterSlider.onUpdate.connect((v) => { + userSettings.setMasterVolume(v / 100); + }); + this.layout.addChild(this.masterSlider); + + this.bgmSlider = new VolumeSlider("BGM Volume"); + this.bgmSlider.onUpdate.connect((v) => { + userSettings.setBgmVolume(v / 100); + }); + this.layout.addChild(this.bgmSlider); + + this.sfxSlider = new VolumeSlider("SFX Volume"); + this.sfxSlider.onUpdate.connect((v) => { + userSettings.setSfxVolume(v / 100); + }); + this.layout.addChild(this.sfxSlider); + } + + /** Resize the popup, fired whenever window size changes */ + public resize(width: number, height: number) { + this.bg.width = width; + this.bg.height = height; + this.panel.x = width * 0.5; + this.panel.y = height * 0.5; + } + + /** Set things up just before showing the popup */ + public prepare() { + this.masterSlider.value = userSettings.getMasterVolume() * 100; + this.bgmSlider.value = userSettings.getBgmVolume() * 100; + this.sfxSlider.value = userSettings.getSfxVolume() * 100; + } + + /** Present the popup, animated */ + public async show() { + const currentEngine = engine(); + if (currentEngine.navigation.currentScreen) { + currentEngine.navigation.currentScreen.filters = [ + new BlurFilter({ strength: 4 }), + ]; + } + + this.bg.alpha = 0; + this.panel.pivot.y = -400; + animate(this.bg, { alpha: 0.8 }, { duration: 0.2, ease: "linear" }); + await animate( + this.panel.pivot, + { y: 0 }, + { duration: 0.3, ease: "backOut" }, + ); + } + + /** Dismiss the popup, animated */ + public async hide() { + const currentEngine = engine(); + if (currentEngine.navigation.currentScreen) { + currentEngine.navigation.currentScreen.filters = []; + } + animate(this.bg, { alpha: 0 }, { duration: 0.2, ease: "linear" }); + await animate( + this.panel.pivot, + { y: -500 }, + { + duration: 0.3, + ease: "backIn", + }, + ); + } +} diff --git a/apps/link/src/app/screens/LoadScreen.ts b/apps/link/src/app/screens/LoadScreen.ts new file mode 100644 index 00000000..6cd662e7 --- /dev/null +++ b/apps/link/src/app/screens/LoadScreen.ts @@ -0,0 +1,65 @@ +import { CircularProgressBar } from "@pixi/ui"; +import { animate } from "motion"; +import type { ObjectTarget } from "motion/react"; +import { Container, Sprite, Texture } from "pixi.js"; + +/** Screen shown while loading assets */ +export class LoadScreen extends Container { + /** Assets bundles required by this screen */ + public static assetBundles = ["preload"]; + /** The PixiJS logo */ + private pixiLogo: Sprite; + /** Progress Bar */ + private progressBar: CircularProgressBar; + + constructor() { + super(); + + this.progressBar = new CircularProgressBar({ + backgroundColor: "#3d3d3d", + fillColor: "#e72264", + radius: 100, + lineWidth: 15, + value: 20, + backgroundAlpha: 0.5, + fillAlpha: 0.8, + cap: "round", + }); + + this.progressBar.x += this.progressBar.width / 2; + this.progressBar.y += -this.progressBar.height / 2; + + this.addChild(this.progressBar); + + this.pixiLogo = new Sprite({ + texture: Texture.from("logo.svg"), + anchor: 0.5, + scale: 0.2, + }); + this.addChild(this.pixiLogo); + } + + public onLoad(progress: number) { + this.progressBar.progress = progress; + } + + /** Resize the screen, fired whenever window size changes */ + public resize(width: number, height: number) { + this.pixiLogo.position.set(width * 0.5, height * 0.5); + this.progressBar.position.set(width * 0.5, height * 0.5); + } + + /** Show screen with animations */ + public async show() { + this.alpha = 1; + } + + /** Hide screen with animations */ + public async hide() { + await animate(this, { alpha: 0 } as ObjectTarget, { + duration: 0.3, + ease: "linear", + delay: 1, + }); + } +} diff --git a/apps/link/src/app/screens/main/Bouncer.ts b/apps/link/src/app/screens/main/Bouncer.ts new file mode 100644 index 00000000..54010c71 --- /dev/null +++ b/apps/link/src/app/screens/main/Bouncer.ts @@ -0,0 +1,113 @@ +import { animate } from "motion"; + +import { randomFloat } from "../../../engine/utils/random"; +import { waitFor } from "../../../engine/utils/waitFor"; + +import { DIRECTION, Logo } from "./Logo"; +import type { MainScreen } from "./MainScreen"; + +export class Bouncer { + private static readonly LOGO_COUNT = 3; + private static readonly ANIMATION_DURATION = 1; + private static readonly WAIT_DURATION = 0.5; + + public screen!: MainScreen; + + private allLogoArray: Logo[] = []; + private activeLogoArray: Logo[] = []; + private yMin = -400; + private yMax = 400; + private xMin = -400; + private xMax = 400; + + public async show(screen: MainScreen): Promise { + this.screen = screen; + for (let i = 0; i < Bouncer.LOGO_COUNT; i++) { + this.add(); + await waitFor(Bouncer.WAIT_DURATION); + } + } + + public add(): void { + const width = randomFloat(this.xMin, this.xMax); + const height = randomFloat(this.yMin, this.yMax); + const logo = new Logo(); + + logo.alpha = 0; + logo.position.set(width, height); + animate(logo, { alpha: 1 }, { duration: Bouncer.ANIMATION_DURATION }); + this.screen.mainContainer.addChild(logo); + this.allLogoArray.push(logo); + this.activeLogoArray.push(logo); + } + + public remove(): void { + const logo = this.activeLogoArray.pop(); + if (logo) { + animate(logo, { alpha: 0 }, { duration: Bouncer.ANIMATION_DURATION }) + .then(() => { + this.screen.mainContainer.removeChild(logo); + const index = this.allLogoArray.indexOf(logo); + if (index !== -1) this.allLogoArray.splice(index, 1); + }) + .catch((error) => { + console.error("Error during logo removal animation:", error); + }); + } + } + + public update(): void { + this.allLogoArray.forEach((entity) => { + this.setDirection(entity); + this.setLimits(entity); + }); + } + + private setDirection(logo: Logo): void { + switch (logo.direction) { + case DIRECTION.NE: + logo.x += logo.speed; + logo.y -= logo.speed; + break; + case DIRECTION.NW: + logo.x -= logo.speed; + logo.y -= logo.speed; + break; + case DIRECTION.SE: + logo.x += logo.speed; + logo.y += logo.speed; + break; + case DIRECTION.SW: + logo.x -= logo.speed; + logo.y += logo.speed; + break; + } + } + + private setLimits(logo: Logo): void { + const { position, top, bottom, left, right } = logo; + let { direction } = logo; + + if (position.y + top <= this.yMin) { + direction = direction === DIRECTION.NW ? DIRECTION.SW : DIRECTION.SE; + } + if (position.y + bottom >= this.yMax) { + direction = direction === DIRECTION.SE ? DIRECTION.NE : DIRECTION.NW; + } + if (position.x + left <= this.xMin) { + direction = direction === DIRECTION.NW ? DIRECTION.NE : DIRECTION.SE; + } + if (position.x + right >= this.xMax) { + direction = direction === DIRECTION.NE ? DIRECTION.NW : DIRECTION.SW; + } + + logo.direction = direction; + } + + public resize(w: number, h: number): void { + this.xMin = -w / 2; + this.xMax = w / 2; + this.yMin = -h / 2; + this.yMax = h / 2; + } +} diff --git a/apps/link/src/app/screens/main/Logo.ts b/apps/link/src/app/screens/main/Logo.ts new file mode 100644 index 00000000..e427d947 --- /dev/null +++ b/apps/link/src/app/screens/main/Logo.ts @@ -0,0 +1,42 @@ +import { Sprite, Texture } from "pixi.js"; + +import { + randomBool, + randomFloat, + randomInt, +} from "../../../engine/utils/random"; + +export enum DIRECTION { + NE, + NW, + SE, + SW, +} + +export class Logo extends Sprite { + public direction!: DIRECTION; + public speed!: number; + + get left() { + return -this.width * 0.5; + } + + get right() { + return this.width * 0.5; + } + + get top() { + return -this.height * 0.5; + } + + get bottom() { + return this.height * 0.5; + } + + constructor() { + const tex = randomBool() ? "logo.svg" : "logo-white.svg"; + super({ texture: Texture.from(tex), anchor: 0.5, scale: 0.25 }); + this.direction = randomInt(0, 3); + this.speed = randomFloat(1, 6); + } +} diff --git a/apps/link/src/app/screens/main/MainScreen.ts b/apps/link/src/app/screens/main/MainScreen.ts new file mode 100644 index 00000000..8043870f --- /dev/null +++ b/apps/link/src/app/screens/main/MainScreen.ts @@ -0,0 +1,163 @@ +import { FancyButton } from "@pixi/ui"; +import { animate } from "motion"; +import type { AnimationPlaybackControls } from "motion/react"; +import type { Ticker } from "pixi.js"; +import { Container } from "pixi.js"; + +import { engine } from "../../getEngine"; +import { PausePopup } from "../../popups/PausePopup"; +import { SettingsPopup } from "../../popups/SettingsPopup"; +import { Button } from "../../ui/Button"; + +import { Bouncer } from "./Bouncer"; + +/** The screen that holds the app */ +export class MainScreen extends Container { + /** Assets bundles required by this screen */ + public static assetBundles = ["main"]; + + public mainContainer: Container; + private pauseButton: FancyButton; + private settingsButton: FancyButton; + private addButton: FancyButton; + private removeButton: FancyButton; + private bouncer: Bouncer; + private paused = false; + + constructor() { + super(); + + this.mainContainer = new Container(); + this.addChild(this.mainContainer); + this.bouncer = new Bouncer(); + + const buttonAnimations = { + hover: { + props: { + scale: { x: 1.1, y: 1.1 }, + }, + duration: 100, + }, + pressed: { + props: { + scale: { x: 0.9, y: 0.9 }, + }, + duration: 100, + }, + }; + this.pauseButton = new FancyButton({ + defaultView: "icon-pause.png", + anchor: 0.5, + animations: buttonAnimations, + }); + this.pauseButton.onPress.connect(() => + engine().navigation.presentPopup(PausePopup), + ); + this.addChild(this.pauseButton); + + this.settingsButton = new FancyButton({ + defaultView: "icon-settings.png", + anchor: 0.5, + animations: buttonAnimations, + }); + this.settingsButton.onPress.connect(() => + engine().navigation.presentPopup(SettingsPopup), + ); + this.addChild(this.settingsButton); + + this.addButton = new Button({ + text: "Add", + width: 175, + height: 110, + }); + this.addButton.onPress.connect(() => this.bouncer.add()); + this.addChild(this.addButton); + + this.removeButton = new Button({ + text: "Remove", + width: 175, + height: 110, + }); + this.removeButton.onPress.connect(() => this.bouncer.remove()); + this.addChild(this.removeButton); + } + + /** Prepare the screen just before showing */ + public prepare() {} + + /** Update the screen */ + // eslint-disable-next-line @typescript-eslint/no-unused-vars + public update(_time: Ticker) { + if (this.paused) return; + this.bouncer.update(); + } + + /** Pause gameplay - automatically fired when a popup is presented */ + public async pause() { + this.mainContainer.interactiveChildren = false; + this.paused = true; + } + + /** Resume gameplay */ + public async resume() { + this.mainContainer.interactiveChildren = true; + this.paused = false; + } + + /** Fully reset */ + public reset() {} + + /** Resize the screen, fired whenever window size changes */ + public resize(width: number, height: number) { + const centerX = width * 0.5; + const centerY = height * 0.5; + + this.mainContainer.x = centerX; + this.mainContainer.y = centerY; + this.pauseButton.x = 30; + this.pauseButton.y = 30; + this.settingsButton.x = width - 30; + this.settingsButton.y = 30; + this.removeButton.x = width / 2 - 100; + this.removeButton.y = height - 75; + this.addButton.x = width / 2 + 100; + this.addButton.y = height - 75; + + this.bouncer.resize(width, height); + } + + /** Show screen with animations */ + public async show(): Promise { + engine().audio.bgm.play("main/sounds/bgm-main.mp3", { volume: 0.5 }); + + const elementsToAnimate = [ + this.pauseButton, + this.settingsButton, + this.addButton, + this.removeButton, + ]; + + let finalPromise!: AnimationPlaybackControls; + for (const element of elementsToAnimate) { + element.alpha = 0; + finalPromise = animate( + element, + { alpha: 1 }, + { duration: 0.3, delay: 0.75, ease: "backOut" }, + ); + } + + await finalPromise; + this.bouncer.show(this); + } + + /** Hide screen with animations */ + public async hide() {} + + /** Auto pause the app when window go out of focus */ + public blur() { + if (!engine().navigation.currentPopup) { + engine().navigation.presentPopup(PausePopup); + } + } +} diff --git a/apps/link/src/app/screens/main/WebSDKExample.ts b/apps/link/src/app/screens/main/WebSDKExample.ts new file mode 100644 index 00000000..6e98f590 --- /dev/null +++ b/apps/link/src/app/screens/main/WebSDKExample.ts @@ -0,0 +1,62 @@ +import { WebSDKIntegration, utils } from '../../../webSDKIntegration'; +import { Container, Text } from 'pixi.js'; + +/** + * Example component showing how to use Web SDK utilities in your PixiJS template + */ +export class WebSDKExample extends Container { + private infoText: Text; + + constructor() { + super(); + + // Create a text display + this.infoText = new Text({ + text: 'Web SDK Integration Example', + style: { + fontFamily: 'Arial', + fontSize: 24, + fill: 0xffffff, + align: 'center', + } + }); + this.infoText.anchor.set(0.5); + this.addChild(this.infoText); + + // Example of using Web SDK utilities + this.demoWebSDKFeatures(); + } + + private async demoWebSDKFeatures() { + // Example 1: Using randomInteger from Web SDK + const randomNumber = utils.randomInteger({ min: 1, max: 100 }); + console.log('Random number from Web SDK:', randomNumber); + + // Example 2: Using wait utilities + await utils.waitForTimeout(1000); + this.infoText.text = `Random: ${randomNumber}`; + + // Example 3: Getting viewport info + const viewportSize = WebSDKIntegration.getViewportSize(); + console.log('Viewport size:', viewportSize); + + // Example 4: Responsive design + const isPortrait = WebSDKIntegration.isPortrait(); + const scaleFactor = WebSDKIntegration.getScaleFactor(); + console.log('Is portrait:', isPortrait, 'Scale factor:', scaleFactor); + + // Example 5: Access to the engine + const stage = WebSDKIntegration.getStage(); + console.log('Stage children count:', stage?.children.length); + } + + public resize(width: number, height: number) { + // Center the text + this.x = width * 0.5; + this.y = height * 0.3; + + // Example of responsive scaling using Web SDK + const scaleFactor = WebSDKIntegration.getScaleFactor(); + this.scale.set(scaleFactor); + } +} \ No newline at end of file diff --git a/apps/link/src/app/ui/Button.ts b/apps/link/src/app/ui/Button.ts new file mode 100644 index 00000000..0ff02d9d --- /dev/null +++ b/apps/link/src/app/ui/Button.ts @@ -0,0 +1,70 @@ +import { FancyButton } from "@pixi/ui"; + +import { engine } from "../getEngine"; + +import { Label } from "./Label"; + +const defaultButtonOptions = { + text: "", + width: 301, + height: 112, + fontSize: 28, +}; + +type ButtonOptions = typeof defaultButtonOptions; + +/** + * The big rectangle button, with a label, idle and pressed states + */ +export class Button extends FancyButton { + constructor(options: Partial = {}) { + const opts = { ...defaultButtonOptions, ...options }; + + super({ + defaultView: "button.png", + nineSliceSprite: [38, 50, 38, 50], + anchor: 0.5, + text: new Label({ + text: opts.text, + style: { + fill: 0x4a4a4a, + align: "center", + fontSize: opts.fontSize, + }, + }), + textOffset: { x: 0, y: -13 }, + defaultTextAnchor: 0.5, + scale: 0.9, + animations: { + hover: { + props: { + scale: { x: 1.03, y: 1.03 }, + y: 0, + }, + duration: 100, + }, + pressed: { + props: { + scale: { x: 0.97, y: 0.97 }, + y: 10, + }, + duration: 100, + }, + }, + }); + + this.width = opts.width; + this.height = opts.height; + + this.onDown.connect(this.handleDown.bind(this)); + this.onHover.connect(this.handleHover.bind(this)); + } + + private handleHover() { + engine().audio.sfx.play("main/sounds/sfx-hover.wav"); + } + + private handleDown() { + engine().audio.sfx.play("main/sounds/sfx-press.wav"); + } +} diff --git a/apps/link/src/app/ui/Label.ts b/apps/link/src/app/ui/Label.ts new file mode 100644 index 00000000..f1ec8555 --- /dev/null +++ b/apps/link/src/app/ui/Label.ts @@ -0,0 +1,22 @@ +import type { TextOptions, TextStyleOptions } from "pixi.js"; +import { Text } from "pixi.js"; + +const defaultLabelStyle: Partial = { + fontFamily: "Arial Rounded MT Bold", + align: "center", +}; + +export type LabelOptions = typeof defaultLabelStyle; + +/** + * A Text extension pre-formatted for this app, starting centred by default, + * because it is the most common use in the app. + */ +export class Label extends Text { + constructor(opts?: TextOptions) { + const style = { ...defaultLabelStyle, ...opts?.style }; + super({ ...opts, style }); + // Label is always centred, but this can be changed in instance afterwards + this.anchor.set(0.5); + } +} diff --git a/apps/link/src/app/ui/RoundedBox.ts b/apps/link/src/app/ui/RoundedBox.ts new file mode 100644 index 00000000..8c0f1301 --- /dev/null +++ b/apps/link/src/app/ui/RoundedBox.ts @@ -0,0 +1,66 @@ +import { Container, NineSliceSprite, Texture } from "pixi.js"; + +const defaultRoundedBoxOptions = { + color: 0xffffff, + width: 350, + height: 600, + shadow: true, + shadowColor: 0xa0a0a0, + shadowOffset: 22, +}; + +export type RoundedBoxOptions = typeof defaultRoundedBoxOptions; + +/** + * Generic rounded box based on a nine-sliced sprite that can be resized freely. + */ +export class RoundedBox extends Container { + /** The rectangular area, that scales without distorting rounded corners */ + private image: NineSliceSprite; + /** Optional shadow matching the box image, with y offest */ + private shadow?: NineSliceSprite; + + constructor(options: Partial = {}) { + super(); + const opts = { ...defaultRoundedBoxOptions, ...options }; + this.image = new NineSliceSprite({ + texture: Texture.from("rounded-rectangle.png"), + leftWidth: 34, + topHeight: 34, + rightWidth: 34, + bottomHeight: 34, + width: opts.width, + height: opts.height, + tint: opts.color, + }); + this.image.x = -this.image.width * 0.5; + this.image.y = -this.image.height * 0.5; + this.addChild(this.image); + + if (opts.shadow) { + this.shadow = new NineSliceSprite({ + texture: Texture.from("rounded-rectangle.png"), + leftWidth: 34, + topHeight: 34, + rightWidth: 34, + bottomHeight: 34, + width: opts.width, + height: opts.height, + tint: opts.shadowColor, + }); + this.shadow.x = -this.shadow.width * 0.5; + this.shadow.y = -this.shadow.height * 0.5 + opts.shadowOffset; + this.addChildAt(this.shadow, 0); + } + } + + /** Get the base width, without counting the shadow */ + public get boxWidth() { + return this.image.width; + } + + /** Get the base height, without counting the shadow */ + public get boxHeight() { + return this.image.height; + } +} diff --git a/apps/link/src/app/ui/VolumeSlider.ts b/apps/link/src/app/ui/VolumeSlider.ts new file mode 100644 index 00000000..d6adb3f0 --- /dev/null +++ b/apps/link/src/app/ui/VolumeSlider.ts @@ -0,0 +1,76 @@ +import { Slider } from "@pixi/ui"; +import { Graphics } from "pixi.js"; + +import { Label } from "./Label"; + +/** + * A volume slider component to be used in the Settings popup. + */ +export class VolumeSlider extends Slider { + /** Message displayed for the slider */ + public messageLabel: Label; + + constructor(label: string, min = -0.1, max = 100, value = 100) { + const width = 280; + const height = 20; + const radius = 20; + const border = 4; + const handleRadius = 14; + const handleBorder = 4; + const meshColor = 0xec1561; + const fillColor = 0xef6294; + const borderColor = 0xec1561; + const backgroundColor = 0xffffff; + + const bg = new Graphics() + .roundRect(0, 0, width, height, radius) + .fill({ color: borderColor }) + .roundRect( + border, + border, + width - border * 2, + height - border * 2, + radius, + ) + .fill({ color: backgroundColor }); + + const fill = new Graphics() + .roundRect(0, 0, width, height, radius) + .fill({ color: borderColor }) + .roundRect( + border, + border, + width - border * 2, + height - border * 2, + radius, + ) + .fill({ color: fillColor }); + + const slider = new Graphics() + .circle(0, 0, handleRadius + handleBorder) + .fill({ color: meshColor }); + + super({ + bg, + fill, + slider, + min, + max, + }); + + this.value = value; + + this.messageLabel = new Label({ + text: label, + style: { + align: "left", + fill: 0x4a4a4a, + fontSize: 18, + }, + }); + this.messageLabel.anchor.x = 0; + this.messageLabel.x = 10; + this.messageLabel.y = -18; + this.addChild(this.messageLabel); + } +} diff --git a/apps/link/src/app/utils/userSettings.ts b/apps/link/src/app/utils/userSettings.ts new file mode 100644 index 00000000..f96361a2 --- /dev/null +++ b/apps/link/src/app/utils/userSettings.ts @@ -0,0 +1,54 @@ +import { storage } from "../../engine/utils/storage"; +import { engine } from "../getEngine"; + +// Keys for saved items in storage +const KEY_VOLUME_MASTER = "volume-master"; +const KEY_VOLUME_BGM = "volume-bgm"; +const KEY_VOLUME_SFX = "volume-sfx"; + +/** + * Persistent user settings of volumes. + */ +class UserSettings { + public init() { + engine().audio.setMasterVolume(this.getMasterVolume()); + engine().audio.bgm.setVolume(this.getBgmVolume()); + engine().audio.sfx.setVolume(this.getSfxVolume()); + } + + /** Get overall sound volume */ + public getMasterVolume() { + return storage.getNumber(KEY_VOLUME_MASTER) ?? 0.5; + } + + /** Set overall sound volume */ + public setMasterVolume(value: number) { + engine().audio.setMasterVolume(value); + storage.setNumber(KEY_VOLUME_MASTER, value); + } + + /** Get background music volume */ + public getBgmVolume() { + return storage.getNumber(KEY_VOLUME_BGM) ?? 1; + } + + /** Set background music volume */ + public setBgmVolume(value: number) { + engine().audio.bgm.setVolume(value); + storage.setNumber(KEY_VOLUME_BGM, value); + } + + /** Get sound effects volume */ + public getSfxVolume() { + return storage.getNumber(KEY_VOLUME_SFX) ?? 1; + } + + /** Set sound effects volume */ + public setSfxVolume(value: number) { + engine().audio.sfx.setVolume(value); + storage.setNumber(KEY_VOLUME_SFX, value); + } +} + +/** SHared user settings instance */ +export const userSettings = new UserSettings(); diff --git a/apps/link/src/engine/audio/AudioPlugin.ts b/apps/link/src/engine/audio/AudioPlugin.ts new file mode 100644 index 00000000..98c12a6b --- /dev/null +++ b/apps/link/src/engine/audio/AudioPlugin.ts @@ -0,0 +1,49 @@ +import { sound } from "@pixi/sound"; +import { ExtensionType } from "pixi.js"; +import type { Application, ExtensionMetadata } from "pixi.js"; + +import { BGM, SFX } from "./audio"; + +/** + * Middleware for Application's audio functionality. + * + * Adds the following methods to Application: + * * Application#audio + * * Application#audio.bgm + * * Application#audio.sfx + * * Application#audio.getMasterVolume + * * Application#audio.setMasterVolume + */ +export class CreationAudioPlugin { + /** @ignore */ + public static extension: ExtensionMetadata = ExtensionType.Application; + + /** + * Initialize the plugin with scope of application instance + */ + public static init(): void { + const app = this as unknown as Application; + + app.audio = { + bgm: new BGM(), + sfx: new SFX(), + getMasterVolume: () => sound.volumeAll, + setMasterVolume: (volume: number) => { + sound.volumeAll = volume; + if (!volume) { + sound.muteAll(); + } else { + sound.unmuteAll(); + } + }, + }; + } + + /** + * Clean up the ticker, scoped to application + */ + public static destroy(): void { + const app = this as unknown as Application; + app.audio = null as unknown as Application["audio"]; + } +} diff --git a/apps/link/src/engine/audio/audio.ts b/apps/link/src/engine/audio/audio.ts new file mode 100644 index 00000000..4561284f --- /dev/null +++ b/apps/link/src/engine/audio/audio.ts @@ -0,0 +1,84 @@ +import type { PlayOptions, Sound } from "@pixi/sound"; +import { sound } from "@pixi/sound"; +import { animate } from "motion"; + +/** + * Handles music background, playing only one audio file in loop at time, + * and fade/stop the music if a new one is requested. Also provide volume + * control for music background only, leaving other sounds volumes unchanged. + */ +export class BGM { + /** Alias of the current music being played */ + public currentAlias?: string; + /** Current music instance being played */ + public current?: Sound; + /** Current volume set */ + private volume = 1; + + /** Play a background music, fading out and stopping the previous, if there is one */ + public async play(alias: string, options?: PlayOptions) { + // Do nothing if the requested music is already being played + if (this.currentAlias === alias) return; + + // Fade out then stop current music + if (this.current) { + const current = this.current; + animate(current, { volume: 0 }, { duration: 1, ease: "linear" }).then( + () => { + current.stop(); + }, + ); + } + + // Find out the new instance to be played + this.current = sound.find(alias); + + // Play and fade in the new music + this.currentAlias = alias; + this.current.play({ loop: true, ...options }); + this.current.volume = 0; + animate( + this.current, + { volume: this.volume }, + { duration: 1, ease: "linear" }, + ); + } + + /** Get background music volume */ + public getVolume() { + return this.volume; + } + + /** Set background music volume */ + public setVolume(v: number) { + this.volume = v; + if (this.current) this.current.volume = this.volume; + } +} + +/** + * Handles short sound special effects, mainly for having its own volume settings. + * The volume control is only a workaround to make it work only with this type of sound, + * with a limitation of not controlling volume of currently playing instances - only the new ones will + * have their volume changed. But because most of sound effects are short sounds, this is generally fine. + */ +export class SFX { + /** Volume scale for new instances */ + private volume = 1; + + /** Play an one-shot sound effect */ + public play(alias: string, options?: PlayOptions) { + const volume = this.volume * (options?.volume ?? 1); + sound.play(alias, { ...options, volume }); + } + + /** Set sound effects volume */ + public getVolume() { + return this.volume; + } + + /** Set sound effects volume. Does not affect instances that are currently playing */ + public setVolume(v: number) { + this.volume = v; + } +} diff --git a/apps/link/src/engine/engine.ts b/apps/link/src/engine/engine.ts new file mode 100644 index 00000000..685cdaf7 --- /dev/null +++ b/apps/link/src/engine/engine.ts @@ -0,0 +1,77 @@ +import { sound } from "@pixi/sound"; +import type { + ApplicationOptions, + DestroyOptions, + RendererDestroyOptions, +} from "pixi.js"; +import { Application, Assets, extensions, ResizePlugin } from "pixi.js"; +import "pixi.js/app"; + +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore - This is a dynamically generated file by AssetPack +import manifest from "../manifest.json"; + +import { CreationAudioPlugin } from "./audio/AudioPlugin"; +import { CreationNavigationPlugin } from "./navigation/NavigationPlugin"; +import { CreationResizePlugin } from "./resize/ResizePlugin"; +import { getResolution } from "./utils/getResolution"; + +extensions.remove(ResizePlugin); +extensions.add(CreationResizePlugin); +extensions.add(CreationAudioPlugin); +extensions.add(CreationNavigationPlugin); + +/** + * The main creation engine class. + * + * This is a lightweight wrapper around the PixiJS Application class. + * It provides a few additional features such as: + * - Navigation manager + * - Audio manager + * - Resize handling + * - Visibility change handling (pause/resume sounds) + * + * It also initializes the PixiJS application and loads any assets in the `preload` bundle. + */ +export class CreationEngine extends Application { + /** Initialize the application */ + public async init(opts: Partial): Promise { + opts.resizeTo ??= window; + opts.resolution ??= getResolution(); + + await super.init(opts); + + // Append the application canvas to the document body + document.getElementById("pixi-container")!.appendChild(this.canvas); + // Add a visibility listener, so the app can pause sounds and screens + document.addEventListener("visibilitychange", this.visibilityChange); + + // Init PixiJS assets with this asset manifest + await Assets.init({ manifest, basePath: "assets" }); + await Assets.loadBundle("preload"); + + // List all existing bundles names + const allBundles = manifest.bundles.map((item) => item.name); + // Start up background loading of all bundles + Assets.backgroundLoadBundle(allBundles); + } + + public override destroy( + rendererDestroyOptions: RendererDestroyOptions = false, + options: DestroyOptions = false, + ): void { + document.removeEventListener("visibilitychange", this.visibilityChange); + super.destroy(rendererDestroyOptions, options); + } + + /** Fire when document visibility changes - lose or regain focus */ + protected visibilityChange = () => { + if (document.hidden) { + sound.pauseAll(); + this.navigation.blur(); + } else { + sound.resumeAll(); + this.navigation.focus(); + } + }; +} diff --git a/apps/link/src/engine/navigation/NavigationPlugin.ts b/apps/link/src/engine/navigation/NavigationPlugin.ts new file mode 100644 index 00000000..02125f93 --- /dev/null +++ b/apps/link/src/engine/navigation/NavigationPlugin.ts @@ -0,0 +1,41 @@ +import { ExtensionType } from "pixi.js"; +import type { Application, ExtensionMetadata } from "pixi.js"; + +import type { CreationEngine } from "../engine"; + +import { Navigation } from "./navigation"; + +/** + * Middleware for Application's navigation functionality. + * + * Adds the following methods to Application: + * * Application#navigation + */ +export class CreationNavigationPlugin { + /** @ignore */ + public static extension: ExtensionMetadata = ExtensionType.Application; + + private static _onResize: (() => void) | null; + + /** + * Initialize the plugin with scope of application instance + */ + public static init(): void { + const app = this as unknown as CreationEngine; + + app.navigation = new Navigation(); + app.navigation.init(app); + this._onResize = () => + app.navigation.resize(app.renderer.width, app.renderer.height); + app.renderer.on("resize", this._onResize); + app.resize(); + } + + /** + * Clean up the ticker, scoped to application + */ + public static destroy(): void { + const app = this as unknown as Application; + app.navigation = null as unknown as Navigation; + } +} diff --git a/apps/link/src/engine/navigation/navigation.ts b/apps/link/src/engine/navigation/navigation.ts new file mode 100644 index 00000000..fed39013 --- /dev/null +++ b/apps/link/src/engine/navigation/navigation.ts @@ -0,0 +1,226 @@ +import type { Ticker } from "pixi.js"; +import { Assets, BigPool, Container } from "pixi.js"; + +import type { CreationEngine } from "../engine"; + +/** Interface for app screens */ +interface AppScreen extends Container { + /** Show the screen */ + show?(): Promise; + /** Hide the screen */ + hide?(): Promise; + /** Pause the screen */ + pause?(): Promise; + /** Resume the screen */ + resume?(): Promise; + /** Prepare screen, before showing */ + prepare?(): void; + /** Reset screen, after hidden */ + reset?(): void; + /** Update the screen, passing delta time/step */ + update?(time: Ticker): void; + /** Resize the screen */ + resize?(width: number, height: number): void; + /** Blur the screen */ + blur?(): void; + /** Focus the screen */ + focus?(): void; + /** Method to react on assets loading progress */ + onLoad?: (progress: number) => void; +} + +/** Interface for app screens constructors */ +interface AppScreenConstructor { + new (): AppScreen; + /** List of assets bundles required by the screen */ + assetBundles?: string[]; +} + +export class Navigation { + /** Reference to the main application */ + public app!: CreationEngine; + + /** Container for screens */ + public container = new Container(); + + /** Application width */ + public width = 0; + + /** Application height */ + public height = 0; + + /** Constant background view for all screens */ + public background?: AppScreen; + + /** Current screen being displayed */ + public currentScreen?: AppScreen; + + /** Current popup being displayed */ + public currentPopup?: AppScreen; + + public init(app: CreationEngine) { + this.app = app; + } + + /** Set the default load screen */ + public setBackground(ctor: AppScreenConstructor) { + this.background = new ctor(); + this.addAndShowScreen(this.background); + } + + /** Add screen to the stage, link update & resize functions */ + private async addAndShowScreen(screen: AppScreen) { + // Add navigation container to stage if it does not have a parent yet + if (!this.container.parent) { + this.app.stage.addChild(this.container); + } + + // Add screen to stage + this.container.addChild(screen); + + // Setup things and pre-organise screen before showing + if (screen.prepare) { + screen.prepare(); + } + + // Add screen's resize handler, if available + if (screen.resize) { + // Trigger a first resize + screen.resize(this.width, this.height); + } + + // Add update function if available + if (screen.update) { + this.app.ticker.add(screen.update, screen); + } + + // Show the new screen + if (screen.show) { + screen.interactiveChildren = false; + await screen.show(); + screen.interactiveChildren = true; + } + } + + /** Remove screen from the stage, unlink update & resize functions */ + private async hideAndRemoveScreen(screen: AppScreen) { + // Prevent interaction in the screen + screen.interactiveChildren = false; + + // Hide screen if method is available + if (screen.hide) { + await screen.hide(); + } + + // Unlink update function if method is available + if (screen.update) { + this.app.ticker.remove(screen.update, screen); + } + + // Remove screen from its parent (usually app.stage, if not changed) + if (screen.parent) { + screen.parent.removeChild(screen); + } + + // Clean up the screen so that instance can be reused again later + if (screen.reset) { + screen.reset(); + } + } + + /** + * Hide current screen (if there is one) and present a new screen. + * Any class that matches AppScreen interface can be used here. + */ + public async showScreen(ctor: AppScreenConstructor) { + // Block interactivity in current screen + if (this.currentScreen) { + this.currentScreen.interactiveChildren = false; + } + + // Load assets for the new screen, if available + if (ctor.assetBundles) { + // Load all assets required by this new screen + await Assets.loadBundle(ctor.assetBundles, (progress) => { + if (this.currentScreen?.onLoad) { + this.currentScreen.onLoad(progress * 100); + } + }); + } + + if (this.currentScreen?.onLoad) { + this.currentScreen.onLoad(100); + } + + // If there is a screen already created, hide and destroy it + if (this.currentScreen) { + await this.hideAndRemoveScreen(this.currentScreen); + } + + // Create the new screen and add that to the stage + this.currentScreen = BigPool.get(ctor); + await this.addAndShowScreen(this.currentScreen); + } + + /** + * Resize screens + * @param width Viewport width + * @param height Viewport height + */ + public resize(width: number, height: number) { + this.width = width; + this.height = height; + this.currentScreen?.resize?.(width, height); + this.currentPopup?.resize?.(width, height); + this.background?.resize?.(width, height); + } + + /** + * Show up a popup over current screen + */ + public async presentPopup(ctor: AppScreenConstructor) { + if (this.currentScreen) { + this.currentScreen.interactiveChildren = false; + await this.currentScreen.pause?.(); + } + + if (this.currentPopup) { + await this.hideAndRemoveScreen(this.currentPopup); + } + + this.currentPopup = new ctor(); + await this.addAndShowScreen(this.currentPopup); + } + + /** + * Dismiss current popup, if there is one + */ + public async dismissPopup() { + if (!this.currentPopup) return; + const popup = this.currentPopup; + this.currentPopup = undefined; + await this.hideAndRemoveScreen(popup); + if (this.currentScreen) { + this.currentScreen.interactiveChildren = true; + this.currentScreen.resume?.(); + } + } + + /** + * Blur screens when lose focus + */ + public blur() { + this.currentScreen?.blur?.(); + this.currentPopup?.blur?.(); + this.background?.blur?.(); + } + + /** + * Focus screens + */ + public focus() { + this.currentScreen?.focus?.(); + this.currentPopup?.focus?.(); + this.background?.focus?.(); + } +} diff --git a/apps/link/src/engine/resize/ResizePlugin.ts b/apps/link/src/engine/resize/ResizePlugin.ts new file mode 100644 index 00000000..667c5f5c --- /dev/null +++ b/apps/link/src/engine/resize/ResizePlugin.ts @@ -0,0 +1,168 @@ +import { ExtensionType } from "pixi.js"; +import type { + Application, + ApplicationOptions, + ExtensionMetadata, + ResizePluginOptions, +} from "pixi.js"; + +import { resize } from "./resize"; + +// Custom utility type: +export type DeepRequired = Required<{ + [K in keyof T]: DeepRequired; +}>; + +/** + * Application options for the CreationResizePlugin. + */ +export interface CreationResizePluginOptions extends ResizePluginOptions { + /** Options for controlling the resizing of the application */ + resizeOptions?: { + /** Minimum width of the application */ + minWidth?: number; + /** Minimum height of the application */ + minHeight?: number; + /** Whether to letterbox the application when resizing */ + letterbox?: boolean; + }; +} + +/** + * Middleware for Application's resize functionality. + * + * Adds the following methods to Application: + * * Application#resizeTo + * * Application#resize + * * Application#queueResize + * * Application#cancelResize + * * Application#resizeOptions + */ +export class CreationResizePlugin { + /** @ignore */ + public static extension: ExtensionMetadata = ExtensionType.Application; + + private static _resizeId: number | null; + private static _resizeTo: Window | HTMLElement | null; + private static _cancelResize: (() => void) | null; + + /** + * Initialize the plugin with scope of application instance + * @param {object} [options] - See application options + */ + public static init(options: ApplicationOptions): void { + const app = this as unknown as Application; + + Object.defineProperty( + app, + "resizeTo", + /** + * The HTML element or window to automatically resize the + * renderer's view element to match width and height. + */ + { + set(dom: Window | HTMLElement) { + globalThis.removeEventListener("resize", app.queueResize); + this._resizeTo = dom; + if (dom) { + globalThis.addEventListener("resize", app.queueResize); + app.resize(); + } + }, + get() { + return this._resizeTo; + }, + }, + ); + + /** + * Resize is throttled, so it's safe to call this multiple times per frame and it'll + * only be called once. + */ + app.queueResize = (): void => { + if (!this._resizeTo) { + return; + } + + this._cancelResize!(); + + // Throttle resize events per raf + this._resizeId = requestAnimationFrame(() => app.resize!()); + }; + + /** + * Execute an immediate resize on the renderer, this is not + * throttled and can be expensive to call many times in a row. + * Will resize only if `resizeTo` property is set. + */ + app.resize = (): void => { + if (!this._resizeTo) { + return; + } + + // clear queue resize + this._cancelResize!(); + + let canvasWidth: number; + let canvasHeight: number; + + // Resize to the window + if (this._resizeTo === globalThis.window) { + canvasWidth = globalThis.innerWidth; + canvasHeight = globalThis.innerHeight; + } + // Resize to other HTML entities + else { + const { clientWidth, clientHeight } = this._resizeTo as HTMLElement; + + canvasWidth = clientWidth; + canvasHeight = clientHeight; + } + + const { width, height } = resize( + canvasWidth, + canvasHeight, + app.resizeOptions.minWidth, + app.resizeOptions.minHeight, + app.resizeOptions.letterbox, + ); + + app.renderer.canvas.style.width = `${canvasWidth}px`; + app.renderer.canvas.style.height = `${canvasHeight}px`; + window.scrollTo(0, 0); + + app.renderer.resize(width, height); + }; + + this._cancelResize = (): void => { + if (this._resizeId) { + cancelAnimationFrame(this._resizeId); + this._resizeId = null; + } + }; + this._resizeId = null; + this._resizeTo = null; + app.resizeOptions = { + minWidth: 768, + minHeight: 1024, + letterbox: true, + ...options.resizeOptions, + }; + app.resizeTo = + options.resizeTo || (null as unknown as Window | HTMLElement); + } + + /** + * Clean up the ticker, scoped to application + */ + public static destroy(): void { + const app = this as unknown as Application; + + globalThis.removeEventListener("resize", app.queueResize); + this._cancelResize!(); + this._cancelResize = null; + app.queueResize = null as unknown as () => void; + app.resizeTo = null as unknown as Window | HTMLElement; + app.resize = null as unknown as () => void; + } +} diff --git a/apps/link/src/engine/resize/resize.ts b/apps/link/src/engine/resize/resize.ts new file mode 100644 index 00000000..a2450a6f --- /dev/null +++ b/apps/link/src/engine/resize/resize.ts @@ -0,0 +1,37 @@ +export function resize( + w: number, + h: number, + minWidth: number, + minHeight: number, + letterbox: boolean, +) { + const aspectRatio = minWidth / minHeight; + let canvasWidth = w; + let canvasHeight = h; + + if (letterbox) { + if (minWidth < minHeight) { + canvasHeight = window.innerHeight; + canvasWidth = Math.min( + window.innerWidth, + minWidth, + canvasHeight * aspectRatio, + ); + } else { + canvasWidth = window.innerWidth; + canvasHeight = Math.min( + window.innerHeight, + minHeight, + canvasWidth / aspectRatio, + ); + } + } + + const scaleX = canvasWidth < minWidth ? minWidth / canvasWidth : 1; + const scaleY = canvasHeight < minHeight ? minHeight / canvasHeight : 1; + const scale = scaleX > scaleY ? scaleX : scaleY; + const width = Math.floor(canvasWidth * scale); + const height = Math.floor(canvasHeight * scale); + + return { width, height }; +} diff --git a/apps/link/src/engine/utils/getResolution.ts b/apps/link/src/engine/utils/getResolution.ts new file mode 100644 index 00000000..fb4aa4bb --- /dev/null +++ b/apps/link/src/engine/utils/getResolution.ts @@ -0,0 +1,9 @@ +export function getResolution(): number { + let resolution = Math.max(window.devicePixelRatio, 2); + + if (resolution % 1 !== 0) { + resolution = 2; + } + + return resolution; +} diff --git a/apps/link/src/engine/utils/maths.ts b/apps/link/src/engine/utils/maths.ts new file mode 100644 index 00000000..d0c199fe --- /dev/null +++ b/apps/link/src/engine/utils/maths.ts @@ -0,0 +1,17 @@ +/** Get the distance between a and b points */ +export function getDistance(ax: number, ay: number, bx = 0, by = 0) { + const dx = bx - ax; + const dy = by - ay; + return Math.sqrt(dx * dx + dy * dy); +} + +/** Linear interpolation */ +export function lerp(a: number, b: number, t: number) { + return (1 - t) * a + t * b; +} + +/** Clamp a number to minimum and maximum values */ +export function clamp(v: number, min = 0, max = 1) { + if (min > max) [min, max] = [max, min]; + return v < min ? min : v > max ? max : v; +} diff --git a/apps/link/src/engine/utils/random.ts b/apps/link/src/engine/utils/random.ts new file mode 100644 index 00000000..0d38d523 --- /dev/null +++ b/apps/link/src/engine/utils/random.ts @@ -0,0 +1,160 @@ +// From a very good answer about pseudo random numbers on stack overflow +// https://stackoverflow.com/a/47593316 +function xmur3(str: string): () => number { + let h = 1779033703 ^ str.length; + + for (let i = 0; i < str.length; i++) { + h = Math.imul(h ^ str.charCodeAt(i), 3432918353); + h = (h << 13) | (h >>> 19); + } + + return (): number => { + h = Math.imul(h ^ (h >>> 16), 2246822507); + h = Math.imul(h ^ (h >>> 13), 3266489909); + + return (h ^= h >>> 16) >>> 0; + }; +} + +function mulberry32(a: number): () => number { + return (): number => { + let t = (a += 0x6d2b79f5); + + t = Math.imul(t ^ (t >>> 15), t | 1); + t ^= t + Math.imul(t ^ (t >>> 7), t | 61); + + return ((t ^ (t >>> 14)) >>> 0) / 4294967296; + }; +} + +const HASH_CHARSET = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + +/** + * Creates a seeded random function similar to Math.random() based on given seed hash + * @param seed - The hash string, can be anything + * @returns Function that can be used instead Math.random + */ +export function randomSeeded(seed: string): () => number { + return mulberry32(xmur3(seed)()); +} + +/** + * Returns a random color + * @param random - The random function to be used (defaults to Math.random) + */ +export function randomColor(random = Math.random): number { + const r = Math.floor(0xff * random()); + const g = Math.floor(0xff * random()); + const b = Math.floor(0xff * random()); + return (r << 16) | (g << 8) | b; +} + +/** + * Returns a random number within a range + * @param min - lowest number (inclusive) + * @param max - highest number (exclusive) + * @param random - The random function to be used (defaults to Math.random) + */ +export function randomRange( + min: number, + max: number, + random = Math.random, +): number { + const a = Math.min(min, max); + const b = Math.max(min, max); + + const v = a + (b - a) * random(); + + return v; +} + +/** + * Returns a random item from an object or array + * @param arr - array to be selected + * @param random - The random function to be used (defaults to Math.random) + */ +export function randomItem(obj: T, random = Math.random): T[keyof T] { + if (Array.isArray(obj)) { + return obj[Math.floor(random() * obj.length)]; + } + + const keys = Object.keys(obj as Record); + const key = keys[Math.floor(random() * keys.length)]; + return obj[key as keyof T]; +} + +/** + * Returns a random boolean. + * @param weight - The chance of true value, between 0 and 1 + * @param random - The random function to be used (defaults to Math.random) + * @returns + */ +export function randomBool(weight = 0.5, random = Math.random): boolean { + return random() < weight; +} + +/** + * Random shuffle an array in place, without cloning it + * @param array - The array that will be shuffled + * @param random - The random function to be used (defaults to Math.random) + * @returns + */ +export function randomShuffle(array: T[], random = Math.random): T[] { + let currentIndex = array.length; + let temporaryValue; + let randomIndex; + + while (currentIndex !== 0) { + randomIndex = Math.floor(random() * currentIndex); + currentIndex -= 1; + temporaryValue = array[currentIndex]; + array[currentIndex] = array[randomIndex]; + array[randomIndex] = temporaryValue; + } + + return array; +} + +/** + * Return a random string hash - not guaranteed to be unique + * @param length - The length of the hash + * @param random - The random function to be used (defaults to Math.random) + * @returns + */ +export function randomHash( + length: number, + random = Math.random, + charset = HASH_CHARSET, +): string { + const charsetLength = charset.length; + let result = ""; + + for (let i = 0; i < length; i++) { + result += charset.charAt(Math.floor(random() * charsetLength)); + } + + return result; +} + +/** + * Returns a random number within a range. + * + * @param min - The minimum value (inclusive). + * @param max - The maximum value (exclusive). + */ +export function randomFloat(min: number, max: number, random = Math.random) { + return random() * (max - min) + min; +} + +/** + * Returns a random integer within a range. + * + * @param min - The minimum value (inclusive). + * @param max - The minimum value (inclusive). + * @param random - The random function to be used (defaults to Math.random) + */ +export function randomInt(min: number, max: number, random = Math.random) { + // This function will return 4 if float result is 3.5 because of +1. Should return 3 instead? + return Math.floor(random() * (max - min + 1)) + min; +} diff --git a/apps/link/src/engine/utils/storage.ts b/apps/link/src/engine/utils/storage.ts new file mode 100644 index 00000000..fa16152d --- /dev/null +++ b/apps/link/src/engine/utils/storage.ts @@ -0,0 +1,57 @@ +/** + * Simple local storage utility that can safely get/set number, boolean and object values too + * not only string as in plain localStorage. + */ +class StorageWrapper { + /** Get a string value from storage */ + public getString(key: string) { + return localStorage.getItem(key) ?? undefined; + } + + /** Set a string value to storage */ + public setString(key: string, value: string) { + localStorage.setItem(key, value); + } + + /** Get a number value from storage or undefined if value can't be converted */ + public getNumber(key: string) { + const str = this.getString(key) ?? undefined; + const value = Number(str); + return isNaN(value) ? null : value; + } + + /** Set a number value to storage */ + public setNumber(key: string, value: number) { + this.setString(key, String(value)); + } + + /** Get a boolean value from storage or undefined if value can't be converted */ + public getBool(key: string) { + const bool = localStorage.getItem(key); + return bool ? Boolean(bool.toLowerCase()) : undefined; + } + + /** Set a boolean value to storage */ + public setBool(key: string, value: boolean) { + localStorage.setItem(key, String(value)); + } + + /** Get an object value from storage or undefined if value can't be parsed */ + public getObject(key: string) { + const str = this.getString(key); + if (!str) return undefined; + try { + return JSON.parse(str); + } catch (e) { + console.warn(e); + return undefined; + } + } + + /** Set an object value to storage */ + public setObject(key: string, value: Record) { + this.setString(key, JSON.stringify(value)); + } +} + +export const storage = new StorageWrapper(); diff --git a/apps/link/src/engine/utils/waitFor.ts b/apps/link/src/engine/utils/waitFor.ts new file mode 100644 index 00000000..9849f617 --- /dev/null +++ b/apps/link/src/engine/utils/waitFor.ts @@ -0,0 +1,6 @@ +/** Pause the code for a certain amount of time, in seconds */ +export function waitFor(delayInSecs = 1): Promise { + return new Promise((resolve) => { + setTimeout(() => resolve(), delayInSecs * 1000); + }); +} diff --git a/apps/link/src/main.ts b/apps/link/src/main.ts new file mode 100644 index 00000000..3839442a --- /dev/null +++ b/apps/link/src/main.ts @@ -0,0 +1,31 @@ +import { setEngine } from "./app/getEngine"; +import { LoadScreen } from "./app/screens/LoadScreen"; +import { MainScreen } from "./app/screens/main/MainScreen"; +import { userSettings } from "./app/utils/userSettings"; +import { CreationEngine } from "./engine/engine"; + +/** + * Importing these modules will automatically register there plugins with the engine. + */ +import "@pixi/sound"; +// import "@esotericsoftware/spine-pixi-v8"; + +// Create a new creation engine instance +const engine = new CreationEngine(); +setEngine(engine); + +(async () => { + // Initialize the creation engine instance + await engine.init({ + background: "#1E1E1E", + resizeOptions: { minWidth: 768, minHeight: 1024, letterbox: false }, + }); + + // Initialize the user settings + userSettings.init(); + + // Show the load screen + await engine.navigation.showScreen(LoadScreen); + // Show the main screen once the load screen is dismissed + await engine.navigation.showScreen(MainScreen); +})(); diff --git a/apps/link/src/pixi-mixins.d.ts b/apps/link/src/pixi-mixins.d.ts new file mode 100644 index 00000000..db115bab --- /dev/null +++ b/apps/link/src/pixi-mixins.d.ts @@ -0,0 +1,24 @@ +import type { BGM, SFX } from "./engine/audio/audio"; +import type { Navigation } from "./engine/navigation/navigation"; +import type { + CreationResizePluginOptions, + DeepRequired, +} from "./engine/resize/ResizePlugin"; + +declare global { + namespace PixiMixins { + interface Application extends DeepRequired { + audio: { + bgm: BGM; + sfx: SFX; + getMasterVolume: () => number; + setMasterVolume: (volume: number) => void; + }; + navigation: Navigation; + } + // eslint-disable-next-line @typescript-eslint/no-empty-object-type + interface ApplicationOptions extends CreationResizePluginOptions {} + } +} + +export {}; diff --git a/apps/link/src/vite-env.d.ts b/apps/link/src/vite-env.d.ts new file mode 100644 index 00000000..e80e47f7 --- /dev/null +++ b/apps/link/src/vite-env.d.ts @@ -0,0 +1,3 @@ +/// +/** Injected by ViteJS define plugin */ +declare const APP_VERSION: string; diff --git a/apps/link/src/webSDKIntegration.ts b/apps/link/src/webSDKIntegration.ts new file mode 100644 index 00000000..c8167ae2 --- /dev/null +++ b/apps/link/src/webSDKIntegration.ts @@ -0,0 +1,79 @@ +import { userSettings } from './app/utils/userSettings'; +import { engine } from './app/getEngine'; + +// Import useful utilities from the Web SDK +import { waitForResolve, waitForTimeout } from 'utils-shared/wait'; +import { randomInteger } from 'utils-shared/random'; + +// Note: You can add more imports as needed from the Web SDK packages +// Check the packages folder to see what's available + +/** + * Web SDK Integration Layer + * This provides a bridge between the PixiJS creation template and useful Web SDK utilities + */ +export class WebSDKIntegration { + // Utility functions from utils-shared + static utils = { + waitForResolve, + waitForTimeout, + randomInteger, + }; + + // Enhanced user settings with Web SDK utilities + static userSettings = { + ...userSettings, + // Add any custom settings integrations here + }; + + // Engine utilities + static getEngine() { + return engine(); + } + + static getApp() { + return engine(); // CreationEngine extends Application + } + + static getStage() { + return engine()?.stage; + } + + static getRenderer() { + return engine()?.renderer; + } + + // Viewport utilities + static getViewportSize() { + const app = this.getApp(); + return { + width: app?.screen?.width || window.innerWidth, + height: app?.screen?.height || window.innerHeight, + }; + } + + // Add responsive design helpers + static isPortrait() { + const { width, height } = this.getViewportSize(); + return height > width; + } + + static isLandscape() { + return !this.isPortrait(); + } + + // Get scale factor for responsive design + static getScaleFactor() { + const { width, height } = this.getViewportSize(); + const baseWidth = 1920; + const baseHeight = 1080; + + return Math.min(width / baseWidth, height / baseHeight); + } +} + +// Create a singleton instance +export const webSDK = new WebSDKIntegration(); + +// Export utilities for easy access +export const { utils, userSettings: enhancedUserSettings } = WebSDKIntegration; \ No newline at end of file diff --git a/apps/link/tsconfig.json b/apps/link/tsconfig.json new file mode 100644 index 00000000..6f0ea0c0 --- /dev/null +++ b/apps/link/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "config-ts/base.json", + "include": ["."], + "exclude": ["dist", "build", "node_modules"] +} diff --git a/apps/link/vite.config.ts b/apps/link/vite.config.ts new file mode 100644 index 00000000..ec86d8b1 --- /dev/null +++ b/apps/link/vite.config.ts @@ -0,0 +1,14 @@ +import { defineConfig } from "vite"; +import { assetpackPlugin } from "./scripts/assetpack-vite-plugin"; + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [assetpackPlugin()], + server: { + port: 3006, + host: true, + }, + define: { + APP_VERSION: JSON.stringify(process.env.npm_package_version), + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d904fe31..5e36b0b3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -28,10 +28,10 @@ importers: dependencies: '@lingui/core': specifier: 5.2.0 - version: 5.2.0(@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0))(babel-plugin-macros@3.1.0) + version: 5.2.0(@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0)(typescript@5.8.3))(babel-plugin-macros@3.1.0) '@sveltejs/kit': specifier: 2.17.3 - version: 2.17.3(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 2.17.3(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@types/lodash': specifier: 4.17.16 version: 4.17.16 @@ -100,14 +100,14 @@ importers: version: link:../../packages/utils-xstate vite: specifier: 6.2.0 - version: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + version: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) devDependencies: '@storybook/addon-svelte-csf': specifier: 5.0.5 - version: 5.0.5(@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5))(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(babel-plugin-macros@3.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 5.0.5(@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5))(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(babel-plugin-macros@3.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@sveltejs/vite-plugin-svelte': specifier: 5.0.3 - version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) chromatic: specifier: 11.26.1 version: 11.26.1 @@ -137,10 +137,10 @@ importers: dependencies: '@lingui/core': specifier: 5.2.0 - version: 5.2.0(@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0))(babel-plugin-macros@3.1.0) + version: 5.2.0(@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0)(typescript@5.8.3))(babel-plugin-macros@3.1.0) '@sveltejs/kit': specifier: 2.17.3 - version: 2.17.3(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 2.17.3(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@types/lodash': specifier: 4.17.16 version: 4.17.16 @@ -209,14 +209,14 @@ importers: version: link:../../packages/utils-xstate vite: specifier: 6.2.0 - version: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + version: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) devDependencies: '@storybook/addon-svelte-csf': specifier: 5.0.5 - version: 5.0.5(@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5))(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(babel-plugin-macros@3.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 5.0.5(@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5))(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(babel-plugin-macros@3.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@sveltejs/vite-plugin-svelte': specifier: 5.0.3 - version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) chromatic: specifier: 11.26.1 version: 11.26.1 @@ -242,14 +242,69 @@ importers: specifier: workspace:* version: link:../../packages/eslint-config-custom + apps/link: + dependencies: + '@esotericsoftware/spine-pixi-v8': + specifier: ^4.2.74 + version: 4.2.74(pixi.js@8.8.1) + '@pixi/sound': + specifier: ^6.0.1 + version: 6.0.1(pixi.js@8.8.1) + '@pixi/ui': + specifier: ^2.2.2 + version: 2.2.7(pixi.js@8.8.1) + '@types/lodash': + specifier: 4.17.16 + version: 4.17.16 + constants-shared: + specifier: workspace:* + version: link:../../packages/constants-shared + lodash: + specifier: 4.17.16 + version: 4.17.16 + motion: + specifier: ^12.4.7 + version: 12.23.18(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + pixi.js: + specifier: ^8.8.1 + version: 8.8.1 + utils-shared: + specifier: workspace:* + version: link:../../packages/utils-shared + utils-sound: + specifier: workspace:* + version: link:../../packages/utils-sound + vite: + specifier: 6.2.0 + version: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) + devDependencies: + '@assetpack/core': + specifier: ^1.4.0 + version: 1.5.3 + config-ts: + specifier: workspace:* + version: link:../../packages/config-ts + cross-env: + specifier: ^10.0.0 + version: 10.0.0 + eslint: + specifier: 9.21.0 + version: 9.21.0(jiti@1.21.7) + eslint-config-custom: + specifier: workspace:* + version: link:../../packages/eslint-config-custom + typescript: + specifier: ~5.7.3 + version: 5.7.3 + apps/number-picker: dependencies: '@lingui/core': specifier: 5.2.0 - version: 5.2.0(@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0))(babel-plugin-macros@3.1.0) + version: 5.2.0(@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0)(typescript@5.8.3))(babel-plugin-macros@3.1.0) '@sveltejs/kit': specifier: 2.17.3 - version: 2.17.3(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 2.17.3(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@types/lodash': specifier: 4.17.16 version: 4.17.16 @@ -318,14 +373,14 @@ importers: version: link:../../packages/utils-xstate vite: specifier: 6.2.0 - version: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + version: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) devDependencies: '@storybook/addon-svelte-csf': specifier: 5.0.5 - version: 5.0.5(@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5))(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(babel-plugin-macros@3.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 5.0.5(@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5))(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(babel-plugin-macros@3.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@sveltejs/vite-plugin-svelte': specifier: 5.0.3 - version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) chromatic: specifier: 11.26.1 version: 11.26.1 @@ -355,10 +410,10 @@ importers: dependencies: '@lingui/core': specifier: 5.2.0 - version: 5.2.0(@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0))(babel-plugin-macros@3.1.0) + version: 5.2.0(@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0)(typescript@5.8.3))(babel-plugin-macros@3.1.0) '@sveltejs/kit': specifier: 2.17.3 - version: 2.17.3(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 2.17.3(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@types/lodash': specifier: 4.17.16 version: 4.17.16 @@ -427,14 +482,14 @@ importers: version: link:../../packages/utils-xstate vite: specifier: 6.2.0 - version: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + version: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) devDependencies: '@storybook/addon-svelte-csf': specifier: 5.0.5 - version: 5.0.5(@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5))(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(babel-plugin-macros@3.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 5.0.5(@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5))(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(babel-plugin-macros@3.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@sveltejs/vite-plugin-svelte': specifier: 5.0.3 - version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) chromatic: specifier: 11.26.1 version: 11.26.1 @@ -464,10 +519,10 @@ importers: dependencies: '@lingui/core': specifier: 5.2.0 - version: 5.2.0(@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0))(babel-plugin-macros@3.1.0) + version: 5.2.0(@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0)(typescript@5.8.3))(babel-plugin-macros@3.1.0) '@sveltejs/kit': specifier: 2.17.3 - version: 2.17.3(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 2.17.3(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@types/lodash': specifier: 4.17.16 version: 4.17.16 @@ -536,14 +591,14 @@ importers: version: link:../../packages/utils-xstate vite: specifier: 6.2.0 - version: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + version: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) devDependencies: '@storybook/addon-svelte-csf': specifier: 5.0.5 - version: 5.0.5(@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5))(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(babel-plugin-macros@3.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 5.0.5(@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5))(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(babel-plugin-macros@3.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@sveltejs/vite-plugin-svelte': specifier: 5.0.3 - version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) chromatic: specifier: 11.26.1 version: 11.26.1 @@ -573,10 +628,10 @@ importers: dependencies: '@lingui/core': specifier: 5.2.0 - version: 5.2.0(@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0))(babel-plugin-macros@3.1.0) + version: 5.2.0(@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0)(typescript@5.8.3))(babel-plugin-macros@3.1.0) '@sveltejs/kit': specifier: 2.17.3 - version: 2.17.3(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 2.17.3(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@types/lodash': specifier: 4.17.16 version: 4.17.16 @@ -645,14 +700,14 @@ importers: version: link:../../packages/utils-xstate vite: specifier: 6.2.0 - version: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + version: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) devDependencies: '@storybook/addon-svelte-csf': specifier: 5.0.5 - version: 5.0.5(@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5))(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(babel-plugin-macros@3.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 5.0.5(@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5))(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(babel-plugin-macros@3.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@sveltejs/vite-plugin-svelte': specifier: 5.0.3 - version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) chromatic: specifier: 11.26.1 version: 11.26.1 @@ -682,7 +737,7 @@ importers: dependencies: '@sveltejs/kit': specifier: 2.17.3 - version: 2.17.3(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 2.17.3(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@types/lodash': specifier: 4.17.16 version: 4.17.16 @@ -700,14 +755,14 @@ importers: version: link:../utils-layout vite: specifier: 6.2.0 - version: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + version: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) devDependencies: '@storybook/addon-svelte-csf': specifier: 5.0.5 - version: 5.0.5(@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5))(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(babel-plugin-macros@3.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 5.0.5(@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5))(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(babel-plugin-macros@3.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@sveltejs/vite-plugin-svelte': specifier: 5.0.3 - version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) chromatic: specifier: 11.26.1 version: 11.26.1 @@ -734,7 +789,7 @@ importers: dependencies: '@sveltejs/kit': specifier: 2.17.3 - version: 2.17.3(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 2.17.3(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@types/lodash': specifier: 4.17.16 version: 4.17.16 @@ -761,14 +816,14 @@ importers: version: link:../utils-shared vite: specifier: 6.2.0 - version: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + version: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) devDependencies: '@storybook/addon-svelte-csf': specifier: 5.0.5 - version: 5.0.5(@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5))(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(babel-plugin-macros@3.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 5.0.5(@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5))(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(babel-plugin-macros@3.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@sveltejs/vite-plugin-svelte': specifier: 5.0.3 - version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) chromatic: specifier: 11.26.1 version: 11.26.1 @@ -798,7 +853,7 @@ importers: dependencies: '@sveltejs/kit': specifier: 2.17.3 - version: 2.17.3(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 2.17.3(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) constants-shared: specifier: workspace:* version: link:../constants-shared @@ -819,17 +874,17 @@ importers: version: link:../utils-shared vite: specifier: 6.2.0 - version: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + version: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) devDependencies: '@lingui/core': specifier: 5.2.0 - version: 5.2.0(@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0))(babel-plugin-macros@3.1.0) + version: 5.2.0(@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0)(typescript@5.8.3))(babel-plugin-macros@3.1.0) '@storybook/addon-svelte-csf': specifier: 5.0.5 - version: 5.0.5(@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5))(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(babel-plugin-macros@3.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 5.0.5(@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5))(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(babel-plugin-macros@3.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@sveltejs/vite-plugin-svelte': specifier: 5.0.3 - version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) chromatic: specifier: 11.26.1 version: 11.26.1 @@ -862,28 +917,28 @@ importers: version: 3.2.5(react@19.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2)) '@lingui/core': specifier: 5.2.0 - version: 5.2.0(@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0)(typescript@5.8.3))(babel-plugin-macros@3.1.0) + version: 5.2.0(@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0)(typescript@5.7.3))(babel-plugin-macros@3.1.0) '@storybook/addon-docs': specifier: 9.0.15 version: 9.0.15(@types/react@19.1.8)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2)) '@storybook/addon-svelte-csf': specifier: 5.0.5 - version: 5.0.5(@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5))(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(babel-plugin-macros@3.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 5.0.5(@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5))(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(babel-plugin-macros@3.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@storybook/builder-vite': specifier: 9.0.15 - version: 9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@storybook/svelte': specifier: 9.0.15 version: 9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5) '@storybook/sveltekit': specifier: 9.0.15 - version: 9.0.15(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 9.0.15(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@sveltejs/adapter-static': specifier: latest - version: 3.0.8(@sveltejs/kit@2.22.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2))) + version: 3.0.9(@sveltejs/kit@2.22.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2))) '@sveltejs/vite-plugin-svelte': specifier: 5.0.3 - version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) components-shared: specifier: workspace:* version: link:../components-shared @@ -913,7 +968,7 @@ importers: version: link:../utils-shared vite: specifier: 6.2.0 - version: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + version: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) devDependencies: config-storybook: specifier: workspace:* @@ -938,10 +993,10 @@ importers: dependencies: '@lingui/core': specifier: 5.2.0 - version: 5.2.0(@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0))(babel-plugin-macros@3.1.0) + version: 5.2.0(@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0)(typescript@5.8.3))(babel-plugin-macros@3.1.0) '@sveltejs/kit': specifier: 2.17.3 - version: 2.17.3(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 2.17.3(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) components-shared: specifier: workspace:* version: link:../components-shared @@ -974,14 +1029,14 @@ importers: version: link:../utils-shared vite: specifier: 6.2.0 - version: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + version: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) devDependencies: '@storybook/addon-svelte-csf': specifier: 5.0.5 - version: 5.0.5(@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5))(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(babel-plugin-macros@3.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 5.0.5(@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5))(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(babel-plugin-macros@3.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@sveltejs/vite-plugin-svelte': specifier: 5.0.3 - version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) chromatic: specifier: 11.26.1 version: 11.26.1 @@ -1011,10 +1066,10 @@ importers: dependencies: '@lingui/core': specifier: 5.2.0 - version: 5.2.0(@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0))(babel-plugin-macros@3.1.0) + version: 5.2.0(@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0)(typescript@5.8.3))(babel-plugin-macros@3.1.0) '@sveltejs/kit': specifier: 2.17.3 - version: 2.17.3(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 2.17.3(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@types/lodash': specifier: 4.17.16 version: 4.17.16 @@ -1056,14 +1111,14 @@ importers: version: link:../utils-xstate vite: specifier: 6.2.0 - version: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + version: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) devDependencies: '@storybook/addon-svelte-csf': specifier: 5.0.5 - version: 5.0.5(@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5))(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(babel-plugin-macros@3.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 5.0.5(@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5))(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(babel-plugin-macros@3.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@sveltejs/vite-plugin-svelte': specifier: 5.0.3 - version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) chromatic: specifier: 11.26.1 version: 11.26.1 @@ -1102,19 +1157,19 @@ importers: version: 9.0.15(@types/react@19.1.8)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2)) '@storybook/addon-svelte-csf': specifier: 5.0.5 - version: 5.0.5(@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.35.1))(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(babel-plugin-macros@3.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.35.1)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 5.0.5(@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.35.1))(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(babel-plugin-macros@3.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.35.1)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@storybook/builder-vite': specifier: 9.0.15 - version: 9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@storybook/svelte': specifier: 9.0.15 version: 9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.35.1) '@storybook/sveltekit': specifier: 9.0.15 - version: 9.0.15(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.35.1)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 9.0.15(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.35.1)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@sveltejs/adapter-static': specifier: latest - version: 3.0.8(@sveltejs/kit@2.22.2(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.35.1)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2))) + version: 3.0.9(@sveltejs/kit@2.22.2(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.35.1)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2))) config-ts: specifier: workspace:* version: link:../config-ts @@ -1129,22 +1184,22 @@ importers: version: 9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2) vite: specifier: 6.2.0 - version: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + version: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) packages/config-svelte: dependencies: '@sveltejs/adapter-static': specifier: latest - version: 3.0.8(@sveltejs/kit@2.22.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.85.1)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.85.1))) + version: 3.0.9(@sveltejs/kit@2.22.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.85.1)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.85.1))) '@sveltejs/vite-plugin-svelte': specifier: 5.0.3 - version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.85.1)) + version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.85.1)) svelte: specifier: 5.20.5 version: 5.20.5 vite: specifier: 6.2.0 - version: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.85.1) + version: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.85.1) devDependencies: eslint: specifier: 9.21.0 @@ -1162,16 +1217,16 @@ importers: dependencies: '@lingui/vite-plugin': specifier: 5.2.0 - version: 5.2.0(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 5.2.0(typescript@5.8.3)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@sveltejs/kit': specifier: 2.17.3 - version: 2.17.3(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 2.17.3(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) svelte: specifier: 5.20.5 version: 5.20.5 vite: specifier: 6.2.0 - version: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + version: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) devDependencies: eslint: specifier: 9.21.0 @@ -1196,13 +1251,13 @@ importers: dependencies: '@sveltejs/kit': specifier: 2.17.3 - version: 2.17.3(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 2.17.3(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) svelte: specifier: 5.20.5 version: 5.20.5 vite: specifier: 6.2.0 - version: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + version: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) devDependencies: config-svelte: specifier: workspace:* @@ -1224,22 +1279,22 @@ importers: dependencies: '@types/node': specifier: latest - version: 24.0.10 + version: 24.5.2 '@typescript-eslint/eslint-plugin': specifier: latest - version: 8.35.1(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@1.21.7))(typescript@5.8.3))(eslint@9.30.1(jiti@1.21.7))(typescript@5.8.3) + version: 8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.30.1(jiti@1.21.7))(typescript@5.8.3))(eslint@9.30.1(jiti@1.21.7))(typescript@5.8.3) '@typescript-eslint/parser': specifier: latest - version: 8.35.1(eslint@9.30.1(jiti@1.21.7))(typescript@5.8.3) + version: 8.44.0(eslint@9.30.1(jiti@1.21.7))(typescript@5.8.3) eslint-config-prettier: specifier: latest - version: 10.1.5(eslint@9.30.1(jiti@1.21.7)) + version: 10.1.8(eslint@9.30.1(jiti@1.21.7)) eslint-config-turbo: specifier: latest - version: 2.5.4(eslint@9.30.1(jiti@1.21.7))(turbo@2.5.4) + version: 2.5.6(eslint@9.30.1(jiti@1.21.7))(turbo@2.5.4) eslint-plugin-svelte: specifier: latest - version: 3.10.1(eslint@9.30.1(jiti@1.21.7))(svelte@5.35.1) + version: 3.12.4(eslint@9.30.1(jiti@1.21.7))(svelte@5.35.1) packages/pixi-svelte: dependencies: @@ -1266,7 +1321,7 @@ importers: version: 5.20.5 vite: specifier: 6.2.0 - version: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + version: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) webfontloader: specifier: 1.6.28 version: 1.6.28 @@ -1276,7 +1331,7 @@ importers: version: 2.3.10(svelte@5.20.5)(typescript@5.8.3) '@sveltejs/vite-plugin-svelte': specifier: 5.0.3 - version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) chromatic: specifier: 11.26.1 version: 11.26.1 @@ -1315,22 +1370,22 @@ importers: version: 9.0.15(@types/react@19.1.8)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2)) '@storybook/addon-svelte-csf': specifier: 5.0.5 - version: 5.0.5(@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5))(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(babel-plugin-macros@3.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 5.0.5(@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5))(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(babel-plugin-macros@3.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@storybook/builder-vite': specifier: 9.0.15 - version: 9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@storybook/svelte': specifier: 9.0.15 version: 9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5) '@storybook/sveltekit': specifier: 9.0.15 - version: 9.0.15(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 9.0.15(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@sveltejs/adapter-static': specifier: latest - version: 3.0.8(@sveltejs/kit@2.22.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2))) + version: 3.0.9(@sveltejs/kit@2.22.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2))) '@sveltejs/vite-plugin-svelte': specifier: 5.0.3 - version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) pixi-svelte: specifier: workspace:* version: link:../pixi-svelte @@ -1348,7 +1403,7 @@ importers: version: link:../utils-shared vite: specifier: 6.2.0 - version: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + version: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) devDependencies: components-storybook: specifier: workspace:* @@ -1412,10 +1467,10 @@ importers: dependencies: '@lingui/core': specifier: 5.2.0 - version: 5.2.0(@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0))(babel-plugin-macros@3.1.0) + version: 5.2.0(@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0)(typescript@5.8.3))(babel-plugin-macros@3.1.0) '@sveltejs/kit': specifier: 2.17.3 - version: 2.17.3(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.20.5)(vite@7.0.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@7.0.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 2.17.3(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.20.5)(vite@7.0.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@7.0.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) svelte: specifier: 5.20.5 version: 5.20.5 @@ -1505,14 +1560,14 @@ importers: version: 5.20.5 vite: specifier: 6.2.0 - version: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + version: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) devDependencies: '@sveltejs/package': specifier: 2.3.10 version: 2.3.10(svelte@5.20.5)(typescript@5.8.3) '@sveltejs/vite-plugin-svelte': specifier: 5.0.3 - version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) config-svelte: specifier: workspace:* version: link:../config-svelte @@ -1545,7 +1600,7 @@ importers: dependencies: '@sveltejs/kit': specifier: 2.17.3 - version: 2.17.3(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 2.17.3(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@types/lodash': specifier: 4.17.16 version: 4.17.16 @@ -1566,11 +1621,11 @@ importers: version: link:../utils-shared vite: specifier: 6.2.0 - version: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + version: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) devDependencies: '@sveltejs/vite-plugin-svelte': specifier: 5.0.3 - version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + version: 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) chromatic: specifier: 11.26.1 version: 11.26.1 @@ -1610,7 +1665,7 @@ importers: dependencies: '@lingui/core': specifier: 5.2.0 - version: 5.2.0(@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0))(babel-plugin-macros@3.1.0) + version: 5.2.0(@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0)(typescript@5.8.3))(babel-plugin-macros@3.1.0) '@types/lodash': specifier: 4.17.16 version: 4.17.16 @@ -1742,6 +1797,10 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + '@assetpack/core@1.5.3': + resolution: {integrity: sha512-Jkt6BYyTtdBNXlyAitlp4coiiva89YD0ew4Mewklp0G0F4OdJaSeKAtS1y59Os0oxjG4KA+i5bWMCkfm3Ki2pA==} + hasBin: true + '@babel/code-frame@7.27.1': resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} @@ -1827,6 +1886,18 @@ packages: peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 + '@emnapi/core@1.5.0': + resolution: {integrity: sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==} + + '@emnapi/runtime@1.5.0': + resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} + + '@emnapi/wasi-threads@1.1.0': + resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + + '@epic-web/invariant@1.0.0': + resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==} + '@esbuild/aix-ppc64@0.21.5': resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} engines: {node: '>=12'} @@ -2185,6 +2256,65 @@ packages: peerDependencies: pixi.js: ^8.4.0 + '@ffmpeg-installer/darwin-arm64@4.1.5': + resolution: {integrity: sha512-hYqTiP63mXz7wSQfuqfFwfLOfwwFChUedeCVKkBtl/cliaTM7/ePI9bVzfZ2c+dWu3TqCwLDRWNSJ5pqZl8otA==} + cpu: [arm64] + os: [darwin] + + '@ffmpeg-installer/darwin-x64@4.1.0': + resolution: {integrity: sha512-Z4EyG3cIFjdhlY8wI9aLUXuH8nVt7E9SlMVZtWvSPnm2sm37/yC2CwjUzyCQbJbySnef1tQwGG2Sx+uWhd9IAw==} + cpu: [x64] + os: [darwin] + + '@ffmpeg-installer/ffmpeg@1.1.0': + resolution: {integrity: sha512-Uq4rmwkdGxIa9A6Bd/VqqYbT7zqh1GrT5/rFwCwKM70b42W5gIjWeVETq6SdcL0zXqDtY081Ws/iJWhr1+xvQg==} + + '@ffmpeg-installer/linux-arm64@4.1.4': + resolution: {integrity: sha512-dljEqAOD0oIM6O6DxBW9US/FkvqvQwgJ2lGHOwHDDwu/pX8+V0YsDL1xqHbj1DMX/+nP9rxw7G7gcUvGspSoKg==} + cpu: [arm64] + os: [linux] + + '@ffmpeg-installer/linux-arm@4.1.3': + resolution: {integrity: sha512-NDf5V6l8AfzZ8WzUGZ5mV8O/xMzRag2ETR6+TlGIsMHp81agx51cqpPItXPib/nAZYmo55Bl2L6/WOMI3A5YRg==} + cpu: [arm] + os: [linux] + + '@ffmpeg-installer/linux-ia32@4.1.0': + resolution: {integrity: sha512-0LWyFQnPf+Ij9GQGD034hS6A90URNu9HCtQ5cTqo5MxOEc7Rd8gLXrJvn++UmxhU0J5RyRE9KRYstdCVUjkNOQ==} + cpu: [ia32] + os: [linux] + + '@ffmpeg-installer/linux-x64@4.1.0': + resolution: {integrity: sha512-Y5BWhGLU/WpQjOArNIgXD3z5mxxdV8c41C+U15nsE5yF8tVcdCGet5zPs5Zy3Ta6bU7haGpIzryutqCGQA/W8A==} + cpu: [x64] + os: [linux] + + '@ffmpeg-installer/win32-ia32@4.1.0': + resolution: {integrity: sha512-FV2D7RlaZv/lrtdhaQ4oETwoFUsUjlUiasiZLDxhEUPdNDWcH1OU9K1xTvqz+OXLdsmYelUDuBS/zkMOTtlUAw==} + cpu: [ia32] + os: [win32] + + '@ffmpeg-installer/win32-x64@4.1.0': + resolution: {integrity: sha512-Drt5u2vzDnIONf4ZEkKtFlbvwj6rI3kxw1Ck9fpudmtgaZIHD4ucsWB2lCZBXRxJgXR+2IMSti+4rtM4C4rXgg==} + cpu: [x64] + os: [win32] + + '@gpu-tex-enc/astc@4.7.1': + resolution: {integrity: sha512-ku4RvhQ+qp/k0bp8FbUvJGxfn/nf4FN0tMngPCyDiXbzzSeQip0QausfUt6gILlFGZHtlO+zO7SNkkacDJN3Rw==} + hasBin: true + + '@gpu-tex-enc/basis@1.16.4': + resolution: {integrity: sha512-J3tnW84Frz+BtnTLp7PmpX9LuRenUxreP1upq/UVwaouyy4UWLQaLatjkHaFww35R7dnr2S4zi5YiB1O+GH9+w==} + hasBin: true + + '@gpu-tex-enc/bc@1.0.11': + resolution: {integrity: sha512-Nxp3uUS3MG02XMA28uwey9aLNltW0lxRV4gKqrckYGEC4V5R8MG29LXQcW7hJ3xIqhUG2kvt0E80tbq6WzO9Cg==} + hasBin: true + + '@gpu-tex-enc/etc@1.0.3': + resolution: {integrity: sha512-KRGP0qua3bzj1wdNlkFxg/TV3beGCW5iOlFjVJ90+osDVqYBLd1BsEqRSlqxd3b/gG1S7dL/gX4igqZtUDobKQ==} + hasBin: true + '@humanfs/core@0.19.1': resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} @@ -2205,168 +2335,697 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@isaacs/balanced-match@4.0.1': - resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} - engines: {node: 20 || >=22} - - '@isaacs/brace-expansion@5.0.0': - resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} - engines: {node: 20 || >=22} - - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - - '@jest/schemas@29.6.3': - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/types@29.6.3': - resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jridgewell/gen-mapping@0.3.12': - resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/sourcemap-codec@1.5.4': - resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==} + '@img/colour@1.0.0': + resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} + engines: {node: '>=18'} - '@jridgewell/trace-mapping@0.3.29': - resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} + '@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] - '@lingui/babel-plugin-extract-messages@5.2.0': - resolution: {integrity: sha512-hQ6tFK72ZXX2813PU9thJbnwJ+SjSrfR3/tt4aqHJcOUdrb67wMVY/0xiUe+vb5y6kVZjZ4oPqdgCfGZ2jWBEw==} - engines: {node: '>=20.0.0'} + '@img/sharp-darwin-arm64@0.34.4': + resolution: {integrity: sha512-sitdlPzDVyvmINUdJle3TNHl+AG9QcwiAMsXmccqsCOMZNIdW2/7S26w0LyU8euiLVzFBL3dXPwVCq/ODnf2vA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] - '@lingui/babel-plugin-lingui-macro@5.2.0': - resolution: {integrity: sha512-IEpEfKW2WoGiK30dbovwXaPj69dKUP+GEAk00/6KUMB0sonaBWO4NO3Bj9G6NSdA6fB1lm9BtvuPqJQ2DvjF5g==} - engines: {node: '>=20.0.0'} - peerDependencies: - babel-plugin-macros: 2 || 3 - peerDependenciesMeta: - babel-plugin-macros: - optional: true + '@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] - '@lingui/cli@5.2.0': - resolution: {integrity: sha512-SLMPi9VMNAmhKRGt3HCGIZVHHmxfAcb7zNK9qwrEhlvcwxNmtsPtLb4iJvKy/VpdCQYm7C6D34tFjyVjUZ4ROg==} - engines: {node: '>=20.0.0'} - hasBin: true + '@img/sharp-darwin-x64@0.34.4': + resolution: {integrity: sha512-rZheupWIoa3+SOdF/IcUe1ah4ZDpKBGWcsPX6MT0lYniH9micvIU7HQkYTfrx5Xi8u+YqwLtxC/3vl8TQN6rMg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] - '@lingui/conf@5.2.0': - resolution: {integrity: sha512-3biQJxGntCP+EnOe9jjlquGCBfk6ogq+I8ZduHwmBceY5aQ0OR7V23ItDrMz0NBy8dFNk5YoeHun3CYKYOS/Jg==} - engines: {node: '>=20.0.0'} + '@img/sharp-libvips-darwin-arm64@1.0.4': + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} + cpu: [arm64] + os: [darwin] - '@lingui/core@5.2.0': - resolution: {integrity: sha512-cz35uKDxIGb/CPvgwn7BM/QYpxtARmQm7n+mHUoNJdNKSrg9R7vKkLRG7k9dukZwix2Mdjh+2dPIJnAkor2CiA==} - engines: {node: '>=20.0.0'} - peerDependencies: - '@lingui/babel-plugin-lingui-macro': 5.2.0 - babel-plugin-macros: 2 || 3 - peerDependenciesMeta: - '@lingui/babel-plugin-lingui-macro': - optional: true - babel-plugin-macros: - optional: true + '@img/sharp-libvips-darwin-arm64@1.2.3': + resolution: {integrity: sha512-QzWAKo7kpHxbuHqUC28DZ9pIKpSi2ts2OJnoIGI26+HMgq92ZZ4vk8iJd4XsxN+tYfNJxzH6W62X5eTcsBymHw==} + cpu: [arm64] + os: [darwin] - '@lingui/format-po@5.2.0': - resolution: {integrity: sha512-viUQaoRa8UxSghayTY7xjtwXbfXIVdlM8C4HsxmozQnl5TXnPVEwlaPYds3sdJ8PmQGcYCm35r8EsmuKBoWYDQ==} - engines: {node: '>=20.0.0'} + '@img/sharp-libvips-darwin-x64@1.0.4': + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} + cpu: [x64] + os: [darwin] - '@lingui/message-utils@5.2.0': - resolution: {integrity: sha512-qJFKNc1b7SRX6y5ywtA1x+2/gaY22e09hjC6fiDvDpAFdEguI4qAJGmBmqlAZG/kcokR0tmMpo9zYUF8jjcHEA==} - engines: {node: '>=20.0.0'} - bundledDependencies: - - '@messageformat/date-skeleton' + '@img/sharp-libvips-darwin-x64@1.2.3': + resolution: {integrity: sha512-Ju+g2xn1E2AKO6YBhxjj+ACcsPQRHT0bhpglxcEf+3uyPY+/gL8veniKoo96335ZaPo03bdDXMv0t+BBFAbmRA==} + cpu: [x64] + os: [darwin] - '@lingui/vite-plugin@5.2.0': - resolution: {integrity: sha512-jMpf6JJY1s3t4eFRBseTyuQNxy6ERRwg+uLi8EZ/qcaQgQW+GK6qWX/Qg5xQ8k1mJpaP6ihanMQMrkS6d5oR/A==} - engines: {node: '>=20.0.0'} - peerDependencies: - vite: ^3 || ^4 || ^5.0.9 || ^6 + '@img/sharp-libvips-linux-arm64@1.0.4': + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} + cpu: [arm64] + os: [linux] - '@mdx-js/react@3.1.0': - resolution: {integrity: sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==} - peerDependencies: - '@types/react': '>=16' - react: '>=16' + '@img/sharp-libvips-linux-arm64@1.2.3': + resolution: {integrity: sha512-I4RxkXU90cpufazhGPyVujYwfIm9Nk1QDEmiIsaPwdnm013F7RIceaCc87kAH+oUB1ezqEvC6ga4m7MSlqsJvQ==} + cpu: [arm64] + os: [linux] - '@messageformat/parser@5.1.1': - resolution: {integrity: sha512-3p0YRGCcTUCYvBKLIxtDDyrJ0YijGIwrTRu1DT8gIviIDZru8H23+FkY6MJBzM1n9n20CiM4VeDYuBsrrwnLjg==} + '@img/sharp-libvips-linux-arm@1.0.5': + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} + cpu: [arm] + os: [linux] - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} + '@img/sharp-libvips-linux-arm@1.2.3': + resolution: {integrity: sha512-x1uE93lyP6wEwGvgAIV0gP6zmaL/a0tGzJs/BIDDG0zeBhMnuUPm7ptxGhUbcGs4okDJrk4nxgrmxpib9g6HpA==} + cpu: [arm] + os: [linux] - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} + '@img/sharp-libvips-linux-ppc64@1.2.3': + resolution: {integrity: sha512-Y2T7IsQvJLMCBM+pmPbM3bKT/yYJvVtLJGfCs4Sp95SjvnFIjynbjzsa7dY1fRJX45FTSfDksbTp6AGWudiyCg==} + cpu: [ppc64] + os: [linux] - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} + '@img/sharp-libvips-linux-s390x@1.0.4': + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} + cpu: [s390x] + os: [linux] - '@pixi/colord@2.9.6': - resolution: {integrity: sha512-nezytU2pw587fQstUu1AsJZDVEynjskwOL+kibwcdxsMBFqPsFFNA7xl0ii/gXuDi6M0xj3mfRJj8pBSc2jCfA==} + '@img/sharp-libvips-linux-s390x@1.2.3': + resolution: {integrity: sha512-RgWrs/gVU7f+K7P+KeHFaBAJlNkD1nIZuVXdQv6S+fNA6syCcoboNjsV2Pou7zNlVdNQoQUpQTk8SWDHUA3y/w==} + cpu: [s390x] + os: [linux] - '@polka/url@1.0.0-next.29': - resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} + '@img/sharp-libvips-linux-x64@1.0.4': + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} + cpu: [x64] + os: [linux] - '@rollup/rollup-android-arm-eabi@4.44.1': - resolution: {integrity: sha512-JAcBr1+fgqx20m7Fwe1DxPUl/hPkee6jA6Pl7n1v2EFiktAHenTaXl5aIFjUIEsfn9w3HE4gK1lEgNGMzBDs1w==} - cpu: [arm] - os: [android] + '@img/sharp-libvips-linux-x64@1.2.3': + resolution: {integrity: sha512-3JU7LmR85K6bBiRzSUc/Ff9JBVIFVvq6bomKE0e63UXGeRw2HPVEjoJke1Yx+iU4rL7/7kUjES4dZ/81Qjhyxg==} + cpu: [x64] + os: [linux] - '@rollup/rollup-android-arm64@4.44.1': - resolution: {integrity: sha512-RurZetXqTu4p+G0ChbnkwBuAtwAbIwJkycw1n6GvlGlBuS4u5qlr5opix8cBAYFJgaY05TWtM+LaoFggUmbZEQ==} + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} cpu: [arm64] - os: [android] + os: [linux] - '@rollup/rollup-darwin-arm64@4.44.1': - resolution: {integrity: sha512-fM/xPesi7g2M7chk37LOnmnSTHLG/v2ggWqKj3CCA1rMA4mm5KVBT1fNoswbo1JhPuNNZrVwpTvlCVggv8A2zg==} + '@img/sharp-libvips-linuxmusl-arm64@1.2.3': + resolution: {integrity: sha512-F9q83RZ8yaCwENw1GieztSfj5msz7GGykG/BA+MOUefvER69K/ubgFHNeSyUu64amHIYKGDs4sRCMzXVj8sEyw==} cpu: [arm64] - os: [darwin] + os: [linux] - '@rollup/rollup-darwin-x64@4.44.1': - resolution: {integrity: sha512-gDnWk57urJrkrHQ2WVx9TSVTH7lSlU7E3AFqiko+bgjlh78aJ88/3nycMax52VIVjIm3ObXnDL2H00e/xzoipw==} + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} cpu: [x64] - os: [darwin] + os: [linux] - '@rollup/rollup-freebsd-arm64@4.44.1': - resolution: {integrity: sha512-wnFQmJ/zPThM5zEGcnDcCJeYJgtSLjh1d//WuHzhf6zT3Md1BvvhJnWoy+HECKu2bMxaIcfWiu3bJgx6z4g2XA==} + '@img/sharp-libvips-linuxmusl-x64@1.2.3': + resolution: {integrity: sha512-U5PUY5jbc45ANM6tSJpsgqmBF/VsL6LnxJmIf11kB7J5DctHgqm0SkuXzVWtIY90GnJxKnC/JT251TDnk1fu/g==} + cpu: [x64] + 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: [freebsd] + os: [linux] - '@rollup/rollup-freebsd-x64@4.44.1': - resolution: {integrity: sha512-uBmIxoJ4493YATvU2c0upGz87f99e3wop7TJgOA/bXMFd2SvKCI7xkxY/5k50bv7J6dw1SXT4MQBQSLn8Bb/Uw==} - cpu: [x64] - os: [freebsd] + '@img/sharp-linux-arm64@0.34.4': + resolution: {integrity: sha512-YXU1F/mN/Wu786tl72CyJjP/Ngl8mGHN1hST4BGl+hiW5jhCnV2uRVTNOcaYPs73NeT/H8Upm3y9582JVuZHrQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [linux] - '@rollup/rollup-linux-arm-gnueabihf@4.44.1': - resolution: {integrity: sha512-n0edDmSHlXFhrlmTK7XBuwKlG5MbS7yleS1cQ9nn4kIeW+dJH+ExqNgQ0RrFRew8Y+0V/x6C5IjsHrJmiHtkxQ==} + '@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] - '@rollup/rollup-linux-arm-musleabihf@4.44.1': - resolution: {integrity: sha512-8WVUPy3FtAsKSpyk21kV52HCxB+me6YkbkFHATzC2Yd3yuqHwy2lbFL4alJOLXKljoRw08Zk8/xEj89cLQ/4Nw==} + '@img/sharp-linux-arm@0.34.4': + resolution: {integrity: sha512-Xyam4mlqM0KkTHYVSuc6wXRmM7LGN0P12li03jAnZ3EJWZqj83+hi8Y9UxZUbxsgsK1qOEwg7O0Bc0LjqQVtxA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.44.1': - resolution: {integrity: sha512-yuktAOaeOgorWDeFJggjuCkMGeITfqvPgkIXhDqsfKX8J3jGyxdDZgBV/2kj/2DyPaLiX6bPdjJDTu9RB8lUPQ==} - cpu: [arm64] + '@img/sharp-linux-ppc64@0.34.4': + resolution: {integrity: sha512-F4PDtF4Cy8L8hXA2p3TO6s4aDt93v+LKmpcYFLAVdkkD3hSxZzee0rh6/+94FpAynsuMpLX5h+LRsSG3rIciUQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.44.1': - resolution: {integrity: sha512-W+GBM4ifET1Plw8pdVaecwUgxmiH23CfAUj32u8knq0JPFyK4weRy6H7ooxYFD19YxBulL0Ktsflg5XS7+7u9g==} - cpu: [arm64] + '@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] - '@rollup/rollup-linux-loongarch64-gnu@4.44.1': - resolution: {integrity: sha512-1zqnUEMWp9WrGVuVak6jWTl4fEtrVKfZY7CvcBmUUpxAJ7WcSowPSAWIKa/0o5mBL/Ij50SIf9tuirGx63Ovew==} + '@img/sharp-linux-s390x@0.34.4': + resolution: {integrity: sha512-qVrZKE9Bsnzy+myf7lFKvng6bQzhNUAYcVORq2P7bDlvmF6u2sCmK2KyEQEBdYk+u3T01pVsPrkj943T1aJAsw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [s390x] + 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-linux-x64@0.34.4': + resolution: {integrity: sha512-ZfGtcp2xS51iG79c6Vhw9CWqQC8l2Ot8dygxoDoIQPTat/Ov3qAa8qpxSrtAEAJW+UjTXc4yxCjNfxm4h6Xm2A==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + 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-arm64@0.34.4': + resolution: {integrity: sha512-8hDVvW9eu4yHWnjaOOR8kHVrew1iIX+MUgwxSuH2XyYeNRtLUe4VNioSqbNkB7ZYQJj9rUTT4PyRscyk2PXFKA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + 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-linuxmusl-x64@0.34.4': + resolution: {integrity: sha512-lU0aA5L8QTlfKjpDCEFOZsTYGn3AEiO6db8W5aQDxj0nQkVrZWmN3ZP9sYKWJdtq3PWPhUNlqehWyXpYDcI9Sg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [linux] + + '@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-wasm32@0.34.4': + resolution: {integrity: sha512-33QL6ZO/qpRyG7woB/HUALz28WnTMI2W1jgX3Nu2bypqLIKx/QKMILLJzJjI+SIbvXdG9fUnmrxR7vbi1sTBeA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-arm64@0.34.4': + resolution: {integrity: sha512-2Q250do/5WXTwxW3zjsEuMSv5sUU4Tq9VThWKlU2EYLm4MB7ZeMwF+SFJutldYODXF6jzc6YEOC+VfX0SZQPqA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + 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-ia32@0.34.4': + resolution: {integrity: sha512-3ZeLue5V82dT92CNL6rsal6I2weKw1cYu+rGKm8fOCCtJTR2gYeUfY3FqUnIJsMUPIH68oS5jmZ0NiJ508YpEw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + 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} + cpu: [x64] + os: [win32] + + '@img/sharp-win32-x64@0.34.4': + resolution: {integrity: sha512-xIyj4wpYs8J18sVN3mSQjwrw7fKUqRw+Z5rnHNCy5fYTxigBz81u5mOMPmFumwjcn8+ld1ppptMBCLic1nz6ig==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + + '@isaacs/balanced-match@4.0.1': + resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} + engines: {node: 20 || >=22} + + '@isaacs/brace-expansion@5.0.0': + resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} + engines: {node: 20 || >=22} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jimp/core@1.6.0': + resolution: {integrity: sha512-EQQlKU3s9QfdJqiSrZWNTxBs3rKXgO2W+GxNXDtwchF3a4IqxDheFX1ti+Env9hdJXDiYLp2jTRjlxhPthsk8w==} + engines: {node: '>=18'} + + '@jimp/diff@1.6.0': + resolution: {integrity: sha512-+yUAQ5gvRC5D1WHYxjBHZI7JBRusGGSLf8AmPRPCenTzh4PA+wZ1xv2+cYqQwTfQHU5tXYOhA0xDytfHUf1Zyw==} + engines: {node: '>=18'} + + '@jimp/file-ops@1.6.0': + resolution: {integrity: sha512-Dx/bVDmgnRe1AlniRpCKrGRm5YvGmUwbDzt+MAkgmLGf+jvBT75hmMEZ003n9HQI/aPnm/YKnXjg/hOpzNCpHQ==} + engines: {node: '>=18'} + + '@jimp/js-bmp@1.6.0': + resolution: {integrity: sha512-FU6Q5PC/e3yzLyBDXupR3SnL3htU7S3KEs4e6rjDP6gNEOXRFsWs6YD3hXuXd50jd8ummy+q2WSwuGkr8wi+Gw==} + engines: {node: '>=18'} + + '@jimp/js-gif@1.6.0': + resolution: {integrity: sha512-N9CZPHOrJTsAUoWkWZstLPpwT5AwJ0wge+47+ix3++SdSL/H2QzyMqxbcDYNFe4MoI5MIhATfb0/dl/wmX221g==} + engines: {node: '>=18'} + + '@jimp/js-jpeg@1.6.0': + resolution: {integrity: sha512-6vgFDqeusblf5Pok6B2DUiMXplH8RhIKAryj1yn+007SIAQ0khM1Uptxmpku/0MfbClx2r7pnJv9gWpAEJdMVA==} + engines: {node: '>=18'} + + '@jimp/js-png@1.6.0': + resolution: {integrity: sha512-AbQHScy3hDDgMRNfG0tPjL88AV6qKAILGReIa3ATpW5QFjBKpisvUaOqhzJ7Reic1oawx3Riyv152gaPfqsBVg==} + engines: {node: '>=18'} + + '@jimp/js-tiff@1.6.0': + resolution: {integrity: sha512-zhReR8/7KO+adijj3h0ZQUOiun3mXUv79zYEAKvE0O+rP7EhgtKvWJOZfRzdZSNv0Pu1rKtgM72qgtwe2tFvyw==} + engines: {node: '>=18'} + + '@jimp/plugin-blit@1.6.0': + resolution: {integrity: sha512-M+uRWl1csi7qilnSK8uxK4RJMSuVeBiO1AY0+7APnfUbQNZm6hCe0CCFv1Iyw1D/Dhb8ph8fQgm5mwM0eSxgVA==} + engines: {node: '>=18'} + + '@jimp/plugin-blur@1.6.0': + resolution: {integrity: sha512-zrM7iic1OTwUCb0g/rN5y+UnmdEsT3IfuCXCJJNs8SZzP0MkZ1eTvuwK9ZidCuMo4+J3xkzCidRwYXB5CyGZTw==} + engines: {node: '>=18'} + + '@jimp/plugin-circle@1.6.0': + resolution: {integrity: sha512-xt1Gp+LtdMKAXfDp3HNaG30SPZW6AQ7dtAtTnoRKorRi+5yCJjKqXRgkewS5bvj8DEh87Ko1ydJfzqS3P2tdWw==} + engines: {node: '>=18'} + + '@jimp/plugin-color@1.6.0': + resolution: {integrity: sha512-J5q8IVCpkBsxIXM+45XOXTrsyfblyMZg3a9eAo0P7VPH4+CrvyNQwaYatbAIamSIN1YzxmO3DkIZXzRjFSz1SA==} + engines: {node: '>=18'} + + '@jimp/plugin-contain@1.6.0': + resolution: {integrity: sha512-oN/n+Vdq/Qg9bB4yOBOxtY9IPAtEfES8J1n9Ddx+XhGBYT1/QTU/JYkGaAkIGoPnyYvmLEDqMz2SGihqlpqfzQ==} + engines: {node: '>=18'} + + '@jimp/plugin-cover@1.6.0': + resolution: {integrity: sha512-Iow0h6yqSC269YUJ8HC3Q/MpCi2V55sMlbkkTTx4zPvd8mWZlC0ykrNDeAy9IJegrQ7v5E99rJwmQu25lygKLA==} + engines: {node: '>=18'} + + '@jimp/plugin-crop@1.6.0': + resolution: {integrity: sha512-KqZkEhvs+21USdySCUDI+GFa393eDIzbi1smBqkUPTE+pRwSWMAf01D5OC3ZWB+xZsNla93BDS9iCkLHA8wang==} + engines: {node: '>=18'} + + '@jimp/plugin-displace@1.6.0': + resolution: {integrity: sha512-4Y10X9qwr5F+Bo5ME356XSACEF55485j5nGdiyJ9hYzjQP9nGgxNJaZ4SAOqpd+k5sFaIeD7SQ0Occ26uIng5Q==} + engines: {node: '>=18'} + + '@jimp/plugin-dither@1.6.0': + resolution: {integrity: sha512-600d1RxY0pKwgyU0tgMahLNKsqEcxGdbgXadCiVCoGd6V6glyCvkNrnnwC0n5aJ56Htkj88PToSdF88tNVZEEQ==} + engines: {node: '>=18'} + + '@jimp/plugin-fisheye@1.6.0': + resolution: {integrity: sha512-E5QHKWSCBFtpgZarlmN3Q6+rTQxjirFqo44ohoTjzYVrDI6B6beXNnPIThJgPr0Y9GwfzgyarKvQuQuqCnnfbA==} + engines: {node: '>=18'} + + '@jimp/plugin-flip@1.6.0': + resolution: {integrity: sha512-/+rJVDuBIVOgwoyVkBjUFHtP+wmW0r+r5OQ2GpatQofToPVbJw1DdYWXlwviSx7hvixTWLKVgRWQ5Dw862emDg==} + engines: {node: '>=18'} + + '@jimp/plugin-hash@1.6.0': + resolution: {integrity: sha512-wWzl0kTpDJgYVbZdajTf+4NBSKvmI3bRI8q6EH9CVeIHps9VWVsUvEyb7rpbcwVLWYuzDtP2R0lTT6WeBNQH9Q==} + engines: {node: '>=18'} + + '@jimp/plugin-mask@1.6.0': + resolution: {integrity: sha512-Cwy7ExSJMZszvkad8NV8o/Z92X2kFUFM8mcDAhNVxU0Q6tA0op2UKRJY51eoK8r6eds/qak3FQkXakvNabdLnA==} + engines: {node: '>=18'} + + '@jimp/plugin-print@1.6.0': + resolution: {integrity: sha512-zarTIJi8fjoGMSI/M3Xh5yY9T65p03XJmPsuNet19K/Q7mwRU6EV2pfj+28++2PV2NJ+htDF5uecAlnGyxFN2A==} + engines: {node: '>=18'} + + '@jimp/plugin-quantize@1.6.0': + resolution: {integrity: sha512-EmzZ/s9StYQwbpG6rUGBCisc3f64JIhSH+ncTJd+iFGtGo0YvSeMdAd+zqgiHpfZoOL54dNavZNjF4otK+mvlg==} + engines: {node: '>=18'} + + '@jimp/plugin-resize@1.6.0': + resolution: {integrity: sha512-uSUD1mqXN9i1SGSz5ov3keRZ7S9L32/mAQG08wUwZiEi5FpbV0K8A8l1zkazAIZi9IJzLlTauRNU41Mi8IF9fA==} + engines: {node: '>=18'} + + '@jimp/plugin-rotate@1.6.0': + resolution: {integrity: sha512-JagdjBLnUZGSG4xjCLkIpQOZZ3Mjbg8aGCCi4G69qR+OjNpOeGI7N2EQlfK/WE8BEHOW5vdjSyglNqcYbQBWRw==} + engines: {node: '>=18'} + + '@jimp/plugin-threshold@1.6.0': + resolution: {integrity: sha512-M59m5dzLoHOVWdM41O8z9SyySzcDn43xHseOH0HavjsfQsT56GGCC4QzU1banJidbUrePhzoEdS42uFE8Fei8w==} + engines: {node: '>=18'} + + '@jimp/types@1.6.0': + resolution: {integrity: sha512-7UfRsiKo5GZTAATxm2qQ7jqmUXP0DxTArztllTcYdyw6Xi5oT4RaoXynVtCD4UyLK5gJgkZJcwonoijrhYFKfg==} + engines: {node: '>=18'} + + '@jimp/utils@1.6.0': + resolution: {integrity: sha512-gqFTGEosKbOkYF/WFj26jMHOI5OH2jeP1MmC/zbK6BF6VJBf8rIC5898dPfSzZEbSA0wbbV5slbntWVc5PKLFA==} + engines: {node: '>=18'} + + '@jridgewell/gen-mapping@0.3.12': + resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.4': + resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==} + + '@jridgewell/trace-mapping@0.3.29': + resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} + + '@lingui/babel-plugin-extract-messages@5.2.0': + resolution: {integrity: sha512-hQ6tFK72ZXX2813PU9thJbnwJ+SjSrfR3/tt4aqHJcOUdrb67wMVY/0xiUe+vb5y6kVZjZ4oPqdgCfGZ2jWBEw==} + engines: {node: '>=20.0.0'} + + '@lingui/babel-plugin-lingui-macro@5.2.0': + resolution: {integrity: sha512-IEpEfKW2WoGiK30dbovwXaPj69dKUP+GEAk00/6KUMB0sonaBWO4NO3Bj9G6NSdA6fB1lm9BtvuPqJQ2DvjF5g==} + engines: {node: '>=20.0.0'} + peerDependencies: + babel-plugin-macros: 2 || 3 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + + '@lingui/cli@5.2.0': + resolution: {integrity: sha512-SLMPi9VMNAmhKRGt3HCGIZVHHmxfAcb7zNK9qwrEhlvcwxNmtsPtLb4iJvKy/VpdCQYm7C6D34tFjyVjUZ4ROg==} + engines: {node: '>=20.0.0'} + hasBin: true + + '@lingui/conf@5.2.0': + resolution: {integrity: sha512-3biQJxGntCP+EnOe9jjlquGCBfk6ogq+I8ZduHwmBceY5aQ0OR7V23ItDrMz0NBy8dFNk5YoeHun3CYKYOS/Jg==} + engines: {node: '>=20.0.0'} + + '@lingui/core@5.2.0': + resolution: {integrity: sha512-cz35uKDxIGb/CPvgwn7BM/QYpxtARmQm7n+mHUoNJdNKSrg9R7vKkLRG7k9dukZwix2Mdjh+2dPIJnAkor2CiA==} + engines: {node: '>=20.0.0'} + peerDependencies: + '@lingui/babel-plugin-lingui-macro': 5.2.0 + babel-plugin-macros: 2 || 3 + peerDependenciesMeta: + '@lingui/babel-plugin-lingui-macro': + optional: true + babel-plugin-macros: + optional: true + + '@lingui/format-po@5.2.0': + resolution: {integrity: sha512-viUQaoRa8UxSghayTY7xjtwXbfXIVdlM8C4HsxmozQnl5TXnPVEwlaPYds3sdJ8PmQGcYCm35r8EsmuKBoWYDQ==} + engines: {node: '>=20.0.0'} + + '@lingui/message-utils@5.2.0': + resolution: {integrity: sha512-qJFKNc1b7SRX6y5ywtA1x+2/gaY22e09hjC6fiDvDpAFdEguI4qAJGmBmqlAZG/kcokR0tmMpo9zYUF8jjcHEA==} + engines: {node: '>=20.0.0'} + bundledDependencies: + - '@messageformat/date-skeleton' + + '@lingui/vite-plugin@5.2.0': + resolution: {integrity: sha512-jMpf6JJY1s3t4eFRBseTyuQNxy6ERRwg+uLi8EZ/qcaQgQW+GK6qWX/Qg5xQ8k1mJpaP6ihanMQMrkS6d5oR/A==} + engines: {node: '>=20.0.0'} + peerDependencies: + vite: ^3 || ^4 || ^5.0.9 || ^6 + + '@mdx-js/react@3.1.0': + resolution: {integrity: sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==} + peerDependencies: + '@types/react': '>=16' + react: '>=16' + + '@messageformat/parser@5.1.1': + resolution: {integrity: sha512-3p0YRGCcTUCYvBKLIxtDDyrJ0YijGIwrTRu1DT8gIviIDZru8H23+FkY6MJBzM1n9n20CiM4VeDYuBsrrwnLjg==} + + '@napi-rs/wasm-runtime@0.2.12': + resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} + + '@napi-rs/wasm-runtime@1.0.5': + resolution: {integrity: sha512-TBr9Cf9onSAS2LQ2+QHx6XcC6h9+RIzJgbqG3++9TUZSH204AwEy5jg3BTQ0VATsyoGj4ee49tN/y6rvaOOtcg==} + + '@napi-rs/woff-build-android-arm-eabi@0.2.2': + resolution: {integrity: sha512-yXtQYhOH8rmRJDzp3pS7ZSHYigSIbeI6AdLanJnjPs8sJ+EGAqetew5bAJL+QOe7pSuXyYRPRvTC4YCgB0Iw5Q==} + engines: {node: '>= 10'} + cpu: [arm] + os: [android] + + '@napi-rs/woff-build-android-arm64@0.2.2': + resolution: {integrity: sha512-3wadXjr1+Z63lBJYPaljXtqkYFMW2IILvt3mkztLaqfxZDYZbfyLy7War8I+L2IaYUamDF0rjz3iC/K+OyrZvA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@napi-rs/woff-build-darwin-arm64@0.2.2': + resolution: {integrity: sha512-4ugP2K2VYeTE0rn7BnNZEHbvFE8B2V8fkrVo65x0nivmmw2u7rsWjt1jdf1oC3yQYHy5VM/Nq9iepqm8NfJsjA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@napi-rs/woff-build-darwin-x64@0.2.2': + resolution: {integrity: sha512-6KL02hFcYY6R5lC0Zxz924/J4fnrBoeVST5AjD1HlM4K/B8b7wyFH27zfsD2LvVsJ2jSZAiuiRfFDDYlKQCo8A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@napi-rs/woff-build-linux-arm64-gnu@0.2.2': + resolution: {integrity: sha512-Mu/3fSBYghjZZrHVb+ML39EYj9AUvTLCIQ9aCJpgGsjk1BAKFRugtB5QjScnXoVtspFKogaTYUbS2j2mTT5gVw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@napi-rs/woff-build-linux-arm64-musl@0.2.2': + resolution: {integrity: sha512-4aeqALBdYYPKm8IykUl4hHidkmReBC5KDKtXnDKdGfXt3UPLCsK+szvGMN5H9+AkqYpN0AAkh+3jzK1KXAP1Jg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@napi-rs/woff-build-linux-x64-gnu@0.2.2': + resolution: {integrity: sha512-NBS9dsif1HSNJzpYNm9Gcc1I1fq9r0QWWxNuJdda+iUFTxuy81yVqL3hvUS3ru4aiF3qo5iya5/bgWWpHEhnww==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@napi-rs/woff-build-linux-x64-musl@0.2.2': + resolution: {integrity: sha512-NLDLObX0JX+Plok/fJFCgi/fGwevcn8bI9GSd4Sz/jPY1hZtb/1o1Z0egGMkfyZxTKx8fSg5+VMU1yDii1Uvfw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@napi-rs/woff-build-wasm32-wasi@0.2.2': + resolution: {integrity: sha512-h6sOnis3zgAs65vy1ReA6Csiyxs5uv0i+IftcEZaR4sTEORkkfFU0UFesHcRy1Rp1SQQbcz/5RShWPFN2SIh8w==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@napi-rs/woff-build-win32-arm64-msvc@0.2.2': + resolution: {integrity: sha512-HT3cxkXHnL6gEyMoOqW2BRnEKNNJWwvt6hzH29+fXglm3C4E1xwRf/4quF/71CJDfW4K4kN6xPyL+UDl5GgzpQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@napi-rs/woff-build-win32-ia32-msvc@0.2.2': + resolution: {integrity: sha512-FLzw4FGVdr952exrpH3ULK+drjQiCMZTpp8vI9Nc6wKUkZ7236zJAvfsRPi91hfpipyBbo7u7CiuVP0p4Cx8sw==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@napi-rs/woff-build-win32-x64-msvc@0.2.2': + resolution: {integrity: sha512-X9kOtqy+j/azXrcuwCgBg0WVgtgyKwhm0C+qca+20sqSPpNywDSfwCGmy+aIaNzRXF4V6VTj3IG9Iis+wKPPVw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@napi-rs/woff-build@0.2.2': + resolution: {integrity: sha512-dJst7XDaCsXjz9y8UYQhg120cloaKDSH+fS96M87HutzO/RdK9E1JNKq9JGNYWRCiYOlDRX0rUqJnL0rLDsOCw==} + engines: {node: '>= 10'} + + '@node-rs/crc32-android-arm-eabi@1.10.6': + resolution: {integrity: sha512-vZAMuJXm3TpWPOkkhxdrofWDv+Q+I2oO7ucLRbXyAPmXFNDhHtBxbO1rk9Qzz+M3eep8ieS4/+jCL1Q0zacNMQ==} + engines: {node: '>= 10'} + cpu: [arm] + os: [android] + + '@node-rs/crc32-android-arm64@1.10.6': + resolution: {integrity: sha512-Vl/JbjCinCw/H9gEpZveWCMjxjcEChDcDBM8S4hKay5yyoRCUHJPuKr4sjVDBeOm+1nwU3oOm6Ca8dyblwp4/w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@node-rs/crc32-darwin-arm64@1.10.6': + resolution: {integrity: sha512-kARYANp5GnmsQiViA5Qu74weYQ3phOHSYQf0G+U5wB3NB5JmBHnZcOc46Ig21tTypWtdv7u63TaltJQE41noyg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@node-rs/crc32-darwin-x64@1.10.6': + resolution: {integrity: sha512-Q99bevJVMfLTISpkpKBlXgtPUItrvTWKFyiqoKH5IvscZmLV++NH4V13Pa17GTBmv9n18OwzgQY4/SRq6PQNVA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@node-rs/crc32-freebsd-x64@1.10.6': + resolution: {integrity: sha512-66hpawbNjrgnS9EDMErta/lpaqOMrL6a6ee+nlI2viduVOmRZWm9Rg9XdGTK/+c4bQLdtC6jOd+Kp4EyGRYkAg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@node-rs/crc32-linux-arm-gnueabihf@1.10.6': + resolution: {integrity: sha512-E8Z0WChH7X6ankbVm8J/Yym19Cq3otx6l4NFPS6JW/cWdjv7iw+Sps2huSug+TBprjbcEA+s4TvEwfDI1KScjg==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@node-rs/crc32-linux-arm64-gnu@1.10.6': + resolution: {integrity: sha512-LmWcfDbqAvypX0bQjQVPmQGazh4dLiVklkgHxpV4P0TcQ1DT86H/SWpMBMs/ncF8DGuCQ05cNyMv1iddUDugoQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@node-rs/crc32-linux-arm64-musl@1.10.6': + resolution: {integrity: sha512-k8ra/bmg0hwRrIEE8JL1p32WfaN9gDlUUpQRWsbxd1WhjqvXea7kKO6K4DwVxyxlPhBS9Gkb5Urq7Y4mXANzaw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@node-rs/crc32-linux-x64-gnu@1.10.6': + resolution: {integrity: sha512-IfjtqcuFK7JrSZ9mlAFhb83xgium30PguvRjIMI45C3FJwu18bnLk1oR619IYb/zetQT82MObgmqfKOtgemEKw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@node-rs/crc32-linux-x64-musl@1.10.6': + resolution: {integrity: sha512-LbFYsA5M9pNunOweSt6uhxenYQF94v3bHDAQRPTQ3rnjn+mK6IC7YTAYoBjvoJP8lVzcvk9hRj8wp4Jyh6Y80g==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@node-rs/crc32-wasm32-wasi@1.10.6': + resolution: {integrity: sha512-KaejdLgHMPsRaxnM+OG9L9XdWL2TabNx80HLdsCOoX9BVhEkfh39OeahBo8lBmidylKbLGMQoGfIKDjq0YMStw==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@node-rs/crc32-win32-arm64-msvc@1.10.6': + resolution: {integrity: sha512-x50AXiSxn5Ccn+dCjLf1T7ZpdBiV1Sp5aC+H2ijhJO4alwznvXgWbopPRVhbp2nj0i+Gb6kkDUEyU+508KAdGQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@node-rs/crc32-win32-ia32-msvc@1.10.6': + resolution: {integrity: sha512-DpDxQLaErJF9l36aghe1Mx+cOnYLKYo6qVPqPL9ukJ5rAGLtCdU0C+Zoi3gs9ySm8zmbFgazq/LvmsZYU42aBw==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@node-rs/crc32-win32-x64-msvc@1.10.6': + resolution: {integrity: sha512-5B1vXosIIBw1m2Rcnw62IIfH7W9s9f7H7Ma0rRuhT8HR4Xh8QCgw6NJSI2S2MCngsGktYnAhyUvs81b7efTyQw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@node-rs/crc32@1.10.6': + resolution: {integrity: sha512-+llXfqt+UzgoDzT9of5vPQPGqTAVCohU74I9zIBkNo5TH6s2P31DFJOGsJQKN207f0GHnYv5pV3wh3BCY/un/A==} + engines: {node: '>= 10'} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@pixi/colord@2.9.6': + resolution: {integrity: sha512-nezytU2pw587fQstUu1AsJZDVEynjskwOL+kibwcdxsMBFqPsFFNA7xl0ii/gXuDi6M0xj3mfRJj8pBSc2jCfA==} + + '@pixi/msdf-bmfont-xml@3.0.0': + resolution: {integrity: sha512-h/FDfBnWiv4+5JNNsfYs3wpDYYOJCCd14PMbFpt1sHDfutJGZ6MvDvq5JI7pL6toX25uyGPV9ADMCdV1KCVulg==} + hasBin: true + + '@pixi/sound@6.0.1': + resolution: {integrity: sha512-hpFlQSScAR2L/CsEoIvDi7s1oGsu8y9Zd742Vd3982N+q3IF2vFuIfV9HN4ryjlGnhCT8yBlEgs1gp4G9Rt9TA==} + peerDependencies: + pixi.js: ^8.0.0 + + '@pixi/svg2ttf@6.1.0': + resolution: {integrity: sha512-qT7P6F48lyWVWn6w0qxWtxLVVPEcXzAlo9/nimh4cflfKQWdApqfCZVOCgaaO0xHVpClbhCzApQXlJnLEs1oaw==} + hasBin: true + + '@pixi/ui@2.2.7': + resolution: {integrity: sha512-YMVx3WImhOc/8Navqj+d4SKVNAjyuHecvMGFIdh8NPIfzwgV3MoxIkwswHcuGpxQAljG1psMbMHVIAEKznN9oA==} + peerDependencies: + pixi.js: ^8.6.2 + + '@polka/url@1.0.0-next.29': + resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} + + '@rollup/rollup-android-arm-eabi@4.44.1': + resolution: {integrity: sha512-JAcBr1+fgqx20m7Fwe1DxPUl/hPkee6jA6Pl7n1v2EFiktAHenTaXl5aIFjUIEsfn9w3HE4gK1lEgNGMzBDs1w==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.44.1': + resolution: {integrity: sha512-RurZetXqTu4p+G0ChbnkwBuAtwAbIwJkycw1n6GvlGlBuS4u5qlr5opix8cBAYFJgaY05TWtM+LaoFggUmbZEQ==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.44.1': + resolution: {integrity: sha512-fM/xPesi7g2M7chk37LOnmnSTHLG/v2ggWqKj3CCA1rMA4mm5KVBT1fNoswbo1JhPuNNZrVwpTvlCVggv8A2zg==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.44.1': + resolution: {integrity: sha512-gDnWk57urJrkrHQ2WVx9TSVTH7lSlU7E3AFqiko+bgjlh78aJ88/3nycMax52VIVjIm3ObXnDL2H00e/xzoipw==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.44.1': + resolution: {integrity: sha512-wnFQmJ/zPThM5zEGcnDcCJeYJgtSLjh1d//WuHzhf6zT3Md1BvvhJnWoy+HECKu2bMxaIcfWiu3bJgx6z4g2XA==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.44.1': + resolution: {integrity: sha512-uBmIxoJ4493YATvU2c0upGz87f99e3wop7TJgOA/bXMFd2SvKCI7xkxY/5k50bv7J6dw1SXT4MQBQSLn8Bb/Uw==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.44.1': + resolution: {integrity: sha512-n0edDmSHlXFhrlmTK7XBuwKlG5MbS7yleS1cQ9nn4kIeW+dJH+ExqNgQ0RrFRew8Y+0V/x6C5IjsHrJmiHtkxQ==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.44.1': + resolution: {integrity: sha512-8WVUPy3FtAsKSpyk21kV52HCxB+me6YkbkFHATzC2Yd3yuqHwy2lbFL4alJOLXKljoRw08Zk8/xEj89cLQ/4Nw==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.44.1': + resolution: {integrity: sha512-yuktAOaeOgorWDeFJggjuCkMGeITfqvPgkIXhDqsfKX8J3jGyxdDZgBV/2kj/2DyPaLiX6bPdjJDTu9RB8lUPQ==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.44.1': + resolution: {integrity: sha512-W+GBM4ifET1Plw8pdVaecwUgxmiH23CfAUj32u8knq0JPFyK4weRy6H7ooxYFD19YxBulL0Ktsflg5XS7+7u9g==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loongarch64-gnu@4.44.1': + resolution: {integrity: sha512-1zqnUEMWp9WrGVuVak6jWTl4fEtrVKfZY7CvcBmUUpxAJ7WcSowPSAWIKa/0o5mBL/Ij50SIf9tuirGx63Ovew==} cpu: [loong64] os: [linux] @@ -2492,8 +3151,8 @@ packages: peerDependencies: acorn: ^8.9.0 - '@sveltejs/adapter-static@3.0.8': - resolution: {integrity: sha512-YaDrquRpZwfcXbnlDsSrBQNCChVOT9MGuSg+dMAyfsAa1SmiAhrA5jUYUiIMC59G92kIbY/AaQOWcBdq+lh+zg==} + '@sveltejs/adapter-static@3.0.9': + resolution: {integrity: sha512-aytHXcMi7lb9ljsWUzXYQ0p5X1z9oWud2olu/EpmH7aCu4m84h7QLvb5Wp+CFirKcwoNnYvYWhyP/L8Vh1ztdw==} peerDependencies: '@sveltejs/kit': ^2.0.0 @@ -2544,6 +3203,9 @@ packages: svelte: ^5.0.0 vite: ^6.0.0 + '@swc/helpers@0.3.17': + resolution: {integrity: sha512-tb7Iu+oZ+zWJZ3HJqwx8oNwSDIU440hmVMDPhpACWQWnrZHK99Bxs70gT1L2dnr5Hg50ZRWEFkQCAnOVVV0z1Q==} + '@testing-library/dom@10.4.0': resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} engines: {node: '>=18'} @@ -2558,12 +3220,24 @@ packages: peerDependencies: '@testing-library/dom': '>=7.21.4' + '@tokenizer/token@0.3.0': + resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} + + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@types/aria-query@5.0.4': resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} '@types/chai@5.2.2': resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} + '@types/cli-progress@3.11.6': + resolution: {integrity: sha512-cE3+jb9WRlu+uOSAugewNpITJDt1VF8dHOopPO4IABFc3SXYL5WE/+PTz/FCdZRRfIujiWW3n3aMbv1eIGVRWA==} + + '@types/clone@2.1.4': + resolution: {integrity: sha512-NKRWaEGaVGVLnGLB2GazvDaZnyweW9FJLLFL5LhywGJB3aqGMT9R/EUoJoSRP4nzofYnZysuDmrEJtJdAqUOtQ==} + '@types/cookie@0.6.0': resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} @@ -2579,6 +3253,12 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/fluent-ffmpeg@2.1.27': + resolution: {integrity: sha512-QiDWjihpUhriISNoBi2hJBRUUmoj/BMTYcfz+F+ZM9hHWBYABFAE6hjP/TbCZC0GWwlpa3FzvHH9RzFeRusZ7A==} + + '@types/fs-extra@11.0.4': + resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} + '@types/gradient-parser@0.1.5': resolution: {integrity: sha512-r7K3NkJz3A95WkVVmjs0NcchhHstC2C/VIYNX4JC6tieviUNo774FFeOHjThr3Vw/WCeMP9kAT77MKbIRlO/4w==} @@ -2597,17 +3277,23 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/jsonfile@6.1.4': + resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} + '@types/lodash@4.17.16': resolution: {integrity: sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==} '@types/mdx@2.0.13': resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} - '@types/node@24.0.10': - resolution: {integrity: sha512-ENHwaH+JIRTDIEEbDK6QSQntAYGtbvdDXnMXnZaZ6k13Du1dPMmprkEHIL7ok2Wl2aZevetwTAb5S+7yIF+enA==} + '@types/node@16.9.1': + resolution: {integrity: sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==} - '@types/node@24.0.13': - resolution: {integrity: sha512-Qm9OYVOFHFYg3wJoTSrz80hoec5Lia/dPp84do3X7dZvLikQvM1YpmvTBEdIr/e+U8HTkFjLHLnl78K/qjf+jQ==} + '@types/node@24.5.2': + resolution: {integrity: sha512-FYxk1I7wPv3K2XBaoyH2cTnocQEu8AOZ60hPbsyukMPLv5/5qr7V1i8PLHdl6Zf87I+xZXFvPCXYjiTFq+YSDQ==} + + '@types/object-hash@3.0.6': + resolution: {integrity: sha512-fOBV8C1FIu2ELinoILQ+ApxcUKz4ngq+IWUYrxSGjXzzjUALijilampwkMgEtJ+h2njAW3pi853QpzNVCHB73w==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -2624,63 +3310,63 @@ packages: '@types/yargs@17.0.33': resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - '@typescript-eslint/eslint-plugin@8.35.1': - resolution: {integrity: sha512-9XNTlo7P7RJxbVeICaIIIEipqxLKguyh+3UbXuT2XQuFp6d8VOeDEGuz5IiX0dgZo8CiI6aOFLg4e8cF71SFVg==} + '@typescript-eslint/eslint-plugin@8.44.0': + resolution: {integrity: sha512-EGDAOGX+uwwekcS0iyxVDmRV9HX6FLSM5kzrAToLTsr9OWCIKG/y3lQheCq18yZ5Xh78rRKJiEpP0ZaCs4ryOQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.35.1 + '@typescript-eslint/parser': ^8.44.0 eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.35.1': - resolution: {integrity: sha512-3MyiDfrfLeK06bi/g9DqJxP5pV74LNv4rFTyvGDmT3x2p1yp1lOd+qYZfiRPIOf/oON+WRZR5wxxuF85qOar+w==} + '@typescript-eslint/parser@8.44.0': + resolution: {integrity: sha512-VGMpFQGUQWYT9LfnPcX8ouFojyrZ/2w3K5BucvxL/spdNehccKhB4jUyB1yBCXpr2XFm0jkECxgrpXBW2ipoAw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.35.1': - resolution: {integrity: sha512-VYxn/5LOpVxADAuP3NrnxxHYfzVtQzLKeldIhDhzC8UHaiQvYlXvKuVho1qLduFbJjjy5U5bkGwa3rUGUb1Q6Q==} + '@typescript-eslint/project-service@8.44.0': + resolution: {integrity: sha512-ZeaGNraRsq10GuEohKTo4295Z/SuGcSq2LzfGlqiuEvfArzo/VRrT0ZaJsVPuKZ55lVbNk8U6FcL+ZMH8CoyVA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.35.1': - resolution: {integrity: sha512-s/Bpd4i7ht2934nG+UoSPlYXd08KYz3bmjLEb7Ye1UVob0d1ENiT3lY8bsCmik4RqfSbPw9xJJHbugpPpP5JUg==} + '@typescript-eslint/scope-manager@8.44.0': + resolution: {integrity: sha512-87Jv3E+al8wpD+rIdVJm/ItDBe/Im09zXIjFoipOjr5gHUhJmTzfFLuTJ/nPTMc2Srsroy4IBXwcTCHyRR7KzA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.35.1': - resolution: {integrity: sha512-K5/U9VmT9dTHoNowWZpz+/TObS3xqC5h0xAIjXPw+MNcKV9qg6eSatEnmeAwkjHijhACH0/N7bkhKvbt1+DXWQ==} + '@typescript-eslint/tsconfig-utils@8.44.0': + resolution: {integrity: sha512-x5Y0+AuEPqAInc6yd0n5DAcvtoQ/vyaGwuX5HE9n6qAefk1GaedqrLQF8kQGylLUb9pnZyLf+iEiL9fr8APDtQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.35.1': - resolution: {integrity: sha512-HOrUBlfVRz5W2LIKpXzZoy6VTZzMu2n8q9C2V/cFngIC5U1nStJgv0tMV4sZPzdf4wQm9/ToWUFPMN9Vq9VJQQ==} + '@typescript-eslint/type-utils@8.44.0': + resolution: {integrity: sha512-9cwsoSxJ8Sak67Be/hD2RNt/fsqmWnNE1iHohG8lxqLSNY8xNfyY7wloo5zpW3Nu9hxVgURevqfcH6vvKCt6yg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.35.1': - resolution: {integrity: sha512-q/O04vVnKHfrrhNAscndAn1tuQhIkwqnaW+eu5waD5IPts2eX1dgJxgqcPx5BX109/qAz7IG6VrEPTOYKCNfRQ==} + '@typescript-eslint/types@8.44.0': + resolution: {integrity: sha512-ZSl2efn44VsYM0MfDQe68RKzBz75NPgLQXuGypmym6QVOWL5kegTZuZ02xRAT9T+onqvM6T8CdQk0OwYMB6ZvA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.35.1': - resolution: {integrity: sha512-Vvpuvj4tBxIka7cPs6Y1uvM7gJgdF5Uu9F+mBJBPY4MhvjrjWGK4H0lVgLJd/8PWZ23FTqsaJaLEkBCFUk8Y9g==} + '@typescript-eslint/typescript-estree@8.44.0': + resolution: {integrity: sha512-lqNj6SgnGcQZwL4/SBJ3xdPEfcBuhCG8zdcwCPgYcmiPLgokiNDKlbPzCwEwu7m279J/lBYWtDYL+87OEfn8Jw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.35.1': - resolution: {integrity: sha512-lhnwatFmOFcazAsUm3ZnZFpXSxiwoa1Lj50HphnDe1Et01NF4+hrdXONSUHIcbVu2eFb1bAf+5yjXkGVkXBKAQ==} + '@typescript-eslint/utils@8.44.0': + resolution: {integrity: sha512-nktOlVcg3ALo0mYlV+L7sWUD58KG4CMj1rb2HUVOO4aL3K/6wcD+NERqd0rrA5Vg06b42YhF6cFxeixsp9Riqg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.9.0' + typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.35.1': - resolution: {integrity: sha512-VRwixir4zBWCSTP/ljEo091lbpypz57PoeAQ9imjG+vbeof9LplljsL1mos4ccG6H9IjfrVGM359RozUnuFhpw==} + '@typescript-eslint/visitor-keys@8.44.0': + resolution: {integrity: sha512-zaz9u8EJ4GBmnehlrpoKvj/E3dNbuQ7q0ucyZImm3cLqJ8INTc970B1qEqDX/Rzq65r3TvVTN7kHWPBoyW7DWw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@vitest/expect@3.2.4': @@ -2702,6 +3388,14 @@ packages: resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} engines: {node: '>=10.0.0'} + '@xmldom/xmldom@0.9.8': + resolution: {integrity: sha512-p96FSY54r+WJ50FIOsCOjyj/wavs8921hG5+kVMmZgKcvIKxMXHTrjNJvRgWa/zuX3B6t2lijLNFaOyuxUH+2A==} + engines: {node: '>=14.6'} + + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -2744,10 +3438,16 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} + any-base@1.1.0: + resolution: {integrity: sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==} + anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} + arabic-persian-reshaper@1.0.1: + resolution: {integrity: sha512-VYBjkhz6o4W1Xt4mD2LAReljJpLSw5CUZMqSBDIQRvFgUSlTKEYghapgBWvkeMWF4W+KF3Fm+/z8EywJU4PBeg==} + argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -2758,6 +3458,10 @@ packages: resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} engines: {node: '>= 0.4'} + array-buffer-byte-length@1.0.2: + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} + engines: {node: '>= 0.4'} + assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} @@ -2766,6 +3470,17 @@ packages: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} + async@0.2.10: + resolution: {integrity: sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==} + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + await-to-js@3.0.0: + resolution: {integrity: sha512-zJAaP9zxTcvTHRlejau3ZOY4V7SRpiByf3/dxx2uyKxxor19tpmpV2QRsTKikckwhaPmr2dVpxxMr7jOCYVp5g==} + engines: {node: '>=6.0.0'} + axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} @@ -2791,6 +3506,9 @@ packages: bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + bmp-ts@1.0.9: + resolution: {integrity: sha512-cTEHk2jLrPyi+12M3dhpEbnnPOsaZuq7C45ylbbQIiWgDFZq4UVYPEY5mlqjvsj/6gJv9qX5sa+ebDzLXT28Vw==} + brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} @@ -2801,16 +3519,38 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} + brotli@1.3.3: + resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==} + browserslist@4.25.1: resolution: {integrity: sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - buffer-builder@0.2.0: - resolution: {integrity: sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==} + buffer-builder@0.2.0: + resolution: {integrity: sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + buildcheck@0.0.6: + resolution: {integrity: sha512-8f9ZJCUXyT1M35Jx7MkBgmBMo3oHTTBIPLiY9xyL0pl3T5RwcPEY8cUHr5LBNfu/fk6c2T4DJZuVM/8ZZT2D2A==} + engines: {node: '>=10.0.0'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} @@ -2835,6 +3575,10 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} @@ -2866,6 +3610,10 @@ packages: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} + cli-progress@3.12.0: + resolution: {integrity: sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==} + engines: {node: '>=4'} + cli-spinners@2.9.2: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} @@ -2878,10 +3626,18 @@ packages: resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} engines: {node: '>= 10'} + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + clone@1.0.4: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} + clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} + clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} @@ -2893,6 +3649,13 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + colorjs.io@0.5.2: resolution: {integrity: sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==} @@ -2904,6 +3667,10 @@ packages: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} + commander@14.0.1: + resolution: {integrity: sha512-2JkV3gUZUVrbNA+1sjBOYLsMZ5cEEl8GTFP2a4AVz5hvasAMCQ1D2l2le/cX+pV4N6ZU17zjUahLpIXRrnWL8A==} + engines: {node: '>=20'} + concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -2927,6 +3694,15 @@ packages: typescript: optional: true + cpu-features@0.0.10: + resolution: {integrity: sha512-9IkYqtX3YHPCzoVg1Py+o9057a3i0fp7S530UWokCSaFVTc7CwXPRiOjRjBQQ18ZCNafx78YfnG+HALxtVmOGA==} + engines: {node: '>=10.0.0'} + + cross-env@10.0.0: + resolution: {integrity: sha512-aU8qlEK/nHYtVuN4p7UQgAwVljzMg8hB4YK5ThRqD2l/ziSnryncPNn7bMLt5cFYsKVKBh8HqLqyCoTupEUu7Q==} + engines: {node: '>=20'} + hasBin: true + cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -2942,6 +3718,9 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + cubic2quad@1.2.1: + resolution: {integrity: sha512-wT5Y7mO8abrV16gnssKdmIhIbA9wSkeMzhh27jAguKrV82i24wER0vL5TGhUJ9dbJNDcigoRZ0IAHFEEEI4THQ==} + date-fns@3.6.0: resolution: {integrity: sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==} @@ -2969,6 +3748,10 @@ packages: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} + deep-equal@2.2.3: + resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} + engines: {node: '>= 0.4'} + deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -2979,17 +3762,32 @@ packages: defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + detect-libc@2.1.0: + resolution: {integrity: sha512-vEtk+OcP7VBRtQZ1EJ3bdgzSfBjgnEalLTp5zjJrS+2Z1w2KZly4SBdac/WDU3hhsNAZ9E8SC96ME4Ey8MZ7cg==} + engines: {node: '>=8'} + devalue@5.1.1: resolution: {integrity: sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==} + dfa@1.2.0: + resolution: {integrity: sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==} + dom-accessibility-api@0.5.16: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} @@ -3000,6 +3798,10 @@ packages: resolution: {integrity: sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==} engines: {node: '>=12'} + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + earcut@2.2.4: resolution: {integrity: sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==} @@ -3009,6 +3811,9 @@ packages: electron-to-chromium@1.5.179: resolution: {integrity: sha512-UWKi/EbBopgfFsc5k61wFpV7WrnnSlSzW/e2XcBmS6qKYTivZlLtoll5/rdqRTxGglGHkmkW0j0pFNJG10EUIQ==} + emoji-regex@10.5.0: + resolution: {integrity: sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==} + emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -3018,6 +3823,21 @@ packages: error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + es-toolkit@1.39.6: resolution: {integrity: sha512-uiVjnLem6kkfXumlwUEWEKnwUN5QbSEB0DHy2rNJt0nkYcob5K0TXJ7oJRzhAcvx+SRmz4TahKyN5V9cly/IPA==} @@ -3048,20 +3868,20 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - eslint-config-prettier@10.1.5: - resolution: {integrity: sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw==} + eslint-config-prettier@10.1.8: + resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} hasBin: true peerDependencies: eslint: '>=7.0.0' - eslint-config-turbo@2.5.4: - resolution: {integrity: sha512-OpjpDLXIaus0N/Y+pMj17K430xjpd6WTo0xPUESqYZ9BkMngv2n0ZdjktgJTbJVnDmK7gHrXgJAljtdIMcYBIg==} + eslint-config-turbo@2.5.6: + resolution: {integrity: sha512-1EV/UqdKE75st9q6y0MCxz7qp2v7RyGvbQsMLSuCz+VH8ScnSfmhd8FcAbqx3BshCy5IluujzMB6T5iCgL3/sA==} peerDependencies: eslint: '>6.6.0' turbo: '>2.0.0' - eslint-plugin-svelte@3.10.1: - resolution: {integrity: sha512-csCh2x0ge/DugXC7dCANh46Igi7bjMZEy6rHZCdS13AoGVJSu7a90Kru3I8oMYLGEemPRE1hQXadxvRPVMAAXQ==} + eslint-plugin-svelte@3.12.4: + resolution: {integrity: sha512-hD7wPe+vrPgx3U2X2b/wyTMtWobm660PygMGKrWWYTc9lvtY8DpNFDaU2CJQn1szLjGbn/aJ3g8WiXuKakrEkw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.1 || ^9.0.0 @@ -3070,8 +3890,8 @@ packages: svelte: optional: true - eslint-plugin-turbo@2.5.4: - resolution: {integrity: sha512-IZsW61DFj5mLMMaCJxhh1VE4HvNhfdnHnAaXajgne+LUzdyHk2NvYT0ECSa/1SssArcqgTvV74MrLL68hWLLFw==} + eslint-plugin-turbo@2.5.6: + resolution: {integrity: sha512-KUDE23aP2JV8zbfZ4TeM1HpAXzMM/AYG/bJam7P4AalUxas8Pd/lS/6R3p4uX91qJcH1LwL4h0ED48nDe8KorQ==} peerDependencies: eslint: '>6.6.0' turbo: '>2.0.0' @@ -3145,9 +3965,20 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + exif-parser@0.1.12: + resolution: {integrity: sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==} + external-editor@3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} @@ -3184,6 +4015,10 @@ packages: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} + file-type@16.5.4: + resolution: {integrity: sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==} + engines: {node: '>=10'} + filesize@10.1.6: resolution: {integrity: sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==} engines: {node: '>= 10.4.0'} @@ -3200,6 +4035,10 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} + find-up@7.0.0: + resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} + engines: {node: '>=18'} + flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} @@ -3207,10 +4046,40 @@ packages: flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + fluent-ffmpeg@2.1.3: + resolution: {integrity: sha512-Be3narBNt2s6bsaqP6Jzq91heDgOEaDCJAXcE3qcma/EJBSy5FB4cvO31XBInuAuKBx8Kptf8dkhjK0IOru39Q==} + engines: {node: '>=18'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + fontkit@1.9.0: + resolution: {integrity: sha512-HkW/8Lrk8jl18kzQHvAw9aTHe1cqsyx5sDnxncx652+CIfhawokEPkeM3BoIC+z/Xv7a0yMr0f3pRRwhGH455g==} + + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + foreground-child@3.3.1: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} + framer-motion@12.23.18: + resolution: {integrity: sha512-HBVXBL5x3nk/0WrYM5G4VgjBey99ytVYET5AX17s/pcnlH90cyaxVUqgoN8cpF4+PqZRVOhwWsv28F+hxA9Tzg==} + peerDependencies: + '@emotion/is-prop-valid': '*' + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/is-prop-valid': + optional: true + react: + optional: true + react-dom: + optional: true + + fs-extra@11.3.2: + resolution: {integrity: sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==} + engines: {node: '>=14.14'} + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -3219,13 +4088,35 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.4.0: + resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==} + engines: {node: '>=18'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + gifuct-js@2.1.2: resolution: {integrity: sha512-rI2asw77u0mGgwhV3qA+OEgYqaDn5UNqgs+Bx0FGwSpuqfYn+Ir6RQY5ENNQ8SbIiG/m5gVa7CD5RriO4f4Lsg==} + gifwrap@0.10.1: + resolution: {integrity: sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw==} + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -3247,16 +4138,45 @@ packages: resolution: {integrity: sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ==} engines: {node: '>=18'} + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + gpu-tex-enc@1.2.5: + resolution: {integrity: sha512-4kCvhEYMN2OrDiAYDau54rlKrLv/fLUBsp5nUXKi7GoF2Muumy0QJ9j3URXfiM313WGId78+lJeprTFEhWPcVA==} + engines: {node: '>=18.0.0'} + hasBin: true + graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + + has-bigints@1.1.0: + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} + engines: {node: '>= 0.4'} + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -3279,6 +4199,9 @@ packages: resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} + image-q@4.0.0: + resolution: {integrity: sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==} + immutable@5.1.3: resolution: {integrity: sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==} @@ -3304,17 +4227,48 @@ packages: resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} engines: {node: '>=8.0.0'} + internal-slot@1.1.0: + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} + engines: {node: '>= 0.4'} + + is-arguments@1.2.0: + resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.5: + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} + engines: {node: '>= 0.4'} + is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + is-arrayish@0.3.4: + resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==} + + is-bigint@1.1.0: + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} + engines: {node: '>= 0.4'} + is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} + is-boolean-object@1.2.2: + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} + engines: {node: '>= 0.4'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + is-core-module@2.16.1: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} + is-date-object@1.1.0: + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} + engines: {node: '>= 0.4'} + is-docker@2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} @@ -3336,6 +4290,18 @@ packages: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} + is-invalid-path@1.0.2: + resolution: {integrity: sha512-6KLcFrPCEP3AFXMfnWrIFkZpYNBVzZAoBJJDEZKtI3LXkaDjM3uFMJQjxiizUuZTZ9Oh9FNv/soXbx5TcpaDmA==} + engines: {node: '>=6.0'} + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-number-object@1.1.1: + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} + engines: {node: '>= 0.4'} + is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -3343,14 +4309,45 @@ packages: is-reference@3.0.3: resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.4: + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} + engines: {node: '>= 0.4'} + + is-string@1.1.1: + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} + engines: {node: '>= 0.4'} + + is-symbol@1.1.1: + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} + engines: {node: '>= 0.4'} + is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakset@2.0.4: + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} + engines: {node: '>= 0.4'} + is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -3369,10 +4366,17 @@ packages: resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jimp@1.6.0: + resolution: {integrity: sha512-YcwCHw1kiqEeI5xRpDlPPBGL2EOpBKLwO4yIBJcXWHPj5PnA5urGq0jbyhM5KoNpypQ6VboSoxc9D8HyfvngSg==} + engines: {node: '>=18'} + jiti@1.21.7: resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true + jpeg-js@0.4.4: + resolution: {integrity: sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==} + js-binary-schema-parser@2.0.3: resolution: {integrity: sha512-xezGJmOb4lk/M1ZZLTR/jaBHQ4gG/lqQnJqdIv4721DMggsa1bDVlHXNeHYogaIEHD9vCRv0fcL4hMA+Coarkg==} @@ -3386,6 +4390,9 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + js2xmlparser@5.0.0: + resolution: {integrity: sha512-ckXs0Fzd6icWurbeAXuqo+3Mhq2m8pOPygsQjTPh8K5UWgKaUgDSHrdDxAfexmT11xvBKOQ6sgYwPkYc5RW/bg==} + jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} @@ -3447,6 +4454,10 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} + locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + lodash.get@4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} deprecated: This package is deprecated. Use the optional chaining (?.) operator instead. @@ -3487,14 +4498,35 @@ packages: magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + map-limit@0.0.1: + resolution: {integrity: sha512-pJpcfLPnIF/Sk3taPW21G/RQsEEirGaFpCW3oXRwH9dnFHPHNGjNyvh++rdmC2fNqEaTw2MhYJraoJWAHx8kEg==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + maxrects-packer@2.7.3: + resolution: {integrity: sha512-bG6qXujJ1QgttZVIH4WDanhoJtvbud/xP/XPyf6A69C9RdA61BM4TomFALCq2nrTa+tARRIBB4LuIFsnUQU2wA==} + merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + merge@2.1.1: + resolution: {integrity: sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==} + + microbuffer@1.0.0: + resolution: {integrity: sha512-O/SUXauVN4x6RaEJFqSPcXNtLFL+QzJHKZlyDVYFwcDDRVca3Fa/37QXXC+4zAGGa4YhHrHxKXuuHvLDIQECtA==} + micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} + mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} @@ -3514,6 +4546,9 @@ packages: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + minipass@7.1.2: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} @@ -3521,6 +4556,26 @@ packages: moo@0.5.2: resolution: {integrity: sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==} + motion-dom@12.23.18: + resolution: {integrity: sha512-9piw3uOcP6DpS0qpnDF95bLDzmgMxLOg/jghLnHwYJ0YFizzuvbH/L8106dy39JNgHYmXFUTztoP9JQvUqlBwQ==} + + motion-utils@12.23.6: + resolution: {integrity: sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==} + + motion@12.23.18: + resolution: {integrity: sha512-uzcEs9eInMnOL2Tm8z6Akje/vETSFUzAlGQyKV58+8vlEFDOKx8jNR/asKei4ETi+8wH6vTyf6gCKgu580x4+w==} + peerDependencies: + '@emotion/is-prop-valid': '*' + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/is-prop-valid': + optional: true + react: + optional: true + react-dom: + optional: true + mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} @@ -3535,6 +4590,9 @@ packages: mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + nan@2.23.0: + resolution: {integrity: sha512-1UxuyYGdoQHcGg87Lkqm3FzefucTa0NAiOcuRsDmysep3c1LVCRK2krrUDafMWtjSG04htvAmvg96+SDknOmgQ==} + nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -3543,6 +4601,9 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} @@ -3553,6 +4614,32 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + + omggif@1.0.10: + resolution: {integrity: sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==} + + once@1.3.3: + resolution: {integrity: sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==} + onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} @@ -3561,6 +4648,10 @@ packages: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} + opentype.js@0.11.0: + resolution: {integrity: sha512-Z9NkAyQi/iEKQYzCSa7/VJSqVIs33wknw8Z8po+DzuRUAqivJ+hJZ94mveg3xIeKwLreJdWTMyEO7x1K13l41Q==} + hasBin: true + optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} @@ -3573,6 +4664,10 @@ packages: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} + otf2svg@1.0.2: + resolution: {integrity: sha512-y3U1JC2UAr2T6pvDAWdXMp9KgEs/Jl03bZr30AYbo/7n5N3assuIKGAa3KfsSGzv2zDEzv/lrpU7JMyk/pdupw==} + hasBin: true + p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -3581,6 +4676,10 @@ packages: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-locate@3.0.0: resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} engines: {node: '>=6'} @@ -3589,6 +4688,10 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} + p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} @@ -3596,10 +4699,25 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + pako@0.2.9: + resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} + + pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} + parse-bmfont-ascii@1.0.6: + resolution: {integrity: sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==} + + parse-bmfont-binary@1.0.6: + resolution: {integrity: sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==} + + parse-bmfont-xml@1.1.6: + resolution: {integrity: sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==} + parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -3618,6 +4736,10 @@ packages: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} + path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -3640,6 +4762,10 @@ packages: resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} engines: {node: '>= 14.16'} + peek-readable@4.1.0: + resolution: {integrity: sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==} + engines: {node: '>=8'} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -3651,6 +4777,10 @@ packages: resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} + pixelmatch@5.3.0: + resolution: {integrity: sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==} + hasBin: true + pixi-filters@6.1.0: resolution: {integrity: sha512-Btjyg/WvCD/xWqZk1BAygqkTvoN7bSU7b4G/R+FpZ06f0DDwGTVnmlp8ZSITEV89osQHMe+8lKGDbuR1tndePQ==} peerDependencies: @@ -3663,9 +4793,21 @@ packages: resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} engines: {node: '>=8'} + pngjs@6.0.0: + resolution: {integrity: sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==} + engines: {node: '>=12.13.0'} + + pngjs@7.0.0: + resolution: {integrity: sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==} + engines: {node: '>=14.19.0'} + pofile@1.1.4: resolution: {integrity: sha512-r6Q21sKsY1AjTVVjOuU02VYKVNQGJNQHjTIvs4dEbeuuYfxgYk/DGD2mqqq4RDaVkwdSq0VEtmQUOPe/wH8X3g==} + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + postcss-load-config@3.1.4: resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} @@ -3726,6 +4868,10 @@ packages: resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + pseudolocale@2.1.0: resolution: {integrity: sha512-af5fsrRvVwD+MBasBJvuDChT0KDqT0nEwD9NTgbtHJ16FKomWac9ua0z6YVNB4G9x9IOaiGWym62aby6n4tFMA==} engines: {node: '>=16.0.0'} @@ -3763,6 +4909,14 @@ packages: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} + readable-stream@4.7.0: + resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + readable-web-to-node-stream@3.0.4: + resolution: {integrity: sha512-9nX56alTf5bwXQ3ZDipHJhusu9NTQJ/CVPtb/XHAJCXihZeitfJvIRS4GqQ/mfIoOE3IelHMrpayVrosdHBuLw==} + engines: {node: '>=8'} + readdirp@3.5.0: resolution: {integrity: sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==} engines: {node: '>=8.10.0'} @@ -3771,6 +4925,9 @@ packages: resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} engines: {node: '>= 14.18.0'} + readline@1.3.0: + resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} + recast@0.23.11: resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} engines: {node: '>= 4'} @@ -3779,6 +4936,14 @@ packages: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} + regexp.prototype.flags@1.5.4: + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} + engines: {node: '>= 0.4'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + resize-observer@1.0.4: resolution: {integrity: sha512-AQ2MdkWTng9d6JtjHvljiQR949qdae91pjSNugGGeOFzKIuLHvoZIYhUTjePla5hCFDwQHrnkciAIzjzdsTZew==} @@ -3795,6 +4960,9 @@ packages: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} + restructure@2.0.1: + resolution: {integrity: sha512-e0dOpjm5DseomnXx2M5lpdZ5zoHqF1+bqdMJUohoYVVQa7cBdnk7fdmeI6byNWP/kiME72EeTiSypTCVnpLiDg==} + reusify@1.1.0: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -3825,6 +4993,10 @@ packages: safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -4054,6 +5226,9 @@ packages: engines: {node: '>=16.0.0'} hasBin: true + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + scheduler@0.26.0: resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} @@ -4069,6 +5244,22 @@ packages: set-cookie-parser@2.7.1: resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + sharp@0.33.5: + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + + sharp@0.34.4: + resolution: {integrity: sha512-FUH39xp3SBPnxWvd5iib1X8XY7J0K0X7d93sie9CJg2PO8/7gmg89Nve6OjItK53/MlAushNNxteBYfM6DEuoA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -4077,6 +5268,22 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -4084,6 +5291,13 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + simple-swizzle@0.2.4: + resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==} + + simple-xml-to-json@1.2.3: + resolution: {integrity: sha512-kWJDCr9EWtZ+/EYYM5MareWj2cRnZGF93YDNpH4jQiHB+hBIZnfPFSQiVMzZOdk+zXWqTZ/9fTeQNu2DqeiudA==} + engines: {node: '>=20.12.2'} + sirv@3.0.1: resolution: {integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==} engines: {node: '>=18'} @@ -4099,6 +5313,11 @@ packages: source-map@0.8.0-beta.0: resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} engines: {node: '>= 8'} + deprecated: The work that was done in this beta branch won't be included in future versions + + stop-iteration-iterator@1.1.0: + resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} + engines: {node: '>= 0.4'} storybook@9.0.15: resolution: {integrity: sha512-r9hwcSMM3dq7dkMveaWFTosrmyHCL2FRrV3JOwVnVWraF6GtCgp2k+r4hsYtyp1bY3zdmK9e4KYzXsGs5q1h/Q==} @@ -4117,6 +5336,13 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + string.prototype.codepointat@0.2.1: + resolution: {integrity: sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==} + string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} @@ -4136,6 +5362,10 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + strtok3@6.3.0: + resolution: {integrity: sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==} + engines: {node: '>=10'} + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -4154,8 +5384,8 @@ packages: peerDependencies: svelte: ^5.0.0 - svelte-eslint-parser@1.2.0: - resolution: {integrity: sha512-mbPtajIeuiyU80BEyGvwAktBeTX7KCr5/0l+uRGLq1dafwRNrjfM5kHGJScEBlPG3ipu6dJqfW/k0/fujvIEVw==} + svelte-eslint-parser@1.3.3: + resolution: {integrity: sha512-oTrDR8Z7Wnguut7QH3YKh7JR19xv1seB/bz4dxU5J/86eJtZOU4eh0/jZq4dy6tAlz/KROxnkRQspv5ZEt7t+Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: svelte: ^3.37.0 || ^4.0.0 || ^5.0.0 @@ -4177,6 +5407,9 @@ packages: resolution: {integrity: sha512-3kNMwstMB2VUBod63H6BQPzBr7NiPRR9qFVzrWqW/nU4ulqqAYZsJ6E7m8LYFoRzuW6yylx+uzdgKVhFKZVf4Q==} engines: {node: '>=18'} + svgpath@2.6.0: + resolution: {integrity: sha512-OIWR6bKzXvdXYyO4DK/UWa1VA1JeKq8E+0ug2DG98Y/vOmMpfZNj+TIG988HjfYSqtcy/hFOtZq/n/j5GSESNg==} + sync-child-process@1.0.2: resolution: {integrity: sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==} engines: {node: '>=16.0.0'} @@ -4185,12 +5418,22 @@ packages: resolution: {integrity: sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==} engines: {node: '>=16.0.0'} + terminal-size@4.0.0: + resolution: {integrity: sha512-rcdty1xZ2/BkWa4ANjWRp4JGpda2quksXIHgn5TMjNBPZfwzJIgR68DKfSYiTL+CZWowDX/sbOo5ME/FRURvYQ==} + engines: {node: '>=18'} + through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + tiny-inflate@1.0.3: + resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} + tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + tinycolor2@1.6.0: + resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} + tinyglobby@0.2.14: resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} engines: {node: '>=12.0.0'} @@ -4211,6 +5454,10 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} + token-types@4.2.1: + resolution: {integrity: sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==} + engines: {node: '>=10'} + totalist@3.0.1: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} @@ -4302,6 +5549,9 @@ packages: resolution: {integrity: sha512-kc8ZibdRcuWUG1pbYSBFWqmIjynlD8Lp7IB6U3vIzvOv9VG+6Sp8bzyeBWE3Oi8XV5KsQrznyRTBPvrf99E4mA==} hasBin: true + tweedle.js@2.1.0: + resolution: {integrity: sha512-0ReQgVjepoZkE6t0upWNgCRbplHkQJQYk1LStXugwSR728GLFmGDRuaQJlxeC/iBlxud6+P1RdODjaO25vHAqw==} + tween-functions@1.2.0: resolution: {integrity: sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA==} @@ -4317,13 +5567,36 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} + typed-signals@2.5.0: + resolution: {integrity: sha512-m9lHc3eBCJerXYdx+G0uWZihyUXdqTzzgOdqiDDsoUo75WjhFJH6vP5/6w/xhyu04zoxHUqgYhf9FEt85dk/Ng==} + + typescript@5.7.3: + resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} + engines: {node: '>=14.17'} + hasBin: true + typescript@5.8.3: resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} engines: {node: '>=14.17'} hasBin: true - undici-types@7.8.0: - resolution: {integrity: sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==} + uglify-js@3.19.3: + resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} + engines: {node: '>=0.8.0'} + hasBin: true + + undici-types@7.12.0: + resolution: {integrity: sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ==} + + unicode-properties@1.4.1: + resolution: {integrity: sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==} + + unicode-trie@2.0.0: + resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} + + unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} @@ -4336,6 +5609,10 @@ packages: unraw@3.0.0: resolution: {integrity: sha512-08/DA66UF65OlpUDIQtbJyrqTR0jTAlJ+jsnkQ4jxR7+K5g5YG1APZKQSMCE1vqqmD+2pv6+IdEjmopFatacvg==} + upath@2.0.1: + resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} + engines: {node: '>=4'} + update-browserslist-db@1.1.3: resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} hasBin: true @@ -4345,6 +5622,9 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + utif2@4.1.0: + resolution: {integrity: sha512-+oknB9FHrJ7oW7A2WZYajOcv4FcDR4CfoGB0dPNfxbi4GO05RRnFmt5oa23+9w32EanrYcSJWspUiJkLMs+37w==} + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -4454,6 +5734,22 @@ packages: whatwg-url@7.1.0: resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + which-boxed-primitive@1.1.1: + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-typed-array@1.1.19: + resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} + engines: {node: '>= 0.4'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -4463,6 +5759,9 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} + wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -4471,6 +5770,9 @@ packages: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + ws@8.18.3: resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} engines: {node: '>=10.0.0'} @@ -4483,9 +5785,27 @@ packages: utf-8-validate: optional: true + xml-parse-from-string@1.0.1: + resolution: {integrity: sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==} + + xml2js@0.5.0: + resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==} + engines: {node: '>=4.0.0'} + + xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + + xmlcreate@2.0.4: + resolution: {integrity: sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==} + xstate@5.19.2: resolution: {integrity: sha512-B8fL2aP0ogn5aviAXFzI5oZseAMqN00fg/TeDa3ZtatyDcViYLIfuQl4y8qmHCiKZgGEzmnTyNtNQL9oeJE2gw==} + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} @@ -4493,13 +5813,28 @@ packages: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + yocto-queue@1.2.1: + resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} + engines: {node: '>=12.20'} + zimmerframe@1.1.2: resolution: {integrity: sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==} + zod@3.25.76: + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + snapshots: '@adobe/css-tools@4.4.3': {} @@ -4509,6 +5844,41 @@ snapshots: '@jridgewell/gen-mapping': 0.3.12 '@jridgewell/trace-mapping': 0.3.29 + '@assetpack/core@1.5.3': + dependencies: + '@ffmpeg-installer/ffmpeg': 1.1.0 + '@napi-rs/woff-build': 0.2.2 + '@node-rs/crc32': 1.10.6 + '@pixi/msdf-bmfont-xml': 3.0.0 + '@pixi/svg2ttf': 6.1.0 + '@types/cli-progress': 3.11.6 + '@types/clone': 2.1.4 + '@types/fluent-ffmpeg': 2.1.27 + '@types/fs-extra': 11.0.4 + '@types/object-hash': 3.0.6 + chalk: 5.6.2 + chokidar: 4.0.3 + cli-progress: 3.12.0 + clone: 2.1.2 + commander: 14.0.1 + find-up: 7.0.0 + fluent-ffmpeg: 2.1.3 + fs-extra: 11.3.2 + glob: 11.0.3 + gpu-tex-enc: 1.2.5 + json5: 2.2.3 + maxrects-packer: 2.7.3 + merge: 2.1.1 + minimatch: 10.0.3 + object-hash: 3.0.0 + otf2svg: 1.0.2 + readline: 1.3.0 + sharp: 0.34.4 + string-width: 7.2.0 + strip-ansi: 7.1.0 + terminal-size: 4.0.0 + upath: 2.0.1 + '@babel/code-frame@7.27.1': dependencies: '@babel/helper-validator-identifier': 7.27.1 @@ -4630,6 +6000,24 @@ snapshots: - '@chromatic-com/playwright' - react + '@emnapi/core@1.5.0': + dependencies: + '@emnapi/wasi-threads': 1.1.0 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.5.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.1.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@epic-web/invariant@1.0.0': {} + '@esbuild/aix-ppc64@0.21.5': optional: true @@ -4796,107 +6184,506 @@ snapshots: '@eslint/config-array@0.21.0': dependencies: - '@eslint/object-schema': 2.1.6 - debug: 4.4.1 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color + '@eslint/object-schema': 2.1.6 + debug: 4.4.1 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.3.0': {} + + '@eslint/core@0.12.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/core@0.13.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/core@0.14.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/core@0.15.1': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.1': + dependencies: + ajv: 6.12.6 + debug: 4.4.1 + espree: 10.4.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.21.0': {} + + '@eslint/js@9.30.1': {} + + '@eslint/object-schema@2.1.6': {} + + '@eslint/plugin-kit@0.2.8': + dependencies: + '@eslint/core': 0.13.0 + levn: 0.4.1 + + '@eslint/plugin-kit@0.3.3': + dependencies: + '@eslint/core': 0.15.1 + levn: 0.4.1 + + '@esotericsoftware/spine-core@4.2.74': {} + + '@esotericsoftware/spine-pixi-v8@4.2.74(pixi.js@8.8.1)': + dependencies: + '@esotericsoftware/spine-core': 4.2.74 + pixi.js: 8.8.1 + + '@ffmpeg-installer/darwin-arm64@4.1.5': + optional: true + + '@ffmpeg-installer/darwin-x64@4.1.0': + optional: true + + '@ffmpeg-installer/ffmpeg@1.1.0': + optionalDependencies: + '@ffmpeg-installer/darwin-arm64': 4.1.5 + '@ffmpeg-installer/darwin-x64': 4.1.0 + '@ffmpeg-installer/linux-arm': 4.1.3 + '@ffmpeg-installer/linux-arm64': 4.1.4 + '@ffmpeg-installer/linux-ia32': 4.1.0 + '@ffmpeg-installer/linux-x64': 4.1.0 + '@ffmpeg-installer/win32-ia32': 4.1.0 + '@ffmpeg-installer/win32-x64': 4.1.0 + + '@ffmpeg-installer/linux-arm64@4.1.4': + optional: true + + '@ffmpeg-installer/linux-arm@4.1.3': + optional: true + + '@ffmpeg-installer/linux-ia32@4.1.0': + optional: true + + '@ffmpeg-installer/linux-x64@4.1.0': + optional: true + + '@ffmpeg-installer/win32-ia32@4.1.0': + optional: true + + '@ffmpeg-installer/win32-x64@4.1.0': + optional: true + + '@gpu-tex-enc/astc@4.7.1': + optionalDependencies: + cpu-features: 0.0.10 + + '@gpu-tex-enc/basis@1.16.4': + optionalDependencies: + cpu-features: 0.0.10 + + '@gpu-tex-enc/bc@1.0.11': {} + + '@gpu-tex-enc/etc@1.0.3': {} + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.3': {} + + '@img/colour@1.0.0': {} + + '@img/sharp-darwin-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.0.4 + optional: true + + '@img/sharp-darwin-arm64@0.34.4': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.2.3 + optional: true + + '@img/sharp-darwin-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.0.4 + optional: true + + '@img/sharp-darwin-x64@0.34.4': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.2.3 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-darwin-arm64@1.2.3': + optional: true + + '@img/sharp-libvips-darwin-x64@1.0.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.2.3': + optional: true + + '@img/sharp-libvips-linux-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.2.3': + optional: true + + '@img/sharp-libvips-linux-arm@1.0.5': + optional: true + + '@img/sharp-libvips-linux-arm@1.2.3': + optional: true + + '@img/sharp-libvips-linux-ppc64@1.2.3': + optional: true + + '@img/sharp-libvips-linux-s390x@1.0.4': + optional: true + + '@img/sharp-libvips-linux-s390x@1.2.3': + optional: true + + '@img/sharp-libvips-linux-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.2.3': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.2.3': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.0.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.2.3': + optional: true + + '@img/sharp-linux-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.0.4 + optional: true + + '@img/sharp-linux-arm64@0.34.4': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.2.3 + optional: true + + '@img/sharp-linux-arm@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.0.5 + optional: true + + '@img/sharp-linux-arm@0.34.4': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.2.3 + optional: true + + '@img/sharp-linux-ppc64@0.34.4': + optionalDependencies: + '@img/sharp-libvips-linux-ppc64': 1.2.3 + optional: true + + '@img/sharp-linux-s390x@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.0.4 + optional: true + + '@img/sharp-linux-s390x@0.34.4': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.2.3 + optional: true + + '@img/sharp-linux-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.0.4 + optional: true + + '@img/sharp-linux-x64@0.34.4': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.2.3 + optional: true + + '@img/sharp-linuxmusl-arm64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.34.4': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.2.3 + optional: true + + '@img/sharp-linuxmusl-x64@0.33.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.34.4': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.2.3 + optional: true + + '@img/sharp-wasm32@0.33.5': + dependencies: + '@emnapi/runtime': 1.5.0 + optional: true + + '@img/sharp-wasm32@0.34.4': + dependencies: + '@emnapi/runtime': 1.5.0 + optional: true + + '@img/sharp-win32-arm64@0.34.4': + optional: true + + '@img/sharp-win32-ia32@0.33.5': + optional: true + + '@img/sharp-win32-ia32@0.34.4': + optional: true + + '@img/sharp-win32-x64@0.33.5': + optional: true + + '@img/sharp-win32-x64@0.34.4': + optional: true + + '@isaacs/balanced-match@4.0.1': {} + + '@isaacs/brace-expansion@5.0.0': + dependencies: + '@isaacs/balanced-match': 4.0.1 + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 + + '@jest/types@29.6.3': + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 24.5.2 + '@types/yargs': 17.0.33 + chalk: 4.1.2 + + '@jimp/core@1.6.0': + dependencies: + '@jimp/file-ops': 1.6.0 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + await-to-js: 3.0.0 + exif-parser: 0.1.12 + file-type: 16.5.4 + mime: 3.0.0 + + '@jimp/diff@1.6.0': + dependencies: + '@jimp/plugin-resize': 1.6.0 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + pixelmatch: 5.3.0 + + '@jimp/file-ops@1.6.0': {} + + '@jimp/js-bmp@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + bmp-ts: 1.0.9 + + '@jimp/js-gif@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/types': 1.6.0 + gifwrap: 0.10.1 + omggif: 1.0.10 - '@eslint/config-helpers@0.3.0': {} + '@jimp/js-jpeg@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/types': 1.6.0 + jpeg-js: 0.4.4 - '@eslint/core@0.12.0': + '@jimp/js-png@1.6.0': dependencies: - '@types/json-schema': 7.0.15 + '@jimp/core': 1.6.0 + '@jimp/types': 1.6.0 + pngjs: 7.0.0 - '@eslint/core@0.13.0': + '@jimp/js-tiff@1.6.0': dependencies: - '@types/json-schema': 7.0.15 + '@jimp/core': 1.6.0 + '@jimp/types': 1.6.0 + utif2: 4.1.0 - '@eslint/core@0.14.0': + '@jimp/plugin-blit@1.6.0': dependencies: - '@types/json-schema': 7.0.15 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + zod: 3.25.76 - '@eslint/core@0.15.1': + '@jimp/plugin-blur@1.6.0': dependencies: - '@types/json-schema': 7.0.15 + '@jimp/core': 1.6.0 + '@jimp/utils': 1.6.0 - '@eslint/eslintrc@3.3.1': + '@jimp/plugin-circle@1.6.0': dependencies: - ajv: 6.12.6 - debug: 4.4.1 - espree: 10.4.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color + '@jimp/types': 1.6.0 + zod: 3.25.76 - '@eslint/js@9.21.0': {} + '@jimp/plugin-color@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + tinycolor2: 1.6.0 + zod: 3.25.76 - '@eslint/js@9.30.1': {} + '@jimp/plugin-contain@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/plugin-blit': 1.6.0 + '@jimp/plugin-resize': 1.6.0 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + zod: 3.25.76 - '@eslint/object-schema@2.1.6': {} + '@jimp/plugin-cover@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/plugin-crop': 1.6.0 + '@jimp/plugin-resize': 1.6.0 + '@jimp/types': 1.6.0 + zod: 3.25.76 - '@eslint/plugin-kit@0.2.8': + '@jimp/plugin-crop@1.6.0': dependencies: - '@eslint/core': 0.13.0 - levn: 0.4.1 + '@jimp/core': 1.6.0 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + zod: 3.25.76 - '@eslint/plugin-kit@0.3.3': + '@jimp/plugin-displace@1.6.0': dependencies: - '@eslint/core': 0.15.1 - levn: 0.4.1 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + zod: 3.25.76 - '@esotericsoftware/spine-core@4.2.74': {} + '@jimp/plugin-dither@1.6.0': + dependencies: + '@jimp/types': 1.6.0 - '@esotericsoftware/spine-pixi-v8@4.2.74(pixi.js@8.8.1)': + '@jimp/plugin-fisheye@1.6.0': dependencies: - '@esotericsoftware/spine-core': 4.2.74 - pixi.js: 8.8.1 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + zod: 3.25.76 - '@humanfs/core@0.19.1': {} + '@jimp/plugin-flip@1.6.0': + dependencies: + '@jimp/types': 1.6.0 + zod: 3.25.76 - '@humanfs/node@0.16.6': + '@jimp/plugin-hash@1.6.0': dependencies: - '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.3.1 + '@jimp/core': 1.6.0 + '@jimp/js-bmp': 1.6.0 + '@jimp/js-jpeg': 1.6.0 + '@jimp/js-png': 1.6.0 + '@jimp/js-tiff': 1.6.0 + '@jimp/plugin-color': 1.6.0 + '@jimp/plugin-resize': 1.6.0 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + any-base: 1.1.0 - '@humanwhocodes/module-importer@1.0.1': {} + '@jimp/plugin-mask@1.6.0': + dependencies: + '@jimp/types': 1.6.0 + zod: 3.25.76 - '@humanwhocodes/retry@0.3.1': {} + '@jimp/plugin-print@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/js-jpeg': 1.6.0 + '@jimp/js-png': 1.6.0 + '@jimp/plugin-blit': 1.6.0 + '@jimp/types': 1.6.0 + parse-bmfont-ascii: 1.0.6 + parse-bmfont-binary: 1.0.6 + parse-bmfont-xml: 1.1.6 + simple-xml-to-json: 1.2.3 + zod: 3.25.76 - '@humanwhocodes/retry@0.4.3': {} + '@jimp/plugin-quantize@1.6.0': + dependencies: + image-q: 4.0.0 + zod: 3.25.76 - '@isaacs/balanced-match@4.0.1': {} + '@jimp/plugin-resize@1.6.0': + dependencies: + '@jimp/core': 1.6.0 + '@jimp/types': 1.6.0 + zod: 3.25.76 - '@isaacs/brace-expansion@5.0.0': + '@jimp/plugin-rotate@1.6.0': dependencies: - '@isaacs/balanced-match': 4.0.1 + '@jimp/core': 1.6.0 + '@jimp/plugin-crop': 1.6.0 + '@jimp/plugin-resize': 1.6.0 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + zod: 3.25.76 - '@isaacs/cliui@8.0.2': + '@jimp/plugin-threshold@1.6.0': dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 + '@jimp/core': 1.6.0 + '@jimp/plugin-color': 1.6.0 + '@jimp/plugin-hash': 1.6.0 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + zod: 3.25.76 - '@jest/schemas@29.6.3': + '@jimp/types@1.6.0': dependencies: - '@sinclair/typebox': 0.27.8 + zod: 3.25.76 - '@jest/types@29.6.3': + '@jimp/utils@1.6.0': dependencies: - '@jest/schemas': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports': 3.0.4 - '@types/node': 24.0.13 - '@types/yargs': 17.0.33 - chalk: 4.1.2 + '@jimp/types': 1.6.0 + tinycolor2: 1.6.0 '@jridgewell/gen-mapping@0.3.12': dependencies: @@ -4914,19 +6701,20 @@ snapshots: '@lingui/babel-plugin-extract-messages@5.2.0': {} - '@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0)': + '@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0)(typescript@5.7.3)': dependencies: '@babel/core': 7.28.0 '@babel/runtime': 7.27.6 '@babel/types': 7.28.0 - '@lingui/conf': 5.2.0(typescript@5.8.3) - '@lingui/core': 5.2.0(@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0))(babel-plugin-macros@3.1.0) + '@lingui/conf': 5.2.0(typescript@5.7.3) + '@lingui/core': 5.2.0(@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0)(typescript@5.7.3))(babel-plugin-macros@3.1.0) '@lingui/message-utils': 5.2.0 optionalDependencies: babel-plugin-macros: 3.1.0 transitivePeerDependencies: - supports-color - typescript + optional: true '@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0)(typescript@5.8.3)': dependencies: @@ -4941,9 +6729,8 @@ snapshots: transitivePeerDependencies: - supports-color - typescript - optional: true - '@lingui/cli@5.2.0': + '@lingui/cli@5.2.0(typescript@5.8.3)': dependencies: '@babel/core': 7.28.0 '@babel/generator': 7.28.0 @@ -4951,10 +6738,10 @@ snapshots: '@babel/runtime': 7.27.6 '@babel/types': 7.28.0 '@lingui/babel-plugin-extract-messages': 5.2.0 - '@lingui/babel-plugin-lingui-macro': 5.2.0(babel-plugin-macros@3.1.0) + '@lingui/babel-plugin-lingui-macro': 5.2.0(babel-plugin-macros@3.1.0)(typescript@5.8.3) '@lingui/conf': 5.2.0(typescript@5.8.3) - '@lingui/core': 5.2.0(@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0))(babel-plugin-macros@3.1.0) - '@lingui/format-po': 5.2.0 + '@lingui/core': 5.2.0(@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0)(typescript@5.8.3))(babel-plugin-macros@3.1.0) + '@lingui/format-po': 5.2.0(typescript@5.8.3) '@lingui/message-utils': 5.2.0 babel-plugin-macros: 3.1.0 chalk: 4.1.2 @@ -4978,6 +6765,18 @@ snapshots: - supports-color - typescript + '@lingui/conf@5.2.0(typescript@5.7.3)': + dependencies: + '@babel/runtime': 7.27.6 + chalk: 4.1.2 + cosmiconfig: 8.3.6(typescript@5.7.3) + jest-validate: 29.7.0 + jiti: 1.21.7 + lodash.get: 4.4.2 + transitivePeerDependencies: + - typescript + optional: true + '@lingui/conf@5.2.0(typescript@5.8.3)': dependencies: '@babel/runtime': 7.27.6 @@ -4989,25 +6788,25 @@ snapshots: transitivePeerDependencies: - typescript - '@lingui/core@5.2.0(@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0)(typescript@5.8.3))(babel-plugin-macros@3.1.0)': + '@lingui/core@5.2.0(@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0)(typescript@5.7.3))(babel-plugin-macros@3.1.0)': dependencies: '@babel/runtime': 7.27.6 '@lingui/message-utils': 5.2.0 unraw: 3.0.0 optionalDependencies: - '@lingui/babel-plugin-lingui-macro': 5.2.0(babel-plugin-macros@3.1.0)(typescript@5.8.3) + '@lingui/babel-plugin-lingui-macro': 5.2.0(babel-plugin-macros@3.1.0)(typescript@5.7.3) babel-plugin-macros: 3.1.0 - '@lingui/core@5.2.0(@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0))(babel-plugin-macros@3.1.0)': + '@lingui/core@5.2.0(@lingui/babel-plugin-lingui-macro@5.2.0(babel-plugin-macros@3.1.0)(typescript@5.8.3))(babel-plugin-macros@3.1.0)': dependencies: '@babel/runtime': 7.27.6 '@lingui/message-utils': 5.2.0 unraw: 3.0.0 optionalDependencies: - '@lingui/babel-plugin-lingui-macro': 5.2.0(babel-plugin-macros@3.1.0) + '@lingui/babel-plugin-lingui-macro': 5.2.0(babel-plugin-macros@3.1.0)(typescript@5.8.3) babel-plugin-macros: 3.1.0 - '@lingui/format-po@5.2.0': + '@lingui/format-po@5.2.0(typescript@5.8.3)': dependencies: '@lingui/conf': 5.2.0(typescript@5.8.3) '@lingui/message-utils': 5.2.0 @@ -5021,11 +6820,11 @@ snapshots: '@messageformat/parser': 5.1.1 js-sha256: 0.10.1 - '@lingui/vite-plugin@5.2.0(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2))': + '@lingui/vite-plugin@5.2.0(typescript@5.8.3)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2))': dependencies: - '@lingui/cli': 5.2.0 + '@lingui/cli': 5.2.0(typescript@5.8.3) '@lingui/conf': 5.2.0(typescript@5.8.3) - vite: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + vite: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) transitivePeerDependencies: - supports-color - typescript @@ -5040,6 +6839,134 @@ snapshots: dependencies: moo: 0.5.2 + '@napi-rs/wasm-runtime@0.2.12': + dependencies: + '@emnapi/core': 1.5.0 + '@emnapi/runtime': 1.5.0 + '@tybys/wasm-util': 0.10.1 + optional: true + + '@napi-rs/wasm-runtime@1.0.5': + dependencies: + '@emnapi/core': 1.5.0 + '@emnapi/runtime': 1.5.0 + '@tybys/wasm-util': 0.10.1 + optional: true + + '@napi-rs/woff-build-android-arm-eabi@0.2.2': + optional: true + + '@napi-rs/woff-build-android-arm64@0.2.2': + optional: true + + '@napi-rs/woff-build-darwin-arm64@0.2.2': + optional: true + + '@napi-rs/woff-build-darwin-x64@0.2.2': + optional: true + + '@napi-rs/woff-build-linux-arm64-gnu@0.2.2': + optional: true + + '@napi-rs/woff-build-linux-arm64-musl@0.2.2': + optional: true + + '@napi-rs/woff-build-linux-x64-gnu@0.2.2': + optional: true + + '@napi-rs/woff-build-linux-x64-musl@0.2.2': + optional: true + + '@napi-rs/woff-build-wasm32-wasi@0.2.2': + dependencies: + '@napi-rs/wasm-runtime': 1.0.5 + optional: true + + '@napi-rs/woff-build-win32-arm64-msvc@0.2.2': + optional: true + + '@napi-rs/woff-build-win32-ia32-msvc@0.2.2': + optional: true + + '@napi-rs/woff-build-win32-x64-msvc@0.2.2': + optional: true + + '@napi-rs/woff-build@0.2.2': + optionalDependencies: + '@napi-rs/woff-build-android-arm-eabi': 0.2.2 + '@napi-rs/woff-build-android-arm64': 0.2.2 + '@napi-rs/woff-build-darwin-arm64': 0.2.2 + '@napi-rs/woff-build-darwin-x64': 0.2.2 + '@napi-rs/woff-build-linux-arm64-gnu': 0.2.2 + '@napi-rs/woff-build-linux-arm64-musl': 0.2.2 + '@napi-rs/woff-build-linux-x64-gnu': 0.2.2 + '@napi-rs/woff-build-linux-x64-musl': 0.2.2 + '@napi-rs/woff-build-wasm32-wasi': 0.2.2 + '@napi-rs/woff-build-win32-arm64-msvc': 0.2.2 + '@napi-rs/woff-build-win32-ia32-msvc': 0.2.2 + '@napi-rs/woff-build-win32-x64-msvc': 0.2.2 + + '@node-rs/crc32-android-arm-eabi@1.10.6': + optional: true + + '@node-rs/crc32-android-arm64@1.10.6': + optional: true + + '@node-rs/crc32-darwin-arm64@1.10.6': + optional: true + + '@node-rs/crc32-darwin-x64@1.10.6': + optional: true + + '@node-rs/crc32-freebsd-x64@1.10.6': + optional: true + + '@node-rs/crc32-linux-arm-gnueabihf@1.10.6': + optional: true + + '@node-rs/crc32-linux-arm64-gnu@1.10.6': + optional: true + + '@node-rs/crc32-linux-arm64-musl@1.10.6': + optional: true + + '@node-rs/crc32-linux-x64-gnu@1.10.6': + optional: true + + '@node-rs/crc32-linux-x64-musl@1.10.6': + optional: true + + '@node-rs/crc32-wasm32-wasi@1.10.6': + dependencies: + '@napi-rs/wasm-runtime': 0.2.12 + optional: true + + '@node-rs/crc32-win32-arm64-msvc@1.10.6': + optional: true + + '@node-rs/crc32-win32-ia32-msvc@1.10.6': + optional: true + + '@node-rs/crc32-win32-x64-msvc@1.10.6': + optional: true + + '@node-rs/crc32@1.10.6': + optionalDependencies: + '@node-rs/crc32-android-arm-eabi': 1.10.6 + '@node-rs/crc32-android-arm64': 1.10.6 + '@node-rs/crc32-darwin-arm64': 1.10.6 + '@node-rs/crc32-darwin-x64': 1.10.6 + '@node-rs/crc32-freebsd-x64': 1.10.6 + '@node-rs/crc32-linux-arm-gnueabihf': 1.10.6 + '@node-rs/crc32-linux-arm64-gnu': 1.10.6 + '@node-rs/crc32-linux-arm64-musl': 1.10.6 + '@node-rs/crc32-linux-x64-gnu': 1.10.6 + '@node-rs/crc32-linux-x64-musl': 1.10.6 + '@node-rs/crc32-wasm32-wasi': 1.10.6 + '@node-rs/crc32-win32-arm64-msvc': 1.10.6 + '@node-rs/crc32-win32-ia32-msvc': 1.10.6 + '@node-rs/crc32-win32-x64-msvc': 1.10.6 + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -5054,6 +6981,38 @@ snapshots: '@pixi/colord@2.9.6': {} + '@pixi/msdf-bmfont-xml@3.0.0': + dependencies: + arabic-persian-reshaper: 1.0.1 + cli-progress: 3.12.0 + commander: 14.0.1 + handlebars: 4.7.8 + is-invalid-path: 1.0.2 + jimp: 1.6.0 + js2xmlparser: 5.0.0 + map-limit: 0.0.1 + maxrects-packer: 2.7.3 + opentype.js: 0.11.0 + + '@pixi/sound@6.0.1(pixi.js@8.8.1)': + dependencies: + pixi.js: 8.8.1 + + '@pixi/svg2ttf@6.1.0': + dependencies: + '@xmldom/xmldom': 0.9.8 + argparse: 2.0.1 + cubic2quad: 1.2.1 + lodash: 4.17.21 + microbuffer: 1.0.0 + svgpath: 2.6.0 + + '@pixi/ui@2.2.7(pixi.js@8.8.1)': + dependencies: + pixi.js: 8.8.1 + tweedle.js: 2.1.0 + typed-signals: 2.5.0 + '@polka/url@1.0.0-next.29': {} '@rollup/rollup-android-arm-eabi@4.44.1': @@ -5131,11 +7090,11 @@ snapshots: transitivePeerDependencies: - '@types/react' - '@storybook/addon-svelte-csf@5.0.5(@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5))(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(babel-plugin-macros@3.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2))': + '@storybook/addon-svelte-csf@5.0.5(@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5))(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(babel-plugin-macros@3.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2))': dependencies: '@storybook/csf': 0.1.13 '@storybook/svelte': 9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5) - '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) dedent: 1.6.0(babel-plugin-macros@3.1.0) es-toolkit: 1.39.6 esrap: 1.4.9 @@ -5143,16 +7102,16 @@ snapshots: storybook: 9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2) svelte: 5.20.5 svelte-ast-print: 0.4.2(svelte@5.20.5) - vite: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + vite: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) zimmerframe: 1.1.2 transitivePeerDependencies: - babel-plugin-macros - '@storybook/addon-svelte-csf@5.0.5(@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.35.1))(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(babel-plugin-macros@3.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.35.1)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2))': + '@storybook/addon-svelte-csf@5.0.5(@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.35.1))(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(babel-plugin-macros@3.1.0)(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.35.1)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2))': dependencies: '@storybook/csf': 0.1.13 '@storybook/svelte': 9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.35.1) - '@sveltejs/vite-plugin-svelte': 5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + '@sveltejs/vite-plugin-svelte': 5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) dedent: 1.6.0(babel-plugin-macros@3.1.0) es-toolkit: 1.39.6 esrap: 1.4.9 @@ -5160,17 +7119,17 @@ snapshots: storybook: 9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2) svelte: 5.35.1 svelte-ast-print: 0.4.2(svelte@5.35.1) - vite: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + vite: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) zimmerframe: 1.1.2 transitivePeerDependencies: - babel-plugin-macros - '@storybook/builder-vite@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2))': + '@storybook/builder-vite@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2))': dependencies: '@storybook/csf-plugin': 9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2)) storybook: 9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2) ts-dedent: 2.2.0 - vite: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + vite: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) '@storybook/csf-plugin@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))': dependencies: @@ -5194,29 +7153,29 @@ snapshots: react-dom: 19.1.0(react@19.1.0) storybook: 9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2) - '@storybook/svelte-vite@9.0.15(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2))': + '@storybook/svelte-vite@9.0.15(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2))': dependencies: - '@storybook/builder-vite': 9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + '@storybook/builder-vite': 9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@storybook/svelte': 9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5) - '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) magic-string: 0.30.17 storybook: 9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2) svelte: 5.20.5 - svelte2tsx: 0.7.40(svelte@5.20.5)(typescript@5.8.3) - typescript: 5.8.3 - vite: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + svelte2tsx: 0.7.40(svelte@5.20.5)(typescript@5.7.3) + typescript: 5.7.3 + vite: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) - '@storybook/svelte-vite@9.0.15(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.35.1)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2))': + '@storybook/svelte-vite@9.0.15(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.35.1)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2))': dependencies: - '@storybook/builder-vite': 9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + '@storybook/builder-vite': 9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@storybook/svelte': 9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.35.1) - '@sveltejs/vite-plugin-svelte': 5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + '@sveltejs/vite-plugin-svelte': 5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) magic-string: 0.30.17 storybook: 9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2) svelte: 5.35.1 - svelte2tsx: 0.7.40(svelte@5.35.1)(typescript@5.8.3) - typescript: 5.8.3 - vite: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + svelte2tsx: 0.7.40(svelte@5.35.1)(typescript@5.7.3) + typescript: 5.7.3 + vite: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) '@storybook/svelte@9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)': dependencies: @@ -5232,25 +7191,25 @@ snapshots: ts-dedent: 2.2.0 type-fest: 2.19.0 - '@storybook/sveltekit@9.0.15(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2))': + '@storybook/sveltekit@9.0.15(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2))': dependencies: - '@storybook/builder-vite': 9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + '@storybook/builder-vite': 9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@storybook/svelte': 9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5) - '@storybook/svelte-vite': 9.0.15(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + '@storybook/svelte-vite': 9.0.15(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) storybook: 9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2) svelte: 5.20.5 - vite: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + vite: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) transitivePeerDependencies: - '@sveltejs/vite-plugin-svelte' - '@storybook/sveltekit@9.0.15(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.35.1)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2))': + '@storybook/sveltekit@9.0.15(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.35.1)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2))': dependencies: - '@storybook/builder-vite': 9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + '@storybook/builder-vite': 9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@storybook/svelte': 9.0.15(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.35.1) - '@storybook/svelte-vite': 9.0.15(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.35.1)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + '@storybook/svelte-vite': 9.0.15(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2))(svelte@5.35.1)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) storybook: 9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2) svelte: 5.35.1 - vite: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + vite: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) transitivePeerDependencies: - '@sveltejs/vite-plugin-svelte' @@ -5258,21 +7217,21 @@ snapshots: dependencies: acorn: 8.15.0 - '@sveltejs/adapter-static@3.0.8(@sveltejs/kit@2.22.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.85.1)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.85.1)))': + '@sveltejs/adapter-static@3.0.9(@sveltejs/kit@2.22.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.85.1)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.85.1)))': dependencies: - '@sveltejs/kit': 2.22.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.85.1)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.85.1)) + '@sveltejs/kit': 2.22.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.85.1)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.85.1)) - '@sveltejs/adapter-static@3.0.8(@sveltejs/kit@2.22.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))': + '@sveltejs/adapter-static@3.0.9(@sveltejs/kit@2.22.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))': dependencies: - '@sveltejs/kit': 2.22.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + '@sveltejs/kit': 2.22.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) - '@sveltejs/adapter-static@3.0.8(@sveltejs/kit@2.22.2(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.35.1)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))': + '@sveltejs/adapter-static@3.0.9(@sveltejs/kit@2.22.2(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.35.1)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))': dependencies: - '@sveltejs/kit': 2.22.2(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.35.1)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + '@sveltejs/kit': 2.22.2(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.35.1)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) - '@sveltejs/kit@2.17.3(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2))': + '@sveltejs/kit@2.17.3(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@types/cookie': 0.6.0 cookie: 0.6.0 devalue: 5.1.1 @@ -5285,11 +7244,11 @@ snapshots: set-cookie-parser: 2.7.1 sirv: 3.0.1 svelte: 5.20.5 - vite: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + vite: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) - '@sveltejs/kit@2.17.3(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2))': + '@sveltejs/kit@2.17.3(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.1.0(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + '@sveltejs/vite-plugin-svelte': 5.1.0(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@types/cookie': 0.6.0 cookie: 0.6.0 devalue: 5.1.1 @@ -5302,11 +7261,11 @@ snapshots: set-cookie-parser: 2.7.1 sirv: 3.0.1 svelte: 5.20.5 - vite: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + vite: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) - '@sveltejs/kit@2.17.3(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.20.5)(vite@7.0.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@7.0.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2))': + '@sveltejs/kit@2.17.3(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.20.5)(vite@7.0.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@7.0.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.1.0(svelte@5.20.5)(vite@7.0.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + '@sveltejs/vite-plugin-svelte': 5.1.0(svelte@5.20.5)(vite@7.0.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@types/cookie': 0.6.0 cookie: 0.6.0 devalue: 5.1.1 @@ -5319,12 +7278,12 @@ snapshots: set-cookie-parser: 2.7.1 sirv: 3.0.1 svelte: 5.20.5 - vite: 7.0.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + vite: 7.0.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) - '@sveltejs/kit@2.22.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.85.1)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.85.1))': + '@sveltejs/kit@2.22.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.85.1)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.85.1))': dependencies: '@sveltejs/acorn-typescript': 1.0.5(acorn@8.15.0) - '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.85.1)) + '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.85.1)) '@types/cookie': 0.6.0 acorn: 8.15.0 cookie: 0.6.0 @@ -5337,13 +7296,13 @@ snapshots: set-cookie-parser: 2.7.1 sirv: 3.0.1 svelte: 5.20.5 - vite: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.85.1) - vitefu: 1.0.7(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.85.1)) + vite: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.85.1) + vitefu: 1.0.7(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.85.1)) - '@sveltejs/kit@2.22.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2))': + '@sveltejs/kit@2.22.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2))': dependencies: '@sveltejs/acorn-typescript': 1.0.5(acorn@8.15.0) - '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@types/cookie': 0.6.0 acorn: 8.15.0 cookie: 0.6.0 @@ -5356,13 +7315,13 @@ snapshots: set-cookie-parser: 2.7.1 sirv: 3.0.1 svelte: 5.20.5 - vite: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) - vitefu: 1.0.7(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + vite: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) + vitefu: 1.0.7(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) - '@sveltejs/kit@2.22.2(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.35.1)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2))': + '@sveltejs/kit@2.22.2(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.35.1)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2))': dependencies: '@sveltejs/acorn-typescript': 1.0.5(acorn@8.15.0) - '@sveltejs/vite-plugin-svelte': 5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + '@sveltejs/vite-plugin-svelte': 5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@types/cookie': 0.6.0 acorn: 8.15.0 cookie: 0.6.0 @@ -5375,8 +7334,8 @@ snapshots: set-cookie-parser: 2.7.1 sirv: 3.0.1 svelte: 5.35.1 - vite: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) - vitefu: 1.0.7(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + vite: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) + vitefu: 1.0.7(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) '@sveltejs/package@2.3.10(svelte@5.20.5)(typescript@5.8.3)': dependencies: @@ -5389,116 +7348,120 @@ snapshots: transitivePeerDependencies: - typescript - '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.85.1)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.85.1))': + '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.85.1)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.85.1))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.85.1)) + '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.85.1)) debug: 4.4.1 svelte: 5.20.5 - vite: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.85.1) + vite: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.85.1) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2))': + '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) debug: 4.4.1 svelte: 5.20.5 - vite: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + vite: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2))': + '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.1.0(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + '@sveltejs/vite-plugin-svelte': 5.1.0(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) debug: 4.4.1 svelte: 5.20.5 - vite: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + vite: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.20.5)(vite@7.0.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@7.0.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2))': + '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.20.5)(vite@7.0.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@7.0.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.1.0(svelte@5.20.5)(vite@7.0.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + '@sveltejs/vite-plugin-svelte': 5.1.0(svelte@5.20.5)(vite@7.0.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) debug: 4.4.1 svelte: 5.20.5 - vite: 7.0.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + vite: 7.0.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.35.1)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2))': + '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.35.1)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + '@sveltejs/vite-plugin-svelte': 5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) debug: 4.4.1 svelte: 5.35.1 - vite: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + vite: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.85.1))': + '@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.85.1))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.85.1)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.85.1)) + '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.85.1)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.85.1)) debug: 4.4.1 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.17 svelte: 5.20.5 - vite: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.85.1) - vitefu: 1.0.7(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.85.1)) + vite: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.85.1) + vitefu: 1.0.7(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.85.1)) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2))': + '@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) debug: 4.4.1 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.17 svelte: 5.20.5 - vite: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) - vitefu: 1.0.7(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + vite: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) + vitefu: 1.0.7(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2))': + '@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) debug: 4.4.1 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.17 svelte: 5.20.5 - vite: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) - vitefu: 1.0.7(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + vite: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) + vitefu: 1.0.7(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.20.5)(vite@7.0.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2))': + '@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.20.5)(vite@7.0.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.20.5)(vite@7.0.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@7.0.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.20.5)(vite@7.0.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.20.5)(vite@7.0.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) debug: 4.4.1 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.17 svelte: 5.20.5 - vite: 7.0.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) - vitefu: 1.0.7(vite@7.0.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + vite: 7.0.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) + vitefu: 1.0.7(vite@7.0.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2))': + '@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.35.1)(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.1.0(svelte@5.35.1)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)))(svelte@5.35.1)(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) debug: 4.4.1 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.17 svelte: 5.35.1 - vite: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) - vitefu: 1.0.7(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)) + vite: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) + vitefu: 1.0.7(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)) transitivePeerDependencies: - supports-color + '@swc/helpers@0.3.17': + dependencies: + tslib: 2.8.1 + '@testing-library/dom@10.4.0': dependencies: '@babel/code-frame': 7.27.1 @@ -5524,12 +7487,25 @@ snapshots: dependencies: '@testing-library/dom': 10.4.0 + '@tokenizer/token@0.3.0': {} + + '@tybys/wasm-util@0.10.1': + dependencies: + tslib: 2.8.1 + optional: true + '@types/aria-query@5.0.4': {} '@types/chai@5.2.2': dependencies: '@types/deep-eql': 4.0.2 + '@types/cli-progress@3.11.6': + dependencies: + '@types/node': 24.5.2 + + '@types/clone@2.1.4': {} + '@types/cookie@0.6.0': {} '@types/css-font-loading-module@0.0.12': {} @@ -5540,6 +7516,15 @@ snapshots: '@types/estree@1.0.8': {} + '@types/fluent-ffmpeg@2.1.27': + dependencies: + '@types/node': 24.5.2 + + '@types/fs-extra@11.0.4': + dependencies: + '@types/jsonfile': 6.1.4 + '@types/node': 24.5.2 + '@types/gradient-parser@0.1.5': {} '@types/howler@2.2.12': {} @@ -5556,17 +7541,21 @@ snapshots: '@types/json-schema@7.0.15': {} + '@types/jsonfile@6.1.4': + dependencies: + '@types/node': 24.5.2 + '@types/lodash@4.17.16': {} '@types/mdx@2.0.13': {} - '@types/node@24.0.10': - dependencies: - undici-types: 7.8.0 + '@types/node@16.9.1': {} - '@types/node@24.0.13': + '@types/node@24.5.2': dependencies: - undici-types: 7.8.0 + undici-types: 7.12.0 + + '@types/object-hash@3.0.6': {} '@types/parse-json@4.0.2': {} @@ -5582,14 +7571,14 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.35.1(@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@1.21.7))(typescript@5.8.3))(eslint@9.30.1(jiti@1.21.7))(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.30.1(jiti@1.21.7))(typescript@5.8.3))(eslint@9.30.1(jiti@1.21.7))(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.35.1(eslint@9.30.1(jiti@1.21.7))(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.35.1 - '@typescript-eslint/type-utils': 8.35.1(eslint@9.30.1(jiti@1.21.7))(typescript@5.8.3) - '@typescript-eslint/utils': 8.35.1(eslint@9.30.1(jiti@1.21.7))(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.35.1 + '@typescript-eslint/parser': 8.44.0(eslint@9.30.1(jiti@1.21.7))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.44.0 + '@typescript-eslint/type-utils': 8.44.0(eslint@9.30.1(jiti@1.21.7))(typescript@5.8.3) + '@typescript-eslint/utils': 8.44.0(eslint@9.30.1(jiti@1.21.7))(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.44.0 eslint: 9.30.1(jiti@1.21.7) graphemer: 1.4.0 ignore: 7.0.5 @@ -5599,40 +7588,41 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.35.1(eslint@9.30.1(jiti@1.21.7))(typescript@5.8.3)': + '@typescript-eslint/parser@8.44.0(eslint@9.30.1(jiti@1.21.7))(typescript@5.8.3)': dependencies: - '@typescript-eslint/scope-manager': 8.35.1 - '@typescript-eslint/types': 8.35.1 - '@typescript-eslint/typescript-estree': 8.35.1(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.35.1 + '@typescript-eslint/scope-manager': 8.44.0 + '@typescript-eslint/types': 8.44.0 + '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.44.0 debug: 4.4.1 eslint: 9.30.1(jiti@1.21.7) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.35.1(typescript@5.8.3)': + '@typescript-eslint/project-service@8.44.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.35.1(typescript@5.8.3) - '@typescript-eslint/types': 8.35.1 + '@typescript-eslint/tsconfig-utils': 8.44.0(typescript@5.8.3) + '@typescript-eslint/types': 8.44.0 debug: 4.4.1 typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.35.1': + '@typescript-eslint/scope-manager@8.44.0': dependencies: - '@typescript-eslint/types': 8.35.1 - '@typescript-eslint/visitor-keys': 8.35.1 + '@typescript-eslint/types': 8.44.0 + '@typescript-eslint/visitor-keys': 8.44.0 - '@typescript-eslint/tsconfig-utils@8.35.1(typescript@5.8.3)': + '@typescript-eslint/tsconfig-utils@8.44.0(typescript@5.8.3)': dependencies: typescript: 5.8.3 - '@typescript-eslint/type-utils@8.35.1(eslint@9.30.1(jiti@1.21.7))(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.44.0(eslint@9.30.1(jiti@1.21.7))(typescript@5.8.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.35.1(typescript@5.8.3) - '@typescript-eslint/utils': 8.35.1(eslint@9.30.1(jiti@1.21.7))(typescript@5.8.3) + '@typescript-eslint/types': 8.44.0 + '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.8.3) + '@typescript-eslint/utils': 8.44.0(eslint@9.30.1(jiti@1.21.7))(typescript@5.8.3) debug: 4.4.1 eslint: 9.30.1(jiti@1.21.7) ts-api-utils: 2.1.0(typescript@5.8.3) @@ -5640,14 +7630,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.35.1': {} + '@typescript-eslint/types@8.44.0': {} - '@typescript-eslint/typescript-estree@8.35.1(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.44.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/project-service': 8.35.1(typescript@5.8.3) - '@typescript-eslint/tsconfig-utils': 8.35.1(typescript@5.8.3) - '@typescript-eslint/types': 8.35.1 - '@typescript-eslint/visitor-keys': 8.35.1 + '@typescript-eslint/project-service': 8.44.0(typescript@5.8.3) + '@typescript-eslint/tsconfig-utils': 8.44.0(typescript@5.8.3) + '@typescript-eslint/types': 8.44.0 + '@typescript-eslint/visitor-keys': 8.44.0 debug: 4.4.1 fast-glob: 3.3.3 is-glob: 4.0.3 @@ -5658,20 +7648,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.35.1(eslint@9.30.1(jiti@1.21.7))(typescript@5.8.3)': + '@typescript-eslint/utils@8.44.0(eslint@9.30.1(jiti@1.21.7))(typescript@5.8.3)': dependencies: '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.1(jiti@1.21.7)) - '@typescript-eslint/scope-manager': 8.35.1 - '@typescript-eslint/types': 8.35.1 - '@typescript-eslint/typescript-estree': 8.35.1(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.44.0 + '@typescript-eslint/types': 8.44.0 + '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.8.3) eslint: 9.30.1(jiti@1.21.7) typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.35.1': + '@typescript-eslint/visitor-keys@8.44.0': dependencies: - '@typescript-eslint/types': 8.35.1 + '@typescript-eslint/types': 8.44.0 eslint-visitor-keys: 4.2.1 '@vitest/expect@3.2.4': @@ -5700,6 +7690,12 @@ snapshots: '@xmldom/xmldom@0.8.10': {} + '@xmldom/xmldom@0.9.8': {} + + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: acorn: 8.15.0 @@ -5733,11 +7729,15 @@ snapshots: ansi-styles@6.2.1: {} + any-base@1.1.0: {} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 + arabic-persian-reshaper@1.0.1: {} + argparse@2.0.1: {} aria-query@5.3.0: @@ -5746,12 +7746,25 @@ snapshots: aria-query@5.3.2: {} + array-buffer-byte-length@1.0.2: + dependencies: + call-bound: 1.0.4 + is-array-buffer: 3.0.5 + assertion-error@2.0.1: {} ast-types@0.16.1: dependencies: tslib: 2.8.1 + async@0.2.10: {} + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + await-to-js@3.0.0: {} + axobject-query@4.1.0: {} babel-plugin-macros@3.1.0: @@ -5776,6 +7789,8 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 + bmp-ts@1.0.9: {} + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 @@ -5789,6 +7804,10 @@ snapshots: dependencies: fill-range: 7.1.1 + brotli@1.3.3: + dependencies: + base64-js: 1.5.1 + browserslist@4.25.1: dependencies: caniuse-lite: 1.0.30001726 @@ -5803,6 +7822,31 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + buildcheck@0.0.6: + optional: true + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + callsites@3.1.0: {} camelcase@6.3.0: {} @@ -5827,6 +7871,8 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + chalk@5.6.2: {} + chardet@0.7.0: {} check-error@2.1.1: {} @@ -5853,6 +7899,10 @@ snapshots: dependencies: restore-cursor: 3.1.0 + cli-progress@3.12.0: + dependencies: + string-width: 4.2.3 + cli-spinners@2.9.2: {} cli-table@0.3.11: @@ -5861,8 +7911,16 @@ snapshots: cli-width@3.0.0: {} + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + clone@1.0.4: {} + clone@2.1.2: {} + clsx@2.1.1: {} color-convert@2.0.1: @@ -5871,12 +7929,26 @@ snapshots: color-name@1.1.4: {} + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.4 + optional: true + + color@4.2.3: + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + optional: true + colorjs.io@0.5.2: {} colors@1.0.3: {} commander@10.0.1: {} + commander@14.0.1: {} + concat-map@0.0.1: {} convert-source-map@2.0.0: {} @@ -5891,6 +7963,16 @@ snapshots: path-type: 4.0.0 yaml: 1.10.2 + cosmiconfig@8.3.6(typescript@5.7.3): + dependencies: + import-fresh: 3.3.1 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + optionalDependencies: + typescript: 5.7.3 + optional: true + cosmiconfig@8.3.6(typescript@5.8.3): dependencies: import-fresh: 3.3.1 @@ -5900,6 +7982,17 @@ snapshots: optionalDependencies: typescript: 5.8.3 + cpu-features@0.0.10: + dependencies: + buildcheck: 0.0.6 + nan: 2.23.0 + optional: true + + cross-env@10.0.0: + dependencies: + '@epic-web/invariant': 1.0.0 + cross-spawn: 7.0.6 + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -5912,6 +8005,8 @@ snapshots: csstype@3.1.3: {} + cubic2quad@1.2.1: {} + date-fns@3.6.0: {} debug@4.4.1: @@ -5926,6 +8021,27 @@ snapshots: deep-eql@5.0.2: {} + deep-equal@2.2.3: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 + es-get-iterator: 1.1.3 + get-intrinsic: 1.3.0 + is-arguments: 1.2.0 + is-array-buffer: 3.0.5 + is-date-object: 1.1.0 + is-regex: 1.2.1 + is-shared-array-buffer: 1.0.4 + isarray: 2.0.5 + object-is: 1.1.6 + object-keys: 1.1.1 + object.assign: 4.1.7 + regexp.prototype.flags: 1.5.4 + side-channel: 1.1.0 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.19 + deep-is@0.1.4: {} deepmerge@4.3.1: {} @@ -5934,24 +8050,48 @@ snapshots: dependencies: clone: 1.0.4 + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + define-lazy-prop@2.0.0: {} + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + dequal@2.0.3: {} + detect-libc@2.1.0: {} + devalue@5.1.1: {} + dfa@1.2.0: {} + dom-accessibility-api@0.5.16: {} dom-accessibility-api@0.6.3: {} dotenv@16.0.3: {} + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + earcut@2.2.4: {} eastasianwidth@0.2.0: {} electron-to-chromium@1.5.179: {} + emoji-regex@10.5.0: {} + emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} @@ -5960,6 +8100,26 @@ snapshots: dependencies: is-arrayish: 0.2.1 + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-get-iterator@1.1.3: + dependencies: + call-bind: 1.0.8 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + is-arguments: 1.2.0 + is-map: 2.0.3 + is-set: 2.0.3 + is-string: 1.1.1 + isarray: 2.0.5 + stop-iteration-iterator: 1.1.0 + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + es-toolkit@1.39.6: {} esbuild-register@3.6.0(esbuild@0.25.5): @@ -6029,17 +8189,17 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-prettier@10.1.5(eslint@9.30.1(jiti@1.21.7)): + eslint-config-prettier@10.1.8(eslint@9.30.1(jiti@1.21.7)): dependencies: eslint: 9.30.1(jiti@1.21.7) - eslint-config-turbo@2.5.4(eslint@9.30.1(jiti@1.21.7))(turbo@2.5.4): + eslint-config-turbo@2.5.6(eslint@9.30.1(jiti@1.21.7))(turbo@2.5.4): dependencies: eslint: 9.30.1(jiti@1.21.7) - eslint-plugin-turbo: 2.5.4(eslint@9.30.1(jiti@1.21.7))(turbo@2.5.4) + eslint-plugin-turbo: 2.5.6(eslint@9.30.1(jiti@1.21.7))(turbo@2.5.4) turbo: 2.5.4 - eslint-plugin-svelte@3.10.1(eslint@9.30.1(jiti@1.21.7))(svelte@5.35.1): + eslint-plugin-svelte@3.12.4(eslint@9.30.1(jiti@1.21.7))(svelte@5.35.1): dependencies: '@eslint-community/eslint-utils': 4.7.0(eslint@9.30.1(jiti@1.21.7)) '@jridgewell/sourcemap-codec': 1.5.4 @@ -6051,13 +8211,13 @@ snapshots: postcss-load-config: 3.1.4(postcss@8.5.6) postcss-safe-parser: 7.0.1(postcss@8.5.6) semver: 7.7.2 - svelte-eslint-parser: 1.2.0(svelte@5.35.1) + svelte-eslint-parser: 1.3.3(svelte@5.35.1) optionalDependencies: svelte: 5.35.1 transitivePeerDependencies: - ts-node - eslint-plugin-turbo@2.5.4(eslint@9.30.1(jiti@1.21.7))(turbo@2.5.4): + eslint-plugin-turbo@2.5.6(eslint@9.30.1(jiti@1.21.7))(turbo@2.5.4): dependencies: dotenv: 16.0.3 eslint: 9.30.1(jiti@1.21.7) @@ -6190,8 +8350,14 @@ snapshots: esutils@2.0.3: {} + event-target-shim@5.0.1: {} + eventemitter3@5.0.1: {} + events@3.3.0: {} + + exif-parser@0.1.12: {} + external-editor@3.1.0: dependencies: chardet: 0.7.0 @@ -6228,6 +8394,12 @@ snapshots: dependencies: flat-cache: 4.0.1 + file-type@16.5.4: + dependencies: + readable-web-to-node-stream: 3.0.4 + strtok3: 6.3.0 + token-types: 4.2.1 + filesize@10.1.6: {} fill-range@7.1.1: @@ -6243,6 +8415,12 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 + find-up@7.0.0: + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + unicorn-magic: 0.1.0 + flat-cache@4.0.1: dependencies: flatted: 3.3.3 @@ -6250,22 +8428,87 @@ snapshots: flatted@3.3.3: {} + fluent-ffmpeg@2.1.3: + dependencies: + async: 0.2.10 + which: 1.3.1 + + fontkit@1.9.0: + dependencies: + '@swc/helpers': 0.3.17 + brotli: 1.3.3 + clone: 2.1.2 + deep-equal: 2.2.3 + dfa: 1.2.0 + restructure: 2.0.1 + tiny-inflate: 1.0.3 + unicode-properties: 1.4.1 + unicode-trie: 2.0.0 + + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + foreground-child@3.3.1: dependencies: cross-spawn: 7.0.6 signal-exit: 4.1.0 + framer-motion@12.23.18(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + dependencies: + motion-dom: 12.23.18 + motion-utils: 12.23.6 + tslib: 2.8.1 + optionalDependencies: + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + + fs-extra@11.3.2: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + fsevents@2.3.3: optional: true function-bind@1.1.2: {} + functions-have-names@1.2.3: {} + gensync@1.0.0-beta.2: {} + get-caller-file@2.0.5: {} + + get-east-asian-width@1.4.0: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + gifuct-js@2.1.2: dependencies: js-binary-schema-parser: 2.0.3 + gifwrap@0.10.1: + dependencies: + image-q: 4.0.0 + omggif: 1.0.10 + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -6287,13 +8530,45 @@ snapshots: globals@16.3.0: {} - graceful-fs@4.2.11: - optional: true + gopd@1.2.0: {} + + gpu-tex-enc@1.2.5: + dependencies: + '@gpu-tex-enc/astc': 4.7.1 + '@gpu-tex-enc/basis': 1.16.4 + '@gpu-tex-enc/bc': 1.0.11 + '@gpu-tex-enc/etc': 1.0.3 + yargs: 17.7.2 + optionalDependencies: + sharp: 0.33.5 + + graceful-fs@4.2.11: {} graphemer@1.4.0: {} + handlebars@4.7.8: + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.19.3 + + has-bigints@1.1.0: {} + has-flag@4.0.0: {} + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -6310,6 +8585,10 @@ snapshots: ignore@7.0.5: {} + image-q@4.0.0: + dependencies: + '@types/node': 16.9.1 + immutable@5.1.3: {} import-fresh@3.3.1: @@ -6341,16 +8620,52 @@ snapshots: strip-ansi: 6.0.1 through: 2.3.8 + internal-slot@1.1.0: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.1.0 + + is-arguments@1.2.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-array-buffer@3.0.5: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-arrayish@0.2.1: {} + is-arrayish@0.3.4: + optional: true + + is-bigint@1.1.0: + dependencies: + has-bigints: 1.1.0 + is-binary-path@2.1.0: dependencies: binary-extensions: 2.3.0 + is-boolean-object@1.2.2: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-callable@1.2.7: {} + is-core-module@2.16.1: dependencies: hasown: 2.0.2 + is-date-object@1.1.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + is-docker@2.2.1: {} is-extglob@2.1.1: {} @@ -6363,18 +8678,60 @@ snapshots: is-interactive@1.0.0: {} + is-invalid-path@1.0.2: {} + + is-map@2.0.3: {} + + is-number-object@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + is-number@7.0.0: {} is-reference@3.0.3: dependencies: '@types/estree': 1.0.8 + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.4: + dependencies: + call-bound: 1.0.4 + + is-string@1.1.1: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + + is-symbol@1.1.1: + dependencies: + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 + is-unicode-supported@0.1.0: {} + is-weakmap@2.0.2: {} + + is-weakset@2.0.4: + dependencies: + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-wsl@2.2.0: dependencies: is-docker: 2.2.1 + isarray@2.0.5: {} + isexe@2.0.0: {} ismobilejs@1.1.1: {} @@ -6394,8 +8751,40 @@ snapshots: leven: 3.1.0 pretty-format: 29.7.0 + jimp@1.6.0: + dependencies: + '@jimp/core': 1.6.0 + '@jimp/diff': 1.6.0 + '@jimp/js-bmp': 1.6.0 + '@jimp/js-gif': 1.6.0 + '@jimp/js-jpeg': 1.6.0 + '@jimp/js-png': 1.6.0 + '@jimp/js-tiff': 1.6.0 + '@jimp/plugin-blit': 1.6.0 + '@jimp/plugin-blur': 1.6.0 + '@jimp/plugin-circle': 1.6.0 + '@jimp/plugin-color': 1.6.0 + '@jimp/plugin-contain': 1.6.0 + '@jimp/plugin-cover': 1.6.0 + '@jimp/plugin-crop': 1.6.0 + '@jimp/plugin-displace': 1.6.0 + '@jimp/plugin-dither': 1.6.0 + '@jimp/plugin-fisheye': 1.6.0 + '@jimp/plugin-flip': 1.6.0 + '@jimp/plugin-hash': 1.6.0 + '@jimp/plugin-mask': 1.6.0 + '@jimp/plugin-print': 1.6.0 + '@jimp/plugin-quantize': 1.6.0 + '@jimp/plugin-resize': 1.6.0 + '@jimp/plugin-rotate': 1.6.0 + '@jimp/plugin-threshold': 1.6.0 + '@jimp/types': 1.6.0 + '@jimp/utils': 1.6.0 + jiti@1.21.7: {} + jpeg-js@0.4.4: {} + js-binary-schema-parser@2.0.3: {} js-sha256@0.10.1: {} @@ -6406,6 +8795,10 @@ snapshots: dependencies: argparse: 2.0.1 + js2xmlparser@5.0.0: + dependencies: + xmlcreate: 2.0.4 + jsesc@3.1.0: {} json-buffer@3.0.1: {} @@ -6454,6 +8847,10 @@ snapshots: dependencies: p-locate: 5.0.0 + locate-path@7.2.0: + dependencies: + p-locate: 6.0.0 + lodash.get@4.4.2: {} lodash.merge@4.6.2: {} @@ -6487,13 +8884,27 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.4 + map-limit@0.0.1: + dependencies: + once: 1.3.3 + + math-intrinsics@1.1.0: {} + + maxrects-packer@2.7.3: {} + merge2@1.4.1: {} + merge@2.1.1: {} + + microbuffer@1.0.0: {} + micromatch@4.0.8: dependencies: braces: 3.0.3 picomatch: 2.3.1 + mime@3.0.0: {} + mimic-fn@2.1.0: {} min-indent@1.0.1: {} @@ -6510,10 +8921,26 @@ snapshots: dependencies: brace-expansion: 2.0.2 + minimist@1.2.8: {} + minipass@7.1.2: {} moo@0.5.2: {} + motion-dom@12.23.18: + dependencies: + motion-utils: 12.23.6 + + motion-utils@12.23.6: {} + + motion@12.23.18(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + dependencies: + framer-motion: 12.23.18(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + tslib: 2.8.1 + optionalDependencies: + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + mri@1.2.0: {} mrmime@2.0.1: {} @@ -6522,10 +8949,15 @@ snapshots: mute-stream@0.0.8: {} + nan@2.23.0: + optional: true + nanoid@3.3.11: {} natural-compare@1.4.0: {} + neo-async@2.6.2: {} + no-case@3.0.4: dependencies: lower-case: 2.0.2 @@ -6535,6 +8967,32 @@ snapshots: normalize-path@3.0.0: {} + object-hash@3.0.0: {} + + object-inspect@1.13.4: {} + + object-is@1.1.6: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + + object-keys@1.1.1: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 + object-keys: 1.1.1 + + omggif@1.0.10: {} + + once@1.3.3: + dependencies: + wrappy: 1.0.2 + onetime@5.1.2: dependencies: mimic-fn: 2.1.0 @@ -6545,6 +9003,11 @@ snapshots: is-docker: 2.2.1 is-wsl: 2.2.0 + opentype.js@0.11.0: + dependencies: + string.prototype.codepointat: 0.2.1 + tiny-inflate: 1.0.3 + optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -6568,6 +9031,10 @@ snapshots: os-tmpdir@1.0.2: {} + otf2svg@1.0.2: + dependencies: + fontkit: 1.9.0 + p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -6576,6 +9043,10 @@ snapshots: dependencies: yocto-queue: 0.1.0 + p-limit@4.0.0: + dependencies: + yocto-queue: 1.2.1 + p-locate@3.0.0: dependencies: p-limit: 2.3.0 @@ -6584,14 +9055,31 @@ snapshots: dependencies: p-limit: 3.1.0 + p-locate@6.0.0: + dependencies: + p-limit: 4.0.0 + p-try@2.2.0: {} package-json-from-dist@1.0.1: {} + pako@0.2.9: {} + + pako@1.0.11: {} + parent-module@1.0.1: dependencies: callsites: 3.1.0 + parse-bmfont-ascii@1.0.6: {} + + parse-bmfont-binary@1.0.6: {} + + parse-bmfont-xml@1.1.6: + dependencies: + xml-parse-from-string: 1.0.1 + xml2js: 0.5.0 + parse-json@5.2.0: dependencies: '@babel/code-frame': 7.27.1 @@ -6610,6 +9098,8 @@ snapshots: path-exists@4.0.0: {} + path-exists@5.0.0: {} + path-key@3.1.1: {} path-parse@1.0.7: {} @@ -6625,12 +9115,18 @@ snapshots: pathval@2.0.1: {} + peek-readable@4.1.0: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} picomatch@4.0.2: {} + pixelmatch@5.3.0: + dependencies: + pngjs: 6.0.0 + pixi-filters@6.1.0(pixi.js@8.8.1): dependencies: '@types/gradient-parser': 0.1.5 @@ -6653,8 +9149,14 @@ snapshots: dependencies: find-up: 3.0.0 + pngjs@6.0.0: {} + + pngjs@7.0.0: {} + pofile@1.1.4: {} + possible-typed-array-names@1.1.0: {} + postcss-load-config@3.1.4(postcss@8.5.6): dependencies: lilconfig: 2.1.0 @@ -6710,6 +9212,8 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.3.1 + process@0.11.10: {} + pseudolocale@2.1.0: dependencies: commander: 10.0.1 @@ -6740,12 +9244,26 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 + readable-stream@4.7.0: + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + + readable-web-to-node-stream@3.0.4: + dependencies: + readable-stream: 4.7.0 + readdirp@3.5.0: dependencies: picomatch: 2.3.1 readdirp@4.1.2: {} + readline@1.3.0: {} + recast@0.23.11: dependencies: ast-types: 0.16.1 @@ -6759,6 +9277,17 @@ snapshots: indent-string: 4.0.0 strip-indent: 3.0.0 + regexp.prototype.flags@1.5.4: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + set-function-name: 2.0.2 + + require-directory@2.1.1: {} + resize-observer@1.0.4: {} resolve-from@4.0.0: {} @@ -6774,6 +9303,8 @@ snapshots: onetime: 5.1.2 signal-exit: 3.0.7 + restructure@2.0.1: {} + reusify@1.1.0: {} rollup@4.44.1: @@ -6822,6 +9353,12 @@ snapshots: safe-buffer@5.2.1: {} + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + safer-buffer@2.1.2: {} sass-embedded-android-arm64@1.85.1: @@ -6993,6 +9530,8 @@ snapshots: sass-embedded-win32-x64: 1.89.2 optional: true + sax@1.4.1: {} + scheduler@0.26.0: {} semver@6.3.1: {} @@ -7001,16 +9540,123 @@ snapshots: set-cookie-parser@2.7.1: {} + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + sharp@0.33.5: + dependencies: + color: 4.2.3 + detect-libc: 2.1.0 + semver: 7.7.2 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.33.5 + '@img/sharp-darwin-x64': 0.33.5 + '@img/sharp-libvips-darwin-arm64': 1.0.4 + '@img/sharp-libvips-darwin-x64': 1.0.4 + '@img/sharp-libvips-linux-arm': 1.0.5 + '@img/sharp-libvips-linux-arm64': 1.0.4 + '@img/sharp-libvips-linux-s390x': 1.0.4 + '@img/sharp-libvips-linux-x64': 1.0.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + '@img/sharp-linux-arm': 0.33.5 + '@img/sharp-linux-arm64': 0.33.5 + '@img/sharp-linux-s390x': 0.33.5 + '@img/sharp-linux-x64': 0.33.5 + '@img/sharp-linuxmusl-arm64': 0.33.5 + '@img/sharp-linuxmusl-x64': 0.33.5 + '@img/sharp-wasm32': 0.33.5 + '@img/sharp-win32-ia32': 0.33.5 + '@img/sharp-win32-x64': 0.33.5 + optional: true + + sharp@0.34.4: + dependencies: + '@img/colour': 1.0.0 + detect-libc: 2.1.0 + semver: 7.7.2 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.34.4 + '@img/sharp-darwin-x64': 0.34.4 + '@img/sharp-libvips-darwin-arm64': 1.2.3 + '@img/sharp-libvips-darwin-x64': 1.2.3 + '@img/sharp-libvips-linux-arm': 1.2.3 + '@img/sharp-libvips-linux-arm64': 1.2.3 + '@img/sharp-libvips-linux-ppc64': 1.2.3 + '@img/sharp-libvips-linux-s390x': 1.2.3 + '@img/sharp-libvips-linux-x64': 1.2.3 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.3 + '@img/sharp-libvips-linuxmusl-x64': 1.2.3 + '@img/sharp-linux-arm': 0.34.4 + '@img/sharp-linux-arm64': 0.34.4 + '@img/sharp-linux-ppc64': 0.34.4 + '@img/sharp-linux-s390x': 0.34.4 + '@img/sharp-linux-x64': 0.34.4 + '@img/sharp-linuxmusl-arm64': 0.34.4 + '@img/sharp-linuxmusl-x64': 0.34.4 + '@img/sharp-wasm32': 0.34.4 + '@img/sharp-win32-arm64': 0.34.4 + '@img/sharp-win32-ia32': 0.34.4 + '@img/sharp-win32-x64': 0.34.4 + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 shebang-regex@3.0.0: {} + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + signal-exit@3.0.7: {} signal-exit@4.1.0: {} + simple-swizzle@0.2.4: + dependencies: + is-arrayish: 0.3.4 + optional: true + + simple-xml-to-json@1.2.3: {} + sirv@3.0.1: dependencies: '@polka/url': 1.0.0-next.29 @@ -7025,6 +9671,11 @@ snapshots: dependencies: whatwg-url: 7.1.0 + stop-iteration-iterator@1.1.0: + dependencies: + es-errors: 1.3.0 + internal-slot: 1.1.0 + storybook@9.0.15(@testing-library/dom@10.4.0)(prettier@3.6.2): dependencies: '@storybook/global': 5.0.0 @@ -7058,6 +9709,14 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.0 + string-width@7.2.0: + dependencies: + emoji-regex: 10.5.0 + get-east-asian-width: 1.4.0 + strip-ansi: 7.1.0 + + string.prototype.codepointat@0.2.1: {} + string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 @@ -7076,6 +9735,11 @@ snapshots: strip-json-comments@3.1.1: {} + strtok3@6.3.0: + dependencies: + '@tokenizer/token': 0.3.0 + peek-readable: 4.1.0 + supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -7098,7 +9762,7 @@ snapshots: svelte: 5.35.1 zimmerframe: 1.1.2 - svelte-eslint-parser@1.2.0(svelte@5.35.1): + svelte-eslint-parser@1.3.3(svelte@5.35.1): dependencies: eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 @@ -7109,6 +9773,13 @@ snapshots: optionalDependencies: svelte: 5.35.1 + svelte2tsx@0.7.40(svelte@5.20.5)(typescript@5.7.3): + dependencies: + dedent-js: 1.0.1 + pascal-case: 3.1.2 + svelte: 5.20.5 + typescript: 5.7.3 + svelte2tsx@0.7.40(svelte@5.20.5)(typescript@5.8.3): dependencies: dedent-js: 1.0.1 @@ -7116,12 +9787,12 @@ snapshots: svelte: 5.20.5 typescript: 5.8.3 - svelte2tsx@0.7.40(svelte@5.35.1)(typescript@5.8.3): + svelte2tsx@0.7.40(svelte@5.35.1)(typescript@5.7.3): dependencies: dedent-js: 1.0.1 pascal-case: 3.1.2 svelte: 5.35.1 - typescript: 5.8.3 + typescript: 5.7.3 svelte@5.20.5: dependencies: @@ -7157,16 +9828,24 @@ snapshots: magic-string: 0.30.17 zimmerframe: 1.1.2 + svgpath@2.6.0: {} + sync-child-process@1.0.2: dependencies: sync-message-port: 1.1.3 sync-message-port@1.1.3: {} + terminal-size@4.0.0: {} + through@2.3.8: {} + tiny-inflate@1.0.3: {} + tiny-invariant@1.3.3: {} + tinycolor2@1.6.0: {} + tinyglobby@0.2.14: dependencies: fdir: 6.4.6(picomatch@4.0.2) @@ -7184,6 +9863,11 @@ snapshots: dependencies: is-number: 7.0.0 + token-types@4.2.1: + dependencies: + '@tokenizer/token': 0.3.0 + ieee754: 1.2.1 + totalist@3.0.1: {} tr46@1.0.1: @@ -7254,6 +9938,8 @@ snapshots: turbo-windows-64: 2.5.4 turbo-windows-arm64: 2.5.4 + tweedle.js@2.1.0: {} + tween-functions@1.2.0: {} type-check@0.4.0: @@ -7264,9 +9950,28 @@ snapshots: type-fest@2.19.0: {} + typed-signals@2.5.0: {} + + typescript@5.7.3: {} + typescript@5.8.3: {} - undici-types@7.8.0: {} + uglify-js@3.19.3: + optional: true + + undici-types@7.12.0: {} + + unicode-properties@1.4.1: + dependencies: + base64-js: 1.5.1 + unicode-trie: 2.0.0 + + unicode-trie@2.0.0: + dependencies: + pako: 0.2.9 + tiny-inflate: 1.0.3 + + unicorn-magic@0.1.0: {} universalify@2.0.1: {} @@ -7277,6 +9982,8 @@ snapshots: unraw@3.0.0: {} + upath@2.0.1: {} + update-browserslist-db@1.1.3(browserslist@4.25.1): dependencies: browserslist: 4.25.1 @@ -7287,33 +9994,37 @@ snapshots: dependencies: punycode: 2.3.1 + utif2@4.1.0: + dependencies: + pako: 1.0.11 + util-deprecate@1.0.2: {} varint@6.0.0: {} - vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.85.1): + vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.85.1): dependencies: esbuild: 0.25.5 postcss: 8.5.6 rollup: 4.44.1 optionalDependencies: - '@types/node': 24.0.13 + '@types/node': 24.5.2 fsevents: 2.3.3 jiti: 1.21.7 sass-embedded: 1.85.1 - vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2): + vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2): dependencies: esbuild: 0.25.5 postcss: 8.5.6 rollup: 4.44.1 optionalDependencies: - '@types/node': 24.0.13 + '@types/node': 24.5.2 fsevents: 2.3.3 jiti: 1.21.7 sass-embedded: 1.89.2 - vite@7.0.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2): + vite@7.0.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2): dependencies: esbuild: 0.25.5 fdir: 6.4.6(picomatch@4.0.2) @@ -7322,22 +10033,22 @@ snapshots: rollup: 4.44.1 tinyglobby: 0.2.14 optionalDependencies: - '@types/node': 24.0.13 + '@types/node': 24.5.2 fsevents: 2.3.3 jiti: 1.21.7 sass-embedded: 1.89.2 - vitefu@1.0.7(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.85.1)): + vitefu@1.0.7(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.85.1)): optionalDependencies: - vite: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.85.1) + vite: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.85.1) - vitefu@1.0.7(vite@6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)): + vitefu@1.0.7(vite@6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)): optionalDependencies: - vite: 6.2.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + vite: 6.2.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) - vitefu@1.0.7(vite@7.0.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2)): + vitefu@1.0.7(vite@7.0.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2)): optionalDependencies: - vite: 7.0.0(@types/node@24.0.13)(jiti@1.21.7)(sass-embedded@1.89.2) + vite: 7.0.0(@types/node@24.5.2)(jiti@1.21.7)(sass-embedded@1.89.2) wcwidth@1.0.1: dependencies: @@ -7355,12 +10066,43 @@ snapshots: tr46: 1.0.1 webidl-conversions: 4.0.2 + which-boxed-primitive@1.1.1: + dependencies: + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.4 + + which-typed-array@1.1.19: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + which@2.0.2: dependencies: isexe: 2.0.0 word-wrap@1.2.5: {} + wordwrap@1.0.0: {} + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 @@ -7373,14 +10115,45 @@ snapshots: string-width: 5.1.2 strip-ansi: 7.1.0 + wrappy@1.0.2: {} + ws@8.18.3: {} + xml-parse-from-string@1.0.1: {} + + xml2js@0.5.0: + dependencies: + sax: 1.4.1 + xmlbuilder: 11.0.1 + + xmlbuilder@11.0.1: {} + + xmlcreate@2.0.4: {} + xstate@5.19.2: {} + y18n@5.0.8: {} + yallist@3.1.1: {} yaml@1.10.2: {} + yargs-parser@21.1.1: {} + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + yocto-queue@0.1.0: {} + yocto-queue@1.2.1: {} + zimmerframe@1.1.2: {} + + zod@3.25.76: {}