From e4d5f2bd2b30b1dd1a3daf340d718d7689d5e3cb Mon Sep 17 00:00:00 2001 From: Adrian Darian Date: Thu, 25 Jun 2026 01:14:37 -0700 Subject: [PATCH 1/4] refactor: simplify core data flow --- packages/README.md | 6 + packages/foresightjs-angular/LICENSE | 21 + packages/foresightjs-angular/README.md | 79 + packages/foresightjs-angular/ng-package.json | 7 + packages/foresightjs-angular/package.json | 70 + .../src/components/ForesightComponent.ts | 77 + .../src/directives/ForesightDirective.test.ts | 141 + .../src/directives/ForesightDirective.ts | 74 + .../src/helpers/injectForesightEvent.ts | 48 + packages/foresightjs-angular/src/index.ts | 37 + .../src/services/ForesightService.test.ts | 76 + .../src/services/ForesightService.ts | 87 + .../foresightjs-angular/src/tests/setup.ts | 74 + packages/foresightjs-angular/src/types.ts | 44 + .../src/utils/resolveOptions.ts | 31 + packages/foresightjs-angular/tsconfig.json | 26 + .../foresightjs-angular/tsconfig.lib.json | 12 + .../tsconfig.typecheck.json | 9 + .../foresightjs-angular/vitest.config.mjs | 16 + pnpm-lock.yaml | 3182 ++++++++++------- tsconfig.base.json | 2 + 21 files changed, 2738 insertions(+), 1381 deletions(-) create mode 100644 packages/foresightjs-angular/LICENSE create mode 100644 packages/foresightjs-angular/README.md create mode 100644 packages/foresightjs-angular/ng-package.json create mode 100644 packages/foresightjs-angular/package.json create mode 100644 packages/foresightjs-angular/src/components/ForesightComponent.ts create mode 100644 packages/foresightjs-angular/src/directives/ForesightDirective.test.ts create mode 100644 packages/foresightjs-angular/src/directives/ForesightDirective.ts create mode 100644 packages/foresightjs-angular/src/helpers/injectForesightEvent.ts create mode 100644 packages/foresightjs-angular/src/index.ts create mode 100644 packages/foresightjs-angular/src/services/ForesightService.test.ts create mode 100644 packages/foresightjs-angular/src/services/ForesightService.ts create mode 100644 packages/foresightjs-angular/src/tests/setup.ts create mode 100644 packages/foresightjs-angular/src/types.ts create mode 100644 packages/foresightjs-angular/src/utils/resolveOptions.ts create mode 100644 packages/foresightjs-angular/tsconfig.json create mode 100644 packages/foresightjs-angular/tsconfig.lib.json create mode 100644 packages/foresightjs-angular/tsconfig.typecheck.json create mode 100644 packages/foresightjs-angular/vitest.config.mjs diff --git a/packages/README.md b/packages/README.md index 44b603d9..49daa690 100644 --- a/packages/README.md +++ b/packages/README.md @@ -32,6 +32,12 @@ Official Vue 3 bindings: the `v-foresight` directive, the `useForesight` and `us **Published as:** `@foresightjs/vue` on npm +### [foresightjs-angular](./foresightjs-angular/) + +Official Angular bindings: the `[fsForesight]` directive, `ForesightService`, `injectForesightEvent`, and the `ForesightComponent` wrapper. + +**Published as:** `@foresightjs/angular` on npm + ## Development Packages ### [devpage-framework](./devpage-framework/) · [devpage-nextjs](./devpage-nextjs/) diff --git a/packages/foresightjs-angular/LICENSE b/packages/foresightjs-angular/LICENSE new file mode 100644 index 00000000..eb146a33 --- /dev/null +++ b/packages/foresightjs-angular/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Bart Spaans + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/foresightjs-angular/README.md b/packages/foresightjs-angular/README.md new file mode 100644 index 00000000..114e58da --- /dev/null +++ b/packages/foresightjs-angular/README.md @@ -0,0 +1,79 @@ +# @foresightjs/angular + +[![npm version](https://img.shields.io/npm/v/@foresightjs/angular.svg)](https://www.npmjs.com/package/@foresightjs/angular) +[![npm downloads](https://img.shields.io/npm/dt/@foresightjs/angular.svg)](https://www.npmjs.com/package/@foresightjs/angular) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[![TypeScript](https://img.shields.io/badge/%3C%2F%3E-TypeScript-%230074c1.svg)](http://www.typescriptlang.org/) + +Official Angular bindings for [ForesightJS](https://foresightjs.com/), a lightweight library that predicts user intent (mouse trajectory, keyboard navigation, scroll, touch) to trigger callbacks like prefetching _before_ the user interacts. + +- **Docs:** [foresightjs.com/docs/angular](https://foresightjs.com/docs/angular) +- **Core library:** [`js.foresight`](https://www.npmjs.com/package/js.foresight) +- **Playground:** [foresightjs.com](https://foresightjs.com/#playground) + +## Installation + +```bash +pnpm add @foresightjs/angular js.foresight +# or +npm install @foresightjs/angular js.foresight +``` + +Requires Angular 17+ + +## What's included + +- `ForesightDirective` -> standalone `[fsForesight]` directive to register an element with a callback or full options object +- `ForesightService` -> injectable service for manual registration and manager event subscriptions +- `ForesightComponent` -> standalone wrapper component that registers its host element +- `injectForesightEvent` -> helper to subscribe to a ForesightManager event for the lifetime of the current injection context + +## Directive usage + +```ts +import { Component } from "@angular/core" +import { ForesightDirective } from "@foresightjs/angular" + +@Component({ + standalone: true, + imports: [ForesightDirective], + template: ` + + Pricing {{ foresight.state().isPredicted ? "(ready)" : "" }} + + `, +}) +export class NavComponent { + readonly prefetchPricing = () => { + void fetch("/api/pricing") + } +} +``` + +For full options, bind an object: + +```html + +``` + +## Contributing + +Please see the [contributing guidelines](https://github.com/spaansba/ForesightJS/blob/main/CONTRIBUTING.md). + +## License + +[MIT](./LICENSE) diff --git a/packages/foresightjs-angular/ng-package.json b/packages/foresightjs-angular/ng-package.json new file mode 100644 index 00000000..d14b6ec3 --- /dev/null +++ b/packages/foresightjs-angular/ng-package.json @@ -0,0 +1,7 @@ +{ + "$schema": "./node_modules/ng-packagr/ng-package.schema.json", + "dest": "dist", + "lib": { + "entryFile": "src/index.ts" + } +} diff --git a/packages/foresightjs-angular/package.json b/packages/foresightjs-angular/package.json new file mode 100644 index 00000000..fd3aba1b --- /dev/null +++ b/packages/foresightjs-angular/package.json @@ -0,0 +1,70 @@ +{ + "name": "@foresightjs/angular", + "version": "0.3.2", + "description": "Angular bindings for ForesightJS - directives and services to register elements with the ForesightManager from Angular components.", + "type": "module", + "sideEffects": false, + "scripts": { + "build": "ng-packagr -p ng-package.json -c tsconfig.lib.json", + "build:prod": "ng-packagr -p ng-package.json -c tsconfig.lib.json", + "dev": "ng-packagr -p ng-package.json -c tsconfig.lib.json --watch", + "lint": "eslint . --fix", + "test": "vitest", + "test:run": "vitest run", + "test:watch": "vitest --watch", + "prepublishOnly": "pnpm test:run && pnpm build:prod" + }, + "main": "./dist/fesm2022/foresightjs-angular.mjs", + "module": "./dist/fesm2022/foresightjs-angular.mjs", + "types": "./dist/types/foresightjs-angular.d.ts", + "exports": { + ".": { + "types": "./dist/types/foresightjs-angular.d.ts", + "default": "./dist/fesm2022/foresightjs-angular.mjs" + } + }, + "homepage": "https://foresightjs.com/", + "repository": { + "type": "git", + "url": "git+https://github.com/spaansba/ForesightJS", + "directory": "packages/foresightjs-angular" + }, + "publishConfig": { + "access": "public" + }, + "files": [ + "dist", + "README.md", + "LICENSE", + "*.d.ts" + ], + "keywords": [ + "angular", + "foresight", + "js.foresight", + "foresightjs", + "angular-directive", + "prefetch", + "interaction-prediction", + "mouse-trajectory", + "ForesightDirective" + ], + "author": "Bart Spaans", + "license": "MIT", + "llms": "https://foresightjs.com/llms.txt", + "llmsFull": "https://foresightjs.com/llms-full.txt", + "peerDependencies": { + "@angular/core": "^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 || ^22.0.0", + "js.foresight": "^4.2.0" + }, + "devDependencies": { + "@angular/compiler": "^22.0.2", + "@angular/compiler-cli": "^22.0.2", + "@angular/core": "^22.0.2", + "js.foresight": "workspace:*", + "ng-packagr": "^22.0.0", + "tslib": "^2.8.1", + "typescript": "^6.0.2", + "vitest": "^4.1.2" + } +} diff --git a/packages/foresightjs-angular/src/components/ForesightComponent.ts b/packages/foresightjs-angular/src/components/ForesightComponent.ts new file mode 100644 index 00000000..35079365 --- /dev/null +++ b/packages/foresightjs-angular/src/components/ForesightComponent.ts @@ -0,0 +1,77 @@ +import { + Component, + ElementRef, + Input, + OnChanges, + OnDestroy, + computed, + signal, +} from "@angular/core" +import { + createUnregisteredSnapshot, + type ForesightCallback, + type ForesightElementState, + type HitSlop, +} from "js.foresight" +import { ForesightService } from "../services/ForesightService" +import type { ForesightRegistration } from "../types" +import { resolveOptions } from "../utils/resolveOptions" + +@Component({ + selector: "foresight", + standalone: true, + template: "", +}) +export class ForesightComponent implements OnChanges, OnDestroy { + @Input({ required: true }) callback!: ForesightCallback + @Input() foresightName?: string + @Input() hitSlop?: HitSlop + @Input() meta?: Record + @Input() reactivateAfter?: number + @Input() enabled?: boolean + + private readonly fallbackState = signal>( + createUnregisteredSnapshot(false) + ) + private readonly registration = signal(null) + + readonly state = computed(() => this.registration()?.state() ?? this.fallbackState()) + + constructor( + private readonly elementRef: ElementRef, + private readonly foresight: ForesightService + ) {} + + ngOnChanges(): void { + const options = resolveOptions({ + value: this.callback, + name: this.foresightName, + hitSlop: this.hitSlop, + meta: this.meta, + reactivateAfter: this.reactivateAfter, + enabled: this.enabled, + }) + + const registration = this.registration() + if (!options) { + registration?.unregister() + this.registration.set(null) + + return + } + + if (registration) { + registration.update(options) + + return + } + + const nextRegistration = this.foresight.register(this.elementRef.nativeElement, options) + this.registration.set(nextRegistration) + } + + ngOnDestroy(): void { + this.registration()?.unregister() + this.registration.set(null) + } +} diff --git a/packages/foresightjs-angular/src/directives/ForesightDirective.test.ts b/packages/foresightjs-angular/src/directives/ForesightDirective.test.ts new file mode 100644 index 00000000..6d78b071 --- /dev/null +++ b/packages/foresightjs-angular/src/directives/ForesightDirective.test.ts @@ -0,0 +1,141 @@ +import { ElementRef, NgZone } from "@angular/core" +import { beforeEach, describe, expect, it, vi } from "vitest" +import { createUnregisteredSnapshot } from "js.foresight" +import { ForesightService } from "../services/ForesightService" +import { mockState, registerSpy, updateElementOptionsSpy, unregisterSpy } from "../tests/setup" +import { ForesightDirective } from "./ForesightDirective" + +const zone = { + run: (fn: () => T): T => fn(), +} as NgZone + +const createDirective = (element: HTMLElement | SVGElement = document.createElement("button")) => + new ForesightDirective(new ElementRef(element), new ForesightService(zone)) + +beforeEach(() => { + registerSpy.mockClear() + updateElementOptionsSpy.mockClear() + unregisterSpy.mockClear() + mockState.listeners = [] + mockState.lastCallbackWrapper = null + mockState.currentSnapshot = createUnregisteredSnapshot(false) +}) + +describe("ForesightDirective", () => { + it("registers the host element on change", () => { + const callback = vi.fn() + const directive = createDirective() + directive.fsForesight = callback + directive.fsForesightName = "checkout" + + directive.ngOnChanges({}) + + expect(registerSpy).toHaveBeenCalledTimes(1) + expect(registerSpy.mock.calls[0][0].element).toBeInstanceOf(HTMLButtonElement) + expect(registerSpy.mock.calls[0][0].name).toBe("checkout") + }) + + it("accepts a full options object", () => { + const callback = vi.fn() + const directive = createDirective() + directive.fsForesight = { callback, name: "options-name", hitSlop: 20, enabled: false } + + directive.ngOnChanges({}) + + expect(registerSpy).toHaveBeenCalledTimes(1) + expect(registerSpy.mock.calls[0][0].name).toBe("options-name") + expect(registerSpy.mock.calls[0][0].hitSlop).toBe(20) + expect(registerSpy.mock.calls[0][0].enabled).toBe(false) + }) + + it("lets individual directive inputs override the options object", () => { + const callback = vi.fn() + const directive = createDirective() + directive.fsForesight = { callback, name: "base", hitSlop: 20, enabled: true } + directive.fsForesightName = "override" + directive.fsForesightEnabled = false + + directive.ngOnChanges({}) + + expect(registerSpy.mock.calls[0][0].name).toBe("override") + expect(registerSpy.mock.calls[0][0].enabled).toBe(false) + }) + + it("unregisters on destroy", () => { + const directive = createDirective() + directive.fsForesight = vi.fn() + directive.ngOnChanges({}) + + directive.ngOnDestroy() + + expect(unregisterSpy).toHaveBeenCalledTimes(1) + }) + + it("patches options on the same element without unregistering", () => { + const directive = createDirective() + directive.fsForesight = { callback: vi.fn(), name: "first" } + directive.ngOnChanges({}) + + directive.fsForesight = { callback: vi.fn(), name: "second" } + directive.ngOnChanges({}) + + expect(registerSpy).toHaveBeenCalledTimes(1) + expect(unregisterSpy).not.toHaveBeenCalled() + expect(updateElementOptionsSpy.mock.calls.at(-1)?.[1].name).toBe("second") + }) + + it("forwards the latest callback after an options patch", () => { + const first = vi.fn() + const second = vi.fn() + const directive = createDirective() + directive.fsForesight = { callback: first, name: "callback" } + directive.ngOnChanges({}) + + directive.fsForesight = { callback: second, name: "callback" } + directive.ngOnChanges({}) + + const fired = { ...createUnregisteredSnapshot(false), isPredicted: true } + mockState.lastCallbackWrapper?.(fired) + + expect(first).not.toHaveBeenCalled() + expect(second).toHaveBeenCalledWith(fired) + }) + + it("exposes state as an Angular signal", () => { + const directive = createDirective() + directive.fsForesight = vi.fn() + directive.ngOnChanges({}) + + expect(directive.state().isPredicted).toBe(false) + + mockState.currentSnapshot = { ...createUnregisteredSnapshot(false), isPredicted: true } + mockState.listeners.forEach(listener => listener()) + + expect(directive.state().isPredicted).toBe(true) + }) + + it("registers SVG elements", () => { + const circle = document.createElementNS("http://www.w3.org/2000/svg", "circle") + const directive = createDirective(circle) + directive.fsForesight = vi.fn() + directive.fsForesightName = "circle" + + directive.ngOnChanges({}) + + expect(registerSpy).toHaveBeenCalledTimes(1) + expect(registerSpy.mock.calls[0][0].element).toBeInstanceOf(SVGElement) + expect(registerSpy.mock.calls[0][0].name).toBe("circle") + }) + + it("unregisters when the directive value is cleared", () => { + const directive = createDirective() + directive.fsForesight = vi.fn() + directive.ngOnChanges({}) + + directive.fsForesight = null + directive.ngOnChanges({}) + + expect(unregisterSpy).toHaveBeenCalledTimes(1) + expect(directive.state().isRegistered).toBe(false) + }) +}) diff --git a/packages/foresightjs-angular/src/directives/ForesightDirective.ts b/packages/foresightjs-angular/src/directives/ForesightDirective.ts new file mode 100644 index 00000000..345a7e20 --- /dev/null +++ b/packages/foresightjs-angular/src/directives/ForesightDirective.ts @@ -0,0 +1,74 @@ +import { + Directive, + ElementRef, + Input, + OnChanges, + OnDestroy, + computed, + signal, +} from "@angular/core" +import { createUnregisteredSnapshot, type ForesightElementState, type HitSlop } from "js.foresight" +import { ForesightService } from "../services/ForesightService" +import type { ForesightDirectiveValue, ForesightRegistration } from "../types" +import { resolveOptions } from "../utils/resolveOptions" + +type ForesightDirectiveElement = HTMLElement | SVGElement + +@Directive({ + selector: "[fsForesight]", + standalone: true, + exportAs: "foresight", +}) +export class ForesightDirective implements OnChanges, OnDestroy { + @Input("fsForesight") fsForesight: ForesightDirectiveValue = null + @Input() fsForesightName?: string + @Input() fsForesightHitSlop?: HitSlop + @Input() fsForesightMeta?: Record + @Input() fsForesightReactivateAfter?: number + @Input() fsForesightEnabled?: boolean + + private readonly fallbackState = signal>( + createUnregisteredSnapshot(false) + ) + private readonly registration = signal(null) + + readonly state = computed(() => this.registration()?.state() ?? this.fallbackState()) + + constructor( + private readonly elementRef: ElementRef, + private readonly foresight: ForesightService + ) {} + + ngOnChanges(): void { + const options = resolveOptions({ + value: this.fsForesight, + name: this.fsForesightName, + hitSlop: this.fsForesightHitSlop, + meta: this.fsForesightMeta, + reactivateAfter: this.fsForesightReactivateAfter, + enabled: this.fsForesightEnabled, + }) + + const registration = this.registration() + if (!options) { + registration?.unregister() + this.registration.set(null) + + return + } + + if (registration) { + registration.update(options) + + return + } + + const nextRegistration = this.foresight.register(this.elementRef.nativeElement, options) + this.registration.set(nextRegistration) + } + + ngOnDestroy(): void { + this.registration()?.unregister() + this.registration.set(null) + } +} diff --git a/packages/foresightjs-angular/src/helpers/injectForesightEvent.ts b/packages/foresightjs-angular/src/helpers/injectForesightEvent.ts new file mode 100644 index 00000000..0169b1f3 --- /dev/null +++ b/packages/foresightjs-angular/src/helpers/injectForesightEvent.ts @@ -0,0 +1,48 @@ +import { DestroyRef, effect, inject, isSignal, type Signal } from "@angular/core" +import type { ForesightEvent, ForesightEventMap } from "js.foresight" +import { ForesightService } from "../services/ForesightService" + +type EventTypeInput = K | Signal | (() => K) +type ListenerInput = + | ((event: ForesightEventMap[K]) => void) + | Signal<(event: ForesightEventMap[K]) => void> + +const resolveEventType = (eventType: EventTypeInput): K => { + if (isSignal(eventType)) { + return eventType() + } + + if (typeof eventType === "function") { + return (eventType as () => K)() + } + + return eventType +} + +const resolveListener = ( + listener: ListenerInput +): ((event: ForesightEventMap[K]) => void) => { + if (isSignal(listener)) { + return listener() as (event: ForesightEventMap[K]) => void + } + + return listener as (event: ForesightEventMap[K]) => void +} + +export const injectForesightEvent = ( + eventType: EventTypeInput, + listener: ListenerInput +): void => { + const destroyRef = inject(DestroyRef) + const foresight = inject(ForesightService) + + const effectRef = effect(onCleanup => { + const unsubscribe = foresight.listen(resolveEventType(eventType), event => + resolveListener(listener)(event) + ) + + onCleanup(unsubscribe) + }) + + destroyRef.onDestroy(() => effectRef.destroy()) +} diff --git a/packages/foresightjs-angular/src/index.ts b/packages/foresightjs-angular/src/index.ts new file mode 100644 index 00000000..524ee9af --- /dev/null +++ b/packages/foresightjs-angular/src/index.ts @@ -0,0 +1,37 @@ +export { + ForesightManager, + type ForesightElementState, + type ForesightRegisterOptionsWithoutElement, + type ForesightCallback, + type UpdateForsightManagerSettings, + type ForesightManagerSettings, + type ForesightEvent, + type ForesightEventMap, + type ElementRegisteredEvent, + type DeviceStrategyChangedEvent, + type ElementUnregisteredEvent, + type CallbackInvokedEvent, + type CallbackCompletedEvent, + type MouseTrajectoryUpdateEvent, + type ScrollTrajectoryUpdateEvent, + type ManagerSettingsChangedEvent, + type HitSlop, + type CallbackHitType, + type CallbackHits, + type TouchDeviceStrategy, + type MinimumConnectionType, +} from "js.foresight" +export { + type ForesightOptions, + type ForesightDirectiveValue, + type ForesightStateSignal, + type ForesightRegistration, + type ForesightComponentOptions, + type ForesightDirectiveInputs, + type UseForesightOptions, + type UseForesightReturn, +} from "./types" +export { ForesightDirective } from "./directives/ForesightDirective" +export { ForesightComponent } from "./components/ForesightComponent" +export { ForesightService } from "./services/ForesightService" +export { injectForesightEvent } from "./helpers/injectForesightEvent" diff --git a/packages/foresightjs-angular/src/services/ForesightService.test.ts b/packages/foresightjs-angular/src/services/ForesightService.test.ts new file mode 100644 index 00000000..7ba07072 --- /dev/null +++ b/packages/foresightjs-angular/src/services/ForesightService.test.ts @@ -0,0 +1,76 @@ +import { NgZone } from "@angular/core" +import { beforeEach, describe, expect, it, vi } from "vitest" +import { createUnregisteredSnapshot } from "js.foresight" +import { addEventListenerSpy, mockState, registerSpy, unregisterSpy } from "../tests/setup" +import { ForesightService } from "./ForesightService" + +const zone = { + run: (fn: () => T): T => fn(), +} as NgZone + +const createService = () => new ForesightService(zone) + +beforeEach(() => { + addEventListenerSpy.mockClear() + registerSpy.mockClear() + unregisterSpy.mockClear() + mockState.listeners = [] + mockState.lastCallbackWrapper = null + mockState.currentSnapshot = createUnregisteredSnapshot(false) +}) + +describe("ForesightService", () => { + it("registers and unregisters an element", () => { + const service = createService() + const element = document.createElement("button") + const registration = service.register(element, { callback: vi.fn(), name: "service" }) + + expect(registerSpy).toHaveBeenCalledTimes(1) + expect(registerSpy.mock.calls[0][0].element).toBe(element) + expect(registration.state().isRegistered).toBe(false) + + registration.unregister() + + expect(unregisterSpy).toHaveBeenCalledTimes(1) + }) + + it("updates the state signal when the manager publishes a new snapshot", () => { + const service = createService() + const registration = service.register(document.createElement("button"), { callback: vi.fn() }) + + mockState.currentSnapshot = { ...createUnregisteredSnapshot(false), isPredicted: true } + mockState.listeners.forEach(listener => listener()) + + expect(registration.state().isPredicted).toBe(true) + }) + + it("subscribes to manager events and aborts on unsubscribe", () => { + const service = createService() + const listener = vi.fn() + const unsubscribe = service.listen("callbackCompleted", listener) + + expect(addEventListenerSpy).toHaveBeenCalledTimes(1) + expect(addEventListenerSpy).toHaveBeenCalledWith("callbackCompleted", expect.any(Function), { + signal: expect.any(AbortSignal), + }) + + const signal = addEventListenerSpy.mock.calls[0][2]?.signal as AbortSignal + expect(signal.aborted).toBe(false) + + unsubscribe() + + expect(signal.aborted).toBe(true) + }) + + it("forwards manager events to the listener", () => { + const service = createService() + const listener = vi.fn() + service.listen("callbackCompleted", listener) + + const registeredListener = addEventListenerSpy.mock.calls[0][1] + const fakeEvent = { type: "callbackCompleted", timestamp: 1 } + registeredListener(fakeEvent) + + expect(listener).toHaveBeenCalledWith(fakeEvent) + }) +}) diff --git a/packages/foresightjs-angular/src/services/ForesightService.ts b/packages/foresightjs-angular/src/services/ForesightService.ts new file mode 100644 index 00000000..5b2cd58f --- /dev/null +++ b/packages/foresightjs-angular/src/services/ForesightService.ts @@ -0,0 +1,87 @@ +import { Injectable, NgZone, signal } from "@angular/core" +import { + ForesightManager, + createUnregisteredSnapshot, + type ForesightElementState, + type ForesightEvent, + type ForesightEventMap, + type ForesightRegisterResult, +} from "js.foresight" +import type { ForesightOptions, ForesightRegistration } from "../types" + +@Injectable({ providedIn: "root" }) +export class ForesightService { + constructor(private readonly zone: NgZone) {} + + register(element: Element, options: ForesightOptions): ForesightRegistration { + const state = signal>(createUnregisteredSnapshot(false)) + let optionsRef = options + let result: ForesightRegisterResult | null = null + let unsubscribe: (() => void) | null = null + let isRegistered = false + + const callback = (s: ForesightElementState) => optionsRef.callback(s) + const syncState = () => { + const currentResult = result + if (currentResult) { + this.zone.run(() => state.set(currentResult.getSnapshot())) + } + } + + result = ForesightManager.instance.register({ + ...optionsRef, + element, + callback, + }) + isRegistered = true + state.set(result.getSnapshot()) + unsubscribe = result.subscribe(syncState) + + return { + state: state.asReadonly(), + update: nextOptions => { + optionsRef = nextOptions + + if (!isRegistered || !ForesightManager.instance.registeredElements.has(element)) { + return + } + + ForesightManager.instance.updateElementOptions(element, { + ...optionsRef, + callback, + }) + }, + unregister: () => { + if (!isRegistered) { + return + } + + unsubscribe?.() + unsubscribe = null + result?.unregister() + result = null + isRegistered = false + state.set(createUnregisteredSnapshot(false)) + }, + getSnapshot: () => result?.getSnapshot() ?? createUnregisteredSnapshot(false), + } + } + + listen( + eventType: K, + listener: (event: ForesightEventMap[K]) => void + ): () => void { + if (typeof document === "undefined") { + return () => {} + } + + const controller = new AbortController() + const stableListener = (event: ForesightEventMap[K]) => this.zone.run(() => listener(event)) + + ForesightManager.instance.addEventListener(eventType, stableListener, { + signal: controller.signal, + }) + + return () => controller.abort() + } +} diff --git a/packages/foresightjs-angular/src/tests/setup.ts b/packages/foresightjs-angular/src/tests/setup.ts new file mode 100644 index 00000000..599072e4 --- /dev/null +++ b/packages/foresightjs-angular/src/tests/setup.ts @@ -0,0 +1,74 @@ +import { beforeEach, vi } from "vitest" +import type { + ForesightCallback, + ForesightElementState, + ForesightRegisterOptions, + ForesightRegisterOptionsWithoutElement, +} from "js.foresight" + +export const mockState = { + listeners: [] as Array<() => void>, + currentSnapshot: null as ForesightElementState | null, + lastCallbackWrapper: null as ForesightCallback | null, + registeredElements: new Set(), +} + +beforeEach(() => { + mockState.registeredElements.clear() +}) + +export const registerSpy = vi.fn<(opts: ForesightRegisterOptions) => void>() +export const updateElementOptionsSpy = + vi.fn<(element: unknown, opts: Partial) => void>() +export const unregisterSpy = vi.fn<() => void>() +/* eslint-disable @typescript-eslint/no-explicit-any */ +export const addEventListenerSpy = + vi.fn< + (type: string, listener: (...args: any[]) => void, options?: { signal?: AbortSignal }) => void + >() +/* eslint-enable @typescript-eslint/no-explicit-any */ + +vi.mock("js.foresight", async importOriginal => { + const actual = await importOriginal() + + return { + ...actual, + ForesightManager: { + instance: { + register: (opts: ForesightRegisterOptions) => { + registerSpy(opts) + mockState.lastCallbackWrapper = opts.callback + mockState.registeredElements.add(opts.element) + + return { + ...(mockState.currentSnapshot ?? actual.createUnregisteredSnapshot(false)), + unregister: () => { + mockState.registeredElements.delete(opts.element) + unregisterSpy() + }, + subscribe: (fn: () => void) => { + mockState.listeners.push(fn) + + return () => { + mockState.listeners = mockState.listeners.filter(l => l !== fn) + } + }, + getSnapshot: () => + mockState.currentSnapshot ?? actual.createUnregisteredSnapshot(false), + } + }, + updateElementOptions: ( + _element: unknown, + opts: Partial<{ callback: ForesightCallback }> + ) => { + updateElementOptionsSpy(_element, opts) + if (opts.callback) { + mockState.lastCallbackWrapper = opts.callback + } + }, + addEventListener: addEventListenerSpy, + registeredElements: mockState.registeredElements, + }, + }, + } +}) diff --git a/packages/foresightjs-angular/src/types.ts b/packages/foresightjs-angular/src/types.ts new file mode 100644 index 00000000..f190b4dc --- /dev/null +++ b/packages/foresightjs-angular/src/types.ts @@ -0,0 +1,44 @@ +import type { + ForesightCallback, + ForesightElementState, + ForesightRegisterOptionsWithoutElement, + HitSlop, +} from "js.foresight" +import type { Signal } from "@angular/core" + +export type ForesightOptions = ForesightRegisterOptionsWithoutElement + +export type ForesightDirectiveValue = ForesightOptions | ForesightCallback | null | undefined + +export type ForesightStateSignal = Signal> + +export type ForesightRegistration = { + readonly state: ForesightStateSignal + update: (options: ForesightOptions) => void + unregister: () => void + getSnapshot: () => ForesightElementState +} + +/** + * Component/directive form of the registration options. The foresight `name` + * option is exposed as `foresightName` so an element's native `name` attribute + * can still be used independently. + */ +export type ForesightComponentOptions = Omit & { + foresightName?: string +} + +export type ForesightDirectiveInputs = { + value: ForesightDirectiveValue + name?: string + hitSlop?: HitSlop + meta?: Record + reactivateAfter?: number + enabled?: boolean +} + +/** @deprecated Use {@link ForesightOptions} instead. */ +export type UseForesightOptions = ForesightOptions + +/** @deprecated Use {@link ForesightRegistration} instead. */ +export type UseForesightReturn = ForesightRegistration diff --git a/packages/foresightjs-angular/src/utils/resolveOptions.ts b/packages/foresightjs-angular/src/utils/resolveOptions.ts new file mode 100644 index 00000000..f723fca3 --- /dev/null +++ b/packages/foresightjs-angular/src/utils/resolveOptions.ts @@ -0,0 +1,31 @@ +import type { ForesightCallback } from "js.foresight" +import type { ForesightDirectiveInputs, ForesightDirectiveValue, ForesightOptions } from "../types" + +const isCallbackShorthand = (value: ForesightDirectiveValue): value is ForesightCallback => + typeof value === "function" + +const hasValue = (value: T | undefined): value is T => value !== undefined + +export const resolveOptions = ({ + value, + name, + hitSlop, + meta, + reactivateAfter, + enabled, +}: ForesightDirectiveInputs): ForesightOptions | null => { + if (!value) { + return null + } + + const base = isCallbackShorthand(value) ? { callback: value } : value + + return { + ...base, + ...(hasValue(name) ? { name } : {}), + ...(hasValue(hitSlop) ? { hitSlop } : {}), + ...(hasValue(meta) ? { meta } : {}), + ...(hasValue(reactivateAfter) ? { reactivateAfter } : {}), + ...(hasValue(enabled) ? { enabled } : {}), + } +} diff --git a/packages/foresightjs-angular/tsconfig.json b/packages/foresightjs-angular/tsconfig.json new file mode 100644 index 00000000..eb91503e --- /dev/null +++ b/packages/foresightjs-angular/tsconfig.json @@ -0,0 +1,26 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "dist", + "composite": true, + "declaration": true, + "declarationMap": true, + "emitDecoratorMetadata": false, + "experimentalDecorators": true, + "importHelpers": true, + "inlineSources": true, + "noImplicitOverride": true, + "strict": true, + "useDefineForClassFields": false + }, + "angularCompilerOptions": { + "compilationMode": "partial", + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true + }, + "include": ["src/**/*"], + "exclude": ["node_modules", "dist"], + "references": [{ "path": "../js.foresight" }] +} diff --git a/packages/foresightjs-angular/tsconfig.lib.json b/packages/foresightjs-angular/tsconfig.lib.json new file mode 100644 index 00000000..2c58b0fa --- /dev/null +++ b/packages/foresightjs-angular/tsconfig.lib.json @@ -0,0 +1,12 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "composite": false, + "declaration": true, + "declarationMap": true, + "outDir": "dist", + "paths": {} + }, + "exclude": ["src/**/*.test.ts", "src/tests/**"], + "references": [] +} diff --git a/packages/foresightjs-angular/tsconfig.typecheck.json b/packages/foresightjs-angular/tsconfig.typecheck.json new file mode 100644 index 00000000..06ea9170 --- /dev/null +++ b/packages/foresightjs-angular/tsconfig.typecheck.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "composite": false, + "noEmit": true, + "paths": {} + }, + "references": [] +} diff --git a/packages/foresightjs-angular/vitest.config.mjs b/packages/foresightjs-angular/vitest.config.mjs new file mode 100644 index 00000000..5a5bbdb6 --- /dev/null +++ b/packages/foresightjs-angular/vitest.config.mjs @@ -0,0 +1,16 @@ +import { fileURLToPath } from "node:url" +import { defineConfig } from "vitest/config" + +export default defineConfig({ + resolve: { + alias: { + "js.foresight": fileURLToPath(new URL("../js.foresight/src/index.ts", import.meta.url)), + }, + }, + test: { + environment: "jsdom", + globals: true, + include: ["src/**/*.{test,spec}.ts"], + setupFiles: ["src/tests/setup.ts"], + }, +}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 06fc2e92..b9da3dad 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -49,7 +49,7 @@ importers: version: 8.58.0(eslint@10.2.0(jiti@2.7.0))(typescript@6.0.2) vite: specifier: ^8.0.16 - version: 8.0.16(@types/node@25.5.2)(esbuild@0.27.0)(jiti@2.7.0)(terser@5.43.1)(yaml@2.9.0) + version: 8.0.16(@types/node@25.5.2)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(terser@5.43.1)(yaml@2.9.0) packages/devpage-framework: dependencies: @@ -86,7 +86,7 @@ importers: devDependencies: '@tailwindcss/vite': specifier: ^4.2.2 - version: 4.2.2(vite@8.0.16(@types/node@25.5.2)(esbuild@0.27.0)(jiti@2.7.0)(terser@5.43.1)(yaml@2.9.0)) + version: 4.2.2(vite@8.0.16(@types/node@25.5.2)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(terser@5.43.1)(yaml@2.9.0)) '@types/react': specifier: ^19.2.14 version: 19.2.14 @@ -95,16 +95,16 @@ importers: version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': specifier: ^6.0.1 - version: 6.0.1(vite@8.0.16(@types/node@25.5.2)(esbuild@0.27.0)(jiti@2.7.0)(terser@5.43.1)(yaml@2.9.0)) + version: 6.0.1(vite@8.0.16(@types/node@25.5.2)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(terser@5.43.1)(yaml@2.9.0)) '@vitejs/plugin-vue': specifier: ^6.0.5 - version: 6.0.5(vite@8.0.16(@types/node@25.5.2)(esbuild@0.27.0)(jiti@2.7.0)(terser@5.43.1)(yaml@2.9.0))(vue@3.5.32(typescript@6.0.3)) + version: 6.0.5(vite@8.0.16(@types/node@25.5.2)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(terser@5.43.1)(yaml@2.9.0))(vue@3.5.32(typescript@6.0.3)) js.foresight-devtools: specifier: workspace:* version: link:../js.foresight-devtools react-scan: specifier: ^0.5.7 - version: 0.5.7(esbuild@0.27.0)(eslint@10.5.0(jiti@2.7.0))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 0.5.7(esbuild@0.28.1)(eslint@10.5.0(jiti@2.7.0))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rollup@4.62.2) tailwindcss: specifier: ^4.2.2 version: 4.2.4 @@ -113,7 +113,7 @@ importers: version: 6.0.3 vite: specifier: ^8.0.16 - version: 8.0.16(@types/node@25.5.2)(esbuild@0.27.0)(jiti@2.7.0)(terser@5.43.1)(yaml@2.9.0) + version: 8.0.16(@types/node@25.5.2)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(terser@5.43.1)(yaml@2.9.0) vue-tsc: specifier: ^3.2.6 version: 3.2.6(typescript@6.0.3) @@ -128,7 +128,7 @@ importers: version: link:../js.foresight-devtools next: specifier: ^15.5.18 - version: 15.5.18(@babel/core@7.29.7)(@opentelemetry/api@1.9.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 15.5.18(@babel/core@7.29.7)(@opentelemetry/api@1.9.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.101.0) react: specifier: ^19.2.4 version: 19.2.4 @@ -159,10 +159,10 @@ importers: dependencies: '@docusaurus/core': specifier: 3.9.2 - version: 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + version: 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) '@docusaurus/preset-classic': specifier: 3.9.2 - version: 3.9.2(@algolia/client-search@5.45.0)(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3)(typescript@6.0.2) + version: 3.9.2(@algolia/client-search@5.45.0)(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3)(typescript@6.0.2) '@foresightjs/react': specifier: workspace:* version: link:../foresightjs-react @@ -171,7 +171,7 @@ importers: version: 3.1.1(@types/react@19.2.14)(react@19.2.4) '@signalwire/docusaurus-plugin-llms-txt': specifier: ^1.2.2 - version: 1.2.2(@docusaurus/core@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)) + version: 1.2.2(@docusaurus/core@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)) '@tanstack/react-query': specifier: ^5.96.2 version: 5.96.2(react@19.2.4) @@ -205,13 +205,13 @@ importers: devDependencies: '@docusaurus/module-type-aliases': specifier: 3.9.2 - version: 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/tsconfig': specifier: 3.9.2 version: 3.9.2 '@docusaurus/types': specifier: 3.9.2 - version: 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@types/react': specifier: ^19.2.14 version: 19.2.14 @@ -222,6 +222,33 @@ importers: specifier: ~6.0.2 version: 6.0.2 + packages/foresightjs-angular: + devDependencies: + '@angular/compiler': + specifier: ^22.0.2 + version: 22.0.2 + '@angular/compiler-cli': + specifier: ^22.0.2 + version: 22.0.2(@angular/compiler@22.0.2)(typescript@6.0.3) + '@angular/core': + specifier: ^22.0.2 + version: 22.0.2(@angular/compiler@22.0.2)(rxjs@7.8.2) + js.foresight: + specifier: workspace:* + version: link:../js.foresight + ng-packagr: + specifier: ^22.0.0 + version: 22.0.0(@angular/compiler-cli@22.0.2(@angular/compiler@22.0.2)(typescript@6.0.3))(tailwindcss@4.2.4)(tslib@2.8.1)(typescript@6.0.3) + tslib: + specifier: ^2.8.1 + version: 2.8.1 + typescript: + specifier: ^6.0.2 + version: 6.0.3 + vitest: + specifier: ^4.1.2 + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.16(@types/node@25.5.2)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(terser@5.43.1)(yaml@2.9.0)) + packages/foresightjs-react: devDependencies: '@testing-library/react': @@ -253,13 +280,13 @@ importers: version: 6.0.2 vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.16(@types/node@25.5.2)(esbuild@0.27.0)(jiti@2.7.0)(terser@5.43.1)(yaml@2.9.0)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.16(@types/node@25.5.2)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(terser@5.43.1)(yaml@2.9.0)) packages/foresightjs-vue: devDependencies: '@vitejs/plugin-vue': specifier: ^6.0.5 - version: 6.0.5(vite@8.0.16(@types/node@25.5.2)(esbuild@0.27.0)(jiti@2.7.0)(terser@5.43.1)(yaml@2.9.0))(vue@3.5.32(typescript@6.0.2)) + version: 6.0.5(vite@8.0.16(@types/node@25.5.2)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(terser@5.43.1)(yaml@2.9.0))(vue@3.5.32(typescript@6.0.2)) '@vue/test-utils': specifier: ^2.4.6 version: 2.4.10(@vue/compiler-dom@3.5.32)(@vue/server-renderer@3.5.32(vue@3.5.32(typescript@6.0.2)))(vue@3.5.32(typescript@6.0.2)) @@ -277,10 +304,10 @@ importers: version: 6.0.2 unplugin-vue: specifier: ^7.2.0 - version: 7.2.0(@types/node@25.5.2)(esbuild@0.27.0)(jiti@2.7.0)(terser@5.43.1)(vue@3.5.32(typescript@6.0.2))(yaml@2.9.0) + version: 7.2.0(@types/node@25.5.2)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(terser@5.43.1)(vue@3.5.32(typescript@6.0.2))(yaml@2.9.0) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.16(@types/node@25.5.2)(esbuild@0.27.0)(jiti@2.7.0)(terser@5.43.1)(yaml@2.9.0)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.16(@types/node@25.5.2)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(terser@5.43.1)(yaml@2.9.0)) vue: specifier: ^3.5.17 version: 3.5.32(typescript@6.0.2) @@ -326,7 +353,7 @@ importers: version: 6.0.2 vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.16(@types/node@25.5.2)(esbuild@0.27.0)(jiti@2.7.0)(terser@5.43.1)(yaml@2.9.0)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.16(@types/node@25.5.2)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(terser@5.43.1)(yaml@2.9.0)) packages/js.foresight-devtools: dependencies: @@ -351,7 +378,7 @@ importers: version: 6.0.2 vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.16(@types/node@25.5.2)(esbuild@0.27.0)(jiti@2.7.0)(terser@5.43.1)(yaml@2.9.0)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.16(@types/node@25.5.2)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(terser@5.43.1)(yaml@2.9.0)) packages: @@ -441,6 +468,38 @@ packages: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@angular/compiler-cli@22.0.2': + resolution: {integrity: sha512-jBGGWdbrPQhIHWUz523CLQqEh/iYWxzZt7U9y0Ocdbas4/OlHcqaERO/K4ULkxclWX8MWYQoxal/MZbYOBfXgw==} + engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} + hasBin: true + peerDependencies: + '@angular/compiler': 22.0.2 + typescript: '>=6.0 <6.1' + peerDependenciesMeta: + typescript: + optional: true + + '@angular/compiler@22.0.2': + resolution: {integrity: sha512-5G+h/4/iCfqdTBsSgjB46Oe4oC6jXutCpFc5JYWRpnJWsbp3UfwRhwGVWIV1DBPnR8H/3QZzteRP1jINiH5+hg==} + engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} + + '@angular/core@22.0.2': + resolution: {integrity: sha512-YMs6OZNeXh4tg67ePwSRN426WYvjqGdjxEwLrdOONKAruOmJAzW/Tqe328k/4SHfdbJTR87GPpRi5FzVP43DRA==} + engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} + peerDependencies: + '@angular/compiler': 22.0.2 + rxjs: ^6.5.3 || ^7.4.0 + zone.js: ~0.15.0 || ~0.16.0 + peerDependenciesMeta: + '@angular/compiler': + optional: true + zone.js: + optional: true + '@asamuzakjp/css-color@5.1.5': resolution: {integrity: sha512-8cMAA1bE66Mb/tfmkhcfJLjEPgyT7SSy6lW6id5XL113ai1ky76d/1L27sGnXCMsLfq66DInAU3OzuahB4lu9Q==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} @@ -460,26 +519,18 @@ packages: resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.28.0': - resolution: {integrity: sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==} - engines: {node: '>=6.9.0'} - '@babel/compat-data@7.29.7': resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==} engines: {node: '>=6.9.0'} - '@babel/core@7.28.5': - resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==} + '@babel/core@7.29.0': + resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} engines: {node: '>=6.9.0'} '@babel/core@7.29.7': resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==} engines: {node: '>=6.9.0'} - '@babel/generator@7.28.5': - resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} - engines: {node: '>=6.9.0'} - '@babel/generator@7.29.7': resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==} engines: {node: '>=6.9.0'} @@ -492,10 +543,6 @@ packages: resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.27.2': - resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} - engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.29.7': resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==} engines: {node: '>=6.9.0'} @@ -517,10 +564,6 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - '@babel/helper-globals@7.28.0': - resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} - engines: {node: '>=6.9.0'} - '@babel/helper-globals@7.29.7': resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==} engines: {node: '>=6.9.0'} @@ -529,20 +572,10 @@ packages: resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.27.1': - resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} - engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.29.7': resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.28.3': - resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/helper-module-transforms@7.29.7': resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==} engines: {node: '>=6.9.0'} @@ -597,10 +630,6 @@ packages: resolution: {integrity: sha512-8AWCJ2VJJyDFlGBep5GpaaQ9AAaE/FjAcrqI7jyssYhtL7WGV0DOKpJsQqM037xDbpRLHXsY8TwU7zDma7coOw==} engines: {node: ^20.19.0 || >=22.12.0} - '@babel/helper-validator-option@7.27.1': - resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.29.7': resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} engines: {node: '>=6.9.0'} @@ -609,19 +638,10 @@ packages: resolution: {integrity: sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.28.4': - resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} - engines: {node: '>=6.9.0'} - '@babel/helpers@7.29.7': resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} engines: {node: '>=6.9.0'} - '@babel/parser@7.29.2': - resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.29.7': resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==} engines: {node: '>=6.0.0'} @@ -1090,26 +1110,14 @@ packages: resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} engines: {node: '>=6.9.0'} - '@babel/template@7.27.2': - resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} - engines: {node: '>=6.9.0'} - '@babel/template@7.29.7': resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.28.5': - resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} - engines: {node: '>=6.9.0'} - '@babel/traverse@7.29.7': resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.5': - resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} - engines: {node: '>=6.9.0'} - '@babel/types@7.29.0': resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} @@ -1634,158 +1642,158 @@ packages: '@emnapi/wasi-threads@1.2.1': resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} - '@esbuild/aix-ppc64@0.27.0': - resolution: {integrity: sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==} + '@esbuild/aix-ppc64@0.28.1': + resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.27.0': - resolution: {integrity: sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==} + '@esbuild/android-arm64@0.28.1': + resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.27.0': - resolution: {integrity: sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==} + '@esbuild/android-arm@0.28.1': + resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.27.0': - resolution: {integrity: sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==} + '@esbuild/android-x64@0.28.1': + resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.27.0': - resolution: {integrity: sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==} + '@esbuild/darwin-arm64@0.28.1': + resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.27.0': - resolution: {integrity: sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==} + '@esbuild/darwin-x64@0.28.1': + resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.27.0': - resolution: {integrity: sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==} + '@esbuild/freebsd-arm64@0.28.1': + resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.27.0': - resolution: {integrity: sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==} + '@esbuild/freebsd-x64@0.28.1': + resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.27.0': - resolution: {integrity: sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==} + '@esbuild/linux-arm64@0.28.1': + resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.27.0': - resolution: {integrity: sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==} + '@esbuild/linux-arm@0.28.1': + resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.27.0': - resolution: {integrity: sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==} + '@esbuild/linux-ia32@0.28.1': + resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.27.0': - resolution: {integrity: sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==} + '@esbuild/linux-loong64@0.28.1': + resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.27.0': - resolution: {integrity: sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==} + '@esbuild/linux-mips64el@0.28.1': + resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.27.0': - resolution: {integrity: sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==} + '@esbuild/linux-ppc64@0.28.1': + resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.27.0': - resolution: {integrity: sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==} + '@esbuild/linux-riscv64@0.28.1': + resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.27.0': - resolution: {integrity: sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==} + '@esbuild/linux-s390x@0.28.1': + resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.27.0': - resolution: {integrity: sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==} + '@esbuild/linux-x64@0.28.1': + resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.27.0': - resolution: {integrity: sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==} + '@esbuild/netbsd-arm64@0.28.1': + resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.27.0': - resolution: {integrity: sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==} + '@esbuild/netbsd-x64@0.28.1': + resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.27.0': - resolution: {integrity: sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==} + '@esbuild/openbsd-arm64@0.28.1': + resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.27.0': - resolution: {integrity: sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==} + '@esbuild/openbsd-x64@0.28.1': + resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.27.0': - resolution: {integrity: sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==} + '@esbuild/openharmony-arm64@0.28.1': + resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.27.0': - resolution: {integrity: sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==} + '@esbuild/sunos-x64@0.28.1': + resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.27.0': - resolution: {integrity: sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==} + '@esbuild/win32-arm64@0.28.1': + resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.27.0': - resolution: {integrity: sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==} + '@esbuild/win32-ia32@0.28.1': + resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.27.0': - resolution: {integrity: sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==} + '@esbuild/win32-x64@0.28.1': + resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -1965,105 +1973,89 @@ packages: resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} cpu: [arm64] os: [linux] - libc: [glibc] '@img/sharp-libvips-linux-arm@1.2.4': resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} cpu: [arm] os: [linux] - libc: [glibc] '@img/sharp-libvips-linux-ppc64@1.2.4': resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} cpu: [ppc64] os: [linux] - libc: [glibc] '@img/sharp-libvips-linux-riscv64@1.2.4': resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} cpu: [riscv64] os: [linux] - libc: [glibc] '@img/sharp-libvips-linux-s390x@1.2.4': resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} cpu: [s390x] os: [linux] - libc: [glibc] '@img/sharp-libvips-linux-x64@1.2.4': resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} cpu: [x64] os: [linux] - libc: [glibc] '@img/sharp-libvips-linuxmusl-arm64@1.2.4': resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} cpu: [arm64] os: [linux] - libc: [musl] '@img/sharp-libvips-linuxmusl-x64@1.2.4': resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} cpu: [x64] os: [linux] - libc: [musl] '@img/sharp-linux-arm64@0.34.5': resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - libc: [glibc] '@img/sharp-linux-arm@0.34.5': resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] - libc: [glibc] '@img/sharp-linux-ppc64@0.34.5': resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ppc64] os: [linux] - libc: [glibc] '@img/sharp-linux-riscv64@0.34.5': resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [riscv64] os: [linux] - libc: [glibc] '@img/sharp-linux-s390x@0.34.5': resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] - libc: [glibc] '@img/sharp-linux-x64@0.34.5': resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - libc: [glibc] '@img/sharp-linuxmusl-arm64@0.34.5': resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - libc: [musl] '@img/sharp-linuxmusl-x64@0.34.5': resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - libc: [musl] '@img/sharp-wasm32@0.34.5': resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} @@ -2173,6 +2165,112 @@ packages: '@types/react': '>=16' react: '>=16' + '@napi-rs/nice-android-arm-eabi@1.1.1': + resolution: {integrity: sha512-kjirL3N6TnRPv5iuHw36wnucNqXAO46dzK9oPb0wj076R5Xm8PfUVA9nAFB5ZNMmfJQJVKACAPd/Z2KYMppthw==} + engines: {node: '>= 10'} + cpu: [arm] + os: [android] + + '@napi-rs/nice-android-arm64@1.1.1': + resolution: {integrity: sha512-blG0i7dXgbInN5urONoUCNf+DUEAavRffrO7fZSeoRMJc5qD+BJeNcpr54msPF6qfDD6kzs9AQJogZvT2KD5nw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@napi-rs/nice-darwin-arm64@1.1.1': + resolution: {integrity: sha512-s/E7w45NaLqTGuOjC2p96pct4jRfo61xb9bU1unM/MJ/RFkKlJyJDx7OJI/O0ll/hrfpqKopuAFDV8yo0hfT7A==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@napi-rs/nice-darwin-x64@1.1.1': + resolution: {integrity: sha512-dGoEBnVpsdcC+oHHmW1LRK5eiyzLwdgNQq3BmZIav+9/5WTZwBYX7r5ZkQC07Nxd3KHOCkgbHSh4wPkH1N1LiQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@napi-rs/nice-freebsd-x64@1.1.1': + resolution: {integrity: sha512-kHv4kEHAylMYmlNwcQcDtXjklYp4FCf0b05E+0h6nDHsZ+F0bDe04U/tXNOqrx5CmIAth4vwfkjjUmp4c4JktQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@napi-rs/nice-linux-arm-gnueabihf@1.1.1': + resolution: {integrity: sha512-E1t7K0efyKXZDoZg1LzCOLxgolxV58HCkaEkEvIYQx12ht2pa8hoBo+4OB3qh7e+QiBlp1SRf+voWUZFxyhyqg==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@napi-rs/nice-linux-arm64-gnu@1.1.1': + resolution: {integrity: sha512-CIKLA12DTIZlmTaaKhQP88R3Xao+gyJxNWEn04wZwC2wmRapNnxCUZkVwggInMJvtVElA+D4ZzOU5sX4jV+SmQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@napi-rs/nice-linux-arm64-musl@1.1.1': + resolution: {integrity: sha512-+2Rzdb3nTIYZ0YJF43qf2twhqOCkiSrHx2Pg6DJaCPYhhaxbLcdlV8hCRMHghQ+EtZQWGNcS2xF4KxBhSGeutg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@napi-rs/nice-linux-ppc64-gnu@1.1.1': + resolution: {integrity: sha512-4FS8oc0GeHpwvv4tKciKkw3Y4jKsL7FRhaOeiPei0X9T4Jd619wHNe4xCLmN2EMgZoeGg+Q7GY7BsvwKpL22Tg==} + engines: {node: '>= 10'} + cpu: [ppc64] + os: [linux] + + '@napi-rs/nice-linux-riscv64-gnu@1.1.1': + resolution: {integrity: sha512-HU0nw9uD4FO/oGCCk409tCi5IzIZpH2agE6nN4fqpwVlCn5BOq0MS1dXGjXaG17JaAvrlpV5ZeyZwSon10XOXw==} + engines: {node: '>= 10'} + cpu: [riscv64] + os: [linux] + + '@napi-rs/nice-linux-s390x-gnu@1.1.1': + resolution: {integrity: sha512-2YqKJWWl24EwrX0DzCQgPLKQBxYDdBxOHot1KWEq7aY2uYeX+Uvtv4I8xFVVygJDgf6/92h9N3Y43WPx8+PAgQ==} + engines: {node: '>= 10'} + cpu: [s390x] + os: [linux] + + '@napi-rs/nice-linux-x64-gnu@1.1.1': + resolution: {integrity: sha512-/gaNz3R92t+dcrfCw/96pDopcmec7oCcAQ3l/M+Zxr82KT4DljD37CpgrnXV+pJC263JkW572pdbP3hP+KjcIg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@napi-rs/nice-linux-x64-musl@1.1.1': + resolution: {integrity: sha512-xScCGnyj/oppsNPMnevsBe3pvNaoK7FGvMjT35riz9YdhB2WtTG47ZlbxtOLpjeO9SqqQ2J2igCmz6IJOD5JYw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@napi-rs/nice-openharmony-arm64@1.1.1': + resolution: {integrity: sha512-6uJPRVwVCLDeoOaNyeiW0gp2kFIM4r7PL2MczdZQHkFi9gVlgm+Vn+V6nTWRcu856mJ2WjYJiumEajfSm7arPQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [openharmony] + + '@napi-rs/nice-win32-arm64-msvc@1.1.1': + resolution: {integrity: sha512-uoTb4eAvM5B2aj/z8j+Nv8OttPf2m+HVx3UjA5jcFxASvNhQriyCQF1OB1lHL43ZhW+VwZlgvjmP5qF3+59atA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@napi-rs/nice-win32-ia32-msvc@1.1.1': + resolution: {integrity: sha512-CNQqlQT9MwuCsg1Vd/oKXiuH+TcsSPJmlAFc5frFyX/KkOh0UpBLEj7aoY656d5UKZQMQFP7vJNa1DNUNORvug==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@napi-rs/nice-win32-x64-msvc@1.1.1': + resolution: {integrity: sha512-vB+4G/jBQCAh0jelMTY3+kgFy00Hlx2f2/1zjMoH821IbplbWZOkLiTYXQkygNTzQJTq5cvwBDgn2ppHD+bglQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@napi-rs/nice@1.1.1': + resolution: {integrity: sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==} + engines: {node: '>= 10'} + '@napi-rs/wasm-runtime@1.1.4': resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==} peerDependencies: @@ -2205,28 +2303,24 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [glibc] '@next/swc-linux-arm64-musl@15.5.18': resolution: {integrity: sha512-glaCczEWIrHsokFZ3pP08U4BpKxwIdnT+txdOM32OBgpL9Yw4aqx8NejmgtZQZOdstQ5f0L3CasIZudzCuD+nw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - libc: [musl] '@next/swc-linux-x64-gnu@15.5.18': resolution: {integrity: sha512-oUfg2EgJmU3R0OCOWiokGFUTvZiPfXtriXiuF3YNxRoROCdgvTedHIzYoeKH34gsZxS/V7mHbfq2hpAHwhH1/A==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [glibc] '@next/swc-linux-x64-musl@15.5.18': resolution: {integrity: sha512-JLxSP3KTd9iu/bvUMQxH7RJo9xKSHf55/6RPE4a6FTSZygGn7uvZbCej0AHXydwkggQGSD9UddSjwv6Xz5ESfA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - libc: [musl] '@next/swc-win32-arm64-msvc@15.5.18': resolution: {integrity: sha512-ir1v7enP52K2HNz3tQQvwF+x7VNxBk1ciiZ18WBPvxf4C59IqdfmHPJYK3vH7rSxpuCVw/8C712wTXNAtEp+NA==} @@ -2351,10 +2445,6 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.3.0 <1.10.0' - '@opentelemetry/semantic-conventions@1.40.0': - resolution: {integrity: sha512-cifvXDhcqMwwTlTK04GBNeIe7yyo28Mfby85QXFe1Yk8nmi36Ab/5UQwptOx84SsoGNRg+EVSjwzfSZMy6pmlw==} - engines: {node: '>=14'} - '@opentelemetry/semantic-conventions@1.41.1': resolution: {integrity: sha512-/UhIkaZgPutTFmQ7RnIJGgDXZmtEJ7Dvi86xNTFWcnRxVRNk/aotsqDJYeEvDP+FSMB2SdW+pQzNMcWP0rwuNA==} engines: {node: '>=14'} @@ -2365,97 +2455,179 @@ packages: cpu: [arm] os: [android] + '@oxc-parser/binding-android-arm-eabi@0.135.0': + resolution: {integrity: sha512-sHeZItACNcA5WRAWqF6ixriR4GkZDyY10gVgnZU7pXku1DjHFATSqnwZM809jl0gXPHxb6fKzYQCK7bNK5cACQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + '@oxc-parser/binding-android-arm64@0.132.0': resolution: {integrity: sha512-SThDrSeamB/kG2+NxcJ5/wSLcV6dUqDknrPLqFYQ0ST/55mtBP4M7Q/f3QbubH6aAd11wpzZn/nwbVRSdobOpg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] + '@oxc-parser/binding-android-arm64@0.135.0': + resolution: {integrity: sha512-wPte+SzgzWWFgMSF8YZDNM+tBXtJg0AXBi7+tU3yS2z1f2Af9kRLZLKuJojADmuD/cZexmnMHHC3SDItTW77Iw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + '@oxc-parser/binding-darwin-arm64@0.132.0': resolution: {integrity: sha512-Lc0f/TYoKBghE5/2Gsv7bLXk+TJZunx2Tf61X8hG4ARXdc8UYI26dCGccFSd1AyFbK3jfaNXtMnupggDbjPXdQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] + '@oxc-parser/binding-darwin-arm64@0.135.0': + resolution: {integrity: sha512-BmKz3lHIsqVos+9aPcdYCT9MG3APoUyM43KlEFhJMWNVDOGG8FKyiFz81Bc+mGz2o0hpuQ3PfXLfVWJrKXjo2g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + '@oxc-parser/binding-darwin-x64@0.132.0': resolution: {integrity: sha512-RG2eJIpf7C21z9HSSXFw1bTArdpKe7Y4fwcJTwRq1yCSe1vSavaN9GA1sm9KqzemTLAGVktQ+7qBTGp0vQeUZg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] + '@oxc-parser/binding-darwin-x64@0.135.0': + resolution: {integrity: sha512-dM8BS+8+Br1fNvmh2QZbGiHaYttwLebRa6J4Uz9vuFzMNmvsdRYwf7993ptOaV0JTrR63AaoVLjX7nhWbijxjQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + '@oxc-parser/binding-freebsd-x64@0.132.0': resolution: {integrity: sha512-wQIPntPLtJ8NcBpvKPbEv3NqzV6k8eP8tP/jE9Rg8HTg/j7urZGFSsTCPCW5k77Qfw2DM4vRvc9p3I4yq/Shvw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] + '@oxc-parser/binding-freebsd-x64@0.135.0': + resolution: {integrity: sha512-xlZnvvJdR9bGu2pOhvR5hMuKPHCE6Sa9owK5A484mzjHdm75VRV5nCs5w/jkmGODMMTFc+KN7EnZqEieM813kw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + '@oxc-parser/binding-linux-arm-gnueabihf@0.132.0': resolution: {integrity: sha512-PixKEpeSe3yxQWqNyOCBALRYc72+Tj7ILDofUl3iXo25cVOzLA6jHUhmOINRtWIPh7dbUie3QNeabwaQpZTw6w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] + '@oxc-parser/binding-linux-arm-gnueabihf@0.135.0': + resolution: {integrity: sha512-PSR8LmBK/H/PQRiN8g7RebQgZX/ntVCrdT/JBfNxE5ezdHG1s2i4rbazsRJYD83TTI1MmgTpC0MGL42PLtskQQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + '@oxc-parser/binding-linux-arm-musleabihf@0.132.0': resolution: {integrity: sha512-sCR+DzGHlyHKnbA2z9zWjTUhIo8Sy0enJl4RDsBwPmkxYynPatpwOAWe8W5127SlW0boqUWHGtr1NWn5UwIhXQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] + '@oxc-parser/binding-linux-arm-musleabihf@0.135.0': + resolution: {integrity: sha512-I85GJXzfUsigkkk7Ngdz95C217M4FdUi1Z2HrX5UyPmURobwQZ7m2bbUvwFkz4VGZd+lymFGKHvDZ3RQC9qOzA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + '@oxc-parser/binding-linux-arm64-gnu@0.132.0': resolution: {integrity: sha512-sQBix5P2cW+IpzTcCwYxnh9yALrKSIkKJThspBvMGcygSMnbzkSvhN7SfuX1hvBk8y1XEChsdkU3ET0V5DmzUw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - libc: [glibc] + + '@oxc-parser/binding-linux-arm64-gnu@0.135.0': + resolution: {integrity: sha512-zqEY0npz0g0aGZj/8a5BclunjVDytsBQHYtIC10Gd26HcrLwbVF6YDbqRQjunMGYdSo97u6xOBl05aTDI2diDQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] '@oxc-parser/binding-linux-arm64-musl@0.132.0': resolution: {integrity: sha512-WozHg3Kc//8Sk756HXXgMbEAvqtG+Lzb9JOojwQzIGDtN78Az2dLttkb71akWYUF/8IgYfDSlfKh4Uot8is5Vw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - libc: [musl] + + '@oxc-parser/binding-linux-arm64-musl@0.135.0': + resolution: {integrity: sha512-mWAfprP819gQ2qYst1RxgTI8b/z0b29OpoKfRflIXLHde2dZLihQD4g47Onuvtpo5GPIkMYPRlX9QoeZfs/GnQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] '@oxc-parser/binding-linux-ppc64-gnu@0.132.0': resolution: {integrity: sha512-CmX/ulNBOEwWTyVRmcpYKAcAizW6+OjtLJgo7fXoL9OqQvjF4VER8tPomv44vwzfSCy1BHbsB0ZlZYzYJNj4cA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] - libc: [glibc] + + '@oxc-parser/binding-linux-ppc64-gnu@0.135.0': + resolution: {integrity: sha512-gri8c2AOmJKJwOux2KTHFBfUaXoJURuVMKhmKEi/2hTF55cQteTDV2XNfTiE5oCC+Tnem1Y4/MWzcyDadtsSag==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] '@oxc-parser/binding-linux-riscv64-gnu@0.132.0': resolution: {integrity: sha512-j9oQS+hM90SdhviNGWbPgT4+Rlq+ac++q/zjgwPD1mVHgxHzATvoRGtDx0sXGmFOQ9J9YkwAhYGb5MAHL6TAsA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] - libc: [glibc] + + '@oxc-parser/binding-linux-riscv64-gnu@0.135.0': + resolution: {integrity: sha512-Y2tkupCG5wo0SxH2rMLG4d4Kmv6DaM3sBp+GuM5lox0S8Za6VxKgQrY2Mut088QQxKkEE89n/4CCCgmw2o0e3Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] '@oxc-parser/binding-linux-riscv64-musl@0.132.0': resolution: {integrity: sha512-bLz+Xi+Agnfmd7kWPEsSVwCn2k4EyIalZkNBcQ0OGIv9rqn8VgCPLNd03tM9mKX/5TdlvDXalz0q71BIrOPNqg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] - libc: [musl] + + '@oxc-parser/binding-linux-riscv64-musl@0.135.0': + resolution: {integrity: sha512-xDRJq6i6WTynjeP+ISbDpyH4p9BaJ0wuQcL0lCSDkt9qOXC9dmwpOu1VG/TlwmPI3KpYntmO9nJCuc3TMTsNBA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] '@oxc-parser/binding-linux-s390x-gnu@0.132.0': resolution: {integrity: sha512-U6t2qbJU0ypTfyj9QV3W1Y6mITDTL8ai/OR6NUn85vyHthOvobKWgXzU4tu0EskSzlpuVFz1g0jFGulDIUKHxQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] - libc: [glibc] + + '@oxc-parser/binding-linux-s390x-gnu@0.135.0': + resolution: {integrity: sha512-V4MoUuiCRNvihxhIufRxvK+ka013V4joTSK0FAGA1KEjLuNprfH6N/Qw2uxQEVIFuNYMhD/hV6xJ/ptbzlKdHg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] '@oxc-parser/binding-linux-x64-gnu@0.132.0': resolution: {integrity: sha512-WcEaSNHFk8yz5YFlQQAlhq6jOFmZBB/RKE7uzhyCIf+pF1Lmv9gUH4221mle2Gd9iHyWT3ySNph8yZgb1xYdWg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - libc: [glibc] + + '@oxc-parser/binding-linux-x64-gnu@0.135.0': + resolution: {integrity: sha512-JCFZ7zM7KXOKoPAbK/ZB4wY0M1jxRECiem2UQuiXLjzGqS9+hno7mtX+qyK2F7HWK2xPhyJb+frpcOtk5DKOtg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] '@oxc-parser/binding-linux-x64-musl@0.132.0': resolution: {integrity: sha512-iQrV4iJzQgRwK3BWRmQl1C3C6g3wYpXN2WLdQdyR+efoUnncdShZAVp9OgcojtlD3MDRbuOMGG3SjxF4fL4nlQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - libc: [musl] + + '@oxc-parser/binding-linux-x64-musl@0.135.0': + resolution: {integrity: sha512-9jSVS1b3hOV7sdKH4aA2DFfnTz0RgQd0v2BefR+LYbH8yIlmSM22JJZbAAjVeVXmFgUAk3zJQ1tpE/Nd+Vi2YQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] '@oxc-parser/binding-openharmony-arm64@0.132.0': resolution: {integrity: sha512-FWzmUGrZ6GUby4U7WIwcCtab6tdmlTO3xTRRKyb5kjIJVEiaUAT8animUG/nK8ZCA8gkRkPOTId4rl6uTqUmJQ==} @@ -2463,29 +2635,58 @@ packages: cpu: [arm64] os: [openharmony] + '@oxc-parser/binding-openharmony-arm64@0.135.0': + resolution: {integrity: sha512-M857ZLBSdn1Uy/SJJz5zh0qGu67B4P9omCgXGBU2LLqTzraX6ZjVNaKq5yW1PDw/LgJXDXR/dbZfgmB310f11Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + '@oxc-parser/binding-wasm32-wasi@0.132.0': resolution: {integrity: sha512-TlbMppxJI5CjWDes0QaP6G3aneVg1yikBu5QYI+DUShF9WDL66ccgKFNNGmi/Wybtszw6hxwAvv76T4DaPKnHw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [wasm32] + '@oxc-parser/binding-wasm32-wasi@0.135.0': + resolution: {integrity: sha512-2w6DVcntQZX9U5RhXtgiWb3FLWFB5EcwI1U8yr3htOCJUJjagN4BFUHz/Y/d9ZsumndZ6ByxxWEtbUZNE1bfFw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [wasm32] + '@oxc-parser/binding-win32-arm64-msvc@0.132.0': resolution: {integrity: sha512-RH/NbFjGKqdUAUi7Oh3LQPxUk2hsWFEEQ38HSnbRQT8QjBZFKqL1fMbmsB3N4jy/KPh9iX94+9dmkEMBBbambw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] + '@oxc-parser/binding-win32-arm64-msvc@0.135.0': + resolution: {integrity: sha512-rX1U8+IH2Z37EJjDXKa1iifvUQAdba+vZ4Ewj1iaG5eA/QaSybzclCOwtWa0/5BuUQnnK/T2JHUEFrwhL6Ck2Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + '@oxc-parser/binding-win32-ia32-msvc@0.132.0': resolution: {integrity: sha512-JUr4jQY9jxoIB/YTLXr6XofSi5xikj6p5/Ns1h0VOBDT0j1jKU+kMsv2xxv51RwnETcXpA1Yw/9oUAfcqfaqEA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] + '@oxc-parser/binding-win32-ia32-msvc@0.135.0': + resolution: {integrity: sha512-9FAisBbH1QICGAjlJobiuKGd/jOuVmyqniWdQMwTa5SkCl6hhuotBCJf1n46B0flYbSOR5TzfV9HZCWSyb3c/Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + '@oxc-parser/binding-win32-x64-msvc@0.132.0': resolution: {integrity: sha512-2dapgHpA5X8DSXF4AU36hJWYf6zP0tKjMXFRAZFBD62pkevW/uhFDXoFH9Y/3Fd2EtDrw5ByNnR1wVE9X9y0SQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] + '@oxc-parser/binding-win32-x64-msvc@0.135.0': + resolution: {integrity: sha512-wYF+A2AzJ2n7ul6q+Z2G/ia0S2+8cUp0AgWZzoFvF4WmUcl1P7p+o6se1Gdr5wGnWuF0iAMIkGddrjCarNr2yA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + '@oxc-project/types@0.122.0': resolution: {integrity: sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA==} @@ -2495,6 +2696,9 @@ packages: '@oxc-project/types@0.133.0': resolution: {integrity: sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA==} + '@oxc-project/types@0.135.0': + resolution: {integrity: sha512-wR+xRdFkUBMvcAjBJ2q2kcZM6d+DKu2NgoOyxZgYwZdLhmiv6+rnO8PZ/P68kMiZtIKm+pW7zyEJ4kSOs0vo+Q==} + '@oxc-resolver/binding-android-arm-eabi@11.20.0': resolution: {integrity: sha512-IjfWOXRgJFNdORDl+Uf1aibNgZY2guOD3zmOhx1BGVb/MIiqlFTdmjpQNplSN58lhWehnX4UNqC3QwpUo8pjJg==} cpu: [arm] @@ -2534,49 +2738,41 @@ packages: resolution: {integrity: sha512-0bJnmYFp62JdZ4nVMDUZ/C58BCZOCcqgKtnUlp7L9Ojf/czIN+3j72YlLPeWLkzlr6SlYvIQA4SGV/HyO0d+qg==} cpu: [arm64] os: [linux] - libc: [glibc] '@oxc-resolver/binding-linux-arm64-musl@11.20.0': resolution: {integrity: sha512-wKHHzPKZo7Ufhv/Bt6yxT7FOgnIgW4gwXcJUipkShGp68W3wGVqvr1Sr0fY65lN0Oy6y41+g2kIDvkgZaMMUkw==} cpu: [arm64] os: [linux] - libc: [musl] '@oxc-resolver/binding-linux-ppc64-gnu@11.20.0': resolution: {integrity: sha512-RN8goF7Ie0B79L4i4G6OeBocTgSC56vJbQ65VJje+oXnldVpLnOU7j/AQ/dP94TcCS+Yh6WG8u3Qt4ETteXFNQ==} cpu: [ppc64] os: [linux] - libc: [glibc] '@oxc-resolver/binding-linux-riscv64-gnu@11.20.0': resolution: {integrity: sha512-5l1yU6/xQEqLZRzxqmMxJfWPslpwCmBsdDGaBvABPehxquCXDC7dd7oraNdKSJUMDXSM7VvVj8H2D2FTjU7oWw==} cpu: [riscv64] os: [linux] - libc: [glibc] '@oxc-resolver/binding-linux-riscv64-musl@11.20.0': resolution: {integrity: sha512-xHEvkbgz6UC+A3JOyDQy76LkUaxsNSfIr3/GV8slwZsnuooJiIB34gzJfsyvR4JdCYNUUPsRJc/w/oWkODu+hg==} cpu: [riscv64] os: [linux] - libc: [musl] '@oxc-resolver/binding-linux-s390x-gnu@11.20.0': resolution: {integrity: sha512-aWPDUUmSeyHvlW+SoEUd+JIJsQhVhu6a5tBpDRMu058naPAchTgAVGCFy35zjbnFlt0i8hLWziff6HX0D3LU4g==} cpu: [s390x] os: [linux] - libc: [glibc] '@oxc-resolver/binding-linux-x64-gnu@11.20.0': resolution: {integrity: sha512-x2YeSimvhJjKLVD8KSu8f/rqU1potcdEMkApIPJqjZWN7c2Fpt4g2X32WDg1p+XDAmyT7nuQGe0vnhvXeLbH+g==} cpu: [x64] os: [linux] - libc: [glibc] '@oxc-resolver/binding-linux-x64-musl@11.20.0': resolution: {integrity: sha512-kcRLEIxpZefeYfLChjpgFf3ilBzRDZ+yobMrpRsQlSrxuFGtm3U6PMU7AaEpMqo3NfDGVyJJseAjnRLzMFHjwQ==} cpu: [x64] os: [linux] - libc: [musl] '@oxc-resolver/binding-openharmony-arm64@11.20.0': resolution: {integrity: sha512-HHcfnApSZGtKhTiHqe8OZruOZe5XuFQH5/E0Yhj3u8fnFvzkM4/k6WjacUf4SvA0SPEAbfbgYmVPuo0VX/fIBQ==} @@ -2645,56 +2841,48 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - libc: [glibc] '@oxlint/binding-linux-arm64-musl@1.66.0': resolution: {integrity: sha512-hmo+ZB/lHkR1HdDmnziNpzSLmulnUSu10VEqX2Yex7OwvoBAbjJQLvy4gIBRV3AAwWnCvAxKp5Nv1GE6LU1QMg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - libc: [musl] '@oxlint/binding-linux-ppc64-gnu@1.66.0': resolution: {integrity: sha512-2Invd4Uyy81mVooQC5FBtfxSNrvcX1OxbMlVQ6M2erRrNI2awFYF26YNW2yFxdVFZ4ffNOWKghtMjhnUPsXsVA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] - libc: [glibc] '@oxlint/binding-linux-riscv64-gnu@1.66.0': resolution: {integrity: sha512-s0iXPDQVdgayE3RGa/N2DZF7tjgg0TwEtD1sGoDxqPDGrIXgo45H0yHknT0f9A0yteASsweYZtDyTuVlM4aSag==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] - libc: [glibc] '@oxlint/binding-linux-riscv64-musl@1.66.0': resolution: {integrity: sha512-OekL4XFiu7RPK0JIZi8VeHgtIXPREf42t8Cy/rKEsC+P3gcqDgNAAGiyuUOpdbG4wwbfue1q4CHcCO7spSve6w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] - libc: [musl] '@oxlint/binding-linux-s390x-gnu@1.66.0': resolution: {integrity: sha512-Ga1D0kj1SFslm34ThA/BdkUlyAYEnTsXyRC4pF0C5agZSwtGdHYWMTQWemUfBGp4RCG4QWXgdO+HmmmKqOtlBg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] - libc: [glibc] '@oxlint/binding-linux-x64-gnu@1.66.0': resolution: {integrity: sha512-p5jfP1wUZe/IC3qpQO84n9DRnf9g3lKRtLBlQq23ykyrDglHcVx7sWmVTlPuU6SBw8mNnPzyOn022G3XZHnlww==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - libc: [glibc] '@oxlint/binding-linux-x64-musl@1.66.0': resolution: {integrity: sha512-vUB/sYlYZorDL1ZD+o9mRv7zbsykrrFRtmgS6R8musZqLtrPRQn1gc1eGpuX+sfdccz42STl/AqldY6XRb2upQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - libc: [musl] '@oxlint/binding-openharmony-arm64@1.66.0': resolution: {integrity: sha512-yde+6p/F59xRkGR9H1HfngWRif1QRJjynZK349l+UI0H6w9hL3G8/AVaTHFyTtLVQ56qtNbX2/5Dc77n1ovnOg==} @@ -2720,40 +2908,122 @@ packages: cpu: [x64] os: [win32] - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@pnpm/config.env-replace@1.1.0': - resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} - engines: {node: '>=12.22.0'} + '@parcel/watcher-android-arm64@2.5.6': + resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] - '@pnpm/network.ca-file@1.0.2': - resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} - engines: {node: '>=12.22.0'} + '@parcel/watcher-darwin-arm64@2.5.6': + resolution: {integrity: sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] - '@pnpm/npm-conf@2.3.1': - resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==} - engines: {node: '>=12'} + '@parcel/watcher-darwin-x64@2.5.6': + resolution: {integrity: sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] - '@polka/url@1.0.0-next.29': - resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} + '@parcel/watcher-freebsd-x64@2.5.6': + resolution: {integrity: sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] - '@posthog/core@1.24.6': - resolution: {integrity: sha512-9WkcRKqmXSWIJcca6m3VwA9YbFd4HiG2hKEtDq6FcwEHlvfDhQQUZ5/sJZ47Fw8OtyNMHQ6rW4+COttk4Bg5NQ==} + '@parcel/watcher-linux-arm-glibc@2.5.6': + resolution: {integrity: sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] - '@posthog/types@1.364.7': - resolution: {integrity: sha512-Rg6q4wSu8krrn8f3Nv44kGXjor4qh5iG0typt2sB7/SYQFRSbXYE2C46+qDMcBYGxmRMsWBitBcZ9x94DQCnfA==} + '@parcel/watcher-linux-arm-musl@2.5.6': + resolution: {integrity: sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] - '@preact/signals-core@1.14.2': - resolution: {integrity: sha512-RZHdBj9ZF4n40Rp4jS052EHHjBWf96P9oNdXPfhQTovCuWY9iQn3Gq+gOTJSgBO9A/JBuPfMOWsSX/lIU9Pc/A==} + '@parcel/watcher-linux-arm64-glibc@2.5.6': + resolution: {integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] - '@preact/signals@2.9.1': - resolution: {integrity: sha512-xVqN8mJjbSN5IB/8Ubmd9NN+Ew6zJswoRxrjZbH3YsgkMshFeO6d8zxEFpHRTq9GJZx7cnPs2CnCpFqtGXGNsw==} - peerDependencies: - preact: '>= 10.25.0 || >=11.0.0-0' + '@parcel/watcher-linux-arm64-musl@2.5.6': + resolution: {integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] - '@protobufjs/aspromise@1.1.2': + '@parcel/watcher-linux-x64-glibc@2.5.6': + resolution: {integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-linux-x64-musl@2.5.6': + resolution: {integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-win32-arm64@2.5.6': + resolution: {integrity: sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-ia32@2.5.6': + resolution: {integrity: sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + + '@parcel/watcher-win32-x64@2.5.6': + resolution: {integrity: sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.5.6': + resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==} + engines: {node: '>= 10.0.0'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@pnpm/config.env-replace@1.1.0': + resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} + engines: {node: '>=12.22.0'} + + '@pnpm/network.ca-file@1.0.2': + resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} + engines: {node: '>=12.22.0'} + + '@pnpm/npm-conf@2.3.1': + resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==} + engines: {node: '>=12'} + + '@polka/url@1.0.0-next.29': + resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} + + '@posthog/core@1.24.6': + resolution: {integrity: sha512-9WkcRKqmXSWIJcca6m3VwA9YbFd4HiG2hKEtDq6FcwEHlvfDhQQUZ5/sJZ47Fw8OtyNMHQ6rW4+COttk4Bg5NQ==} + + '@posthog/types@1.364.7': + resolution: {integrity: sha512-Rg6q4wSu8krrn8f3Nv44kGXjor4qh5iG0typt2sB7/SYQFRSbXYE2C46+qDMcBYGxmRMsWBitBcZ9x94DQCnfA==} + + '@preact/signals-core@1.14.2': + resolution: {integrity: sha512-RZHdBj9ZF4n40Rp4jS052EHHjBWf96P9oNdXPfhQTovCuWY9iQn3Gq+gOTJSgBO9A/JBuPfMOWsSX/lIU9Pc/A==} + + '@preact/signals@2.9.1': + resolution: {integrity: sha512-xVqN8mJjbSN5IB/8Ubmd9NN+Ew6zJswoRxrjZbH3YsgkMshFeO6d8zxEFpHRTq9GJZx7cnPs2CnCpFqtGXGNsw==} + peerDependencies: + preact: '>= 10.25.0 || >=11.0.0-0' + + '@protobufjs/aspromise@1.1.2': resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} '@protobufjs/base64@1.1.2': @@ -2786,8 +3056,8 @@ packages: '@quansync/fs@1.0.0': resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} - '@react-grab/cli@0.1.44': - resolution: {integrity: sha512-gMDYY2rw6OWajCcDlXSIgs2LC432YJXSb3Lm5yM187uhRgBYddoEVULi36h+IolX3r7jSb3ew7vn9FfI8NSo0A==} + '@react-grab/cli@0.1.47': + resolution: {integrity: sha512-Cc7d8mSwvoV8gpeTQbE8dMPdeXIyO6w+yIhzgi3jY06i03WLNhb/6jIxNBNF1cVRI7ujnFQXZA66BbnBNTpBSw==} hasBin: true '@rolldown/binding-android-arm64@1.0.0-rc.12': @@ -2855,84 +3125,72 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - libc: [glibc] '@rolldown/binding-linux-arm64-gnu@1.0.3': resolution: {integrity: sha512-jsO7R8To+AdlYgUmN5sHSCZbfhtMBkO0WUx8iORQnPcMMdgr7qM2DQmMwgabs3GhNztdmoKkMKQFHD6DTMCIQw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - libc: [glibc] '@rolldown/binding-linux-arm64-musl@1.0.0-rc.12': resolution: {integrity: sha512-V6/wZztnBqlx5hJQqNWwFdxIKN0m38p8Jas+VoSfgH54HSj9tKTt1dZvG6JRHcjh6D7TvrJPWFGaY9UBVOaWPw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - libc: [musl] '@rolldown/binding-linux-arm64-musl@1.0.3': resolution: {integrity: sha512-VWkUHwWriDciit80wleYwKILoR/KMvxh/IdwS/paX+ZgpuRpCrKLUdadJbc0NpBEiyhpYawsJ73j9aCvOH+f7Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - libc: [musl] '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.12': resolution: {integrity: sha512-AP3E9BpcUYliZCxa3w5Kwj9OtEVDYK6sVoUzy4vTOJsjPOgdaJZKFmN4oOlX0Wp0RPV2ETfmIra9x1xuayFB7g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] - libc: [glibc] '@rolldown/binding-linux-ppc64-gnu@1.0.3': resolution: {integrity: sha512-5f1laC0SlIR0yDbFCd8acUhvJIag6N3zC5P7oUPN6wX0aOma+uKJ0wBDH5aq7I1PVI2ttTlhJwzwRIBnLiSGEg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] - libc: [glibc] '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.12': resolution: {integrity: sha512-nWwpvUSPkoFmZo0kQazZYOrT7J5DGOJ/+QHHzjvNlooDZED8oH82Yg67HvehPPLAg5fUff7TfWFHQS8IV1n3og==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] - libc: [glibc] '@rolldown/binding-linux-s390x-gnu@1.0.3': resolution: {integrity: sha512-Iq4ko0r4XsgbrF/LunNgHtAGLRRVE2kXonAXQ/MV0mC6jQpMOhW1SvtZja2EhC/kd05++bP78dsqBeIQyYJ6Yg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] - libc: [glibc] '@rolldown/binding-linux-x64-gnu@1.0.0-rc.12': resolution: {integrity: sha512-RNrafz5bcwRy+O9e6P8Z/OCAJW/A+qtBczIqVYwTs14pf4iV1/+eKEjdOUta93q2TsT/FI0XYDP3TCky38LMAg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - libc: [glibc] '@rolldown/binding-linux-x64-gnu@1.0.3': resolution: {integrity: sha512-B8m6tD5+/N5FeNQFbKlLA/2yVq9ycQP1SeedyEYYKWBNR3ZQbkvIUcNnDNM03lO1l5F2roiiFJGgvoLLyZXtSg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - libc: [glibc] '@rolldown/binding-linux-x64-musl@1.0.0-rc.12': resolution: {integrity: sha512-Jpw/0iwoKWx3LJ2rc1yjFrj+T7iHZn2JDg1Yny1ma0luviFS4mhAIcd1LFNxK3EYu3DHWCps0ydXQ5i/rrJ2ig==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - libc: [musl] '@rolldown/binding-linux-x64-musl@1.0.3': resolution: {integrity: sha512-pSdpdUJHkuCxun9LE7jvgUB9qsRgaiyNNCX7m/AvHTcq67AiT/Yhoxvw5zPfhrM8k/BfP8ce/hMOpthKDpEUow==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - libc: [musl] '@rolldown/binding-openharmony-arm64@1.0.0-rc.12': resolution: {integrity: sha512-vRugONE4yMfVn0+7lUKdKvN4D5YusEiPilaoO2sgUWpCvrncvWgPMzK00ZFFJuiPgLwgFNP5eSiUlv2tfc+lpA==} @@ -2992,6 +3250,15 @@ packages: '@rolldown/pluginutils@1.0.1': resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} + '@rollup/plugin-json@6.1.0': + resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/pluginutils@5.4.0': resolution: {integrity: sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==} engines: {node: '>=14.0.0'} @@ -3001,11 +3268,140 @@ packages: rollup: optional: true + '@rollup/rollup-android-arm-eabi@4.62.2': + resolution: {integrity: sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.62.2': + resolution: {integrity: sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.62.2': + resolution: {integrity: sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.62.2': + resolution: {integrity: sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.62.2': + resolution: {integrity: sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.62.2': + resolution: {integrity: sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.62.2': + resolution: {integrity: sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.62.2': + resolution: {integrity: sha512-JqgflS8wEB+UXV/vS1RpRbifGBeN4D5lz8D8oOFbFZw4vedvdOgCFAjfBmIMdW3yL10XpQQ0Ambepw6MXrhOnA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.62.2': + resolution: {integrity: sha512-wnFJkogWvN4jm/hQRF2UBaeUmk20j5+DmHvoyWii2b8HJDyvz1MF2OU/6ynXt2KR63rbZLWkFpoytpdc/yBuSA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.62.2': + resolution: {integrity: sha512-HVu2bp0zhvJ8xHEV9+UUs7S90VadmBSY3LcIMvozbPo4AuMGDWlz3ymHLHZPX4hR67TKTt8Qp5PJ5RBg/i+RMQ==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loong64-gnu@4.62.2': + resolution: {integrity: sha512-mQqqAV8QaoSgr9I2fKDLY2BAVvmKjWoGiu/cSYQonsLvtqwEn1E4QYfnCOcp5zoEqNhsDYin1s6jx/VJmrxlZg==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-loong64-musl@4.62.2': + resolution: {integrity: sha512-IxKLoxCQ2IWi6bT2akyDUBGsOImDKB+sPp4EsTmwFQ/fMwpCKm8uLSSgP/Kx/QYUgKis6SEZ5/Nlhup0DIA0PQ==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.62.2': + resolution: {integrity: sha512-Mk5ha2RQSgyFfmYYLkBpPnUk8D8FriBxesO1u9O75X0mHgXL1UQcH5Itl2lurWL2tj0RxV9b9tJgipac0hRY9A==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-ppc64-musl@4.62.2': + resolution: {integrity: sha512-CjvEnqJL/0/TQ3TXX3OPIJ/kmBellrWd4heXUmHeJlTnmwjKpSJzoehLaL6Xk0ZnMHBu9dZuFADNOrtjF4v+2w==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.62.2': + resolution: {integrity: sha512-1SiZbzwdkaDURsew/tSOrooKiYy7EQGT6m8ufavAi9NEyQb/6VuIxFXAL1fqa4iZe3g4NbNk4P7J32z2tw5Mgg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.62.2': + resolution: {integrity: sha512-nQts12zJ3NQRoE6uYljOH89v7szzLDvG2JD/vsX+vGXU8w/At1GowTZ5/7qeFQ8m7L55rpR8Okugnuo5bgjy2Q==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.62.2': + resolution: {integrity: sha512-E9/ll019jhPIJgpzfZoIkBGhcz+kKNgVWYRY0zr9srBdPPFVpvOKW8VaJKUbeK+eZXyQF9ltME+Kk6affeaPgg==} + cpu: [s390x] + os: [linux] + '@rollup/rollup-linux-x64-gnu@4.46.3': resolution: {integrity: sha512-F42IgZI4JicE2vM2PWCe0N5mR5vR0gIdORPqhGQ32/u1S1v3kLtbZ0C/mi9FFk7C5T0PgdeyWEPajPjaUpyoKg==} cpu: [x64] os: [linux] - libc: [glibc] + + '@rollup/rollup-linux-x64-gnu@4.62.2': + resolution: {integrity: sha512-5BqxR/pshjey51iliyzTD5Xi3EN0aLmQ2lZ3lvefVV9c82BvrLo2/6OT55iifpWBufs6kdwWbuOKS841DrmK9A==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.62.2': + resolution: {integrity: sha512-uNN83XxQrRAh/w0/pmAfibcwyb6YWt4gP+dpnQKPVJshAloQ785ii8CT8ZCIxkGg9opVsvAlGhFitSm6D1Jjpg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-openbsd-x64@4.62.2': + resolution: {integrity: sha512-srjEIxSH3LRnJN6THczDHWQplqEMFiAJrTab0msUryh9kwNpkICf3Ea6q6MN/2cZwRFUNx5w+h6Hpi4QuHS6Zg==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.62.2': + resolution: {integrity: sha512-8hOJnxgbyObnCm5AlRA3A931xX19xq80RjVTKgJOvEKWqJruP/Uf12IbAOaDjjEXYRewwHLfmF0YRIdK3OwKWA==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.62.2': + resolution: {integrity: sha512-mmF4AY1i0hG/bLWUctUq59gtmgaSIRa3cu/A3JFRp/sCNEme2bgDEiDS22P9FbnJB8NJNF4jPJiSP5RHQpUTDg==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.62.2': + resolution: {integrity: sha512-DZgkknc6jhHrk46V25vbAM0zZkyP0nSDkJB8/dRkLTxv470dOmWDqGoEJl/9A0dFfS7yE3REOwNDxpHwSLSt0Q==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.62.2': + resolution: {integrity: sha512-T6xr6ucWSFto+VGajA8YH26LdpHRuP4YLHEKAtCWvJDOlnmWcDZVCI2Jmjr+IFHDlt2zRaTAKE4tfjTaWLgJBg==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.62.2': + resolution: {integrity: sha512-BfzEnDJOt9T8M989/lA37EcJgat01wLRnoi5dQf3QzOH7jzpqTAzdDbVfRljVr5r+jzKqpbHeyOfAaXxAd0PAA==} + cpu: [x64] + os: [win32] + + '@rollup/wasm-node@4.62.2': + resolution: {integrity: sha512-LseVv64SSO6S7eyc+LFGUnH36NMMFbtKN28vTUHFinRVzFKH4cVQ/BB22JfXM9Ei5l7x46AIQp+n2QzzJ9kxHg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true '@sentry/core@10.58.0': resolution: {integrity: sha512-bkIbh2c6dzwhrWn/FGWu7j8hf6TAat2XxpkGM91LiN09fLYUXIMwcohVsXqze5l2cq35TnvqmSROAbRNr27GVw==} @@ -3252,56 +3648,48 @@ packages: engines: {node: '>= 20'} cpu: [arm64] os: [linux] - libc: [glibc] '@tailwindcss/oxide-linux-arm64-gnu@4.2.4': resolution: {integrity: sha512-+E4wxJ0ZGOzSH325reXTWB48l42i93kQqMvDyz5gqfRzRZ7faNhnmvlV4EPGJU3QJM/3Ab5jhJ5pCRUsKn6OQw==} engines: {node: '>= 20'} cpu: [arm64] os: [linux] - libc: [glibc] '@tailwindcss/oxide-linux-arm64-musl@4.2.2': resolution: {integrity: sha512-oCfG/mS+/+XRlwNjnsNLVwnMWYH7tn/kYPsNPh+JSOMlnt93mYNCKHYzylRhI51X+TbR+ufNhhKKzm6QkqX8ag==} engines: {node: '>= 20'} cpu: [arm64] os: [linux] - libc: [musl] '@tailwindcss/oxide-linux-arm64-musl@4.2.4': resolution: {integrity: sha512-bBADEGAbo4ASnppIziaQJelekCxdMaxisrk+fB7Thit72IBnALp9K6ffA2G4ruj90G9XRS2VQ6q2bCKbfFV82g==} engines: {node: '>= 20'} cpu: [arm64] os: [linux] - libc: [musl] '@tailwindcss/oxide-linux-x64-gnu@4.2.2': resolution: {integrity: sha512-rTAGAkDgqbXHNp/xW0iugLVmX62wOp2PoE39BTCGKjv3Iocf6AFbRP/wZT/kuCxC9QBh9Pu8XPkv/zCZB2mcMg==} engines: {node: '>= 20'} cpu: [x64] os: [linux] - libc: [glibc] '@tailwindcss/oxide-linux-x64-gnu@4.2.4': resolution: {integrity: sha512-7Mx25E4WTfnht0TVRTyC00j3i0M+EeFe7wguMDTlX4mRxafznw0CA8WJkFjWYH5BlgELd1kSjuU2JiPnNZbJDA==} engines: {node: '>= 20'} cpu: [x64] os: [linux] - libc: [glibc] '@tailwindcss/oxide-linux-x64-musl@4.2.2': resolution: {integrity: sha512-XW3t3qwbIwiSyRCggeO2zxe3KWaEbM0/kW9e8+0XpBgyKU4ATYzcVSMKteZJ1iukJ3HgHBjbg9P5YPRCVUxlnQ==} engines: {node: '>= 20'} cpu: [x64] os: [linux] - libc: [musl] '@tailwindcss/oxide-linux-x64-musl@4.2.4': resolution: {integrity: sha512-2wwJRF7nyhOR0hhHoChc04xngV3iS+akccHTGtz965FwF0up4b2lOdo6kI1EbDaEXKgvcrFBYcYQQ/rrnWFVfA==} engines: {node: '>= 20'} cpu: [x64] os: [linux] - libc: [musl] '@tailwindcss/oxide-wasm32-wasi@4.2.2': resolution: {integrity: sha512-eKSztKsmEsn1O5lJ4ZAfyn41NfG7vzCg496YiGtMDV86jz1q/irhms5O0VrY6ZwTUkFy/EKG3RfWgxSI3VbZ8Q==} @@ -3880,11 +4268,6 @@ packages: resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} - acorn@8.15.0: - resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} - engines: {node: '>=0.4.0'} - hasBin: true - acorn@8.16.0: resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} engines: {node: '>=0.4.0'} @@ -3903,6 +4286,10 @@ packages: resolution: {integrity: sha512-nHlms9BkP8ZiY79HrwCGiA2DcNaXrAaJrCM/BEqQ7MEsSKyCk+2A76xPGylIfASZSZE0SaU3T0bNSg4rBPIJAQ==} hasBin: true + agent-install@0.0.6: + resolution: {integrity: sha512-7NRMZ/ZDz2vHevQTgJsocBFpakB1/Wx5ip19YSJuj4VOXpraWztTerViNtdSyARKZT9e2yVwUUB5JXXCE7mNrA==} + hasBin: true + aggregate-error@3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} @@ -3939,9 +4326,6 @@ packages: ajv@6.15.0: resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} - ajv@8.17.1: - resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - ajv@8.20.0: resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} @@ -4088,6 +4472,11 @@ packages: resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} engines: {node: 18 || 20 || >=22} + baseline-browser-mapping@2.10.38: + resolution: {integrity: sha512-31/02mVB4yuQU6adKk5SlY6m+mxDwUq5KZkyYgnLrrKl7TEm1+3PyDtDBz2kOv/wxZz41GHsvV1A/u6RmiyBvw==} + engines: {node: '>=6.0.0'} + hasBin: true + batch@0.6.1: resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} @@ -4152,6 +4541,11 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + browserslist@4.28.4: + resolution: {integrity: sha512-MTc8i/x9jBQd1iMw2CFGS+rwMa07eYjLR0CCTLDACl9xhxy+nIs3KeML/biicXtk9JrZ6dnnTatmc7ErPXIxqw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -4212,6 +4606,9 @@ packages: caniuse-lite@1.0.30001797: resolution: {integrity: sha512-l8xKG+gwAIExZGl9FrF7KUwuOmk6wbEPC9Xoy/RtnWv1XG0Q4LFlagaLpUv3Kiza3W/wm27zy0yWJEieYKAP6w==} + caniuse-lite@1.0.30001799: + resolution: {integrity: sha512-hG1bReV+OUU+MOqK4t/ZWI0tZOyz3rqS9XuhOUz1cIcbwBKjOyJEJuw9ER5JuNyqxNk8u/JUVbGibBOL1yrjFw==} + ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -4296,6 +4693,10 @@ packages: client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + cliui@9.0.1: + resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} + engines: {node: '>=20'} + clone-deep@4.0.1: resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} engines: {node: '>=6'} @@ -4401,6 +4802,9 @@ packages: resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} engines: {node: '>= 0.6'} + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -4415,6 +4819,10 @@ packages: resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} engines: {node: '>=18'} + copy-anything@3.0.5: + resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} + engines: {node: '>=12.13'} + copy-webpack-plugin@11.0.0: resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==} engines: {node: '>= 14.15.0'} @@ -4666,12 +5074,16 @@ packages: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} + dependency-graph@1.0.0: + resolution: {integrity: sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==} + engines: {node: '>=4'} + dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - deslop-js@0.0.24: - resolution: {integrity: sha512-ygcRwJXCUedo+hN1L4Ysm7luo4VWOvKEz/kRKWMlFp5bAtTKeXo+8fk/hQaJKsJ/nfahiqkhlYTlrKIR/5nsQg==} + deslop-js@0.5.8: + resolution: {integrity: sha512-Vq9D2x4dAIW24zcH55DTrl3/vi13UNKfXgw0yj7ULTssZ6KOdw/oyBHtlvE94KFC9yYEhgFTrGjaqqZKvV9pwA==} destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} @@ -4784,6 +5196,12 @@ packages: electron-to-chromium@1.5.207: resolution: {integrity: sha512-mryFrrL/GXDTmAtIVMVf+eIXM09BBPlO5IQ7lUyKmK8d+A4VpRGG+M3ofoVef6qyF8s60rJei8ymlJxjUA8Faw==} + electron-to-chromium@1.5.378: + resolution: {integrity: sha512-VinvOAuuPmdD1guEgGv5f2Qp7/vlfqOrUOMYNnOD4wj3pit8kRsQHzfIf6teyUGWo15Tg5+bOJaRunvyltpVWQ==} + + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} + emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -4835,6 +5253,10 @@ packages: resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + errno@0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -4862,8 +5284,8 @@ packages: esast-util-from-js@2.0.1: resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} - esbuild@0.27.0: - resolution: {integrity: sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA==} + esbuild@0.28.1: + resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} engines: {node: '>=18'} hasBin: true @@ -5084,9 +5506,6 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-uri@3.0.6: - resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} - fast-uri@3.1.2: resolution: {integrity: sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==} @@ -5145,6 +5564,14 @@ packages: resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} engines: {node: '>=14.16'} + find-cache-directory@6.0.0: + resolution: {integrity: sha512-CvFd5ivA6HcSHbD+59P7CyzINHXzwhuQK8RY7CxJZtgDSAtRlHiCaQpZQ2lMR/WRyUIEmzUvL6G2AGurMfegZA==} + engines: {node: '>=20'} + + find-up-simple@1.0.1: + resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} + engines: {node: '>=18'} + find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -5215,6 +5642,10 @@ packages: 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.6.0: resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} engines: {node: '>=18'} @@ -5499,6 +5930,10 @@ packages: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + icss-utils@5.1.0: resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} engines: {node: ^10 || ^12 || >= 14} @@ -5513,11 +5948,19 @@ packages: resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} + image-size@0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true + image-size@2.0.2: resolution: {integrity: sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==} engines: {node: '>=16.x'} hasBin: true + immutable@5.1.7: + resolution: {integrity: sha512-47Xb+LFbZ/ZIjQMj6Q5J3IfK7PJFuqRdFOC9FpGgRTK6U2dAEVmkR9hp58qU4FpYux5YXpneDwkj2EP6lppzFA==} + import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} @@ -5559,6 +6002,9 @@ packages: resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} engines: {node: '>=10'} + injection-js@2.6.1: + resolution: {integrity: sha512-dbR5bdhi7TWDoCye9cByZqeg/gAfamm8Vu3G1KZOTYkOif8WkuM8CD0oeDPtZYMzT5YH76JAFB7bkmyY9OJi2A==} + inline-style-parser@0.2.4: resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} @@ -5696,6 +6142,10 @@ packages: is-valid-element-name@1.0.0: resolution: {integrity: sha512-GZITEJY2LkSjQfaIPBha7eyZv+ge0PhBR7KITeCCWvy7VBQrCUdFkvpI+HrAPQjVtVjy1LvlEkqQTHckoszruw==} + is-what@4.1.16: + resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} + engines: {node: '>=12.13'} + is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -5859,6 +6309,11 @@ packages: launch-editor@2.11.1: resolution: {integrity: sha512-SEET7oNfgSaB6Ym0jufAdCeo3meJVeCaaDyzRygy0xsp2BFKCprcfHljTq4QkzTLUxEKkFK6OK4811YM2oSrRg==} + less@4.6.7: + resolution: {integrity: sha512-o3UxHBPPVY1HtCXx15/z1NlknQiWyafRNbtLEv+6xFaDRI2g2xPKIH43do9dSwt8bGLTsjNSaifa48N3d6odsQ==} + engines: {node: '>=18'} + hasBin: true + leven@3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} @@ -5902,28 +6357,24 @@ packages: engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - libc: [glibc] lightningcss-linux-arm64-musl@1.32.0: resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - libc: [musl] lightningcss-linux-x64-gnu@1.32.0: resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - libc: [glibc] lightningcss-linux-x64-musl@1.32.0: resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - libc: [musl] lightningcss-win32-arm64-msvc@1.32.0: resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} @@ -6046,6 +6497,10 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} + make-dir@5.1.0: + resolution: {integrity: sha512-IfpFq6UM39dUNiphpA6uDezNx/AvWyhwfICWPR3t1VspkgkMZrL+Rk1RbN1bx+aeNYwOrqGJgEgV3yotk+ZUVw==} + engines: {node: '>=18'} + markdown-extensions@2.0.0: resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} engines: {node: '>=16'} @@ -6378,6 +6833,11 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + needle@3.5.0: + resolution: {integrity: sha512-jaQyPKKk2YokHrEg+vFDYxXIHTCBgiZwSHOoVx/8V3GIBS8/VN6NdVRmg8q1ERtPkMvmOvebsgga4sAj5hls/w==} + engines: {node: '>= 4.4.x'} + hasBin: true + negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} @@ -6410,9 +6870,25 @@ packages: sass: optional: true + ng-packagr@22.0.0: + resolution: {integrity: sha512-2mXzUdprkDHk4j0NVDcpkVztVwdb1b3o63vLK8YQVCJqCMvCv8BBkFjBo9f1KJmuPf+CE/xuvylhyqfzXoTTqw==} + engines: {node: ^22.22.3 || ^24.15.0 || >=26.0.0} + hasBin: true + peerDependencies: + '@angular/compiler-cli': ^22.0.0 || ^22.1.0-next.0 + tailwindcss: ^2.0.0 || ^3.0.0 || ^4.0.0 + tslib: ^2.3.0 + typescript: '>=6.0 <6.1' + peerDependenciesMeta: + tailwindcss: + optional: true + no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + node-emoji@2.2.0: resolution: {integrity: sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==} engines: {node: '>=18'} @@ -6424,6 +6900,10 @@ packages: node-releases@2.0.19: resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + node-releases@2.0.50: + resolution: {integrity: sha512-J6l92tKHX6w8Jy5nO1Vuc01NoIiRGi/d6qBKVxh+IQ8Cr3b6HbVNfKiF8ZpFKufTwpwxMmce2W3iQZ861ZRyTg==} + engines: {node: '>=18'} + nopt@7.2.1: resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -6519,11 +6999,15 @@ packages: resolution: {integrity: sha512-+0LAPHaqtfQlvWdpaAa09SmOaZZgP8C552xosEkGJ4+ruEwP1Vgx+sqBgcBCNfR6KDCmagGOZTde8wmAvcI/Hg==} engines: {node: ^20.19.0 || >=22.12.0} + oxc-parser@0.135.0: + resolution: {integrity: sha512-/DaPStu0s2zzNSRRniKyTPM6Z/o+DapOp2JYNKDL8AsgaBGPK2IdZyB87SQjVH+xeQPz+Qr9mrjglfkYgtbVRA==} + engines: {node: ^20.19.0 || >=22.12.0} + oxc-resolver@11.20.0: resolution: {integrity: sha512-CblytBiV/a/ZXY34dsVU2NxhIOxMXst8CvDCtyBelVITgd7PLrKzbEbA6oKLdPjvDKDzCiW48qzmzZ+mYaqn+g==} - oxlint-plugin-react-doctor@0.5.6: - resolution: {integrity: sha512-my/aMTDi2XmodqTK2ur+UeDLVAnOohIBfwj1AQ5LC3Q2vpcKsUiFjmwVxdy3RuanLXHXJ7hXwAqfmtIaYeyTpQ==} + oxlint-plugin-react-doctor@0.5.8: + resolution: {integrity: sha512-L0jveKAMbqF1qAqA2Ksu8aH0/Q8FDQxLwXmHYgALa2XlsxEUuamJ+1Da2MhPWJ2ahn+ekFbnWK20qixxD+fw6A==} engines: {node: ^20.19.0 || >=22.13.0} oxlint@1.66.0: @@ -6604,6 +7088,10 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} + parse-node-version@1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} + parse-numeric-range@1.3.0: resolution: {integrity: sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==} @@ -6684,10 +7172,18 @@ packages: resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} + piscina@5.2.0: + resolution: {integrity: sha512-DszUCKeVN/5G5QKo6jAVHL8fmKnkJvQ0ACiVgY7YGCq3TUB2oznAOayvZPIAdEThvhczkXR+qm3IHsNXpFCYfA==} + engines: {node: '>=20.x'} + pkg-dir@7.0.0: resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} engines: {node: '>=14.16'} + pkg-dir@8.0.0: + resolution: {integrity: sha512-4peoBq4Wks0riS0z8741NVv+/8IiTvqnZAr8QGgtdifrtpdXbNw/FxRS1l6NFqm4EMzuS0EDqNNx4XGaz8cuyQ==} + engines: {node: '>=18'} + pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} @@ -7158,6 +7654,9 @@ packages: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} + prr@1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -7205,8 +7704,8 @@ packages: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true - react-doctor@0.5.6: - resolution: {integrity: sha512-xiy7vRG08qFW5XCYvvB6zir1kWtfuEK68h4scBJtOvt1r6bUNyi4zSsUkq5jdU1afJ2+Uq8y8H9KIQlP2sCqQA==} + react-doctor@0.5.8: + resolution: {integrity: sha512-gDXDQ+48KeFq2jkVgsUhQ67oQ+kUMdnIaA+YeS9VXXZFXSg9wxY5dDxurEpILSh8RwO06W8p6uCnTR+wn5B/GA==} engines: {node: ^20.19.0 || >=22.13.0} hasBin: true @@ -7218,8 +7717,8 @@ packages: react-fast-compare@3.2.2: resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} - react-grab@0.1.44: - resolution: {integrity: sha512-bDEwBdI90ljq2lhUtPqmWis/HwYB/CvfT0m5i+P9F83Pt0Ot8o9XL8v00s9jcWzdQUlsFDzmq2FO2CHUe8JY8A==} + react-grab@0.1.47: + resolution: {integrity: sha512-1GNy24KMJ4CY1IxorYO9mydItGi0L1HkQB19uYU3t0BMsJB0K+D/QYiaBz+rugRynyY8LzmXIuOcon1TykLlCg==} hasBin: true peerDependencies: react: '>=17.0.0' @@ -7327,6 +7826,9 @@ packages: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} + reflect-metadata@0.2.2: + resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} + regenerate-unicode-properties@10.2.0: resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} engines: {node: '>=4'} @@ -7481,6 +7983,18 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true + rollup-plugin-dts@6.4.1: + resolution: {integrity: sha512-l//F3Zf7ID5GoOfLfD8kroBjQKEKpy1qfhtAdnpibFZMffPaylrg1CoDC2vGkPeTeyxUe4bVFCln2EFuL7IGGg==} + engines: {node: '>=20'} + peerDependencies: + rollup: ^3.29.4 || ^4 + typescript: ^4.5 || ^5.0 || ^6.0 + + rollup@4.62.2: + resolution: {integrity: sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + rtlcss@4.3.0: resolution: {integrity: sha512-FI+pHEn7Wc4NqKXMXFM+VAYKEj/mRIcW4h24YVwVtyjI+EqGrLc2Hx/Ny0lrZ21cBWU2goLy36eqMcNj3AQJig==} engines: {node: '>=12.0.0'} @@ -7493,6 +8007,9 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -7502,6 +8019,11 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + sass@1.101.0: + resolution: {integrity: sha512-OL3GoQyoUdDt843DpVmDO6y2k1sc5IhUDSpu8XucEI+35neq5QivZ1iuegnpraEVTJXlQGK1gl27zKcTLEPbQw==} + engines: {node: '>=20.19.0'} + hasBin: true + sax@1.4.1: resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} @@ -7747,6 +8269,10 @@ 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-width@8.2.1: resolution: {integrity: sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==} engines: {node: '>=20'} @@ -8163,6 +8689,12 @@ packages: peerDependencies: browserslist: '>= 4.21.0' + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + update-notifier@6.0.2: resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} engines: {node: '>=14.16'} @@ -8482,6 +9014,10 @@ packages: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} + engines: {node: '>=18'} + write-file-atomic@3.0.3: resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} @@ -8544,6 +9080,10 @@ packages: xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} @@ -8552,6 +9092,14 @@ packages: engines: {node: '>= 14.6'} hasBin: true + yargs-parser@22.0.0: + resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + + yargs@18.0.0: + resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -8714,6 +9262,38 @@ snapshots: '@alloc/quick-lru@5.2.0': {} + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@angular/compiler-cli@22.0.2(@angular/compiler@22.0.2)(typescript@6.0.3)': + dependencies: + '@angular/compiler': 22.0.2 + '@babel/core': 7.29.0 + '@jridgewell/sourcemap-codec': 1.5.5 + chokidar: 5.0.0 + convert-source-map: 1.9.0 + reflect-metadata: 0.2.2 + semver: 7.8.4 + tslib: 2.8.1 + yargs: 18.0.0 + optionalDependencies: + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@angular/compiler@22.0.2': + dependencies: + tslib: 2.8.1 + + '@angular/core@22.0.2(@angular/compiler@22.0.2)(rxjs@7.8.2)': + dependencies: + rxjs: 7.8.2 + tslib: 2.8.1 + optionalDependencies: + '@angular/compiler': 22.0.2 + '@asamuzakjp/css-color@5.1.5': dependencies: '@csstools/css-calc': 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) @@ -8744,21 +9324,19 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.28.0': {} - '@babel/compat-data@7.29.7': {} - '@babel/core@7.28.5': + '@babel/core@7.29.0': dependencies: '@babel/code-frame': 7.29.7 - '@babel/generator': 7.28.5 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) - '@babel/helpers': 7.28.4 - '@babel/parser': 7.29.2 - '@babel/template': 7.27.2 - '@babel/traverse': 7.28.5 - '@babel/types': 7.28.5 + '@babel/generator': 7.29.7 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.0) + '@babel/helpers': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 debug: 4.4.3 @@ -8788,7 +9366,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.28.5': + '@babel/generator@7.29.7': dependencies: '@babel/parser': 7.29.7 '@babel/types': 7.29.7 @@ -8796,15 +9374,7 @@ snapshots: '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 - '@babel/generator@7.29.7': - dependencies: - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - jsesc: 3.1.0 - - '@babel/generator@8.0.0-rc.3': + '@babel/generator@8.0.0-rc.3': dependencies: '@babel/parser': 8.0.0-rc.3 '@babel/types': 8.0.0-rc.3 @@ -8817,14 +9387,6 @@ snapshots: dependencies: '@babel/types': 7.29.7 - '@babel/helper-compilation-targets@7.27.2': - dependencies: - '@babel/compat-data': 7.28.0 - '@babel/helper-validator-option': 7.27.1 - browserslist: 4.25.3 - lru-cache: 5.1.1 - semver: 6.3.1 - '@babel/helper-compilation-targets@7.29.7': dependencies: '@babel/compat-data': 7.29.7 @@ -8833,19 +9395,6 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.28.3(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-member-expression-to-functions': 7.27.1 - '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5) - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.28.5 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - '@babel/helper-create-class-features-plugin@7.28.3(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -8854,18 +9403,11 @@ snapshots: '@babel/helper-optimise-call-expression': 7.27.1 '@babel/helper-replace-supers': 7.27.1(@babel/core@7.29.7) '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.28.5 + '@babel/traverse': 7.29.7 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-annotate-as-pure': 7.27.3 - regexpu-core: 6.2.0 - semver: 6.3.1 - '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -8873,21 +9415,10 @@ snapshots: regexpu-core: 6.2.0 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - debug: 4.4.3 - lodash.debounce: 4.0.8 - resolve: 1.22.10 - transitivePeerDependencies: - - supports-color - '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-compilation-targets': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 debug: 4.4.3 lodash.debounce: 4.0.8 @@ -8895,20 +9426,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-globals@7.28.0': {} - '@babel/helper-globals@7.29.7': {} '@babel/helper-member-expression-to-functions@7.27.1': dependencies: - '@babel/traverse': 7.28.5 - '@babel/types': 7.29.7 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-imports@7.27.1': - dependencies: - '@babel/traverse': 7.28.5 + '@babel/traverse': 7.29.7 '@babel/types': 7.29.7 transitivePeerDependencies: - supports-color @@ -8920,21 +9442,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.28.5 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.28.3(@babel/core@7.29.7)': + '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.29.7 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.28.5 + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + '@babel/traverse': 7.29.7 transitivePeerDependencies: - supports-color @@ -8953,30 +9466,12 @@ snapshots: '@babel/helper-plugin-utils@7.27.1': {} - '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-wrap-function': 7.28.3 - '@babel/traverse': 7.28.5 - transitivePeerDependencies: - - supports-color - '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-wrap-function': 7.28.3 - '@babel/traverse': 7.28.5 - transitivePeerDependencies: - - supports-color - - '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-member-expression-to-functions': 7.27.1 - '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.28.5 + '@babel/traverse': 7.29.7 transitivePeerDependencies: - supports-color @@ -8985,13 +9480,13 @@ snapshots: '@babel/core': 7.29.7 '@babel/helper-member-expression-to-functions': 7.27.1 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.28.5 + '@babel/traverse': 7.29.7 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: - '@babel/traverse': 7.28.5 + '@babel/traverse': 7.29.7 '@babel/types': 7.29.7 transitivePeerDependencies: - supports-color @@ -9008,32 +9503,21 @@ snapshots: '@babel/helper-validator-identifier@8.0.0-rc.3': {} - '@babel/helper-validator-option@7.27.1': {} - '@babel/helper-validator-option@7.29.7': {} '@babel/helper-wrap-function@7.28.3': dependencies: - '@babel/template': 7.27.2 - '@babel/traverse': 7.28.5 + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.7 '@babel/types': 7.29.7 transitivePeerDependencies: - supports-color - '@babel/helpers@7.28.4': - dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.29.7 - '@babel/helpers@7.29.7': dependencies: '@babel/template': 7.29.7 '@babel/types': 7.29.7 - '@babel/parser@7.29.2': - dependencies: - '@babel/types': 7.29.7 - '@babel/parser@7.29.7': dependencies: '@babel/types': 7.29.7 @@ -9042,51 +9526,24 @@ snapshots: dependencies: '@babel/types': 8.0.0-rc.3 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.5 - transitivePeerDependencies: - - supports-color - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.5 + '@babel/traverse': 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.5) - transitivePeerDependencies: - - supports-color - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -9096,38 +9553,21 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.5 - transitivePeerDependencies: - - supports-color - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.5 + '@babel/traverse': 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.28.5)': + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.29.7)': @@ -9135,122 +9575,60 @@ snapshots: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.5) - '@babel/traverse': 7.28.5 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.29.7) - '@babel/traverse': 7.28.5 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.5) + '@babel/traverse': 7.29.7 transitivePeerDependencies: - supports-color '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-module-imports': 7.27.1 + '@babel/helper-module-imports': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.29.7) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-block-scoping@7.28.0(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-block-scoping@7.28.0(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -9259,14 +9637,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-class-static-block@7.28.3(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-class-static-block@7.28.3(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -9275,110 +9645,54 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-classes@7.28.3(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-globals': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5) - '@babel/traverse': 7.28.5 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-classes@7.28.3(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-globals': 7.28.0 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-globals': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-replace-supers': 7.27.1(@babel/core@7.29.7) - '@babel/traverse': 7.28.5 + '@babel/traverse': 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/template': 7.27.2 - '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/template': 7.27.2 - - '@babel/plugin-transform-destructuring@7.28.0(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.5 - transitivePeerDependencies: - - supports-color + '@babel/template': 7.29.7 '@babel/plugin-transform-destructuring@7.28.0(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.5 + '@babel/traverse': 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-explicit-resource-management@7.28.0(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.5) - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-explicit-resource-management@7.28.0(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -9387,34 +9701,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -9423,84 +9719,39 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.5 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-compilation-targets': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.5 + '@babel/traverse': 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-literals@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color @@ -9508,116 +9759,58 @@ snapshots: '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-validator-identifier': 7.29.7 - '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color '@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.29.7) + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-identifier': 7.29.7 - '@babel/traverse': 7.28.5 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.29.7 transitivePeerDependencies: - supports-color '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.29.7) + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-object-rest-spread@7.28.0(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.5) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.5) - '@babel/traverse': 7.28.5 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-object-rest-spread@7.28.0(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 - '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-compilation-targets': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.29.7) '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.29.7) - '@babel/traverse': 7.28.5 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5) + '@babel/traverse': 7.29.7 transitivePeerDependencies: - supports-color @@ -9629,24 +9822,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -9655,24 +9835,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -9681,15 +9848,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -9699,11 +9857,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -9714,23 +9867,11 @@ snapshots: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-display-name@7.28.0(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-display-name@7.28.0(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.5) - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -9738,102 +9879,56 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) - '@babel/types': 7.29.7 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-module-imports': 7.27.1 + '@babel/helper-module-imports': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.7) '@babel/types': 7.29.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-regenerator@7.28.3(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-regenerator@7.28.3(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-runtime@7.28.3(@babel/core@7.28.5)': + '@babel/plugin-transform-runtime@7.28.3(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.28.5 - '@babel/helper-module-imports': 7.27.1 + '@babel/core': 7.29.7 + '@babel/helper-module-imports': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.5) - babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.5) - babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.5) + babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.29.7) + babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.29.7) + babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.29.7) semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-spread@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-spread@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -9842,47 +9937,21 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-typescript@7.28.0(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5) - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-typescript@7.28.0(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 @@ -9894,135 +9963,36 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.28.5) - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.27.1 - '@babel/preset-env@7.28.3(@babel/core@7.28.5)': - dependencies: - '@babel/compat-data': 7.28.0 - '@babel/core': 7.28.5 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.3(@babel/core@7.28.5) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.5) - '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.28.5) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.28.5) - '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-block-scoping': 7.28.0(@babel/core@7.28.5) - '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-class-static-block': 7.28.3(@babel/core@7.28.5) - '@babel/plugin-transform-classes': 7.28.3(@babel/core@7.28.5) - '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.5) - '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-explicit-resource-management': 7.28.0(@babel/core@7.28.5) - '@babel/plugin-transform-exponentiation-operator': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-modules-systemjs': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-object-rest-spread': 7.28.0(@babel/core@7.28.5) - '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.5) - '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-regenerator': 7.28.3(@babel/core@7.28.5) - '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.28.5) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.28.5) - babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.5) - babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.5) - babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.5) - core-js-compat: 3.45.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - '@babel/preset-env@7.28.3(@babel/core@7.29.7)': dependencies: - '@babel/compat-data': 7.28.0 + '@babel/compat-data': 7.29.7 '@babel/core': 7.29.7 - '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-compilation-targets': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-validator-option': 7.27.1 + '@babel/helper-validator-option': 7.29.7 '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.27.1(@babel/core@7.29.7) '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.29.7) '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.29.7) @@ -10092,37 +10062,18 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/types': 7.29.7 - esutils: 2.0.3 - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/types': 7.29.7 - esutils: 2.0.3 - - '@babel/preset-react@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.28.5) - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-react-pure-annotations': 7.27.1(@babel/core@7.28.5) - transitivePeerDependencies: - - supports-color + '@babel/types': 7.29.7 + esutils: 2.0.3 '@babel/preset-react@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-validator-option': 7.27.1 + '@babel/helper-validator-option': 7.29.7 '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.29.7) '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.29.7) '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.29.7) @@ -10130,22 +10081,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/preset-typescript@7.27.1(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.28.5) - transitivePeerDependencies: - - supports-color - '@babel/preset-typescript@7.27.1(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7 '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-validator-option': 7.27.1 + '@babel/helper-validator-option': 7.29.7 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.29.7) '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.29.7) '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.29.7) @@ -10162,30 +10102,12 @@ snapshots: '@babel/runtime@7.29.7': {} - '@babel/template@7.27.2': - dependencies: - '@babel/code-frame': 7.29.7 - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 - '@babel/template@7.29.7': dependencies: '@babel/code-frame': 7.29.7 '@babel/parser': 7.29.7 '@babel/types': 7.29.7 - '@babel/traverse@7.28.5': - dependencies: - '@babel/code-frame': 7.29.7 - '@babel/generator': 7.29.7 - '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.29.7 - '@babel/template': 7.27.2 - '@babel/types': 7.29.0 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - '@babel/traverse@7.29.7': dependencies: '@babel/code-frame': 7.29.7 @@ -10198,11 +10120,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/types@7.28.5': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/types@7.29.0': dependencies: '@babel/helper-string-parser': 7.27.1 @@ -10530,20 +10447,20 @@ snapshots: transitivePeerDependencies: - '@algolia/client-search' - '@docusaurus/babel@3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@docusaurus/babel@3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.29.7 '@babel/generator': 7.29.7 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.28.5) - '@babel/plugin-transform-runtime': 7.28.3(@babel/core@7.28.5) - '@babel/preset-env': 7.28.3(@babel/core@7.28.5) - '@babel/preset-react': 7.27.1(@babel/core@7.28.5) - '@babel/preset-typescript': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-transform-runtime': 7.28.3(@babel/core@7.29.7) + '@babel/preset-env': 7.28.3(@babel/core@7.29.7) + '@babel/preset-react': 7.27.1(@babel/core@7.29.7) + '@babel/preset-typescript': 7.27.1(@babel/core@7.29.7) '@babel/runtime': 7.29.7 '@babel/runtime-corejs3': 7.28.3 - '@babel/traverse': 7.28.5 + '@babel/traverse': 7.29.7 '@docusaurus/logger': 3.9.2 - '@docusaurus/utils': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) babel-plugin-dynamic-import-node: 2.3.3 fs-extra: 11.3.1 tslib: 2.8.1 @@ -10557,32 +10474,32 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/bundler@3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': + '@docusaurus/bundler@3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': dependencies: - '@babel/core': 7.28.5 - '@docusaurus/babel': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@babel/core': 7.29.7 + '@docusaurus/babel': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/cssnano-preset': 3.9.2 '@docusaurus/logger': 3.9.2 - '@docusaurus/types': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - babel-loader: 9.2.1(@babel/core@7.28.5)(webpack@5.101.3(esbuild@0.27.0)) + '@docusaurus/types': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + babel-loader: 9.2.1(@babel/core@7.29.7)(webpack@5.101.3(esbuild@0.28.1)) clean-css: 5.3.3 - copy-webpack-plugin: 11.0.0(webpack@5.101.3(esbuild@0.27.0)) - css-loader: 6.11.0(webpack@5.101.3(esbuild@0.27.0)) - css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(esbuild@0.27.0)(webpack@5.101.3(esbuild@0.27.0)) + copy-webpack-plugin: 11.0.0(webpack@5.101.3(esbuild@0.28.1)) + css-loader: 6.11.0(webpack@5.101.3(esbuild@0.28.1)) + css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(esbuild@0.28.1)(webpack@5.101.3(esbuild@0.28.1)) cssnano: 6.1.2(postcss@8.5.15) - file-loader: 6.2.0(webpack@5.101.3(esbuild@0.27.0)) + file-loader: 6.2.0(webpack@5.101.3(esbuild@0.28.1)) html-minifier-terser: 7.2.0 - mini-css-extract-plugin: 2.9.4(webpack@5.101.3(esbuild@0.27.0)) - null-loader: 4.0.1(webpack@5.101.3(esbuild@0.27.0)) + mini-css-extract-plugin: 2.9.4(webpack@5.101.3(esbuild@0.28.1)) + null-loader: 4.0.1(webpack@5.101.3(esbuild@0.28.1)) postcss: 8.5.15 - postcss-loader: 7.3.4(postcss@8.5.15)(typescript@6.0.2)(webpack@5.101.3(esbuild@0.27.0)) + postcss-loader: 7.3.4(postcss@8.5.15)(typescript@6.0.2)(webpack@5.101.3(esbuild@0.28.1)) postcss-preset-env: 10.2.4(postcss@8.5.15) - terser-webpack-plugin: 5.3.14(esbuild@0.27.0)(webpack@5.101.3(esbuild@0.27.0)) + terser-webpack-plugin: 5.3.14(esbuild@0.28.1)(webpack@5.101.3(esbuild@0.28.1)) tslib: 2.8.1 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.101.3(esbuild@0.27.0)))(webpack@5.101.3(esbuild@0.27.0)) - webpack: 5.101.3(esbuild@0.27.0) - webpackbar: 6.0.1(webpack@5.101.3(esbuild@0.27.0)) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.101.3(esbuild@0.28.1)))(webpack@5.101.3(esbuild@0.28.1)) + webpack: 5.101.3(esbuild@0.28.1) + webpackbar: 6.0.1(webpack@5.101.3(esbuild@0.28.1)) transitivePeerDependencies: - '@parcel/css' - '@rspack/core' @@ -10599,15 +10516,15 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/core@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': + '@docusaurus/core@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': dependencies: - '@docusaurus/babel': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/bundler': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/babel': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/bundler': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) '@docusaurus/logger': 3.9.2 - '@docusaurus/mdx-loader': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-common': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-validation': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/mdx-loader': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-common': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-validation': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@mdx-js/react': 3.1.1(@types/react@19.2.14)(react@19.2.4) boxen: 6.2.1 chalk: 4.1.2 @@ -10623,7 +10540,7 @@ snapshots: execa: 5.1.1 fs-extra: 11.3.1 html-tags: 3.3.1 - html-webpack-plugin: 5.6.4(webpack@5.101.3(esbuild@0.27.0)) + html-webpack-plugin: 5.6.4(webpack@5.101.3(esbuild@0.28.1)) leven: 3.1.0 lodash: 4.17.21 open: 8.4.2 @@ -10633,7 +10550,7 @@ snapshots: react-dom: 19.2.4(react@19.2.4) react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)' react-loadable: '@docusaurus/react-loadable@6.0.0(react@19.2.4)' - react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@6.0.0(react@19.2.4))(webpack@5.101.3(esbuild@0.27.0)) + react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@6.0.0(react@19.2.4))(webpack@5.101.3(esbuild@0.28.1)) react-router: 5.3.4(react@19.2.4) react-router-config: 5.1.1(react-router@5.3.4(react@19.2.4))(react@19.2.4) react-router-dom: 5.3.4(react@19.2.4) @@ -10642,9 +10559,9 @@ snapshots: tinypool: 1.1.1 tslib: 2.8.1 update-notifier: 6.0.2 - webpack: 5.101.3(esbuild@0.27.0) + webpack: 5.101.3(esbuild@0.28.1) webpack-bundle-analyzer: 4.10.2 - webpack-dev-server: 5.2.2(webpack@5.101.3(esbuild@0.27.0)) + webpack-dev-server: 5.2.2(webpack@5.101.3(esbuild@0.28.1)) webpack-merge: 6.0.1 transitivePeerDependencies: - '@docusaurus/faster' @@ -10676,16 +10593,16 @@ snapshots: chalk: 4.1.2 tslib: 2.8.1 - '@docusaurus/mdx-loader@3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@docusaurus/mdx-loader@3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@docusaurus/logger': 3.9.2 - '@docusaurus/utils': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-validation': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-validation': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@mdx-js/mdx': 3.1.0(acorn@8.17.0) '@slorber/remark-comment': 1.0.0 escape-html: 1.0.3 estree-util-value-to-estree: 3.4.0 - file-loader: 6.2.0(webpack@5.101.3(esbuild@0.27.0)) + file-loader: 6.2.0(webpack@5.101.3(esbuild@0.28.1)) fs-extra: 11.3.1 image-size: 2.0.2 mdast-util-mdx: 3.0.0 @@ -10701,9 +10618,9 @@ snapshots: tslib: 2.8.1 unified: 11.0.5 unist-util-visit: 5.0.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.101.3(esbuild@0.27.0)))(webpack@5.101.3(esbuild@0.27.0)) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.101.3(esbuild@0.28.1)))(webpack@5.101.3(esbuild@0.28.1)) vfile: 6.0.3 - webpack: 5.101.3(esbuild@0.27.0) + webpack: 5.101.3(esbuild@0.28.1) transitivePeerDependencies: - '@swc/core' - acorn @@ -10712,9 +10629,9 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/module-type-aliases@3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@docusaurus/module-type-aliases@3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@docusaurus/types': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/types': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@types/history': 4.7.11 '@types/react': 19.2.14 '@types/react-router-config': 5.0.11 @@ -10731,17 +10648,17 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/plugin-content-blog@3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': + '@docusaurus/plugin-content-blog@3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) '@docusaurus/logger': 3.9.2 - '@docusaurus/mdx-loader': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/plugin-content-docs': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/types': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-common': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-validation': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/mdx-loader': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/plugin-content-docs': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/types': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-common': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-validation': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) cheerio: 1.0.0-rc.12 feed: 4.2.2 fs-extra: 11.3.1 @@ -10753,7 +10670,7 @@ snapshots: tslib: 2.8.1 unist-util-visit: 5.0.0 utility-types: 3.11.0 - webpack: 5.101.3(esbuild@0.27.0) + webpack: 5.101.3(esbuild@0.28.1) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -10773,17 +10690,17 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': + '@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) '@docusaurus/logger': 3.9.2 - '@docusaurus/mdx-loader': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/module-type-aliases': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/types': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-common': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-validation': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/mdx-loader': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/module-type-aliases': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/types': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-common': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-validation': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@types/react-router-config': 5.0.11 combine-promises: 1.2.0 fs-extra: 11.3.1 @@ -10794,7 +10711,7 @@ snapshots: schema-dts: 1.1.5 tslib: 2.8.1 utility-types: 3.11.0 - webpack: 5.101.3(esbuild@0.27.0) + webpack: 5.101.3(esbuild@0.28.1) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -10814,18 +10731,18 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-content-pages@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': + '@docusaurus/plugin-content-pages@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/mdx-loader': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/types': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-validation': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/mdx-loader': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/types': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-validation': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) fs-extra: 11.3.1 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) tslib: 2.8.1 - webpack: 5.101.3(esbuild@0.27.0) + webpack: 5.101.3(esbuild@0.28.1) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -10845,12 +10762,12 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-css-cascade-layers@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': + '@docusaurus/plugin-css-cascade-layers@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/types': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-validation': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/types': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-validation': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) tslib: 2.8.1 transitivePeerDependencies: - '@docusaurus/faster' @@ -10873,11 +10790,11 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-debug@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': + '@docusaurus/plugin-debug@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/types': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/types': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) fs-extra: 11.3.1 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) @@ -10902,11 +10819,11 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-google-analytics@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': + '@docusaurus/plugin-google-analytics@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/types': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-validation': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/types': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-validation': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react: 19.2.4 react-dom: 19.2.4(react@19.2.4) tslib: 2.8.1 @@ -10929,11 +10846,11 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-google-gtag@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': + '@docusaurus/plugin-google-gtag@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/types': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-validation': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/types': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-validation': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@types/gtag.js': 0.0.12 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) @@ -10957,11 +10874,11 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-google-tag-manager@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': + '@docusaurus/plugin-google-tag-manager@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/types': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-validation': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/types': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-validation': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react: 19.2.4 react-dom: 19.2.4(react@19.2.4) tslib: 2.8.1 @@ -10984,14 +10901,14 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-sitemap@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': + '@docusaurus/plugin-sitemap@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) '@docusaurus/logger': 3.9.2 - '@docusaurus/types': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-common': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-validation': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/types': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-common': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-validation': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) fs-extra: 11.3.1 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) @@ -11016,18 +10933,18 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-svgr@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': + '@docusaurus/plugin-svgr@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/types': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-validation': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/types': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-validation': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@svgr/core': 8.1.0(typescript@6.0.2) '@svgr/webpack': 8.1.0(typescript@6.0.2) react: 19.2.4 react-dom: 19.2.4(react@19.2.4) tslib: 2.8.1 - webpack: 5.101.3(esbuild@0.27.0) + webpack: 5.101.3(esbuild@0.28.1) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -11047,23 +10964,23 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/preset-classic@3.9.2(@algolia/client-search@5.45.0)(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3)(typescript@6.0.2)': - dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/plugin-content-blog': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/plugin-content-docs': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/plugin-content-pages': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/plugin-css-cascade-layers': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/plugin-debug': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/plugin-google-analytics': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/plugin-google-gtag': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/plugin-google-tag-manager': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/plugin-sitemap': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/plugin-svgr': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/theme-classic': 3.9.2(@types/react@19.2.14)(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/theme-search-algolia': 3.9.2(@algolia/client-search@5.45.0)(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3)(typescript@6.0.2) - '@docusaurus/types': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/preset-classic@3.9.2(@algolia/client-search@5.45.0)(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3)(typescript@6.0.2)': + dependencies: + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/plugin-content-blog': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/plugin-content-docs': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/plugin-content-pages': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/plugin-css-cascade-layers': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/plugin-debug': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/plugin-google-analytics': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/plugin-google-gtag': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/plugin-google-tag-manager': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/plugin-sitemap': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/plugin-svgr': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/theme-classic': 3.9.2(@types/react@19.2.14)(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/theme-search-algolia': 3.9.2(@algolia/client-search@5.45.0)(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3)(typescript@6.0.2) + '@docusaurus/types': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react: 19.2.4 react-dom: 19.2.4(react@19.2.4) transitivePeerDependencies: @@ -11093,21 +11010,21 @@ snapshots: '@types/react': 19.2.14 react: 19.2.4 - '@docusaurus/theme-classic@3.9.2(@types/react@19.2.14)(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': + '@docusaurus/theme-classic@3.9.2(@types/react@19.2.14)(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) '@docusaurus/logger': 3.9.2 - '@docusaurus/mdx-loader': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/module-type-aliases': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/plugin-content-blog': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/plugin-content-docs': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/plugin-content-pages': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/mdx-loader': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/module-type-aliases': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/plugin-content-blog': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/plugin-content-docs': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/plugin-content-pages': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/theme-translations': 3.9.2 - '@docusaurus/types': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-common': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-validation': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/types': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-common': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-validation': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@mdx-js/react': 3.1.1(@types/react@19.2.14)(react@19.2.4) clsx: 2.1.1 infima: 0.2.0-alpha.45 @@ -11141,13 +11058,13 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/theme-common@3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@docusaurus/theme-common@3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@docusaurus/mdx-loader': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/module-type-aliases': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/plugin-content-docs': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/utils': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-common': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/mdx-loader': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/module-type-aliases': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/plugin-content-docs': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/utils': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-common': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@types/history': 4.7.11 '@types/react': 19.2.14 '@types/react-router-config': 5.0.11 @@ -11166,16 +11083,16 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/theme-search-algolia@3.9.2(@algolia/client-search@5.45.0)(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3)(typescript@6.0.2)': + '@docusaurus/theme-search-algolia@3.9.2(@algolia/client-search@5.45.0)(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3)(typescript@6.0.2)': dependencies: '@docsearch/react': 3.9.0(@algolia/client-search@5.45.0)(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3) - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) '@docusaurus/logger': 3.9.2 - '@docusaurus/plugin-content-docs': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) - '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/plugin-content-docs': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/theme-translations': 3.9.2 - '@docusaurus/utils': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-validation': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-validation': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) algoliasearch: 5.45.0 algoliasearch-helper: 3.26.0(algoliasearch@5.45.0) clsx: 2.1.1 @@ -11215,7 +11132,7 @@ snapshots: '@docusaurus/tsconfig@3.9.2': {} - '@docusaurus/types@3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@docusaurus/types@3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@mdx-js/mdx': 3.1.0(acorn@8.17.0) '@types/history': 4.7.11 @@ -11227,7 +11144,7 @@ snapshots: react-dom: 19.2.4(react@19.2.4) react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)' utility-types: 3.11.0 - webpack: 5.101.3(esbuild@0.27.0) + webpack: 5.101.3(esbuild@0.28.1) webpack-merge: 5.10.0 transitivePeerDependencies: - '@swc/core' @@ -11237,9 +11154,9 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils-common@3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@docusaurus/utils-common@3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@docusaurus/types': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/types': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) tslib: 2.8.1 transitivePeerDependencies: - '@swc/core' @@ -11251,11 +11168,11 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils-validation@3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@docusaurus/utils-validation@3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@docusaurus/logger': 3.9.2 - '@docusaurus/utils': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-common': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-common': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) fs-extra: 11.3.1 joi: 17.13.3 js-yaml: 4.1.0 @@ -11271,14 +11188,14 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils@3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@docusaurus/utils@3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@docusaurus/logger': 3.9.2 - '@docusaurus/types': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/utils-common': 3.9.2(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/types': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/utils-common': 3.9.2(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) escape-string-regexp: 4.0.0 execa: 5.1.1 - file-loader: 6.2.0(webpack@5.101.3(esbuild@0.27.0)) + file-loader: 6.2.0(webpack@5.101.3(esbuild@0.28.1)) fs-extra: 11.3.1 github-slugger: 1.5.0 globby: 11.1.0 @@ -11291,9 +11208,9 @@ snapshots: prompts: 2.4.2 resolve-pathname: 3.0.0 tslib: 2.8.1 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.101.3(esbuild@0.27.0)))(webpack@5.101.3(esbuild@0.27.0)) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.101.3(esbuild@0.28.1)))(webpack@5.101.3(esbuild@0.28.1)) utility-types: 3.11.0 - webpack: 5.101.3(esbuild@0.27.0) + webpack: 5.101.3(esbuild@0.28.1) transitivePeerDependencies: - '@swc/core' - acorn @@ -11325,82 +11242,82 @@ snapshots: tslib: 2.8.1 optional: true - '@esbuild/aix-ppc64@0.27.0': + '@esbuild/aix-ppc64@0.28.1': optional: true - '@esbuild/android-arm64@0.27.0': + '@esbuild/android-arm64@0.28.1': optional: true - '@esbuild/android-arm@0.27.0': + '@esbuild/android-arm@0.28.1': optional: true - '@esbuild/android-x64@0.27.0': + '@esbuild/android-x64@0.28.1': optional: true - '@esbuild/darwin-arm64@0.27.0': + '@esbuild/darwin-arm64@0.28.1': optional: true - '@esbuild/darwin-x64@0.27.0': + '@esbuild/darwin-x64@0.28.1': optional: true - '@esbuild/freebsd-arm64@0.27.0': + '@esbuild/freebsd-arm64@0.28.1': optional: true - '@esbuild/freebsd-x64@0.27.0': + '@esbuild/freebsd-x64@0.28.1': optional: true - '@esbuild/linux-arm64@0.27.0': + '@esbuild/linux-arm64@0.28.1': optional: true - '@esbuild/linux-arm@0.27.0': + '@esbuild/linux-arm@0.28.1': optional: true - '@esbuild/linux-ia32@0.27.0': + '@esbuild/linux-ia32@0.28.1': optional: true - '@esbuild/linux-loong64@0.27.0': + '@esbuild/linux-loong64@0.28.1': optional: true - '@esbuild/linux-mips64el@0.27.0': + '@esbuild/linux-mips64el@0.28.1': optional: true - '@esbuild/linux-ppc64@0.27.0': + '@esbuild/linux-ppc64@0.28.1': optional: true - '@esbuild/linux-riscv64@0.27.0': + '@esbuild/linux-riscv64@0.28.1': optional: true - '@esbuild/linux-s390x@0.27.0': + '@esbuild/linux-s390x@0.28.1': optional: true - '@esbuild/linux-x64@0.27.0': + '@esbuild/linux-x64@0.28.1': optional: true - '@esbuild/netbsd-arm64@0.27.0': + '@esbuild/netbsd-arm64@0.28.1': optional: true - '@esbuild/netbsd-x64@0.27.0': + '@esbuild/netbsd-x64@0.28.1': optional: true - '@esbuild/openbsd-arm64@0.27.0': + '@esbuild/openbsd-arm64@0.28.1': optional: true - '@esbuild/openbsd-x64@0.27.0': + '@esbuild/openbsd-x64@0.28.1': optional: true - '@esbuild/openharmony-arm64@0.27.0': + '@esbuild/openharmony-arm64@0.28.1': optional: true - '@esbuild/sunos-x64@0.27.0': + '@esbuild/sunos-x64@0.28.1': optional: true - '@esbuild/win32-arm64@0.27.0': + '@esbuild/win32-arm64@0.28.1': optional: true - '@esbuild/win32-ia32@0.27.0': + '@esbuild/win32-ia32@0.28.1': optional: true - '@esbuild/win32-x64@0.27.0': + '@esbuild/win32-x64@0.28.1': optional: true '@eslint-community/eslint-utils@4.9.1(eslint@10.2.0(jiti@2.7.0))': @@ -11711,7 +11628,7 @@ snapshots: '@mdx-js/mdx@3.1.0(acorn@8.17.0)': dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 '@types/mdx': 2.0.13 @@ -11745,6 +11662,78 @@ snapshots: '@types/react': 19.2.14 react: 19.2.4 + '@napi-rs/nice-android-arm-eabi@1.1.1': + optional: true + + '@napi-rs/nice-android-arm64@1.1.1': + optional: true + + '@napi-rs/nice-darwin-arm64@1.1.1': + optional: true + + '@napi-rs/nice-darwin-x64@1.1.1': + optional: true + + '@napi-rs/nice-freebsd-x64@1.1.1': + optional: true + + '@napi-rs/nice-linux-arm-gnueabihf@1.1.1': + optional: true + + '@napi-rs/nice-linux-arm64-gnu@1.1.1': + optional: true + + '@napi-rs/nice-linux-arm64-musl@1.1.1': + optional: true + + '@napi-rs/nice-linux-ppc64-gnu@1.1.1': + optional: true + + '@napi-rs/nice-linux-riscv64-gnu@1.1.1': + optional: true + + '@napi-rs/nice-linux-s390x-gnu@1.1.1': + optional: true + + '@napi-rs/nice-linux-x64-gnu@1.1.1': + optional: true + + '@napi-rs/nice-linux-x64-musl@1.1.1': + optional: true + + '@napi-rs/nice-openharmony-arm64@1.1.1': + optional: true + + '@napi-rs/nice-win32-arm64-msvc@1.1.1': + optional: true + + '@napi-rs/nice-win32-ia32-msvc@1.1.1': + optional: true + + '@napi-rs/nice-win32-x64-msvc@1.1.1': + optional: true + + '@napi-rs/nice@1.1.1': + optionalDependencies: + '@napi-rs/nice-android-arm-eabi': 1.1.1 + '@napi-rs/nice-android-arm64': 1.1.1 + '@napi-rs/nice-darwin-arm64': 1.1.1 + '@napi-rs/nice-darwin-x64': 1.1.1 + '@napi-rs/nice-freebsd-x64': 1.1.1 + '@napi-rs/nice-linux-arm-gnueabihf': 1.1.1 + '@napi-rs/nice-linux-arm64-gnu': 1.1.1 + '@napi-rs/nice-linux-arm64-musl': 1.1.1 + '@napi-rs/nice-linux-ppc64-gnu': 1.1.1 + '@napi-rs/nice-linux-riscv64-gnu': 1.1.1 + '@napi-rs/nice-linux-s390x-gnu': 1.1.1 + '@napi-rs/nice-linux-x64-gnu': 1.1.1 + '@napi-rs/nice-linux-x64-musl': 1.1.1 + '@napi-rs/nice-openharmony-arm64': 1.1.1 + '@napi-rs/nice-win32-arm64-msvc': 1.1.1 + '@napi-rs/nice-win32-ia32-msvc': 1.1.1 + '@napi-rs/nice-win32-x64-msvc': 1.1.1 + optional: true + '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.11.0)': dependencies: '@emnapi/core': 1.10.0 @@ -11812,12 +11801,12 @@ snapshots: '@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 - '@opentelemetry/semantic-conventions': 1.40.0 + '@opentelemetry/semantic-conventions': 1.41.1 '@opentelemetry/core@2.6.1(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 - '@opentelemetry/semantic-conventions': 1.40.0 + '@opentelemetry/semantic-conventions': 1.41.1 '@opentelemetry/core@2.8.0(@opentelemetry/api@1.9.1)': dependencies: @@ -11863,13 +11852,13 @@ snapshots: dependencies: '@opentelemetry/api': 1.9.1 '@opentelemetry/core': 2.2.0(@opentelemetry/api@1.9.1) - '@opentelemetry/semantic-conventions': 1.40.0 + '@opentelemetry/semantic-conventions': 1.41.1 '@opentelemetry/resources@2.6.1(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 '@opentelemetry/core': 2.6.1(@opentelemetry/api@1.9.1) - '@opentelemetry/semantic-conventions': 1.40.0 + '@opentelemetry/semantic-conventions': 1.41.1 '@opentelemetry/resources@2.8.0(@opentelemetry/api@1.9.1)': dependencies: @@ -11904,58 +11893,104 @@ snapshots: '@opentelemetry/resources': 2.8.0(@opentelemetry/api@1.9.1) '@opentelemetry/semantic-conventions': 1.41.1 - '@opentelemetry/semantic-conventions@1.40.0': {} - '@opentelemetry/semantic-conventions@1.41.1': {} '@oxc-parser/binding-android-arm-eabi@0.132.0': optional: true + '@oxc-parser/binding-android-arm-eabi@0.135.0': + optional: true + '@oxc-parser/binding-android-arm64@0.132.0': optional: true + '@oxc-parser/binding-android-arm64@0.135.0': + optional: true + '@oxc-parser/binding-darwin-arm64@0.132.0': optional: true + '@oxc-parser/binding-darwin-arm64@0.135.0': + optional: true + '@oxc-parser/binding-darwin-x64@0.132.0': optional: true + '@oxc-parser/binding-darwin-x64@0.135.0': + optional: true + '@oxc-parser/binding-freebsd-x64@0.132.0': optional: true + '@oxc-parser/binding-freebsd-x64@0.135.0': + optional: true + '@oxc-parser/binding-linux-arm-gnueabihf@0.132.0': optional: true + '@oxc-parser/binding-linux-arm-gnueabihf@0.135.0': + optional: true + '@oxc-parser/binding-linux-arm-musleabihf@0.132.0': optional: true + '@oxc-parser/binding-linux-arm-musleabihf@0.135.0': + optional: true + '@oxc-parser/binding-linux-arm64-gnu@0.132.0': optional: true + '@oxc-parser/binding-linux-arm64-gnu@0.135.0': + optional: true + '@oxc-parser/binding-linux-arm64-musl@0.132.0': optional: true + '@oxc-parser/binding-linux-arm64-musl@0.135.0': + optional: true + '@oxc-parser/binding-linux-ppc64-gnu@0.132.0': optional: true + '@oxc-parser/binding-linux-ppc64-gnu@0.135.0': + optional: true + '@oxc-parser/binding-linux-riscv64-gnu@0.132.0': optional: true + '@oxc-parser/binding-linux-riscv64-gnu@0.135.0': + optional: true + '@oxc-parser/binding-linux-riscv64-musl@0.132.0': optional: true + '@oxc-parser/binding-linux-riscv64-musl@0.135.0': + optional: true + '@oxc-parser/binding-linux-s390x-gnu@0.132.0': optional: true + '@oxc-parser/binding-linux-s390x-gnu@0.135.0': + optional: true + '@oxc-parser/binding-linux-x64-gnu@0.132.0': optional: true + '@oxc-parser/binding-linux-x64-gnu@0.135.0': + optional: true + '@oxc-parser/binding-linux-x64-musl@0.132.0': optional: true + '@oxc-parser/binding-linux-x64-musl@0.135.0': + optional: true + '@oxc-parser/binding-openharmony-arm64@0.132.0': optional: true + '@oxc-parser/binding-openharmony-arm64@0.135.0': + optional: true + '@oxc-parser/binding-wasm32-wasi@0.132.0': dependencies: '@emnapi/core': 1.10.0 @@ -11963,21 +11998,39 @@ snapshots: '@napi-rs/wasm-runtime': 1.1.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) optional: true + '@oxc-parser/binding-wasm32-wasi@0.135.0': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@napi-rs/wasm-runtime': 1.1.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + optional: true + '@oxc-parser/binding-win32-arm64-msvc@0.132.0': optional: true + '@oxc-parser/binding-win32-arm64-msvc@0.135.0': + optional: true + '@oxc-parser/binding-win32-ia32-msvc@0.132.0': optional: true + '@oxc-parser/binding-win32-ia32-msvc@0.135.0': + optional: true + '@oxc-parser/binding-win32-x64-msvc@0.132.0': optional: true + '@oxc-parser/binding-win32-x64-msvc@0.135.0': + optional: true + '@oxc-project/types@0.122.0': {} '@oxc-project/types@0.132.0': {} '@oxc-project/types@0.133.0': {} + '@oxc-project/types@0.135.0': {} + '@oxc-resolver/binding-android-arm-eabi@11.20.0': optional: true @@ -12096,6 +12149,67 @@ snapshots: '@oxlint/binding-win32-x64-msvc@1.66.0': optional: true + '@parcel/watcher-android-arm64@2.5.6': + optional: true + + '@parcel/watcher-darwin-arm64@2.5.6': + optional: true + + '@parcel/watcher-darwin-x64@2.5.6': + optional: true + + '@parcel/watcher-freebsd-x64@2.5.6': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.5.6': + optional: true + + '@parcel/watcher-linux-arm-musl@2.5.6': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.5.6': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.5.6': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.5.6': + optional: true + + '@parcel/watcher-linux-x64-musl@2.5.6': + optional: true + + '@parcel/watcher-win32-arm64@2.5.6': + optional: true + + '@parcel/watcher-win32-ia32@2.5.6': + optional: true + + '@parcel/watcher-win32-x64@2.5.6': + optional: true + + '@parcel/watcher@2.5.6': + dependencies: + detect-libc: 2.1.2 + is-glob: 4.0.3 + node-addon-api: 7.1.1 + picomatch: 4.0.4 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.5.6 + '@parcel/watcher-darwin-arm64': 2.5.6 + '@parcel/watcher-darwin-x64': 2.5.6 + '@parcel/watcher-freebsd-x64': 2.5.6 + '@parcel/watcher-linux-arm-glibc': 2.5.6 + '@parcel/watcher-linux-arm-musl': 2.5.6 + '@parcel/watcher-linux-arm64-glibc': 2.5.6 + '@parcel/watcher-linux-arm64-musl': 2.5.6 + '@parcel/watcher-linux-x64-glibc': 2.5.6 + '@parcel/watcher-linux-x64-musl': 2.5.6 + '@parcel/watcher-win32-arm64': 2.5.6 + '@parcel/watcher-win32-ia32': 2.5.6 + '@parcel/watcher-win32-x64': 2.5.6 + optional: true + '@pkgjs/parseargs@0.11.0': optional: true @@ -12151,9 +12265,9 @@ snapshots: dependencies: quansync: 1.0.0 - '@react-grab/cli@0.1.44': + '@react-grab/cli@0.1.47': dependencies: - agent-install: 0.0.5 + agent-install: 0.0.6 commander: 14.0.3 ignore: 7.0.5 ora: 9.4.0 @@ -12180,103 +12294,192 @@ snapshots: '@rolldown/binding-darwin-x64@1.0.3': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-rc.12': + '@rolldown/binding-freebsd-x64@1.0.0-rc.12': + optional: true + + '@rolldown/binding-freebsd-x64@1.0.3': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.12': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.0.3': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.12': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.0.3': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.12': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.0.3': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.12': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.0.3': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.12': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.0.3': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.12': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.0.3': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.0-rc.12': + optional: true + + '@rolldown/binding-linux-x64-musl@1.0.3': + optional: true + + '@rolldown/binding-openharmony-arm64@1.0.0-rc.12': + optional: true + + '@rolldown/binding-openharmony-arm64@1.0.3': + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.11.0)': + dependencies: + '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.11.0) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.3': + dependencies: + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 + '@napi-rs/wasm-runtime': 1.1.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12': + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.0.3': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.12': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.0.3': + optional: true + + '@rolldown/pluginutils@1.0.0-rc.12': {} + + '@rolldown/pluginutils@1.0.0-rc.2': {} + + '@rolldown/pluginutils@1.0.0-rc.7': {} + + '@rolldown/pluginutils@1.0.1': {} + + '@rollup/plugin-json@6.1.0(rollup@4.62.2)': + dependencies: + '@rollup/pluginutils': 5.4.0(rollup@4.62.2) + optionalDependencies: + rollup: 4.62.2 + + '@rollup/pluginutils@5.4.0(rollup@4.62.2)': + dependencies: + '@types/estree': 1.0.9 + estree-walker: 2.0.2 + picomatch: 4.0.4 + optionalDependencies: + rollup: 4.62.2 + + '@rollup/rollup-android-arm-eabi@4.62.2': optional: true - '@rolldown/binding-freebsd-x64@1.0.3': + '@rollup/rollup-android-arm64@4.62.2': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.12': + '@rollup/rollup-darwin-arm64@4.62.2': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.3': + '@rollup/rollup-darwin-x64@4.62.2': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.12': + '@rollup/rollup-freebsd-arm64@4.62.2': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.3': + '@rollup/rollup-freebsd-x64@4.62.2': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.12': + '@rollup/rollup-linux-arm-gnueabihf@4.62.2': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.3': + '@rollup/rollup-linux-arm-musleabihf@4.62.2': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.12': + '@rollup/rollup-linux-arm64-gnu@4.62.2': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.0.3': + '@rollup/rollup-linux-arm64-musl@4.62.2': optional: true - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.12': + '@rollup/rollup-linux-loong64-gnu@4.62.2': optional: true - '@rolldown/binding-linux-s390x-gnu@1.0.3': + '@rollup/rollup-linux-loong64-musl@4.62.2': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.12': + '@rollup/rollup-linux-ppc64-gnu@4.62.2': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.3': + '@rollup/rollup-linux-ppc64-musl@4.62.2': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-rc.12': + '@rollup/rollup-linux-riscv64-gnu@4.62.2': optional: true - '@rolldown/binding-linux-x64-musl@1.0.3': + '@rollup/rollup-linux-riscv64-musl@4.62.2': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-rc.12': + '@rollup/rollup-linux-s390x-gnu@4.62.2': optional: true - '@rolldown/binding-openharmony-arm64@1.0.3': + '@rollup/rollup-linux-x64-gnu@4.46.3': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.11.0)': - dependencies: - '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.11.0) - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' + '@rollup/rollup-linux-x64-gnu@4.62.2': optional: true - '@rolldown/binding-wasm32-wasi@1.0.3': - dependencies: - '@emnapi/core': 1.10.0 - '@emnapi/runtime': 1.10.0 - '@napi-rs/wasm-runtime': 1.1.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + '@rollup/rollup-linux-x64-musl@4.62.2': optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12': + '@rollup/rollup-openbsd-x64@4.62.2': optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.3': + '@rollup/rollup-openharmony-arm64@4.62.2': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.12': + '@rollup/rollup-win32-arm64-msvc@4.62.2': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.3': + '@rollup/rollup-win32-ia32-msvc@4.62.2': optional: true - '@rolldown/pluginutils@1.0.0-rc.12': {} - - '@rolldown/pluginutils@1.0.0-rc.2': {} - - '@rolldown/pluginutils@1.0.0-rc.7': {} + '@rollup/rollup-win32-x64-gnu@4.62.2': + optional: true - '@rolldown/pluginutils@1.0.1': {} + '@rollup/rollup-win32-x64-msvc@4.62.2': + optional: true - '@rollup/pluginutils@5.4.0': + '@rollup/wasm-node@4.62.2': dependencies: - '@types/estree': 1.0.8 - estree-walker: 2.0.2 - picomatch: 4.0.4 - - '@rollup/rollup-linux-x64-gnu@4.46.3': - optional: true + '@types/estree': 1.0.9 + optionalDependencies: + fsevents: 2.3.3 '@sentry/core@10.58.0': {} @@ -12328,9 +12531,9 @@ snapshots: '@sideway/pinpoint@2.0.0': {} - '@signalwire/docusaurus-plugin-llms-txt@1.2.2(@docusaurus/core@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))': + '@signalwire/docusaurus-plugin-llms-txt@1.2.2(@docusaurus/core@3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2))': dependencies: - '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.27.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) + '@docusaurus/core': 3.9.2(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@19.2.4))(acorn@8.17.0)(esbuild@0.28.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2) fs-extra: 11.3.1 hast-util-select: 6.0.4 hast-util-to-html: 9.0.5 @@ -12611,12 +12814,12 @@ snapshots: postcss: 8.5.8 tailwindcss: 4.2.4 - '@tailwindcss/vite@4.2.2(vite@8.0.16(@types/node@25.5.2)(esbuild@0.27.0)(jiti@2.7.0)(terser@5.43.1)(yaml@2.9.0))': + '@tailwindcss/vite@4.2.2(vite@8.0.16(@types/node@25.5.2)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(terser@5.43.1)(yaml@2.9.0))': dependencies: '@tailwindcss/node': 4.2.2 '@tailwindcss/oxide': 4.2.2 tailwindcss: 4.2.2 - vite: 8.0.16(@types/node@25.5.2)(esbuild@0.27.0)(jiti@2.7.0)(terser@5.43.1)(yaml@2.9.0) + vite: 8.0.16(@types/node@25.5.2)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(terser@5.43.1)(yaml@2.9.0) '@tanstack/query-core@5.96.2': {} @@ -12695,18 +12898,18 @@ snapshots: '@types/eslint-scope@3.7.7': dependencies: '@types/eslint': 9.6.1 - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 '@types/eslint@9.6.1': dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 '@types/json-schema': 7.0.15 '@types/esrecurse@4.3.1': {} '@types/estree-jsx@1.0.5': dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 '@types/estree@1.0.8': {} @@ -12935,7 +13138,7 @@ snapshots: '@typescript-eslint/visitor-keys': 8.58.0 debug: 4.4.3 minimatch: 10.2.5 - semver: 7.7.3 + semver: 7.8.4 tinyglobby: 0.2.17 ts-api-utils: 2.5.0(typescript@6.0.2) typescript: 6.0.2 @@ -12960,21 +13163,21 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-react@6.0.1(vite@8.0.16(@types/node@25.5.2)(esbuild@0.27.0)(jiti@2.7.0)(terser@5.43.1)(yaml@2.9.0))': + '@vitejs/plugin-react@6.0.1(vite@8.0.16(@types/node@25.5.2)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(terser@5.43.1)(yaml@2.9.0))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.7 - vite: 8.0.16(@types/node@25.5.2)(esbuild@0.27.0)(jiti@2.7.0)(terser@5.43.1)(yaml@2.9.0) + vite: 8.0.16(@types/node@25.5.2)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(terser@5.43.1)(yaml@2.9.0) - '@vitejs/plugin-vue@6.0.5(vite@8.0.16(@types/node@25.5.2)(esbuild@0.27.0)(jiti@2.7.0)(terser@5.43.1)(yaml@2.9.0))(vue@3.5.32(typescript@6.0.2))': + '@vitejs/plugin-vue@6.0.5(vite@8.0.16(@types/node@25.5.2)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(terser@5.43.1)(yaml@2.9.0))(vue@3.5.32(typescript@6.0.2))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.2 - vite: 8.0.16(@types/node@25.5.2)(esbuild@0.27.0)(jiti@2.7.0)(terser@5.43.1)(yaml@2.9.0) + vite: 8.0.16(@types/node@25.5.2)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(terser@5.43.1)(yaml@2.9.0) vue: 3.5.32(typescript@6.0.2) - '@vitejs/plugin-vue@6.0.5(vite@8.0.16(@types/node@25.5.2)(esbuild@0.27.0)(jiti@2.7.0)(terser@5.43.1)(yaml@2.9.0))(vue@3.5.32(typescript@6.0.3))': + '@vitejs/plugin-vue@6.0.5(vite@8.0.16(@types/node@25.5.2)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(terser@5.43.1)(yaml@2.9.0))(vue@3.5.32(typescript@6.0.3))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.2 - vite: 8.0.16(@types/node@25.5.2)(esbuild@0.27.0)(jiti@2.7.0)(terser@5.43.1)(yaml@2.9.0) + vite: 8.0.16(@types/node@25.5.2)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(terser@5.43.1)(yaml@2.9.0) vue: 3.5.32(typescript@6.0.3) '@vitest/coverage-v8@4.1.2(vitest@4.1.2)': @@ -12989,7 +13192,7 @@ snapshots: obug: 2.1.1 std-env: 4.0.0 tinyrainbow: 3.1.0 - vitest: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.16(@types/node@25.5.2)(esbuild@0.27.0)(jiti@2.7.0)(terser@5.43.1)(yaml@2.9.0)) + vitest: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.16(@types/node@25.5.2)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(terser@5.43.1)(yaml@2.9.0)) '@vitest/expect@4.1.2': dependencies: @@ -13000,13 +13203,13 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.2(vite@8.0.16(@types/node@25.5.2)(esbuild@0.27.0)(jiti@2.7.0)(terser@5.43.1)(yaml@2.9.0))': + '@vitest/mocker@4.1.2(vite@8.0.16(@types/node@25.5.2)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(terser@5.43.1)(yaml@2.9.0))': dependencies: '@vitest/spy': 4.1.2 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.0.16(@types/node@25.5.2)(esbuild@0.27.0)(jiti@2.7.0)(terser@5.43.1)(yaml@2.9.0) + vite: 8.0.16(@types/node@25.5.2)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(terser@5.43.1)(yaml@2.9.0) '@vitest/pretty-format@4.1.2': dependencies: @@ -13035,7 +13238,7 @@ snapshots: sirv: 3.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vitest: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.16(@types/node@25.5.2)(esbuild@0.27.0)(jiti@2.7.0)(terser@5.43.1)(yaml@2.9.0)) + vitest: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.16(@types/node@25.5.2)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(terser@5.43.1)(yaml@2.9.0)) '@vitest/utils@4.1.2': dependencies: @@ -13267,9 +13470,9 @@ snapshots: dependencies: acorn: 8.17.0 - acorn-import-phases@1.0.4(acorn@8.15.0): + acorn-import-phases@1.0.4(acorn@8.17.0): dependencies: - acorn: 8.15.0 + acorn: 8.17.0 acorn-jsx@5.3.2(acorn@8.16.0): dependencies: @@ -13281,9 +13484,7 @@ snapshots: acorn-walk@8.3.4: dependencies: - acorn: 8.16.0 - - acorn@8.15.0: {} + acorn: 8.17.0 acorn@8.16.0: {} @@ -13300,14 +13501,23 @@ snapshots: prompts: 2.4.2 yaml: 2.9.0 + agent-install@0.0.6: + dependencies: + '@iarna/toml': 2.2.5 + commander: 14.0.3 + jsonc-parser: 3.3.1 + picocolors: 1.1.1 + prompts: 2.4.2 + yaml: 2.9.0 + aggregate-error@3.1.0: dependencies: clean-stack: 2.2.0 indent-string: 4.0.0 - ajv-formats@2.1.1(ajv@8.17.1): + ajv-formats@2.1.1(ajv@8.20.0): optionalDependencies: - ajv: 8.17.1 + ajv: 8.20.0 ajv-formats@3.0.1(ajv@8.20.0): optionalDependencies: @@ -13317,9 +13527,9 @@ snapshots: dependencies: ajv: 6.15.0 - ajv-keywords@5.1.0(ajv@8.17.1): + ajv-keywords@5.1.0(ajv@8.20.0): dependencies: - ajv: 8.17.1 + ajv: 8.20.0 fast-deep-equal: 3.1.3 ajv@6.14.0: @@ -13336,13 +13546,6 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.17.1: - dependencies: - fast-deep-equal: 3.1.3 - fast-uri: 3.0.6 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - ajv@8.20.0: dependencies: fast-deep-equal: 3.1.3 @@ -13462,43 +13665,26 @@ snapshots: postcss: 8.5.15 postcss-value-parser: 4.2.0 - babel-loader@9.2.1(@babel/core@7.28.5)(webpack@5.101.3(esbuild@0.27.0)): + babel-loader@9.2.1(@babel/core@7.29.7)(webpack@5.101.3(esbuild@0.28.1)): dependencies: - '@babel/core': 7.28.5 + '@babel/core': 7.29.7 find-cache-dir: 4.0.0 schema-utils: 4.3.2 - webpack: 5.101.3(esbuild@0.27.0) + webpack: 5.101.3(esbuild@0.28.1) babel-plugin-dynamic-import-node@2.3.3: dependencies: object.assign: 4.1.7 - babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.5): - dependencies: - '@babel/compat-data': 7.28.0 - '@babel/core': 7.28.5 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.29.7): dependencies: - '@babel/compat-data': 7.28.0 + '@babel/compat-data': 7.29.7 '@babel/core': 7.29.7 '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.29.7) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.28.5): - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5) - core-js-compat: 3.45.0 - transitivePeerDependencies: - - supports-color - babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.29.7): dependencies: '@babel/core': 7.29.7 @@ -13507,13 +13693,6 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.28.5): - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5) - transitivePeerDependencies: - - supports-color - babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.29.7): dependencies: '@babel/core': 7.29.7 @@ -13527,6 +13706,8 @@ snapshots: balanced-match@4.0.4: {} + baseline-browser-mapping@2.10.38: {} + batch@0.6.1: {} bcp-47-match@2.0.3: {} @@ -13617,6 +13798,14 @@ snapshots: node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.25.3) + browserslist@4.28.4: + dependencies: + baseline-browser-mapping: 2.10.38 + caniuse-lite: 1.0.30001799 + electron-to-chromium: 1.5.378 + node-releases: 2.0.50 + update-browserslist-db: 1.2.3(browserslist@4.28.4) + buffer-from@1.1.2: {} bundle-name@4.1.0: @@ -13678,6 +13867,8 @@ snapshots: caniuse-lite@1.0.30001797: {} + caniuse-lite@1.0.30001799: {} + ccount@2.0.1: {} chai@6.2.2: {} @@ -13762,6 +13953,12 @@ snapshots: client-only@0.0.1: {} + cliui@9.0.1: + dependencies: + string-width: 7.2.0 + strip-ansi: 7.2.0 + wrap-ansi: 9.0.2 + clone-deep@4.0.1: dependencies: is-plain-object: 2.0.4 @@ -13859,6 +14056,8 @@ snapshots: content-type@1.0.5: {} + convert-source-map@1.9.0: {} + convert-source-map@2.0.0: {} cookie-signature@1.0.6: {} @@ -13867,7 +14066,11 @@ snapshots: cookie@1.0.2: {} - copy-webpack-plugin@11.0.0(webpack@5.101.3(esbuild@0.27.0)): + copy-anything@3.0.5: + dependencies: + is-what: 4.1.16 + + copy-webpack-plugin@11.0.0(webpack@5.101.3(esbuild@0.28.1)): dependencies: fast-glob: 3.3.3 glob-parent: 6.0.2 @@ -13875,7 +14078,7 @@ snapshots: normalize-path: 3.0.0 schema-utils: 4.3.2 serialize-javascript: 6.0.2 - webpack: 5.101.3(esbuild@0.27.0) + webpack: 5.101.3(esbuild@0.28.1) core-js-compat@3.45.0: dependencies: @@ -13922,7 +14125,7 @@ snapshots: postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 - css-loader@6.11.0(webpack@5.101.3(esbuild@0.27.0)): + css-loader@6.11.0(webpack@5.101.3(esbuild@0.28.1)): dependencies: icss-utils: 5.1.0(postcss@8.5.15) postcss: 8.5.15 @@ -13933,9 +14136,9 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.8.4 optionalDependencies: - webpack: 5.101.3(esbuild@0.27.0) + webpack: 5.101.3(esbuild@0.28.1) - css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(esbuild@0.27.0)(webpack@5.101.3(esbuild@0.27.0)): + css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(esbuild@0.28.1)(webpack@5.101.3(esbuild@0.28.1)): dependencies: '@jridgewell/trace-mapping': 0.3.31 cssnano: 6.1.2(postcss@8.5.15) @@ -13943,10 +14146,10 @@ snapshots: postcss: 8.5.15 schema-utils: 4.3.2 serialize-javascript: 6.0.2 - webpack: 5.101.3(esbuild@0.27.0) + webpack: 5.101.3(esbuild@0.28.1) optionalDependencies: clean-css: 5.3.3 - esbuild: 0.27.0 + esbuild: 0.28.1 css-prefers-color-scheme@10.0.0(postcss@8.5.15): dependencies: @@ -14122,9 +14325,11 @@ snapshots: depd@2.0.0: {} + dependency-graph@1.0.0: {} + dequal@2.0.3: {} - deslop-js@0.0.24: + deslop-js@0.5.8: dependencies: '@oxc-project/types': 0.132.0 fast-glob: 3.3.3 @@ -14246,6 +14451,10 @@ snapshots: electron-to-chromium@1.5.207: {} + electron-to-chromium@1.5.378: {} + + emoji-regex@10.6.0: {} + emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} @@ -14277,6 +14486,11 @@ snapshots: env-paths@3.0.0: {} + errno@0.1.8: + dependencies: + prr: 1.0.1 + optional: true + error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 @@ -14307,35 +14521,34 @@ snapshots: esast-util-from-estree: 2.0.0 vfile-message: 4.0.3 - esbuild@0.27.0: + esbuild@0.28.1: optionalDependencies: - '@esbuild/aix-ppc64': 0.27.0 - '@esbuild/android-arm': 0.27.0 - '@esbuild/android-arm64': 0.27.0 - '@esbuild/android-x64': 0.27.0 - '@esbuild/darwin-arm64': 0.27.0 - '@esbuild/darwin-x64': 0.27.0 - '@esbuild/freebsd-arm64': 0.27.0 - '@esbuild/freebsd-x64': 0.27.0 - '@esbuild/linux-arm': 0.27.0 - '@esbuild/linux-arm64': 0.27.0 - '@esbuild/linux-ia32': 0.27.0 - '@esbuild/linux-loong64': 0.27.0 - '@esbuild/linux-mips64el': 0.27.0 - '@esbuild/linux-ppc64': 0.27.0 - '@esbuild/linux-riscv64': 0.27.0 - '@esbuild/linux-s390x': 0.27.0 - '@esbuild/linux-x64': 0.27.0 - '@esbuild/netbsd-arm64': 0.27.0 - '@esbuild/netbsd-x64': 0.27.0 - '@esbuild/openbsd-arm64': 0.27.0 - '@esbuild/openbsd-x64': 0.27.0 - '@esbuild/openharmony-arm64': 0.27.0 - '@esbuild/sunos-x64': 0.27.0 - '@esbuild/win32-arm64': 0.27.0 - '@esbuild/win32-ia32': 0.27.0 - '@esbuild/win32-x64': 0.27.0 - optional: true + '@esbuild/aix-ppc64': 0.28.1 + '@esbuild/android-arm': 0.28.1 + '@esbuild/android-arm64': 0.28.1 + '@esbuild/android-x64': 0.28.1 + '@esbuild/darwin-arm64': 0.28.1 + '@esbuild/darwin-x64': 0.28.1 + '@esbuild/freebsd-arm64': 0.28.1 + '@esbuild/freebsd-x64': 0.28.1 + '@esbuild/linux-arm': 0.28.1 + '@esbuild/linux-arm64': 0.28.1 + '@esbuild/linux-ia32': 0.28.1 + '@esbuild/linux-loong64': 0.28.1 + '@esbuild/linux-mips64el': 0.28.1 + '@esbuild/linux-ppc64': 0.28.1 + '@esbuild/linux-riscv64': 0.28.1 + '@esbuild/linux-s390x': 0.28.1 + '@esbuild/linux-x64': 0.28.1 + '@esbuild/netbsd-arm64': 0.28.1 + '@esbuild/netbsd-x64': 0.28.1 + '@esbuild/openbsd-arm64': 0.28.1 + '@esbuild/openbsd-x64': 0.28.1 + '@esbuild/openharmony-arm64': 0.28.1 + '@esbuild/sunos-x64': 0.28.1 + '@esbuild/win32-arm64': 0.28.1 + '@esbuild/win32-ia32': 0.28.1 + '@esbuild/win32-x64': 0.28.1 escalade@3.2.0: {} @@ -14410,7 +14623,7 @@ snapshots: eslint-scope@9.1.2: dependencies: '@types/esrecurse': 4.3.1 - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 esrecurse: 4.3.0 estraverse: 5.3.0 @@ -14522,7 +14735,7 @@ snapshots: estree-util-attach-comments@3.0.0: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 estree-util-build-jsx@3.0.1: dependencies: @@ -14535,7 +14748,7 @@ snapshots: estree-util-scope@1.0.0: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 devlop: 1.1.0 estree-util-to-js@2.0.0: @@ -14546,7 +14759,7 @@ snapshots: estree-util-value-to-estree@3.4.0: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 estree-util-visit@2.0.0: dependencies: @@ -14659,8 +14872,6 @@ snapshots: fast-levenshtein@2.0.6: {} - fast-uri@3.0.6: {} - fast-uri@3.1.2: {} fastq@1.20.1: @@ -14695,11 +14906,11 @@ snapshots: dependencies: flat-cache: 4.0.1 - file-loader@6.2.0(webpack@5.101.3(esbuild@0.27.0)): + file-loader@6.2.0(webpack@5.101.3(esbuild@0.28.1)): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.101.3(esbuild@0.27.0) + webpack: 5.101.3(esbuild@0.28.1) fill-range@7.1.1: dependencies: @@ -14722,6 +14933,13 @@ snapshots: common-path-prefix: 3.0.0 pkg-dir: 7.0.0 + find-cache-directory@6.0.0: + dependencies: + common-path-prefix: 3.0.0 + pkg-dir: 8.0.0 + + find-up-simple@1.0.1: {} + find-up@5.0.0: dependencies: locate-path: 6.0.0 @@ -14773,6 +14991,8 @@ snapshots: gensync@1.0.0-beta.2: {} + get-caller-file@2.0.5: {} + get-east-asian-width@1.6.0: {} get-intrinsic@1.3.0: @@ -15001,7 +15221,7 @@ snapshots: hast-util-to-estree@3.1.3: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 '@types/estree-jsx': 1.0.5 '@types/hast': 3.0.4 comma-separated-tokens: 2.0.3 @@ -15036,7 +15256,7 @@ snapshots: hast-util-to-jsx-runtime@2.3.6: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 '@types/hast': 3.0.4 '@types/unist': 3.0.3 comma-separated-tokens: 2.0.3 @@ -15168,7 +15388,7 @@ snapshots: html-void-elements@3.0.0: {} - html-webpack-plugin@5.6.4(webpack@5.101.3(esbuild@0.27.0)): + html-webpack-plugin@5.6.4(webpack@5.101.3(esbuild@0.28.1)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -15176,7 +15396,7 @@ snapshots: pretty-error: 4.0.0 tapable: 2.3.2 optionalDependencies: - webpack: 5.101.3(esbuild@0.27.0) + webpack: 5.101.3(esbuild@0.28.1) htmlparser2@6.1.0: dependencies: @@ -15246,6 +15466,11 @@ snapshots: dependencies: safer-buffer: 2.1.2 + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + optional: true + icss-utils@5.1.0(postcss@8.5.15): dependencies: postcss: 8.5.15 @@ -15254,8 +15479,13 @@ snapshots: ignore@7.0.5: {} + image-size@0.5.5: + optional: true + image-size@2.0.2: {} + immutable@5.1.7: {} + import-fresh@3.3.1: dependencies: parent-module: 1.0.1 @@ -15286,6 +15516,10 @@ snapshots: ini@2.0.0: {} + injection-js@2.6.1: + dependencies: + tslib: 2.8.1 + inline-style-parser@0.2.4: {} invariant@2.2.4: @@ -15380,6 +15614,8 @@ snapshots: dependencies: is-potential-custom-element-name: 1.0.1 + is-what@4.1.16: {} + is-wsl@2.2.0: dependencies: is-docker: 2.2.1 @@ -15551,6 +15787,19 @@ snapshots: picocolors: 1.1.1 shell-quote: 1.8.3 + less@4.6.7: + dependencies: + copy-anything: 3.0.5 + parse-node-version: 1.0.1 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.11 + image-size: 0.5.5 + make-dir: 5.1.0 + mime: 1.6.0 + needle: 3.5.0 + source-map: 0.6.1 + leven@3.1.0: {} levn@0.4.1: @@ -15714,6 +15963,9 @@ snapshots: dependencies: semver: 7.8.4 + make-dir@5.1.0: + optional: true + markdown-extensions@2.0.0: {} markdown-table@2.0.0: @@ -16033,7 +16285,7 @@ snapshots: micromark-extension-mdx-expression@3.0.1: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 devlop: 1.1.0 micromark-factory-mdx-expression: 2.0.3 micromark-factory-space: 2.0.1 @@ -16044,7 +16296,7 @@ snapshots: micromark-extension-mdx-jsx@3.0.2: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 micromark-factory-mdx-expression: 2.0.3 @@ -16061,7 +16313,7 @@ snapshots: micromark-extension-mdxjs-esm@3.0.0: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 micromark-util-character: 2.1.1 @@ -16073,8 +16325,8 @@ snapshots: micromark-extension-mdxjs@3.0.0: dependencies: - acorn: 8.16.0 - acorn-jsx: 5.3.2(acorn@8.16.0) + acorn: 8.17.0 + acorn-jsx: 5.3.2(acorn@8.17.0) micromark-extension-mdx-expression: 3.0.1 micromark-extension-mdx-jsx: 3.0.2 micromark-extension-mdx-md: 2.0.0 @@ -16097,7 +16349,7 @@ snapshots: micromark-factory-mdx-expression@2.0.3: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 devlop: 1.1.0 micromark-factory-space: 2.0.1 micromark-util-character: 2.1.1 @@ -16171,7 +16423,7 @@ snapshots: micromark-util-events-to-acorn@2.0.3: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 '@types/unist': 3.0.3 devlop: 1.1.0 estree-util-visit: 2.0.0 @@ -16267,11 +16519,11 @@ snapshots: min-indent@1.0.1: {} - mini-css-extract-plugin@2.9.4(webpack@5.101.3(esbuild@0.27.0)): + mini-css-extract-plugin@2.9.4(webpack@5.101.3(esbuild@0.28.1)): dependencies: schema-utils: 4.3.2 tapable: 2.3.2 - webpack: 5.101.3(esbuild@0.27.0) + webpack: 5.101.3(esbuild@0.28.1) minimalistic-assert@1.0.1: {} @@ -16317,13 +16569,19 @@ snapshots: natural-compare@1.4.0: {} + needle@3.5.0: + dependencies: + iconv-lite: 0.6.3 + sax: 1.4.1 + optional: true + negotiator@0.6.3: {} negotiator@0.6.4: {} neo-async@2.6.2: {} - next@15.5.18(@babel/core@7.29.7)(@opentelemetry/api@1.9.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + next@15.5.18(@babel/core@7.29.7)(@opentelemetry/api@1.9.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.101.0): dependencies: '@next/env': 15.5.18 '@swc/helpers': 0.5.15 @@ -16342,16 +16600,49 @@ snapshots: '@next/swc-win32-arm64-msvc': 15.5.18 '@next/swc-win32-x64-msvc': 15.5.18 '@opentelemetry/api': 1.9.1 + sass: 1.101.0 sharp: 0.34.5 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros + ng-packagr@22.0.0(@angular/compiler-cli@22.0.2(@angular/compiler@22.0.2)(typescript@6.0.3))(tailwindcss@4.2.4)(tslib@2.8.1)(typescript@6.0.3): + dependencies: + '@ampproject/remapping': 2.3.0 + '@angular/compiler-cli': 22.0.2(@angular/compiler@22.0.2)(typescript@6.0.3) + '@rollup/plugin-json': 6.1.0(rollup@4.62.2) + '@rollup/wasm-node': 4.62.2 + ajv: 8.20.0 + browserslist: 4.28.4 + chokidar: 5.0.0 + commander: 14.0.3 + dependency-graph: 1.0.0 + esbuild: 0.28.1 + find-cache-directory: 6.0.0 + injection-js: 2.6.1 + jsonc-parser: 3.3.1 + less: 4.6.7 + ora: 9.4.0 + piscina: 5.2.0 + postcss: 8.5.15 + rollup-plugin-dts: 6.4.1(rollup@4.62.2)(typescript@6.0.3) + rxjs: 7.8.2 + sass: 1.101.0 + tinyglobby: 0.2.17 + tslib: 2.8.1 + typescript: 6.0.3 + optionalDependencies: + rollup: 4.62.2 + tailwindcss: 4.2.4 + no-case@3.0.4: dependencies: lower-case: 2.0.2 tslib: 2.8.1 + node-addon-api@7.1.1: + optional: true + node-emoji@2.2.0: dependencies: '@sindresorhus/is': 4.6.0 @@ -16363,6 +16654,8 @@ snapshots: node-releases@2.0.19: {} + node-releases@2.0.50: {} + nopt@7.2.1: dependencies: abbrev: 2.0.0 @@ -16383,11 +16676,11 @@ snapshots: dependencies: boolbase: 1.0.0 - null-loader@4.0.1(webpack@5.101.3(esbuild@0.27.0)): + null-loader@4.0.1(webpack@5.101.3(esbuild@0.28.1)): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.101.3(esbuild@0.27.0) + webpack: 5.101.3(esbuild@0.28.1) object-assign@4.1.1: {} @@ -16482,6 +16775,31 @@ snapshots: '@oxc-parser/binding-win32-ia32-msvc': 0.132.0 '@oxc-parser/binding-win32-x64-msvc': 0.132.0 + oxc-parser@0.135.0: + dependencies: + '@oxc-project/types': 0.135.0 + optionalDependencies: + '@oxc-parser/binding-android-arm-eabi': 0.135.0 + '@oxc-parser/binding-android-arm64': 0.135.0 + '@oxc-parser/binding-darwin-arm64': 0.135.0 + '@oxc-parser/binding-darwin-x64': 0.135.0 + '@oxc-parser/binding-freebsd-x64': 0.135.0 + '@oxc-parser/binding-linux-arm-gnueabihf': 0.135.0 + '@oxc-parser/binding-linux-arm-musleabihf': 0.135.0 + '@oxc-parser/binding-linux-arm64-gnu': 0.135.0 + '@oxc-parser/binding-linux-arm64-musl': 0.135.0 + '@oxc-parser/binding-linux-ppc64-gnu': 0.135.0 + '@oxc-parser/binding-linux-riscv64-gnu': 0.135.0 + '@oxc-parser/binding-linux-riscv64-musl': 0.135.0 + '@oxc-parser/binding-linux-s390x-gnu': 0.135.0 + '@oxc-parser/binding-linux-x64-gnu': 0.135.0 + '@oxc-parser/binding-linux-x64-musl': 0.135.0 + '@oxc-parser/binding-openharmony-arm64': 0.135.0 + '@oxc-parser/binding-wasm32-wasi': 0.135.0 + '@oxc-parser/binding-win32-arm64-msvc': 0.135.0 + '@oxc-parser/binding-win32-ia32-msvc': 0.135.0 + '@oxc-parser/binding-win32-x64-msvc': 0.135.0 + oxc-resolver@11.20.0: optionalDependencies: '@oxc-resolver/binding-android-arm-eabi': 11.20.0 @@ -16504,12 +16822,12 @@ snapshots: '@oxc-resolver/binding-win32-arm64-msvc': 11.20.0 '@oxc-resolver/binding-win32-x64-msvc': 11.20.0 - oxlint-plugin-react-doctor@0.5.6: + oxlint-plugin-react-doctor@0.5.8: dependencies: '@typescript-eslint/types': 8.61.1 eslint-scope: 9.1.2 eslint-visitor-keys: 5.0.1 - oxc-parser: 0.132.0 + oxc-parser: 0.135.0 oxlint@1.66.0: optionalDependencies: @@ -16611,6 +16929,8 @@ snapshots: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + parse-node-version@1.0.1: {} + parse-numeric-range@1.3.0: {} parse5-htmlparser2-tree-adapter@6.0.1: @@ -16676,10 +16996,18 @@ snapshots: picomatch@4.0.4: {} + piscina@5.2.0: + optionalDependencies: + '@napi-rs/nice': 1.1.1 + pkg-dir@7.0.0: dependencies: find-up: 6.3.0 + pkg-dir@8.0.0: + dependencies: + find-up-simple: 1.0.1 + pkg-types@1.3.1: dependencies: confbox: 0.1.8 @@ -16838,13 +17166,13 @@ snapshots: '@csstools/utilities': 2.0.0(postcss@8.5.15) postcss: 8.5.15 - postcss-loader@7.3.4(postcss@8.5.15)(typescript@6.0.2)(webpack@5.101.3(esbuild@0.27.0)): + postcss-loader@7.3.4(postcss@8.5.15)(typescript@6.0.2)(webpack@5.101.3(esbuild@0.28.1)): dependencies: cosmiconfig: 8.3.6(typescript@6.0.2) jiti: 1.21.7 postcss: 8.5.15 semver: 7.8.4 - webpack: 5.101.3(esbuild@0.27.0) + webpack: 5.101.3(esbuild@0.28.1) transitivePeerDependencies: - typescript @@ -17224,6 +17552,9 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 + prr@1.0.1: + optional: true + punycode@2.3.1: {} pupa@3.1.0: @@ -17266,19 +17597,19 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 - react-doctor@0.5.6(eslint@10.5.0(jiti@2.7.0)): + react-doctor@0.5.8(eslint@10.5.0(jiti@2.7.0)): dependencies: '@babel/code-frame': 7.29.7 '@sentry/node': 10.58.0 agent-install: 0.0.5 conf: 15.1.0 confbox: 0.2.4 - deslop-js: 0.0.24 + deslop-js: 0.5.8 eslint-plugin-react-hooks: 7.1.1(eslint@10.5.0(jiti@2.7.0)) jiti: 2.7.0 magicast: 0.5.3 oxlint: 1.66.0 - oxlint-plugin-react-doctor: 0.5.6 + oxlint-plugin-react-doctor: 0.5.8 prompts: 2.4.2 typescript: 6.0.3 vscode-languageserver: 9.0.1 @@ -17297,9 +17628,9 @@ snapshots: react-fast-compare@3.2.2: {} - react-grab@0.1.44(react@19.2.4): + react-grab@0.1.47(react@19.2.4): dependencies: - '@react-grab/cli': 0.1.44 + '@react-grab/cli': 0.1.47 bippy: 0.5.41(react@19.2.4) optionalDependencies: react: 19.2.4 @@ -17312,11 +17643,11 @@ snapshots: dependencies: react: 19.2.4 - react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@6.0.0(react@19.2.4))(webpack@5.101.3(esbuild@0.27.0)): + react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@6.0.0(react@19.2.4))(webpack@5.101.3(esbuild@0.28.1)): dependencies: '@babel/runtime': 7.29.7 react-loadable: '@docusaurus/react-loadable@6.0.0(react@19.2.4)' - webpack: 5.101.3(esbuild@0.27.0) + webpack: 5.101.3(esbuild@0.28.1) react-router-config@5.1.1(react-router@5.3.4(react@19.2.4))(react@19.2.4): dependencies: @@ -17362,23 +17693,23 @@ snapshots: optionalDependencies: react-dom: 19.2.4(react@19.2.4) - react-scan@0.5.7(esbuild@0.27.0)(eslint@10.5.0(jiti@2.7.0))(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + react-scan@0.5.7(esbuild@0.28.1)(eslint@10.5.0(jiti@2.7.0))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rollup@4.62.2): dependencies: '@babel/core': 7.29.7 '@babel/types': 7.29.7 '@preact/signals': 2.9.1(preact@10.29.1) - '@rollup/pluginutils': 5.4.0 + '@rollup/pluginutils': 5.4.0(rollup@4.62.2) bippy: 0.5.41(react@19.2.4) commander: 14.0.3 picocolors: 1.1.1 preact: 10.29.1 prompts: 2.4.2 react: 19.2.4 - react-doctor: 0.5.6(eslint@10.5.0(jiti@2.7.0)) + react-doctor: 0.5.8(eslint@10.5.0(jiti@2.7.0)) react-dom: 19.2.4(react@19.2.4) - react-grab: 0.1.44(react@19.2.4) + react-grab: 0.1.47(react@19.2.4) optionalDependencies: - esbuild: 0.27.0 + esbuild: 0.28.1 unplugin: 3.0.0 transitivePeerDependencies: - '@opentelemetry/exporter-trace-otlp-http' @@ -17413,7 +17744,7 @@ snapshots: recma-build-jsx@1.0.0: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 estree-util-build-jsx: 3.0.1 vfile: 6.0.3 @@ -17428,14 +17759,14 @@ snapshots: recma-parse@1.0.0: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 esast-util-from-js: 2.0.1 unified: 11.0.5 vfile: 6.0.3 recma-stringify@1.0.0: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 estree-util-to-js: 2.0.0 unified: 11.0.5 vfile: 6.0.3 @@ -17445,6 +17776,8 @@ snapshots: indent-string: 4.0.0 strip-indent: 3.0.0 + reflect-metadata@0.2.2: {} + regenerate-unicode-properties@10.2.0: dependencies: regenerate: 1.4.2 @@ -17493,7 +17826,7 @@ snapshots: rehype-recma@1.0.0: dependencies: - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 '@types/hast': 3.0.4 hast-util-to-estree: 3.1.3 transitivePeerDependencies: @@ -17690,6 +18023,48 @@ snapshots: '@rolldown/binding-win32-arm64-msvc': 1.0.3 '@rolldown/binding-win32-x64-msvc': 1.0.3 + rollup-plugin-dts@6.4.1(rollup@4.62.2)(typescript@6.0.3): + dependencies: + '@jridgewell/remapping': 2.3.5 + '@jridgewell/sourcemap-codec': 1.5.5 + convert-source-map: 2.0.0 + magic-string: 0.30.21 + rollup: 4.62.2 + typescript: 6.0.3 + optionalDependencies: + '@babel/code-frame': 7.29.7 + + rollup@4.62.2: + dependencies: + '@types/estree': 1.0.9 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.62.2 + '@rollup/rollup-android-arm64': 4.62.2 + '@rollup/rollup-darwin-arm64': 4.62.2 + '@rollup/rollup-darwin-x64': 4.62.2 + '@rollup/rollup-freebsd-arm64': 4.62.2 + '@rollup/rollup-freebsd-x64': 4.62.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.62.2 + '@rollup/rollup-linux-arm-musleabihf': 4.62.2 + '@rollup/rollup-linux-arm64-gnu': 4.62.2 + '@rollup/rollup-linux-arm64-musl': 4.62.2 + '@rollup/rollup-linux-loong64-gnu': 4.62.2 + '@rollup/rollup-linux-loong64-musl': 4.62.2 + '@rollup/rollup-linux-ppc64-gnu': 4.62.2 + '@rollup/rollup-linux-ppc64-musl': 4.62.2 + '@rollup/rollup-linux-riscv64-gnu': 4.62.2 + '@rollup/rollup-linux-riscv64-musl': 4.62.2 + '@rollup/rollup-linux-s390x-gnu': 4.62.2 + '@rollup/rollup-linux-x64-gnu': 4.62.2 + '@rollup/rollup-linux-x64-musl': 4.62.2 + '@rollup/rollup-openbsd-x64': 4.62.2 + '@rollup/rollup-openharmony-arm64': 4.62.2 + '@rollup/rollup-win32-arm64-msvc': 4.62.2 + '@rollup/rollup-win32-ia32-msvc': 4.62.2 + '@rollup/rollup-win32-x64-gnu': 4.62.2 + '@rollup/rollup-win32-x64-msvc': 4.62.2 + fsevents: 2.3.3 + rtlcss@4.3.0: dependencies: escalade: 3.2.0 @@ -17703,12 +18078,24 @@ snapshots: dependencies: queue-microtask: 1.2.3 + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + safe-buffer@5.1.2: {} safe-buffer@5.2.1: {} safer-buffer@2.1.2: {} + sass@1.101.0: + dependencies: + chokidar: 5.0.0 + immutable: 5.1.7 + source-map-js: 1.2.1 + optionalDependencies: + '@parcel/watcher': 2.5.6 + sax@1.4.1: {} saxes@6.0.0: @@ -17728,9 +18115,9 @@ snapshots: schema-utils@4.3.2: dependencies: '@types/json-schema': 7.0.15 - ajv: 8.17.1 - ajv-formats: 2.1.1(ajv@8.17.1) - ajv-keywords: 5.1.0(ajv@8.17.1) + ajv: 8.20.0 + ajv-formats: 2.1.1(ajv@8.20.0) + ajv-keywords: 5.1.0(ajv@8.20.0) scule@1.3.0: {} @@ -18014,6 +18401,12 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.0 + string-width@7.2.0: + dependencies: + emoji-regex: 10.6.0 + get-east-asian-width: 1.6.0 + strip-ansi: 7.2.0 + string-width@8.2.1: dependencies: get-east-asian-width: 1.6.0 @@ -18123,21 +18516,21 @@ snapshots: tapable@2.3.2: {} - terser-webpack-plugin@5.3.14(esbuild@0.27.0)(webpack@5.101.3(esbuild@0.27.0)): + terser-webpack-plugin@5.3.14(esbuild@0.28.1)(webpack@5.101.3(esbuild@0.28.1)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.2 serialize-javascript: 6.0.2 terser: 5.43.1 - webpack: 5.101.3(esbuild@0.27.0) + webpack: 5.101.3(esbuild@0.28.1) optionalDependencies: - esbuild: 0.27.0 + esbuild: 0.28.1 terser@5.43.1: dependencies: '@jridgewell/source-map': 0.3.11 - acorn: 8.16.0 + acorn: 8.17.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -18361,14 +18754,14 @@ snapshots: pathe: 2.0.3 picomatch: 4.0.4 - unplugin-vue@7.2.0(@types/node@25.5.2)(esbuild@0.27.0)(jiti@2.7.0)(terser@5.43.1)(vue@3.5.32(typescript@6.0.2))(yaml@2.9.0): + unplugin-vue@7.2.0(@types/node@25.5.2)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(terser@5.43.1)(vue@3.5.32(typescript@6.0.2))(yaml@2.9.0): dependencies: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 '@vue/reactivity': 3.5.38 obug: 2.1.1 unplugin: 3.0.0 - vite: 8.0.16(@types/node@25.5.2)(esbuild@0.27.0)(jiti@2.7.0)(terser@5.43.1)(yaml@2.9.0) + vite: 8.0.16(@types/node@25.5.2)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(terser@5.43.1)(yaml@2.9.0) vue: 3.5.32(typescript@6.0.2) transitivePeerDependencies: - '@types/node' @@ -18403,6 +18796,12 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 + update-browserslist-db@1.2.3(browserslist@4.28.4): + dependencies: + browserslist: 4.28.4 + escalade: 3.2.0 + picocolors: 1.1.1 + update-notifier@6.0.2: dependencies: boxen: 7.1.1 @@ -18416,7 +18815,7 @@ snapshots: is-yarn-global: 0.4.1 latest-version: 7.0.0 pupa: 3.1.0 - semver: 7.7.4 + semver: 7.8.4 semver-diff: 4.0.0 xdg-basedir: 5.1.0 @@ -18424,14 +18823,14 @@ snapshots: dependencies: punycode: 2.3.1 - url-loader@4.1.1(file-loader@6.2.0(webpack@5.101.3(esbuild@0.27.0)))(webpack@5.101.3(esbuild@0.27.0)): + url-loader@4.1.1(file-loader@6.2.0(webpack@5.101.3(esbuild@0.28.1)))(webpack@5.101.3(esbuild@0.28.1)): dependencies: loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 3.3.0 - webpack: 5.101.3(esbuild@0.27.0) + webpack: 5.101.3(esbuild@0.28.1) optionalDependencies: - file-loader: 6.2.0(webpack@5.101.3(esbuild@0.27.0)) + file-loader: 6.2.0(webpack@5.101.3(esbuild@0.28.1)) util-deprecate@1.0.2: {} @@ -18462,7 +18861,7 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite@8.0.16(@types/node@25.5.2)(esbuild@0.27.0)(jiti@2.7.0)(terser@5.43.1)(yaml@2.9.0): + vite@8.0.16(@types/node@25.5.2)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(terser@5.43.1)(yaml@2.9.0): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 @@ -18471,16 +18870,18 @@ snapshots: tinyglobby: 0.2.17 optionalDependencies: '@types/node': 25.5.2 - esbuild: 0.27.0 + esbuild: 0.28.1 fsevents: 2.3.3 jiti: 2.7.0 + less: 4.6.7 + sass: 1.101.0 terser: 5.43.1 yaml: 2.9.0 - vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.16(@types/node@25.5.2)(esbuild@0.27.0)(jiti@2.7.0)(terser@5.43.1)(yaml@2.9.0)): + vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.2)(@vitest/ui@4.1.2)(happy-dom@20.8.9)(jsdom@29.0.1)(vite@8.0.16(@types/node@25.5.2)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(terser@5.43.1)(yaml@2.9.0)): dependencies: '@vitest/expect': 4.1.2 - '@vitest/mocker': 4.1.2(vite@8.0.16(@types/node@25.5.2)(esbuild@0.27.0)(jiti@2.7.0)(terser@5.43.1)(yaml@2.9.0)) + '@vitest/mocker': 4.1.2(vite@8.0.16(@types/node@25.5.2)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(terser@5.43.1)(yaml@2.9.0)) '@vitest/pretty-format': 4.1.2 '@vitest/runner': 4.1.2 '@vitest/snapshot': 4.1.2 @@ -18494,10 +18895,10 @@ snapshots: picomatch: 4.0.4 std-env: 4.0.0 tinybench: 2.9.0 - tinyexec: 1.0.4 - tinyglobby: 0.2.15 + tinyexec: 1.2.4 + tinyglobby: 0.2.17 tinyrainbow: 3.1.0 - vite: 8.0.16(@types/node@25.5.2)(esbuild@0.27.0)(jiti@2.7.0)(terser@5.43.1)(yaml@2.9.0) + vite: 8.0.16(@types/node@25.5.2)(esbuild@0.28.1)(jiti@2.7.0)(less@4.6.7)(sass@1.101.0)(terser@5.43.1)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.1 @@ -18616,7 +19017,7 @@ snapshots: webpack-bundle-analyzer@4.10.2: dependencies: '@discoveryjs/json-ext': 0.5.7 - acorn: 8.16.0 + acorn: 8.17.0 acorn-walk: 8.3.4 commander: 7.2.0 debounce: 1.2.1 @@ -18631,7 +19032,7 @@ snapshots: - bufferutil - utf-8-validate - webpack-dev-middleware@7.4.5(webpack@5.101.3(esbuild@0.27.0)): + webpack-dev-middleware@7.4.5(webpack@5.101.3(esbuild@0.28.1)): dependencies: colorette: 2.0.20 memfs: 4.51.0 @@ -18640,9 +19041,9 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.2 optionalDependencies: - webpack: 5.101.3(esbuild@0.27.0) + webpack: 5.101.3(esbuild@0.28.1) - webpack-dev-server@5.2.2(webpack@5.101.3(esbuild@0.27.0)): + webpack-dev-server@5.2.2(webpack@5.101.3(esbuild@0.28.1)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -18670,10 +19071,10 @@ snapshots: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.5(webpack@5.101.3(esbuild@0.27.0)) + webpack-dev-middleware: 7.4.5(webpack@5.101.3(esbuild@0.28.1)) ws: 8.18.3 optionalDependencies: - webpack: 5.101.3(esbuild@0.27.0) + webpack: 5.101.3(esbuild@0.28.1) transitivePeerDependencies: - bufferutil - debug @@ -18696,16 +19097,16 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.101.3(esbuild@0.27.0): + webpack@5.101.3(esbuild@0.28.1): dependencies: '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.8 + '@types/estree': 1.0.9 '@types/json-schema': 7.0.15 '@webassemblyjs/ast': 1.14.1 '@webassemblyjs/wasm-edit': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.15.0 - acorn-import-phases: 1.0.4(acorn@8.15.0) + acorn: 8.17.0 + acorn-import-phases: 1.0.4(acorn@8.17.0) browserslist: 4.25.3 chrome-trace-event: 1.0.4 enhanced-resolve: 5.20.1 @@ -18720,7 +19121,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.2 tapable: 2.3.2 - terser-webpack-plugin: 5.3.14(esbuild@0.27.0)(webpack@5.101.3(esbuild@0.27.0)) + terser-webpack-plugin: 5.3.14(esbuild@0.28.1)(webpack@5.101.3(esbuild@0.28.1)) watchpack: 2.4.4 webpack-sources: 3.3.3 transitivePeerDependencies: @@ -18728,7 +19129,7 @@ snapshots: - esbuild - uglify-js - webpackbar@6.0.1(webpack@5.101.3(esbuild@0.27.0)): + webpackbar@6.0.1(webpack@5.101.3(esbuild@0.28.1)): dependencies: ansi-escapes: 4.3.2 chalk: 4.1.2 @@ -18737,7 +19138,7 @@ snapshots: markdown-table: 2.0.0 pretty-time: 1.1.0 std-env: 3.10.0 - webpack: 5.101.3(esbuild@0.27.0) + webpack: 5.101.3(esbuild@0.28.1) wrap-ansi: 7.0.0 websocket-driver@0.7.4: @@ -18791,6 +19192,12 @@ snapshots: string-width: 5.1.2 strip-ansi: 7.2.0 + wrap-ansi@9.0.2: + dependencies: + ansi-styles: 6.2.1 + string-width: 7.2.0 + strip-ansi: 7.2.0 + write-file-atomic@3.0.3: dependencies: imurmurhash: 0.1.4 @@ -18820,10 +19227,23 @@ snapshots: xmlchars@2.2.0: {} + y18n@5.0.8: {} + yallist@3.1.1: {} yaml@2.9.0: {} + yargs-parser@22.0.0: {} + + yargs@18.0.0: + dependencies: + cliui: 9.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + string-width: 7.2.0 + y18n: 5.0.8 + yargs-parser: 22.0.0 + yocto-queue@0.1.0: {} yocto-queue@1.2.1: {} diff --git a/tsconfig.base.json b/tsconfig.base.json index 90e41025..42e319f9 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -14,6 +14,8 @@ "paths": { "js.foresight": ["./packages/js.foresight/src/index.ts"], "js.foresight/*": ["./packages/js.foresight/src/*"], + "@foresightjs/angular": ["./packages/foresightjs-angular/src/index.ts"], + "@foresightjs/angular/*": ["./packages/foresightjs-angular/src/*"], "@foresightjs/react": ["./packages/foresightjs-react/src/index.ts"], "@foresightjs/react/*": ["./packages/foresightjs-react/src/*"], "@foresightjs/vue": ["./packages/foresightjs-vue/src/index.ts"], From 15b01e6bf3c20fca54dba514af553b0feb67bf9a Mon Sep 17 00:00:00 2001 From: Adrian Darian Date: Thu, 25 Jun 2026 01:51:39 -0700 Subject: [PATCH 2/4] fix(angular): address adapter review feedback --- packages/foresightjs-angular/LICENSE | 2 +- packages/foresightjs-angular/README.md | 2 +- packages/foresightjs-angular/package.json | 8 +++-- .../scripts/remove-sourcemaps.mjs | 16 ++++++++++ .../src/components/ForesightComponent.ts | 10 +------ .../src/directives/ForesightDirective.ts | 10 +------ .../src/helpers/injectForesightEvent.ts | 11 +++---- .../src/services/ForesightService.test.ts | 30 ++++++++++++++++++- .../src/services/ForesightService.ts | 7 +++-- .../tsconfig.lib.prod.json | 8 +++++ pnpm-lock.yaml | 7 +++-- 11 files changed, 76 insertions(+), 35 deletions(-) create mode 100644 packages/foresightjs-angular/scripts/remove-sourcemaps.mjs create mode 100644 packages/foresightjs-angular/tsconfig.lib.prod.json diff --git a/packages/foresightjs-angular/LICENSE b/packages/foresightjs-angular/LICENSE index eb146a33..1b6bd0ee 100644 --- a/packages/foresightjs-angular/LICENSE +++ b/packages/foresightjs-angular/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2024 Bart Spaans +Copyright (c) 2025 Bart Spaans Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/packages/foresightjs-angular/README.md b/packages/foresightjs-angular/README.md index 114e58da..2b342a39 100644 --- a/packages/foresightjs-angular/README.md +++ b/packages/foresightjs-angular/README.md @@ -7,7 +7,7 @@ Official Angular bindings for [ForesightJS](https://foresightjs.com/), a lightweight library that predicts user intent (mouse trajectory, keyboard navigation, scroll, touch) to trigger callbacks like prefetching _before_ the user interacts. -- **Docs:** [foresightjs.com/docs/angular](https://foresightjs.com/docs/angular) +- **Docs:** [foresightjs.com/docs/angular/installation](https://foresightjs.com/docs/angular/installation) - **Core library:** [`js.foresight`](https://www.npmjs.com/package/js.foresight) - **Playground:** [foresightjs.com](https://foresightjs.com/#playground) diff --git a/packages/foresightjs-angular/package.json b/packages/foresightjs-angular/package.json index fd3aba1b..bfcb918f 100644 --- a/packages/foresightjs-angular/package.json +++ b/packages/foresightjs-angular/package.json @@ -6,7 +6,7 @@ "sideEffects": false, "scripts": { "build": "ng-packagr -p ng-package.json -c tsconfig.lib.json", - "build:prod": "ng-packagr -p ng-package.json -c tsconfig.lib.json", + "build:prod": "ng-packagr -p ng-package.json -c tsconfig.lib.prod.json && node ./scripts/remove-sourcemaps.mjs", "dev": "ng-packagr -p ng-package.json -c tsconfig.lib.json --watch", "lint": "eslint . --fix", "test": "vitest", @@ -35,8 +35,7 @@ "files": [ "dist", "README.md", - "LICENSE", - "*.d.ts" + "LICENSE" ], "keywords": [ "angular", @@ -57,6 +56,9 @@ "@angular/core": "^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 || ^22.0.0", "js.foresight": "^4.2.0" }, + "dependencies": { + "tslib": "^2.8.1" + }, "devDependencies": { "@angular/compiler": "^22.0.2", "@angular/compiler-cli": "^22.0.2", diff --git a/packages/foresightjs-angular/scripts/remove-sourcemaps.mjs b/packages/foresightjs-angular/scripts/remove-sourcemaps.mjs new file mode 100644 index 00000000..0050e827 --- /dev/null +++ b/packages/foresightjs-angular/scripts/remove-sourcemaps.mjs @@ -0,0 +1,16 @@ +import { readdirSync, rmSync } from "node:fs" +import { join } from "node:path" + +const removeSourceMaps = directory => { + for (const entry of readdirSync(directory, { withFileTypes: true })) { + const path = join(directory, entry.name) + + if (entry.isDirectory()) { + removeSourceMaps(path) + } else if (path.endsWith(".map")) { + rmSync(path) + } + } +} + +removeSourceMaps("dist") diff --git a/packages/foresightjs-angular/src/components/ForesightComponent.ts b/packages/foresightjs-angular/src/components/ForesightComponent.ts index 35079365..458857d4 100644 --- a/packages/foresightjs-angular/src/components/ForesightComponent.ts +++ b/packages/foresightjs-angular/src/components/ForesightComponent.ts @@ -1,12 +1,4 @@ -import { - Component, - ElementRef, - Input, - OnChanges, - OnDestroy, - computed, - signal, -} from "@angular/core" +import { Component, ElementRef, Input, OnChanges, OnDestroy, computed, signal } from "@angular/core" import { createUnregisteredSnapshot, type ForesightCallback, diff --git a/packages/foresightjs-angular/src/directives/ForesightDirective.ts b/packages/foresightjs-angular/src/directives/ForesightDirective.ts index 345a7e20..a6a7c2c7 100644 --- a/packages/foresightjs-angular/src/directives/ForesightDirective.ts +++ b/packages/foresightjs-angular/src/directives/ForesightDirective.ts @@ -1,12 +1,4 @@ -import { - Directive, - ElementRef, - Input, - OnChanges, - OnDestroy, - computed, - signal, -} from "@angular/core" +import { Directive, ElementRef, Input, OnChanges, OnDestroy, computed, signal } from "@angular/core" import { createUnregisteredSnapshot, type ForesightElementState, type HitSlop } from "js.foresight" import { ForesightService } from "../services/ForesightService" import type { ForesightDirectiveValue, ForesightRegistration } from "../types" diff --git a/packages/foresightjs-angular/src/helpers/injectForesightEvent.ts b/packages/foresightjs-angular/src/helpers/injectForesightEvent.ts index 0169b1f3..ba003c65 100644 --- a/packages/foresightjs-angular/src/helpers/injectForesightEvent.ts +++ b/packages/foresightjs-angular/src/helpers/injectForesightEvent.ts @@ -2,7 +2,7 @@ import { DestroyRef, effect, inject, isSignal, type Signal } from "@angular/core import type { ForesightEvent, ForesightEventMap } from "js.foresight" import { ForesightService } from "../services/ForesightService" -type EventTypeInput = K | Signal | (() => K) +type EventTypeInput = K | Signal type ListenerInput = | ((event: ForesightEventMap[K]) => void) | Signal<(event: ForesightEventMap[K]) => void> @@ -12,10 +12,6 @@ const resolveEventType = (eventType: EventTypeInput return eventType() } - if (typeof eventType === "function") { - return (eventType as () => K)() - } - return eventType } @@ -29,6 +25,11 @@ const resolveListener = ( return listener as (event: ForesightEventMap[K]) => void } +/** + * Subscribes to a ForesightManager event for the lifetime of the current + * injection context. Pass signals when the event type or listener must change + * over time; plain values are intentionally treated as static. + */ export const injectForesightEvent = ( eventType: EventTypeInput, listener: ListenerInput diff --git a/packages/foresightjs-angular/src/services/ForesightService.test.ts b/packages/foresightjs-angular/src/services/ForesightService.test.ts index 7ba07072..9dd9632c 100644 --- a/packages/foresightjs-angular/src/services/ForesightService.test.ts +++ b/packages/foresightjs-angular/src/services/ForesightService.test.ts @@ -1,4 +1,4 @@ -import { NgZone } from "@angular/core" +import type { NgZone } from "@angular/core" import { beforeEach, describe, expect, it, vi } from "vitest" import { createUnregisteredSnapshot } from "js.foresight" import { addEventListenerSpy, mockState, registerSpy, unregisterSpy } from "../tests/setup" @@ -9,6 +9,8 @@ const zone = { } as NgZone const createService = () => new ForesightService(zone) +const createServiceWithZone = (testZone: Pick) => + new ForesightService(testZone as NgZone) beforeEach(() => { addEventListenerSpy.mockClear() @@ -44,6 +46,32 @@ describe("ForesightService", () => { expect(registration.state().isPredicted).toBe(true) }) + it("runs user callbacks inside the Angular zone", () => { + const run = vi.fn((fn: () => T): T => fn()) + const service = createServiceWithZone({ run }) + const callback = vi.fn() + service.register(document.createElement("button"), { callback }) + + run.mockClear() + const fired = { ...createUnregisteredSnapshot(false), isPredicted: true } + mockState.lastCallbackWrapper?.(fired) + + expect(run).toHaveBeenCalledTimes(1) + expect(callback).toHaveBeenCalledWith(fired) + }) + + it("runs state resets inside the Angular zone", () => { + const run = vi.fn((fn: () => T): T => fn()) + const service = createServiceWithZone({ run }) + const registration = service.register(document.createElement("button"), { callback: vi.fn() }) + + run.mockClear() + registration.unregister() + + expect(run).toHaveBeenCalledTimes(1) + expect(registration.state().isRegistered).toBe(false) + }) + it("subscribes to manager events and aborts on unsubscribe", () => { const service = createService() const listener = vi.fn() diff --git a/packages/foresightjs-angular/src/services/ForesightService.ts b/packages/foresightjs-angular/src/services/ForesightService.ts index 5b2cd58f..1c0b3fd2 100644 --- a/packages/foresightjs-angular/src/services/ForesightService.ts +++ b/packages/foresightjs-angular/src/services/ForesightService.ts @@ -20,7 +20,7 @@ export class ForesightService { let unsubscribe: (() => void) | null = null let isRegistered = false - const callback = (s: ForesightElementState) => optionsRef.callback(s) + const callback = (s: ForesightElementState) => this.zone.run(() => optionsRef.callback(s)) const syncState = () => { const currentResult = result if (currentResult) { @@ -34,7 +34,8 @@ export class ForesightService { callback, }) isRegistered = true - state.set(result.getSnapshot()) + const initialResult = result + this.zone.run(() => state.set(initialResult.getSnapshot())) unsubscribe = result.subscribe(syncState) return { @@ -61,7 +62,7 @@ export class ForesightService { result?.unregister() result = null isRegistered = false - state.set(createUnregisteredSnapshot(false)) + this.zone.run(() => state.set(createUnregisteredSnapshot(false))) }, getSnapshot: () => result?.getSnapshot() ?? createUnregisteredSnapshot(false), } diff --git a/packages/foresightjs-angular/tsconfig.lib.prod.json b/packages/foresightjs-angular/tsconfig.lib.prod.json new file mode 100644 index 00000000..04fc4864 --- /dev/null +++ b/packages/foresightjs-angular/tsconfig.lib.prod.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.lib.json", + "compilerOptions": { + "declarationMap": false, + "inlineSources": false, + "sourceMap": false + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b9da3dad..ce5aa663 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -223,6 +223,10 @@ importers: version: 6.0.2 packages/foresightjs-angular: + dependencies: + tslib: + specifier: ^2.8.1 + version: 2.8.1 devDependencies: '@angular/compiler': specifier: ^22.0.2 @@ -239,9 +243,6 @@ importers: ng-packagr: specifier: ^22.0.0 version: 22.0.0(@angular/compiler-cli@22.0.2(@angular/compiler@22.0.2)(typescript@6.0.3))(tailwindcss@4.2.4)(tslib@2.8.1)(typescript@6.0.3) - tslib: - specifier: ^2.8.1 - version: 2.8.1 typescript: specifier: ^6.0.2 version: 6.0.3 From 1706e6bae0243a0bc3935a2ddac3c859afd0701e Mon Sep 17 00:00:00 2001 From: Adrian Darian Date: Thu, 25 Jun 2026 20:29:06 -0700 Subject: [PATCH 3/4] Add Angular docs and sidebar integration --- CONTRIBUTING.md | 3 +- README.md | 7 +- packages/docs/docs/_partials/_ai-context.mdx | 17 +++ .../docs/_partials/_static-properties.mdx | 2 +- packages/docs/docs/_partials/_typescript.mdx | 4 +- packages/docs/docs/angular/ai-context.md | 19 ++++ .../docs/docs/angular/behind-the-scenes.md | 20 ++++ .../angular/configuration/global-settings.md | 22 ++++ .../configuration/registration-options.md | 55 +++++++++ packages/docs/docs/angular/devtools.md | 21 ++++ packages/docs/docs/angular/directive.md | 98 ++++++++++++++++ packages/docs/docs/angular/events.md | 47 ++++++++ .../docs/docs/angular/foresight-component.md | 64 +++++++++++ .../docs/docs/angular/foresight-service.md | 80 +++++++++++++ .../docs/angular/initialize-the-manager.md | 42 +++++++ .../docs/docs/angular/injectForesightEvent.md | 56 ++++++++++ packages/docs/docs/angular/installation.md | 45 ++++++++ packages/docs/docs/angular/migrating-to-v4.md | 47 ++++++++ packages/docs/docs/angular/quick-start.md | 105 ++++++++++++++++++ .../docs/docs/angular/static-properties.md | 24 ++++ packages/docs/docs/angular/typescript.md | 34 ++++++ .../docs/docs/angular/what-is-foresightjs.md | 32 ++++++ .../configuration/registration-options.md | 2 +- .../docs/docs/getting-started/quick-start.md | 4 +- .../getting-started/what-is-foresightjs.md | 4 +- packages/docs/docs/migrating-to-v4.md | 14 +-- packages/docs/docs/other-frameworks.md | 5 +- packages/docs/sidebars.ts | 39 ++++++- .../components/FrameworkSelector/index.tsx | 33 +++++- .../components/Hero/FrameworkInstallTabs.tsx | 1 + .../docs/src/theme/DocVersionBanner/index.tsx | 6 +- packages/js.foresight-devtools/README.md | 2 +- packages/js.foresight/README.md | 7 +- .../src/helpers/createInitialState.ts | 2 +- 34 files changed, 932 insertions(+), 31 deletions(-) create mode 100644 packages/docs/docs/angular/ai-context.md create mode 100644 packages/docs/docs/angular/behind-the-scenes.md create mode 100644 packages/docs/docs/angular/configuration/global-settings.md create mode 100644 packages/docs/docs/angular/configuration/registration-options.md create mode 100644 packages/docs/docs/angular/devtools.md create mode 100644 packages/docs/docs/angular/directive.md create mode 100644 packages/docs/docs/angular/events.md create mode 100644 packages/docs/docs/angular/foresight-component.md create mode 100644 packages/docs/docs/angular/foresight-service.md create mode 100644 packages/docs/docs/angular/initialize-the-manager.md create mode 100644 packages/docs/docs/angular/injectForesightEvent.md create mode 100644 packages/docs/docs/angular/installation.md create mode 100644 packages/docs/docs/angular/migrating-to-v4.md create mode 100644 packages/docs/docs/angular/quick-start.md create mode 100644 packages/docs/docs/angular/static-properties.md create mode 100644 packages/docs/docs/angular/typescript.md create mode 100644 packages/docs/docs/angular/what-is-foresightjs.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b3ef4de4..89325f48 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -14,9 +14,8 @@ If you run into a bug, please post an issue in this [repo](https://github.com/sp ### Create Framework Integrations -Since ForesightJS is framework agnostic, we welcome integrations for popular frameworks and routers. We already have Next.js and React Router integrations, but would love to see: +Since ForesightJS is framework agnostic, we welcome integrations for popular frameworks and routers. We already have official React, Vue, and Angular packages plus Next.js and React Router examples, but would love to see: -- Angular integration - Svelte integration - Other popular frameworks or routers diff --git a/README.md b/README.md index e4dc3e34..1410b1c0 100644 --- a/README.md +++ b/README.md @@ -21,15 +21,16 @@ _In the GIF above, the [ForesightJS DevTools](https://foresightjs.com/docs/debug ## Integrations -Since ForesightJS is framework agnostic, it can be integrated with any JavaScript framework. There are official packages for React and Vue: +Since ForesightJS is framework agnostic, it can be integrated with any JavaScript framework. There are official packages for React, Vue, and Angular: - **JavaScript** → [`js.foresight`](https://foresightjs.com/docs/getting-started/quick-start): the framework-agnostic core, usable in any project. - **React** → [`@foresightjs/react`](https://foresightjs.com/docs/react/installation): `useForesight`, the `Foresight` component, `useForesightEvent`, plus [Next.js](https://foresightjs.com/docs/react/nextjs) and [React Router](https://foresightjs.com/docs/react/react-router) examples. - **Vue** → [`@foresightjs/vue`](https://foresightjs.com/docs/vue/quick-start): the `v-foresight` directive, the `Foresight` component, and the `useForesight` / `useForesightEvent` composables. +- **Angular** → [`@foresightjs/angular`](https://foresightjs.com/docs/angular/installation): the `[fsForesight]` directive, `ForesightService`, `ForesightComponent`, and `injectForesightEvent`. -> **Note:** The `@foresightjs/react` and `@foresightjs/vue` packages are in beta and not yet stable. They work and are fully tested, but the API may still change. +> **Note:** The `@foresightjs/react`, `@foresightjs/vue`, and `@foresightjs/angular` packages are in beta and not yet stable. They work and are fully tested, but the API may still change. -Using another framework (Angular, Svelte, Solid, …)? See [Other Frameworks](https://foresightjs.com/docs/other-frameworks) for how to build your own thin binding on top of the core. Sharing integrations for other frameworks/packages is highly appreciated! +Using another framework (Svelte, Solid, etc.)? See [Other Frameworks](https://foresightjs.com/docs/other-frameworks) for how to build your own thin binding on top of the core. Sharing integrations for other frameworks/packages is highly appreciated! ## Configuration diff --git a/packages/docs/docs/_partials/_ai-context.mdx b/packages/docs/docs/_partials/_ai-context.mdx index 49c06282..3616b5c4 100644 --- a/packages/docs/docs/_partials/_ai-context.mdx +++ b/packages/docs/docs/_partials/_ai-context.mdx @@ -78,3 +78,20 @@ All documentation pages are available as markdown by adding `.md` to any URL: - `https://foresightjs.com/docs/vue/migrating-to-v4.md` - `https://foresightjs.com/docs/vue/behind-the-scenes.md` - `https://foresightjs.com/docs/vue/ai-context.md` +- `https://foresightjs.com/docs/angular/what-is-foresightjs.md` +- `https://foresightjs.com/docs/angular/installation.md` +- `https://foresightjs.com/docs/angular/initialize-the-manager.md` +- `https://foresightjs.com/docs/angular/quick-start.md` +- `https://foresightjs.com/docs/angular/typescript.md` +- `https://foresightjs.com/docs/angular/directive.md` +- `https://foresightjs.com/docs/angular/foresight-service.md` +- `https://foresightjs.com/docs/angular/foresight-component.md` +- `https://foresightjs.com/docs/angular/injectForesightEvent.md` +- `https://foresightjs.com/docs/angular/configuration/global-settings.md` +- `https://foresightjs.com/docs/angular/configuration/registration-options.md` +- `https://foresightjs.com/docs/angular/events.md` +- `https://foresightjs.com/docs/angular/devtools.md` +- `https://foresightjs.com/docs/angular/static-properties.md` +- `https://foresightjs.com/docs/angular/migrating-to-v4.md` +- `https://foresightjs.com/docs/angular/behind-the-scenes.md` +- `https://foresightjs.com/docs/angular/ai-context.md` diff --git a/packages/docs/docs/_partials/_static-properties.mdx b/packages/docs/docs/_partials/_static-properties.mdx index 33e39e2a..00674d38 100644 --- a/packages/docs/docs/_partials/_static-properties.mdx +++ b/packages/docs/docs/_partials/_static-properties.mdx @@ -64,7 +64,7 @@ ForesightManager.instance.reactivate(navLinks) Removes an element (or all elements in a `NodeList`) from ForesightManager's tracking. :::tip Frameworks handle this for you -The official React and Vue integrations call `unregister` automatically when a component unmounts, so you rarely call it yourself there. +The official React, Vue, and Angular integrations call `unregister` automatically when a component unmounts, so you rarely call it yourself there. Detaching an element from the DOM does **not** unregister it. It is parked (kept registered but inactive) and resumes when it reattaches, so it survives detach/reattach and re-parenting. Unregistering only happens when you call this method explicitly. diff --git a/packages/docs/docs/_partials/_typescript.mdx b/packages/docs/docs/_partials/_typescript.mdx index 69128e5b..ebf4f070 100644 --- a/packages/docs/docs/_partials/_typescript.mdx +++ b/packages/docs/docs/_partials/_typescript.mdx @@ -112,9 +112,9 @@ const myCallback: ForesightCallback = state => { ### ForesightRegisterOptionsWithoutElement -Useful for if you want to create a custom button component in a modern framework (for example React). And you want to have the `ForesightRegisterOptions` used in `ForesightManager.instance.register({})` without the element as the element will be the ref of the component. +Useful for if you want to create a custom button component in a modern framework. And you want to have the `ForesightRegisterOptions` used in `ForesightManager.instance.register({})` without the element as the element will be the ref of the component. -This type is the options object you pass to the [`useForesight`](../react/useForesight.md) hook in React and the [`useForesight`](../vue/useForesight.md) composable in Vue. +This type is the options object you pass to the [`useForesight`](../react/useForesight.md) hook in React, the [`useForesight`](../vue/useForesight.md) composable in Vue, and Angular's [`[fsForesight]`](../angular/directive.md) / [`ForesightService`](../angular/foresight-service.md) APIs. ```typescript type ForesightButtonProps = { diff --git a/packages/docs/docs/angular/ai-context.md b/packages/docs/docs/angular/ai-context.md new file mode 100644 index 00000000..61ca0c4d --- /dev/null +++ b/packages/docs/docs/angular/ai-context.md @@ -0,0 +1,19 @@ +--- +keywords: + - ForesightJS + - Angular + - AI context + - LLM context + - llms.txt + - documentation +description: How to use ForesightJS's llms.txt file with AI tools and LLMs +last_updated: + date: 2026-06-26 + author: Bart Spaans +--- + +import AiContext from "../_partials/_ai-context.mdx" + +# AI Context + + diff --git a/packages/docs/docs/angular/behind-the-scenes.md b/packages/docs/docs/angular/behind-the-scenes.md new file mode 100644 index 00000000..4a712c16 --- /dev/null +++ b/packages/docs/docs/angular/behind-the-scenes.md @@ -0,0 +1,20 @@ +--- +keywords: + - ForesightJS + - JS.Foresight + - Angular + - user intent prediction + - mouse prediction + - tab prediction + - internal architecture +description: A technical deep-dive into the internal workings of ForesightJS, explaining its architecture, how it predicts mouse movements, and how it predicts tab navigation. +last_updated: + date: 2026-06-26 + author: Bart Spaans +--- + +import BehindTheScenes from "../_partials/_behind-the-scenes.mdx" + +# Behind the Scenes + + diff --git a/packages/docs/docs/angular/configuration/global-settings.md b/packages/docs/docs/angular/configuration/global-settings.md new file mode 100644 index 00000000..0fadcd99 --- /dev/null +++ b/packages/docs/docs/angular/configuration/global-settings.md @@ -0,0 +1,22 @@ +--- +keywords: + - ForesightJS + - JS.Foresight + - Angular + - "@foresightjs/angular" + - configuration + - global settings + - ForesightManager +description: Configure global ForesightJS settings in an Angular app +last_updated: + date: 2026-06-26 + author: Bart Spaans +--- + +import GlobalSettings from "../../_partials/_global-settings.mdx" + +# Global Settings + +Global settings apply to all registered elements and are configured once via `ForesightManager.initialize()` at your app's entry point. Import `ForesightManager` from `@foresightjs/angular`. + + diff --git a/packages/docs/docs/angular/configuration/registration-options.md b/packages/docs/docs/angular/configuration/registration-options.md new file mode 100644 index 00000000..70500076 --- /dev/null +++ b/packages/docs/docs/angular/configuration/registration-options.md @@ -0,0 +1,55 @@ +--- +keywords: + - ForesightJS + - JS.Foresight + - Angular + - "@foresightjs/angular" + - element configuration + - registration options + - hitSlop + - element metadata +description: The options you pass to the fsForesight directive, ForesightService, and ForesightComponent +last_updated: + date: 2026-06-26 + author: Bart Spaans +--- + +import ElementSettings from "../../_partials/_registration-options.mdx" + +# Registration Options + +In Angular, registration options are what you pass to the [`[fsForesight]`](../directive.md) directive, [`ForesightService.register`](../foresight-service.md), or [`ForesightComponent`](../foresight-component.md). The directive, service, or component takes care of the element, so there is no `element` option. `callback` is the only required field. + +```ts +import { Component } from "@angular/core" +import { ForesightDirective } from "@foresightjs/angular" + +@Component({ + standalone: true, + imports: [ForesightDirective], + template: ` + + About + + `, +}) +export class AboutLinkComponent { + readonly prefetchAbout = () => { + void fetch("/api/about") + } +} +``` + +When options change, the Angular integration patches the existing registration in place. + + diff --git a/packages/docs/docs/angular/devtools.md b/packages/docs/docs/angular/devtools.md new file mode 100644 index 00000000..6ede4337 --- /dev/null +++ b/packages/docs/docs/angular/devtools.md @@ -0,0 +1,21 @@ +--- +keywords: + - ForesightJS + - JS.Foresight + - Angular + - ForesightDevtools + - js.foresight-devtools + - Debugger +description: Use the ForesightJS development tools in an Angular app +last_updated: + date: 2026-06-26 + author: Bart Spaans +--- + +import Devtools from "../_partials/_devtools.mdx" + +# Development Tools + +The `ForesightJS` development tools are framework agnostic and work the same in Angular as anywhere else; initialize them once next to your `ForesightManager.initialize` call. + + diff --git a/packages/docs/docs/angular/directive.md b/packages/docs/docs/angular/directive.md new file mode 100644 index 00000000..8f288f2c --- /dev/null +++ b/packages/docs/docs/angular/directive.md @@ -0,0 +1,98 @@ +--- +sidebar_position: 2 +keywords: + - ForesightJS + - JS.Foresight + - Prefetching + - Angular + - Directive + - fsForesight + - "@foresightjs/angular" +description: The fsForesight Angular directive from @foresightjs/angular +last_updated: + date: 2026-06-26 + author: Bart Spaans +--- + +# fsForesight + +`[fsForesight]` is the simplest way to add predictive callbacks to an Angular app. Put it on an element, give it a callback or an options object, and it registers, updates, and unregisters the element for you. + +## Import the directive + +`ForesightDirective` is standalone, so import it directly in the component that uses it: + +```ts +import { Component } from "@angular/core" +import { ForesightDirective } from "@foresightjs/angular" + +@Component({ + standalone: true, + imports: [ForesightDirective], + template: ``, +}) +export class ExampleComponent { + readonly prefetch = () => { + void fetch("/api/example") + } +} +``` + +## Callback shorthand + +```html + +``` + +The callback receives the element's [`ForesightElementState`](./configuration/registration-options.md#state-fields). + +## With options + +For more control, pass any [registration options](./configuration/registration-options.md): + +```html + +``` + +If the bound value changes, the directive patches the existing registration in place rather than tearing it down, so flipping `enabled` or changing `hitSlop` keeps the same element tracked. + +## Individual inputs + +You can also pass common options through inputs: + +```html + + Docs + +``` + +Object options and individual inputs are resolved into the same registration options. If you need a native `name` attribute, use `fsForesightName` for the Foresight debug name. + +## Reading state + +The directive exports itself as `foresight`: + +```html + +``` + +`state` is an Angular signal containing the latest immutable [`ForesightElementState`](./configuration/registration-options.md#state-fields). diff --git a/packages/docs/docs/angular/events.md b/packages/docs/docs/angular/events.md new file mode 100644 index 00000000..ed4f7fb7 --- /dev/null +++ b/packages/docs/docs/angular/events.md @@ -0,0 +1,47 @@ +--- +keywords: + - ForesightJS + - JS.Foresight + - Angular + - Events + - Foresight Events + - injectForesightEvent +description: Listen to the built-in ForesightJS events from Angular +last_updated: + date: 2026-06-26 + author: Bart Spaans +--- + +import Events from "../_partials/_events.mdx" + +# Events + +ForesightManager emits events to provide insight into element registration, prediction activity, and callback execution. These events are primarily used by the [ForesightJS DevTools](./devtools.md), but can also power telemetry, analytics, and counters in your Angular app. + +## Usage + +In Angular the easiest way to listen to events from a component, directive, or injectable context is [`injectForesightEvent`](./injectForesightEvent.md): + +```ts +import { Component, signal } from "@angular/core" +import { injectForesightEvent } from "@foresightjs/angular" + +@Component({ + selector: "app-prefetch-counter", + standalone: true, + template: `

{{ hits() }} prefetches triggered

`, +}) +export class PrefetchCounterComponent { + readonly hits = signal(0) + + constructor() { + injectForesightEvent("callbackInvoked", () => { + this.hits.update(count => count + 1) + }) + } +} +``` + +The standard `ForesightManager.instance.addEventListener` / `removeEventListener` pattern is also available if you want to listen outside Angular. + + diff --git a/packages/docs/docs/angular/foresight-component.md b/packages/docs/docs/angular/foresight-component.md new file mode 100644 index 00000000..b714f94a --- /dev/null +++ b/packages/docs/docs/angular/foresight-component.md @@ -0,0 +1,64 @@ +--- +sidebar_position: 4 +keywords: + - ForesightJS + - JS.Foresight + - Prefetching + - Angular + - Component + - ForesightComponent + - "@foresightjs/angular" +description: Register a host element with the Foresight Angular component +last_updated: + date: 2026-06-26 + author: Bart Spaans +--- + +# ForesightComponent + +`ForesightComponent` registers its own host element and projects your content inside it. It is useful when you want a component-shaped wrapper instead of adding a directive to an existing element. + +## Usage + +```ts +import { Component } from "@angular/core" +import { ForesightComponent } from "@foresightjs/angular" + +@Component({ + selector: "app-actions", + standalone: true, + imports: [ForesightComponent], + template: ` + + + + `, +}) +export class ActionsComponent { + readonly prefetchCheckout = () => { + void fetch("/api/checkout") + } +} +``` + +The component accepts these inputs: + +- `callback` (required) +- `foresightName` +- `hitSlop` +- `meta` +- `reactivateAfter` +- `enabled` + +`foresightName` maps to the Foresight `name` option so native `name` attributes can still be used inside projected content. + +## When to use the directive instead + +Most Angular apps should use [`[fsForesight]`](./directive.md). It registers the exact DOM element you put it on and does not add a wrapper element. Use `ForesightComponent` when the wrapper itself is the target you want to track. diff --git a/packages/docs/docs/angular/foresight-service.md b/packages/docs/docs/angular/foresight-service.md new file mode 100644 index 00000000..b29e3737 --- /dev/null +++ b/packages/docs/docs/angular/foresight-service.md @@ -0,0 +1,80 @@ +--- +sidebar_position: 3 +keywords: + - ForesightJS + - JS.Foresight + - Angular + - Service + - ForesightService + - "@foresightjs/angular" +description: Manually register elements and listen to ForesightManager events with ForesightService +last_updated: + date: 2026-06-26 + author: Bart Spaans +--- + +# ForesightService + +`ForesightService` is the injectable Angular API underneath the directive and component. Use it when a directive is not a good fit, or when you want to register an element from lifecycle code. + +## Register an element manually + +```ts +import { AfterViewInit, Component, ElementRef, OnDestroy, ViewChild, inject } from "@angular/core" +import { ForesightService, type ForesightRegistration } from "@foresightjs/angular" + +@Component({ + selector: "app-manual-prefetch", + standalone: true, + template: ``, +}) +export class ManualPrefetchComponent implements AfterViewInit, OnDestroy { + @ViewChild("button", { static: true }) button!: ElementRef + + private readonly foresight = inject(ForesightService) + private registration: ForesightRegistration | null = null + + ngAfterViewInit(): void { + this.registration = this.foresight.register(this.button.nativeElement, { + callback: () => void fetch("/api/checkout"), + name: "checkout-button", + hitSlop: 40, + }) + } + + ngOnDestroy(): void { + this.registration?.unregister() + } +} +``` + +`register()` returns a `ForesightRegistration`: + +- `state`: an Angular signal with the latest [`ForesightElementState`](./configuration/registration-options.md#state-fields) +- `update(options)`: patches the existing registration +- `unregister()`: removes the element from the manager +- `getSnapshot()`: reads the current state snapshot + +## Update options + +```ts +this.registration?.update({ + callback: () => void fetch("/api/checkout"), + name: "checkout-button", + enabled: this.canPrefetch(), +}) +``` + +## Listen to manager events + +Use `listen()` for app-level analytics or debugging outside a component injection context: + +```ts +const stopListening = this.foresight.listen("callbackInvoked", event => { + console.log("Prefetch started", event.state.name) +}) + +stopListening() +``` + +Inside a component, [`injectForesightEvent`](./injectForesightEvent.md) usually gives cleaner cleanup. diff --git a/packages/docs/docs/angular/initialize-the-manager.md b/packages/docs/docs/angular/initialize-the-manager.md new file mode 100644 index 00000000..ec218391 --- /dev/null +++ b/packages/docs/docs/angular/initialize-the-manager.md @@ -0,0 +1,42 @@ +--- +keywords: + - ForesightJS + - initialize + - ForesightManager + - configuration + - setup + - Angular +description: Initialize the ForesightManager with custom global settings in an Angular app (optional step) +last_updated: + date: 2026-06-26 + author: Bart Spaans +--- + +import InitializeTheManager from "../_partials/_initialize-the-manager.mdx" + +# Initialize the Manager + +:::info Optional Step +This step is **not needed** if you don't want to configure ForesightJS. The manager will initialize automatically with default settings the first time a directive, component, or service registration runs. + +If you don't want to configure anything, skip to [Quick Start](./quick-start.md). +::: + +If you want to customize ForesightJS's global behavior, call `ForesightManager.initialize()` once at your application's entry point before Angular renders components that register elements: + +```ts +import { ForesightManager } from "@foresightjs/angular" + +ForesightManager.initialize({ + defaultHitSlop: 20, + touchDeviceStrategy: "viewport", +}) +``` + +## Optional Settings + +You can configure any of these [global settings](./configuration/global-settings.md). + + + +The manager also provides several static methods you can use to inspect registered elements, callback counts, and [event](./events.md) listeners. You can find a list of these methods [here](./static-properties.md). diff --git a/packages/docs/docs/angular/injectForesightEvent.md b/packages/docs/docs/angular/injectForesightEvent.md new file mode 100644 index 00000000..b86d4add --- /dev/null +++ b/packages/docs/docs/angular/injectForesightEvent.md @@ -0,0 +1,56 @@ +--- +sidebar_position: 5 +keywords: + - ForesightJS + - JS.Foresight + - Angular + - injectForesightEvent + - events + - "@foresightjs/angular" +description: Listen to ForesightManager events from an Angular injection context +last_updated: + date: 2026-06-26 + author: Bart Spaans +--- + +# injectForesightEvent + +This is meant for high-level, app-wide use cases like analytics, debugging, or a global prediction counter. `injectForesightEvent` subscribes to [`ForesightManager` events](./events.md) for the lifetime of the current Angular injection context. + +```ts +import { Component, signal } from "@angular/core" +import { injectForesightEvent } from "@foresightjs/angular" + +@Component({ + selector: "app-prefetch-counter", + standalone: true, + template: `

{{ hits() }} prefetches triggered

`, +}) +export class PrefetchCounterComponent { + readonly hits = signal(0) + + constructor() { + injectForesightEvent("callbackInvoked", () => { + this.hits.update(count => count + 1) + }) + } +} +``` + +You don't need to remove the listener yourself. Angular destroys the subscription with the component, directive, service, or other injection context where the helper was called. + +## Dynamic event type or listener + +Pass Angular signals when the event type or listener needs to change over time: + +```ts +readonly eventType = signal<"callbackInvoked" | "callbackCompleted">("callbackInvoked") + +constructor() { + injectForesightEvent(this.eventType, event => { + console.log(event.type) + }) +} +``` + +For listeners outside an injection context, use [`ForesightService.listen`](./foresight-service.md#listen-to-manager-events). diff --git a/packages/docs/docs/angular/installation.md b/packages/docs/docs/angular/installation.md new file mode 100644 index 00000000..472e5e16 --- /dev/null +++ b/packages/docs/docs/angular/installation.md @@ -0,0 +1,45 @@ +--- +sidebar_position: 1 +keywords: + - ForesightJS + - JS.Foresight + - Prefetching + - Angular + - "@foresightjs/angular" + - Installation +description: Install the official Angular bindings for ForesightJS +last_updated: + date: 2026-06-26 + author: Bart Spaans +--- + +# Installation + +[![npm version](https://img.shields.io/npm/v/@foresightjs/angular.svg)](https://www.npmjs.com/package/@foresightjs/angular) +[![npm downloads](https://img.shields.io/npm/dt/@foresightjs/angular.svg)](https://www.npmjs.com/package/@foresightjs/angular) + +`@foresightjs/angular` is the official Angular package for ForesightJS. It ships the standalone [`[fsForesight]`](./directive.md) directive for the common case, plus [`ForesightService`](./foresight-service.md), [`ForesightComponent`](./foresight-component.md), and [`injectForesightEvent`](./injectForesightEvent.md) for manual registration and event listeners. + +```bash +npm install @foresightjs/angular js.foresight +# or +pnpm add @foresightjs/angular js.foresight +# or +yarn add @foresightjs/angular js.foresight +``` + +```ts +import { ForesightDirective, ForesightManager, ForesightService } from "@foresightjs/angular" +``` + +Requires Angular 17 or newer. + +## Configuring the manager + +You don't have to configure anything. The manager auto-initializes with sensible defaults the first time you register an element. + +If you want to tweak global behavior, call `ForesightManager.initialize()` once in your `main.ts` before your app renders. See [Initialize the Manager](./initialize-the-manager.md) and [Global Settings](./configuration/global-settings.md). + +## Devtools + +The visual [Development Tools](./devtools.md) live in their own package (`js.foresight-devtools`) and work the same regardless of framework. diff --git a/packages/docs/docs/angular/migrating-to-v4.md b/packages/docs/docs/angular/migrating-to-v4.md new file mode 100644 index 00000000..0ed3e390 --- /dev/null +++ b/packages/docs/docs/angular/migrating-to-v4.md @@ -0,0 +1,47 @@ +--- +keywords: + - ForesightJS + - migration + - v4 + - Angular + - "@foresightjs/angular" +description: Moving from the v3 copy-paste Angular directive to the official @foresightjs/angular package +last_updated: + date: 2026-06-26 + author: Bart Spaans +--- + +import MigratingCore from "../_partials/_migrating-core.mdx"; + +# Migrating to v4 + +In v3 the Angular docs handed you a directive to copy into your own project. v4 replaces that with the official [`@foresightjs/angular`](./installation.md) package. Install it, delete your copied directive, and import the standalone directive from the package. + +```bash +npm install @foresightjs/angular js.foresight +``` + +```diff +- import { ForesightDirective } from "./directives/foresight.directive" ++ import { ForesightDirective } from "@foresightjs/angular" +``` + +The directive selector is `[fsForesight]`: + +```html +Pricing +``` + +For reactive state, export the directive as `foresight` and read its signal: + +```html + +``` + +## Core changes + +The core `js.foresight` library also has a few breaking changes. The package handles most of these for you, but they matter if you call `register()` or listen to events directly. + + diff --git a/packages/docs/docs/angular/quick-start.md b/packages/docs/docs/angular/quick-start.md new file mode 100644 index 00000000..c45d2067 --- /dev/null +++ b/packages/docs/docs/angular/quick-start.md @@ -0,0 +1,105 @@ +--- +keywords: + - ForesightJS + - JS.Foresight + - Prefetching + - Angular + - first element + - tutorial + - getting started +description: Register your first element with ForesightJS in Angular using the fsForesight directive +last_updated: + date: 2026-06-26 + author: Bart Spaans +--- + +# Quick Start + +This guide walks through registering your first element with ForesightJS in Angular and reading its prediction state. + +## Basic Usage Example + +The simplest way to register an element is the [`[fsForesight]`](./directive.md) directive. Import the standalone directive, put it on an element, and give it a callback: + +```ts +import { Component } from "@angular/core" +import { ForesightDirective } from "@foresightjs/angular" + +@Component({ + selector: "app-nav", + standalone: true, + imports: [ForesightDirective], + template: ` + + `, +}) +export class NavComponent { + readonly prefetchPricing = () => { + void fetch("/api/pricing") + } +} +``` + +That's it. + +:::note Unregistration is automatic +The directive registers the element when it appears and unregisters it when it is destroyed, so you never have to call `unregister()` yourself. The same applies to [`ForesightComponent`](./foresight-component.md). +::: + +## Provide registration options + +If you want more control, pass a full options object instead of just a callback: + +```html + +``` + +See [registration options](./configuration/registration-options.md) for the full list. + +## Reading prediction state + +Export the directive as `foresight` to read its Angular signal state in the template: + +```html + + {{ foresight.state().isPredicted ? "Pricing ready" : "Pricing" }} + +``` + +## Development Tools + +ForesightJS has dedicated [Development Tools](./devtools.md) that help you understand and tune how prediction is working in your application: + +```bash +pnpm add js.foresight-devtools +# or +npm install js.foresight-devtools +# or +yarn add js.foresight-devtools +``` + +```ts +import { ForesightDevtools } from "js.foresight-devtools" + +ForesightDevtools.initialize({ + // optional props +}) +``` diff --git a/packages/docs/docs/angular/static-properties.md b/packages/docs/docs/angular/static-properties.md new file mode 100644 index 00000000..09bca008 --- /dev/null +++ b/packages/docs/docs/angular/static-properties.md @@ -0,0 +1,24 @@ +--- +keywords: + - ForesightJS + - JS.Foresight + - Angular + - Static Properties + - debugging +description: Static properties exposed by the Foresight Manager +last_updated: + date: 2026-06-26 + author: Bart Spaans +--- + +import StaticProperties from "../_partials/_static-properties.mdx" + +# Static Properties + +The directive and component handle registering and unregistering for you; the properties below are escape hatches for debugging and inspecting the manager state. + +```ts +import { ForesightManager } from "@foresightjs/angular" +``` + + diff --git a/packages/docs/docs/angular/typescript.md b/packages/docs/docs/angular/typescript.md new file mode 100644 index 00000000..d06044b4 --- /dev/null +++ b/packages/docs/docs/angular/typescript.md @@ -0,0 +1,34 @@ +--- +keywords: + - ForesightJS + - JS.Foresight + - Typescript + - Angular + - "@foresightjs/angular" +description: Typescript helpers for ForesightJS in Angular +last_updated: + date: 2026-06-26 + author: Bart Spaans +--- + +import TypeScriptTypes from "../_partials/_typescript.mdx" + +# TypeScript + +ForesightJS is fully written in `TypeScript`, and all core and Angular helper types are exported from `@foresightjs/angular`: + +```ts +import type { ForesightOptions, ForesightRegistration } from "@foresightjs/angular" +``` + +Angular prediction state is exposed as signals: + +```ts +import type { ForesightStateSignal } from "@foresightjs/angular" + +type Props = { + state: ForesightStateSignal +} +``` + + diff --git a/packages/docs/docs/angular/what-is-foresightjs.md b/packages/docs/docs/angular/what-is-foresightjs.md new file mode 100644 index 00000000..6ec02d7f --- /dev/null +++ b/packages/docs/docs/angular/what-is-foresightjs.md @@ -0,0 +1,32 @@ +--- +keywords: + - Introduction + - JS.Foresight + - ForesightManager + - Angular + - mouse prediction + - tab prediction +description: Introduction to ForesightJS for Angular, a lightweight library that predicts user intent based on mouse movements and keyboard navigation +last_updated: + date: 2026-06-26 + author: Bart Spaans +--- + +import WhatIsIntro from "../_partials/_what-is-intro.mdx" +import WhatIsBody from "../_partials/_what-is-body.mdx" + +# What is ForesightJS + + + +In Angular you use ForesightJS through the official `@foresightjs/angular` package: the `[fsForesight]` directive registers your elements, `ForesightService` gives you a manual registration API, and Angular signals expose prediction state. + +## Installation + +```bash +npm install @foresightjs/angular js.foresight +``` + +Continue with [Installation](./installation.md) and the [Quick Start](./quick-start.md). + + diff --git a/packages/docs/docs/configuration/registration-options.md b/packages/docs/docs/configuration/registration-options.md index 43cc6fb2..c2dae939 100644 --- a/packages/docs/docs/configuration/registration-options.md +++ b/packages/docs/docs/configuration/registration-options.md @@ -52,6 +52,6 @@ ForesightManager.instance.updateElementOptions(myElement, { }) ``` -The framework integrations use this under the hood: the React hooks and Vue composables/directive patch the registration in place whenever your options change. +The framework integrations use this under the hood: the React hooks, Vue composables/directive, and Angular directive/service/component patch the registration in place whenever your options change. diff --git a/packages/docs/docs/getting-started/quick-start.md b/packages/docs/docs/getting-started/quick-start.md index 245303a4..84ff23de 100644 --- a/packages/docs/docs/getting-started/quick-start.md +++ b/packages/docs/docs/getting-started/quick-start.md @@ -34,7 +34,7 @@ ForesightManager.instance.register({ Thats it! :::note Remember to unregister -If you permanently remove a registered element from the DOM, call `ForesightManager.instance.unregister(element)` to stop tracking it. Detaching an element does not unregister it. It is parked (kept registered but inactive) and resumes if it reattaches, so an element you discard without unregistering stays parked and cannot be garbage collected. The official React and Vue integrations do this for you on unmount. +If you permanently remove a registered element from the DOM, call `ForesightManager.instance.unregister(element)` to stop tracking it. Detaching an element does not unregister it. It is parked (kept registered but inactive) and resumes if it reattaches, so an element you discard without unregistering stays parked and cannot be garbage collected. The official React, Vue, and Angular integrations do this for you on unmount. ::: ## Provide registration options @@ -60,7 +60,7 @@ ForesightManager.instance.register({ ## Using a framework? -ForesightJS is framework agnostic, but official [React](../react/installation.md) and [Vue](../vue/installation.md) packages exist that handle registration for you. Switch framework with the dropdown at the top of the sidebar to read those docs. Using something else? See [Other Frameworks](../other-frameworks.md) for how to build your own binding. +ForesightJS is framework agnostic, but official [React](../react/installation.md), [Vue](../vue/installation.md), and [Angular](../angular/installation.md) packages exist that handle registration for you. Switch framework with the dropdown at the top of the sidebar to read those docs. Using something else? See [Other Frameworks](../other-frameworks.md) for how to build your own binding. ## Development Tools diff --git a/packages/docs/docs/getting-started/what-is-foresightjs.md b/packages/docs/docs/getting-started/what-is-foresightjs.md index 96a6ca4f..0ea2dffe 100644 --- a/packages/docs/docs/getting-started/what-is-foresightjs.md +++ b/packages/docs/docs/getting-started/what-is-foresightjs.md @@ -31,8 +31,8 @@ npm install js.foresight yarn add js.foresight ``` -:::note Using React or Vue? -There are official [React](../react/installation.md) and [Vue](../vue/installation.md) packages that handle registration for you. Switch framework with the dropdown at the top of the sidebar to read those docs. `js.foresight` itself is for frameworks without an official adapter yet (Angular, Svelte, Solid, …) or for when you want full control. +:::note Using React, Vue, or Angular? +There are official [React](../react/installation.md), [Vue](../vue/installation.md), and [Angular](../angular/installation.md) packages that handle registration for you. Switch framework with the dropdown at the top of the sidebar to read those docs. `js.foresight` itself is for frameworks without an official adapter yet, or for when you want full control. ::: diff --git a/packages/docs/docs/migrating-to-v4.md b/packages/docs/docs/migrating-to-v4.md index ded7ed31..8ac3672e 100644 --- a/packages/docs/docs/migrating-to-v4.md +++ b/packages/docs/docs/migrating-to-v4.md @@ -9,7 +9,9 @@ keywords: - Vue - "@foresightjs/react" - "@foresightjs/vue" -description: Moving from the v3 copy-paste integrations to the official v4 React and Vue packages + - Angular + - "@foresightjs/angular" +description: Moving from the v3 copy-paste integrations to the official v4 React, Vue, and Angular packages last_updated: date: 2026-06-09 author: Bart Spaans @@ -19,16 +21,14 @@ import MigratingCore from './\_partials/\_migrating-core.mdx'; # Migrating to v4 -The goal of v4 is to make ForesightJS easier to set up. In v3 there was no React or Vue package - the docs handed you a hook, composable and directive to copy into your own project. v4 replaces that with official wrapper packages: [`@foresightjs/react`](./react/installation.md) and [`@foresightjs/vue`](./vue/installation.md). Install one, delete your copied files, and update a couple of names. +The goal of v4 is to make ForesightJS easier to set up. In v3 there were no official React, Vue, or Angular packages - the docs handed you a hook, composable, and directives to copy into your own project. v4 replaces that with official wrapper packages: [`@foresightjs/react`](./react/installation.md), [`@foresightjs/vue`](./vue/installation.md), and [`@foresightjs/angular`](./angular/installation.md). Install one, delete your copied files, and update a couple of names. -The breaking changes in core `js.foresight` exist to support these wrappers: frameworks like React and Vue need immutable state snapshots and a subscription model to render reactively, so the core's element data was reworked into exactly that. These changes affect you even if you don't use the wrapper packages - see [Core](#core) below. - -Angular has no official package yet; the copy-paste directive from the [3.5 docs](/docs/3.5/angular) still works. +The breaking changes in core `js.foresight` exist to support these wrappers: frameworks like React, Vue, and Angular need immutable state snapshots and a subscription model to render reactively, so the core's element data was reworked into exactly that. These changes affect you even if you don't use the wrapper packages - see [Core](#core) below. ## Core -## React and Vue +## React, Vue, and Angular -Using one of the wrapper packages? Switch framework with the dropdown at the top of the sidebar to get the package migration guide: [React](./react/migrating-to-v4.md) or [Vue](./vue/migrating-to-v4.md). +Using one of the wrapper packages? Switch framework with the dropdown at the top of the sidebar to get the package migration guide: [React](./react/migrating-to-v4.md), [Vue](./vue/migrating-to-v4.md), or [Angular](./angular/migrating-to-v4.md). diff --git a/packages/docs/docs/other-frameworks.md b/packages/docs/docs/other-frameworks.md index eee70e19..63d07142 100644 --- a/packages/docs/docs/other-frameworks.md +++ b/packages/docs/docs/other-frameworks.md @@ -15,7 +15,7 @@ last_updated: # Other Frameworks -There are official packages for [React](./react/installation.md) and [Vue](./vue/installation.md). For every other framework (Angular, Svelte, Solid, …) `js.foresight` has everything you need to build your own thin binding. This page shows the two pieces involved: registering from a component lifecycle, and the subscribe pattern for reactive state. +There are official packages for [React](./react/installation.md), [Vue](./vue/installation.md), and [Angular](./angular/installation.md). For every other framework (Svelte, Solid, etc.) `js.foresight` has everything you need to build your own thin binding. This page shows the two pieces involved: registering from a component lifecycle, and the subscribe pattern for reactive state. ## Registering from a component @@ -42,7 +42,7 @@ The options are the same [registration options](./configuration/registration-opt ## The subscribe pattern :::tip Most of the time you don't need this -If you only want to fire a callback (prefetching, preloading, etc.), the registration snippet above is all you need and you can skip this entire section. The subscribe pattern only matters when you want to drive reactive state from a registration, which is mainly something full framework adapters do (like our official [React](./react/installation.md) and [Vue](./vue/installation.md) packages). +If you only want to fire a callback (prefetching, preloading, etc.), the registration snippet above is all you need and you can skip this entire section. The subscribe pattern only matters when you want to drive reactive state from a registration, which is mainly something full framework adapters do (like our official [React](./react/installation.md), [Vue](./vue/installation.md), and [Angular](./angular/installation.md) packages). ::: `register()` returns more than the unregister function: the element's full [state snapshot](./configuration/registration-options.md#registration-return-value) plus `subscribe` and `getSnapshot`. The state is an immutable snapshot whose reference is replaced (never mutated) on every logical change, which makes it plug into any reactivity system: @@ -69,6 +69,7 @@ This is exactly how the official packages are built: - **React** feeds the pair straight into `useSyncExternalStore(reg.subscribe, reg.getSnapshot)`. - **Vue** stores the snapshot in a `shallowRef` and replaces it inside `subscribe`. +- **Angular** stores the snapshot in a signal and updates it inside `subscribe`. - **Svelte (runes)** is the same idea: keep the snapshot in `$state.raw` and reassign it inside `subscribe`. - **Solid** can wrap it with `from(set => reg.subscribe(() => set(reg.getSnapshot())))`. diff --git a/packages/docs/sidebars.ts b/packages/docs/sidebars.ts index 3050898c..e25b153d 100644 --- a/packages/docs/sidebars.ts +++ b/packages/docs/sidebars.ts @@ -3,7 +3,7 @@ import type { SidebarsConfig } from "@docusaurus/plugin-content-docs" // This runs in Node.js - Don't use client-side code here (browser APIs, JSX...) /** - * Three sidebars, one per framework. The FrameworkSelector component + * One sidebar per framework. The FrameworkSelector component * (src/components/FrameworkSelector) switches between them by navigating to * the equivalent page in the target tree. JavaScript (core) is the default * tree and keeps the historical URLs; it must stay named `tutorialSidebar` @@ -111,6 +111,43 @@ const sidebars: SidebarsConfig = { "vue/behind-the-scenes", "vue/ai-context", ], + angularSidebar: [ + { + type: "category", + label: "Getting Started", + items: [ + "angular/what-is-foresightjs", + "angular/installation", + "angular/initialize-the-manager", + "angular/quick-start", + ], + }, + { + type: "category", + label: "API", + items: [ + "angular/directive", + "angular/foresight-service", + "angular/foresight-component", + "angular/injectForesightEvent", + ], + }, + { + type: "category", + label: "Configuration", + items: ["angular/configuration/global-settings", "angular/configuration/registration-options"], + }, + "angular/typescript", + "angular/migrating-to-v4", + "angular/events", + { + type: "category", + label: "Debugging", + items: ["angular/devtools", "angular/static-properties"], + }, + "angular/behind-the-scenes", + "angular/ai-context", + ], } export default sidebars diff --git a/packages/docs/src/components/FrameworkSelector/index.tsx b/packages/docs/src/components/FrameworkSelector/index.tsx index d52b33e5..8de31a61 100644 --- a/packages/docs/src/components/FrameworkSelector/index.tsx +++ b/packages/docs/src/components/FrameworkSelector/index.tsx @@ -2,12 +2,13 @@ import React, { useEffect, useRef, useState } from "react" import { useHistory, useLocation } from "@docusaurus/router" import styles from "./styles.module.css" -type FrameworkId = "js" | "react" | "vue" +type FrameworkId = "js" | "react" | "vue" | "angular" const ROOTS: Record = { js: "/docs/getting-started/what-is-foresightjs", react: "/docs/react/what-is-foresightjs", vue: "/docs/vue/what-is-foresightjs", + angular: "/docs/angular/what-is-foresightjs", } // Pages that exist in every framework tree. When switching frameworks from one @@ -17,61 +18,73 @@ const EQUIVALENTS: Array> = [ js: "/docs/getting-started/what-is-foresightjs", react: "/docs/react/what-is-foresightjs", vue: "/docs/vue/what-is-foresightjs", + angular: "/docs/angular/what-is-foresightjs", }, { js: "/docs/getting-started/initialize-the-manager", react: "/docs/react/initialize-the-manager", vue: "/docs/vue/initialize-the-manager", + angular: "/docs/angular/initialize-the-manager", }, { js: "/docs/getting-started/quick-start", react: "/docs/react/quick-start", vue: "/docs/vue/quick-start", + angular: "/docs/angular/quick-start", }, { js: "/docs/getting-started/typescript", react: "/docs/react/typescript", vue: "/docs/vue/typescript", + angular: "/docs/angular/typescript", }, { js: "/docs/configuration/global-settings", react: "/docs/react/configuration/global-settings", vue: "/docs/vue/configuration/global-settings", + angular: "/docs/angular/configuration/global-settings", }, { js: "/docs/configuration/registration-options", react: "/docs/react/configuration/registration-options", vue: "/docs/vue/configuration/registration-options", + angular: "/docs/angular/configuration/registration-options", }, { js: "/docs/events", react: "/docs/react/events", vue: "/docs/vue/events", + angular: "/docs/angular/events", }, { js: "/docs/debugging/devtools", react: "/docs/react/devtools", vue: "/docs/vue/devtools", + angular: "/docs/angular/devtools", }, { js: "/docs/debugging/static-properties", react: "/docs/react/static-properties", vue: "/docs/vue/static-properties", + angular: "/docs/angular/static-properties", }, { js: "/docs/migrating-to-v4", react: "/docs/react/migrating-to-v4", vue: "/docs/vue/migrating-to-v4", + angular: "/docs/angular/migrating-to-v4", }, { js: "/docs/Behind_the_Scenes", react: "/docs/react/behind-the-scenes", vue: "/docs/vue/behind-the-scenes", + angular: "/docs/angular/behind-the-scenes", }, { js: "/docs/ai-context", react: "/docs/react/ai-context", vue: "/docs/vue/ai-context", + angular: "/docs/angular/ai-context", }, ] @@ -116,10 +129,24 @@ const VueIcon = () => { ) } +const AngularIcon = () => { + return ( + + ) +} + const FRAMEWORKS: Array<{ id: FrameworkId; label: string; Icon: () => React.ReactNode }> = [ { id: "js", label: "JavaScript", Icon: JsIcon }, { id: "react", label: "React", Icon: ReactIcon }, { id: "vue", label: "Vue", Icon: VueIcon }, + { id: "angular", label: "Angular", Icon: AngularIcon }, ] const detectFramework = (pathname: string): FrameworkId => { @@ -131,6 +158,10 @@ const detectFramework = (pathname: string): FrameworkId => { return "vue" } + if (pathname.startsWith("/docs/angular/")) { + return "angular" + } + return "js" } diff --git a/packages/docs/src/components/Hero/FrameworkInstallTabs.tsx b/packages/docs/src/components/Hero/FrameworkInstallTabs.tsx index 64c9916c..e80517fb 100644 --- a/packages/docs/src/components/Hero/FrameworkInstallTabs.tsx +++ b/packages/docs/src/components/Hero/FrameworkInstallTabs.tsx @@ -5,6 +5,7 @@ const frameworks = [ { name: "JavaScript", command: "pnpm add js.foresight" }, { name: "React", command: "pnpm add @foresightjs/react" }, { name: "Vue", command: "pnpm add @foresightjs/vue" }, + { name: "Angular", command: "pnpm add @foresightjs/angular js.foresight" }, ] export const FrameworkInstallTabs = () => { diff --git a/packages/docs/src/theme/DocVersionBanner/index.tsx b/packages/docs/src/theme/DocVersionBanner/index.tsx index 48734aca..eb4abf9a 100644 --- a/packages/docs/src/theme/DocVersionBanner/index.tsx +++ b/packages/docs/src/theme/DocVersionBanner/index.tsx @@ -8,7 +8,7 @@ import Admonition from "@theme/Admonition" type Props = WrapperProps /** - * Renders the early-release notice on every page of the React and Vue + * Renders the early-release notice on every page of the framework package * framework trees, above the doc content (same slot as version banners). */ export default function DocVersionBannerWrapper(props: Props): React.ReactNode { @@ -18,7 +18,9 @@ export default function DocVersionBannerWrapper(props: Props): React.ReactNode { ? "@foresightjs/react" : pathname.startsWith("/docs/vue/") ? "@foresightjs/vue" - : null + : pathname.startsWith("/docs/angular/") + ? "@foresightjs/angular" + : null return ( <> diff --git a/packages/js.foresight-devtools/README.md b/packages/js.foresight-devtools/README.md index a118d61a..d28b5ceb 100644 --- a/packages/js.foresight-devtools/README.md +++ b/packages/js.foresight-devtools/README.md @@ -9,7 +9,7 @@ These tools are built entirely using `ForesightJS`'s [built-in events](/docs/events), demonstrating how you can create your own monitoring and debugging tools using the same event system. -Since the devtools observe the `ForesightManager` directly, they work with every Foresight integration: the [`js.foresight`](https://foresightjs.com/docs/getting-started/quick-start) core, the official [React](https://foresightjs.com/docs/react/installation) and [Vue](https://foresightjs.com/docs/vue/installation) packages, or your own [custom binding](https://foresightjs.com/docs/other-frameworks). +Since the devtools observe the `ForesightManager` directly, they work with every Foresight integration: the [`js.foresight`](https://foresightjs.com/docs/getting-started/quick-start) core, the official [React](https://foresightjs.com/docs/react/installation), [Vue](https://foresightjs.com/docs/vue/installation), and [Angular](https://foresightjs.com/docs/angular/installation) packages, or your own [custom binding](https://foresightjs.com/docs/other-frameworks). ## Installation diff --git a/packages/js.foresight/README.md b/packages/js.foresight/README.md index e4dc3e34..1410b1c0 100644 --- a/packages/js.foresight/README.md +++ b/packages/js.foresight/README.md @@ -21,15 +21,16 @@ _In the GIF above, the [ForesightJS DevTools](https://foresightjs.com/docs/debug ## Integrations -Since ForesightJS is framework agnostic, it can be integrated with any JavaScript framework. There are official packages for React and Vue: +Since ForesightJS is framework agnostic, it can be integrated with any JavaScript framework. There are official packages for React, Vue, and Angular: - **JavaScript** → [`js.foresight`](https://foresightjs.com/docs/getting-started/quick-start): the framework-agnostic core, usable in any project. - **React** → [`@foresightjs/react`](https://foresightjs.com/docs/react/installation): `useForesight`, the `Foresight` component, `useForesightEvent`, plus [Next.js](https://foresightjs.com/docs/react/nextjs) and [React Router](https://foresightjs.com/docs/react/react-router) examples. - **Vue** → [`@foresightjs/vue`](https://foresightjs.com/docs/vue/quick-start): the `v-foresight` directive, the `Foresight` component, and the `useForesight` / `useForesightEvent` composables. +- **Angular** → [`@foresightjs/angular`](https://foresightjs.com/docs/angular/installation): the `[fsForesight]` directive, `ForesightService`, `ForesightComponent`, and `injectForesightEvent`. -> **Note:** The `@foresightjs/react` and `@foresightjs/vue` packages are in beta and not yet stable. They work and are fully tested, but the API may still change. +> **Note:** The `@foresightjs/react`, `@foresightjs/vue`, and `@foresightjs/angular` packages are in beta and not yet stable. They work and are fully tested, but the API may still change. -Using another framework (Angular, Svelte, Solid, …)? See [Other Frameworks](https://foresightjs.com/docs/other-frameworks) for how to build your own thin binding on top of the core. Sharing integrations for other frameworks/packages is highly appreciated! +Using another framework (Svelte, Solid, etc.)? See [Other Frameworks](https://foresightjs.com/docs/other-frameworks) for how to build your own thin binding on top of the core. Sharing integrations for other frameworks/packages is highly appreciated! ## Configuration diff --git a/packages/js.foresight/src/helpers/createInitialState.ts b/packages/js.foresight/src/helpers/createInitialState.ts index 1a8a1108..9e7ba046 100644 --- a/packages/js.foresight/src/helpers/createInitialState.ts +++ b/packages/js.foresight/src/helpers/createInitialState.ts @@ -125,7 +125,7 @@ export const createElementInternal = ( * Used in two situations: * 1. The manager refuses to register the element (touch device, limited connection, * etc.) - pass `isLimitedConnection` to reflect that. - * 2. Framework wrappers (React, Vue) need an initial snapshot before `register()` + * 2. Framework wrappers (React, Vue, Angular) need an initial snapshot before `register()` * has run. `register()` requires a real DOM element, which only exists after * the consumer's first render commits, so the wrapper returns this snapshot * during that brief window. Pass `isLimitedConnection: false` for this case. From f12570d89942d9c9385c9bdb68a5d520f377079a Mon Sep 17 00:00:00 2001 From: Adrian Darian Date: Thu, 25 Jun 2026 20:44:58 -0700 Subject: [PATCH 4/4] fix(angular): address follow-up review feedback --- packages/foresightjs-angular/package.json | 1 - packages/foresightjs-angular/scripts/remove-sourcemaps.mjs | 6 +++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/foresightjs-angular/package.json b/packages/foresightjs-angular/package.json index bfcb918f..72194172 100644 --- a/packages/foresightjs-angular/package.json +++ b/packages/foresightjs-angular/package.json @@ -65,7 +65,6 @@ "@angular/core": "^22.0.2", "js.foresight": "workspace:*", "ng-packagr": "^22.0.0", - "tslib": "^2.8.1", "typescript": "^6.0.2", "vitest": "^4.1.2" } diff --git a/packages/foresightjs-angular/scripts/remove-sourcemaps.mjs b/packages/foresightjs-angular/scripts/remove-sourcemaps.mjs index 0050e827..922d04da 100644 --- a/packages/foresightjs-angular/scripts/remove-sourcemaps.mjs +++ b/packages/foresightjs-angular/scripts/remove-sourcemaps.mjs @@ -1,7 +1,11 @@ -import { readdirSync, rmSync } from "node:fs" +import { existsSync, readdirSync, rmSync } from "node:fs" import { join } from "node:path" const removeSourceMaps = directory => { + if (!existsSync(directory)) { + return + } + for (const entry of readdirSync(directory, { withFileTypes: true })) { const path = join(directory, entry.name)